Pendientes: * Oller debe ver a tiendacentro y a arosa. Optimizaciones: * Se toco el paquete de replicacion de catálogos de inventario para que al actualizar los departamentos no se toque la bodega. * Se toco los triggers de replicacion de inv_encabmovimiento e inv_detmovimiento para solo replicar movimientos de salidas de la clase (salida traslado). And :New.Tip_Movto = 'S' And RepInvMov.ObtClaseMovto(:New.Cod_Cia, :New.Tip_Movto, :New.Cod_Movto) = 'ST' Then Se agrega ademas al paquete repinvmov la funcion para obtener la clase de movimiento: Function ObtClaseMovto(pCia in Varchar2, pTipMovto in Varchar2, pCodMovto in Varchar2) Return Varchar2 Is vClase Inv_ConcepMovto.Clase_Movto%Type; Begin Select Clase_Movto Into vClase From Inv_ConcepMovto Where Cod_Cia = pCia And Tip_Movto = pTipMovto And Cod_Movto = pCodMovto; Return vClase; Exception When No_Data_Found Then Raise_Application_Error(-20001, '<RepInvMov.ObtClaseMovto>: El Concepto de Inventario '||pTipMovto||'-'||pCodMovto|| ' NO Existe!'); End ObtClaseMovto; * Los movimientos de precios y promociones deben replicarse siempre en estado pendiente, entonces en los triggers de sus encabezados el estado siempre se pasara como P. Además se cambia el paquete reppremov para consultar el estado del cambio de precio o promocion para permitir que caigan replicaciones solamente cuando se està pendiente. Function EstadoCambPrecio(pCia in Varchar2, pDocumento in Number) Return Varchar2 Is vEstado PreEncCambio.Estado%Type; Begin Select Estado Into vEstado From PreEncCambio Where Cod_Cia = pCia And Documento = pDocumento; Return vEstado; Exception When No_Data_Found Then Return 'P'; End EstadoCambPrecio; Function EstadoPromocion(pCia in Varchar2, pPromocion in Varchar2) Return Varchar2 Is vEstado PrePromocion.Estado%Type; Begin Select Estado Into vEstado From PrePromocion Where Cod_Cia = pCia And Cod_Promocion = pPromocion; Return vEstado; Exception When No_Data_Found Then Return 'P'; End EstadoPromocion; Procedure ACTPREENCCAMBIO (pOldCOD_CIA in CHAR, pOldDOCUMENTO in NUMBER, pCOD_CIA in CHAR, pDOCUMENTO in NUMBER, pCOD_LISTA_PRECIO in CHAR, pCOD_PROVEEDOR in VARCHAR2, pDOC_REF in VARCHAR2, pESTADO in CHAR, pFEC_FINAL in DATE, pFECHA in DATE, pFEC_INICIO in DATE, pOBSERVACIONES in VARCHAR2, pORIGEN in CHAR, pTIPO_TRANSACCION in CHAR, pUSUARIO in VARCHAR2, pUSUARIO_AUTORIZA in VARCHAR2) is Begin If EstadoCambPrecio(pOldCod_Cia, pOldDocumento) = 'P' Then Update PREENCCAMBIO Set COD_CIA = pCOD_CIA, DOCUMENTO = pDOCUMENTO, COD_LISTA_PRECIO = pCOD_LISTA_PRECIO, COD_PROVEEDOR = pCOD_PROVEEDOR, DOC_REF = pDOC_REF, ESTADO = pESTADO, FEC_FINAL = pFEC_FINAL, FECHA = pFECHA, FEC_INICIO = pFEC_INICIO, OBSERVACIONES = pOBSERVACIONES, ORIGEN = pORIGEN, TIPO_TRANSACCION = pTIPO_TRANSACCION, USUARIO = pUSUARIO, USUARIO_AUTORIZA = pUSUARIO_AUTORIZA, LOCAL1='N' Where COD_CIA = pOldCOD_CIA And DOCUMENTO = pOldDOCUMENTO; If Sql%NotFound Then INSPREENCCAMBIO(pCOD_CIA, pDOCUMENTO, pCOD_LISTA_PRECIO, pCOD_PROVEEDOR, pDOC_REF, pESTADO, pFEC_FINAL, pFECHA, pFEC_INICIO, pOBSERVACIONES, pORIGEN, pTIPO_TRANSACCION, pUSUARIO, pUSUARIO_AUTORIZA); End If; End If; End ACTPREENCCAMBIO; Procedure DELPREENCCAMBIO(pCOD_CIA in CHAR, pDOCUMENTO in NUMBER) is Begin If EstadoCambPrecio(pCod_Cia, pDocumento) = 'P' Then Update PREENCCAMBIO Set LOCAL1 = 'D', REPLICA1 = 'N' Where COD_CIA = pCOD_CIA And DOCUMENTO = pDOCUMENTO; If Sql%Found Then Delete From PREENCCAMBIO Where COD_CIA = pCOD_CIA And DOCUMENTO = pDOCUMENTO; End If; End If; End DELPREENCCAMBIO; Procedure ACTPREPROMOCION (pOldCOD_CIA in CHAR, pOldCOD_PROMOCION in VARCHAR2, pCOD_CIA in CHAR, pCOD_PROMOCION in VARCHAR2, pCOD_LISTA_PRECIO in CHAR, pCOD_USUARIO in VARCHAR2, pDESCRIPCION in VARCHAR2, pESTADO in CHAR, pFECHA_FIN in DATE, pFECHA_INI in DATE, pSUCURSAL in CHAR) is Begin If EstadoPromocion(pOldCod_Cia, pOldCod_Promocion) = 'P' Then Update PREPROMOCION Set COD_CIA = pCOD_CIA, COD_PROMOCION = pCOD_PROMOCION, COD_LISTA_PRECIO = pCOD_LISTA_PRECIO, COD_USUARIO = pCOD_USUARIO, DESCRIPCION = pDESCRIPCION, ESTADO = pESTADO, FECHA_FIN = pFECHA_FIN, FECHA_INI = pFECHA_INI, SUCURSAL = pSUCURSAL, LOCAL1='N' Where COD_CIA = pOldCOD_CIA And COD_PROMOCION = pOldCOD_PROMOCION; If Sql%NotFound Then INSPREPROMOCION(pCOD_CIA, pCOD_PROMOCION, pCOD_LISTA_PRECIO, pCOD_USUARIO, pDESCRIPCION, pESTADO, pFECHA_FIN, pFECHA_INI, pSUCURSAL); End If; End If; End ACTPREPROMOCION; Procedure DELPREPROMOCION(pCOD_CIA in CHAR, pCOD_PROMOCION in VARCHAR2) is Begin If EstadoPromocion(pCod_Cia, pCod_Promocion) = 'P' Then Update PREPROMOCION Set LOCAL1 = 'D', REPLICA1 = 'N' Where COD_CIA = pCOD_CIA And COD_PROMOCION = pCOD_PROMOCION; If Sql%Found Then Delete From PREPROMOCION Where COD_CIA = pCOD_CIA And COD_PROMOCION = pCOD_PROMOCION; End If; End If; End DELPREPROMOCION;