Está en la página 1de 8

create or replace package body PKG_SINCRONIZACION is maximo INTEGER; cont INTEGER;posicion INTEGER;contserie INTEGER;contador INTEGER; codtransdet CHAR(2); codcontserie

CHAR(2); ls_nom_agencia VARCHAR2(20);GLOSA VARCHAR2(45); codtrans CHAR(6); anexo char(3); numdoc cHAR(7); as_agencia char(2); codemp1 CHAR(2); codigo CHAR(6); codcompra CH AR(2); codcompradet CHAR(2); contcatalogo INTEGER; /* cont INTEGER;maximo INTEGER; codcompraguia CHAR(2); contserie INTEGER; codcontserie CHAR(2);codpedidodet CHAR(2); numguia VARCHAR2(15); -- varibles para las guias cantdet INTEGER;precuni NUMBER;prectot NUMBER; ---VARIABLES DE DETAL LE COMPRAS codcatser CHAR(8);numserie Varchar2(20);codcatserdet CHAR(8); numseriedet Varchar2(20);costounitserdet NUMBER; contadserie INTEGER;posicion INTEGER;*/ Procedure SYNCreacionProductos(P_CURSOR out CursorResultado, AS_CODIGO CHAR, AS_ARTICULO VARCHAR2, AS_CODCATPROD CHAR, AS_ESERIE CHAR, AS_ACTIVO CHAR, AS_CODMONEDA CHAR, AD_PRECIO NUMBER) IS BEGIN INSERT INTO ARTICULO(CODIGO,ARTICULO,COD_CATPROD,ESTADO_SERIE,ACTIVO,COD_MONED A,PRECIO_VENTA) VALUES ( AS_CODIGO,AS_ARTICULO,AS_CODCATPROD,AS_ESERIE,AS_ACTIVO,AS_CODM ONEDA,AD_PRECIO); INSERT INTO STOCK_AGENCIA(COD_EMPRESA,COD_AGENCIA,CODIGO,CANTIDAD) (SELECT COD_EMPRESA,COD_AGENCIA,AS_CODIGO,0 FROM AGENCIA); IF NOT SQL%NOTFOUND THEN OPEN p_cursor FOR SELECT 0 FROM DUAL; COMMIT; ELSE OPEN p_cursor FOR SELECT -1 FROM DUAL; ROLLBACK; END IF; END; Procedure SYNConsultaOficina(P_CURSOR out CursorResultado) is begin open p_cursor for select t.idcodagencia from toficinasincroniza t; END; /* Transferencia Cabecera DBSIC*/ -- Author : JASTO

-- Created : 25/08/2009 10:51:49 a.m. -- Purpose : Jose Asto Procedure SYNspTransferenciaCAB(codemp char,codagencia char,codagenciadest Cha r,tipodoc char,nrodoc char, pedido char,cod_transfer out char,codpersonal char/*,P_CURSOR out CursorResultado*/) Is Begin SELECT autoincrementoidtransferencia.nextval INTO maximo FROM dual; codtrans := lpad(nvl(maximo,'1'),6,0); cod_transfer := codtrans; -----------------------------------------------Actualiza a 2 el estado de la Guia de Remision anexo := SUBSTR(nrodoc,1,3); numdoc := SUBSTR(nrodoc,4,7); -------------------------------------------if codagencia='13' or codagencia='14' or codagencia='01' then UPDATE DOCUMENTO_CONTABLES SET ESTADO_DOC = '2',FEC_CAJA = SYSDATE WHERE COD_AGENCIA = '02' AND COD_TIPO_DOC =tipodoc AND COD_ANEXO = a nexo AND NRO_DOCUMENTO = numdoc; end if ; -- INSERTANDO EN LA TABLA COMPRA INSERT INTO TRANSFERENCIA(COD_TRANSFERENCIA,COD_EMPRESA,COD_AGENCIA,EST ADO,COD_TIPO_DOC, NRO_TIPO_DOC,FECHA_TRANSF ERENCIA,COD_ORIGEN,COD_PEDIDO,COD_PERSONAL) VALUES(codtrans,codemp,codagenciadest,'1',tipodoc,nrodoc,SYSDATE,codage ncia,pedido,codpersonal); End; /* Transferencia Detalle DBSIC*/ -- Author : JASTO -- Created : 25/08/2009 10:51:49 a.m. -- Purpose : Jose Asto Procedure SYNspTransferenciaDET(codcatal Char,cantdet Number,precuni Number,p rectot Number,codtrans char, codagencia char,codagenc iadest char,precio_sdscto Number,nrodoc Char,tipodoc Char) Is Begin SELECT COUNT(ROWID) INTO cont FROM TRANSFERENCIA_DET WHERE COD_TRANSFE RENCIA = codtrans; -- CREANDO EL CODIGO DE LA COMPRA_FACTURA IF cont <= 0 THEN codtransdet := TO_CHAR('01'); ELSE SELECT MAX(COD_TRANSFERENCIA_DET) INTO maximo FROM TRANSFERENCIA_D ET WHERE COD_TRANSFERENCIA = codtrans; posicion := Length(concat('000000' , LTRIM(TO_CHAR(maximo+1)))) 1; codtransdet := SUBSTR(concat('000000' , LTRIM(TO_CHAR(maximo+1))), posicion,2); END IF; SELECT NOM_AGENCIA INTO ls_nom_agencia FROM AGENCIA WHERE COD_AGENCIA= codagenciadest; GLOSA := CONCAT('SALIDA X TRANSFERENCIA -',ls_nom_agencia);

INSERT INTO TRANSFERENCIA_DET(COD_TRANSFERENCIA,COD_TRANSFERENCIA_DET,C OD_EMPRESA,COD_AGENCIA, COD_MONEDA,CANT_DE T,PRECIO_COMPRA_DET,TOTAL_COMPRA_DET,CODIGO, PRECIO_SIN_DESCUEN TO) VALUES(codtrans,codtransdet,'01',codagenciadest,'01',cantdet,precuni,pr ectot,codcatal,precio_sdscto); ---Salida de Producto INSERT INTO KARDEX_AGENCIA(CODIGO,COD_EMPRESA,COD_AGENCIA,FECHA,DETALLE ,EGRESO,COD_TIPO_DOC,NUM_DOCUM) VALUES(codcatal,'01',codagencia,SYSDATE,GLOSA,cantdet,tipodoc,nrodoc); ---Ingreso de Producto INSERT INTO KARDEX_AGENCIA(CODIGO,COD_EMPRESA,COD_AGENCIA,FECHA,DETALL E,INGRESO,COD_TIPO_DOC,NUM_DOCUM) VALUES(codcatal,'01',codagenciadest,SYSDATE,'INGRESO X TRANSFERENCIA', cantdet,tipodoc,nrodoc); End; /* Transferencia Detalle de Series DBSIC*/ -- Author : JASTO -- Created : 25/08/2009 10:51:49 a.m. -- Purpose : Jose Asto Procedure SYNspTransferenciaDETS(codcatal Char,codtrans char,fecvencim date, codagenciadest char,nrod oc Char,tipodoc Char,numserie varchar2) Is Begin INSERT INTO TRANSFERENCIA_DET_SERIE(NRO_SERIE,COD_TRANSFERENCIA,COD_TR ANSFERENCIA_DET,COD_EMPRESA,COD_AGENCIA,CODIGO,FEC_VENCI) VALUES(numserie,codtrans,codtransdet,'01',codagenciadest,codcatal,fecv encim/*,cliente*/); /* nro_orden := trim(cliente); UPDATE ORDEN_INSTALACION SET CB_ASIGNADA='2' WHERE trim(NRO_ORDEN_SE RVICIO)=TRIM(nro_orden); IF codagenciadest='01' and categoria='07' THEN Begin SELECT COD_CLIENTE INTO cliente FROM TRANSFERENCIA_DET_SERIE WHERE trim(NRO_SERIE) =trim(numserie) AND CODIGO=codcatser AND COD _AGENCIA <>'01' AND COD_CLIENTE IS NOT NULL ; nro_orden := trim(cliente); UPDATE ORDEN_INSTALACION SET CB_ASIGNADA='0' , CODIGO=NULL WHERE trim(NRO_ORDEN_SERVICIO)=TRIM(nro_orden); UPDATE TRANSFERENCIA_DET_SERIE SET COD_CLIENTE=NULL WHERE trim(NRO_SERIE)= trim(numserie) AND CODIGO = codcatser AND COD_CLIENTE IS NOT NULL OD_CLIENTE=trim(cliente); Exception When no_data_found then DBMS_OUTPUT.PUT_LINE('DATOS BUSCADOS End; END IF ;*/ SELECT COUNT(ROWID) INTO contserie FROM RO_SERIE) = TRIM(numserie); -- CREANDO EL CODIGO DEL CORRELATIVO DE AND COD_AGENCIA<>'01' and C NO ENCONTRADOS!'); HISTORICO_SERIE WHERE TRIM(N SERIES

IF contserie = 0 THEN codcontserie := TO_CHAR('01'); ELSE SELECT MAX(COD_HISTORICO_SERIE) INTO maximo FROM HISTORICO_SERI E WHERE TRIM(NRO_SERIE) = TRIM(numserie); posicion := Length(concat('000000' , LTRIM(TO_CHAR(maximo+1)))) - 1; codcontserie := SUBSTR(concat('000000' , LTRIM(TO_CHAR(maximo+1 ))),posicion,2); END IF; INSERT INTO HISTORICO_SERIE(COD_HISTORICO_SERIE,COD_EMPRESA,COD_AGEN CIA,COD_ESTADO_SERIE, CODIGO,NRO_SERIE,CRE A_HISTORICO_SERIE,COD_TIPO_DOC,NUM_DOCUM) VALUES(codcontserie,'01'/*resa1*/,codagenciadest,'03',codcatal,numse rie,SYSDATE,tipodoc,nrodoc); SELECT COUNT(ROWID) INTO contador FROM SERIES_GENERAL WHERE TRIM(NRO_SERIE)= TRIM(numserie) AND TRIM(COD_AGENCIA) = TRIM(c odagenciadest) AND TRIM(CODIGO) = TRIM(codcatal); IF contador > 0 THEN UPDATE SERIES_GENERAL SET ESTADO_SERIE = '2' WHERE TRIM(NRO_SERIE)= TRIM(numserie); UPDATE SERIES_GENERAL SET ESTADO_SERIE = '1',FEC_VENCI= fecvencim WHERE TRIM(NRO_SERIE)= TRIM(numserie) AND TRIM(COD_AGENCIA) = TRI M(codagenciadest) AND TRIM(CODIGO) = TRIM(codcatal); ELSE UPDATE SERIES_GENERAL SET ESTADO_SERIE = '2' WHERE TRIM(NRO_SERIE )= TRIM(numserie) ; INSERT INTO SERIES_GENERAL(CODIGO,NRO_SERIE,COD_EMPRESA,COD_AGENC IA,FEC_VENCI,ESTADO_SERIE) VALUES(codcatal,numserie,'01',codagenciadest,fecvencim,'1'); END IF; End; /* Compra Cabecera DBSIC*/ -- Author : JASTO -- Created : 25/08/2009 10:51:49 a.m. -- Purpose : Jose Asto Procedure SYNspCompraCAB(codprov Char, nrovale char, codemp char, codigv char, tipopago char, tipodoc char, codmoneda char, nrodoc char, montodoc NUMBER, montoigv NUMBER, montosub NUMBER, feccompra DATE, fecvenci DATE, usuario varchar2, codbanco char, codigo_compra out char/*,P_CURSOR out CursorResultado */)

IS Begin if codemp='01' then as_agencia:='01'; elsif codemp='02' then as_agencia:='16'; elsif codemp='03' then as_agencia:='13'; elsif codemp='04' then as_agencia:='14'; elsif codemp='05' then as_agencia:='17'; elsif codemp='06' then as_agencia:='18'; elsif codemp='07' then as_agencia:='22'; elsif codemp='10' then as_agencia:='01'; end if; if codemp='02' OR codemp='03' OR codemp='04' OR codemp='05' OR codemp='06' OR codemp='07' OR codemp='10' then codemp1:='02'; elsE codemp1:='01' ; end if; /*Se agreg las primeras lineas de codigo, para reconocer la agencia a dond e se mover el producto, segn la empresa seleccionada*/ SELECT COUNT(ROWID) INTO cont FROM COMPRA; -- CREANDO EL CODIGO DE LA COMPRA IF cont <= 0 THEN codigo :=TO_CHAR('000001'); ELSE SELECT MAX(COD_COMPRA) INTO maximo FROM COMPRA ; posicion := Length(concat('000000' , LTRIM(TO_CHAR(maximo+1)))) 5; codigo := SUBSTR(concat('000000' , LTRIM(TO_CHAR(maximo+1))),posi cion,6); END IF; -- INSERTANDO EN LA TABLA COMPRA INSERT INTO COMPRA(COD_COMPRA,COD_EMPRESA,ESTADO_COMPRA,USU_CREA,CREA_ COMPRA,TIPOPAGO_COMPRA, COD_TIPO_DOC,COD_MONEDA,NRO_TIPO_DOC,TOTAL_COMPRA,FECHA_COMPRA,VENCE_C OMPRA,COD_PROVEEDOR, NRO_VALERESERVA,COD_BANCO) VALUES(codigo,codemp,'1',usuario,SYSDATE,tipopago,tipodoc,codmoneda, nrodoc,montodoc,feccompra,fecvenci,codprov,nrovale,codbanco); SELECT COUNT(ROWID) INTO cont FROM COMPRA_FACTURA WHERE COD_COMP RA = codigo AND COD_EMPRESA = codemp1; -- CREANDO EL CODIGO DE LA COMPRA_FACTURA IF cont <= 0 THEN codcompra :=TO_CHAR('01'); ELSE SELECT MAX(COD_COMPRA_FACTURA) INTO maximo FROM COMPRA_FACTU RA WHERE COD_COMPRA = codigo AND COD_EMPRESA = codemp1; posicion := Length(concat('000000' , LTRIM(TO_CHAR(maximo+1)))) 1; codcompra := SUBSTR(concat('000000' , LTRIM(TO_CHAR(maximo+1))),pos icion,2);

END IF; -- INSERTANDO EN LA TABLA COMPRA_FACTURA INSERT INTO COMPRA_FACTURA(COD_COMPRA,COD_COMPRA_FACTURA,FECHA _COMPRA_FACTURA,NRO_COMPRA_FACTURA,TOTAL_COMPRA_FACTURA,IGV_COMPRA_FACTURA,SUBTO TAL_COMPRA_FACTURA,CREA_COMPRA_FACTURA,USU_CREA,ESTADO_COMPRA_FACTURA,COD_PIGV,C OD_MONEDA,COD_EMPRESA,COD_TIPO_DOC) VALUES(codigo,codcompra,feccompra,nrodoc,montodoc,montoigv,mon tosub,SYSDATE,usuario,'1',codigv,codmoneda,codemp1,tipodoc); codigo_compra:=trim(codigo); End; /* Compra Detalle DBSIC*/ -- Author : JASTO -- Created : 25/08/2009 10:51:49 a.m. -- Purpose : Jose Asto Procedure SYNspCompraDet(CodCompra Char,codemp Char,tipodoc char,nrodoc char,c odcatal Char,cantdet Number,precuni Number ,prectot Number,codpedidodet Char/*, P_CURSOR out CursorResultado*/) Is Begin if codemp='01' then as_agencia:='01'; elsif codemp='02' then as_agencia:='16'; elsif codemp='03' then as_agencia:='13'; elsif codemp='04' then as_agencia:='14'; elsif codemp='05' then as_agencia:='17'; elsif codemp='06' then as_agencia:='18'; elsif codemp='07' then as_agencia:='22'; elsif codemp='10' then as_agencia:='01'; end if; if codemp='02' OR codemp='03' OR codemp='04' OR codemp='05' OR codemp='06' OR codemp='07' OR codemp='10' then codemp1:='02'; elsE codemp1:='01' ; end if; SELECT COUNT(ROWID) INTO cont FROM COMPRA_DET WHERE COD_COMPRA = CodCompra AND COD_EMPRESA = codemp1; IF cont <= 0 THEN codcompradet := TO_CHAR('01'); ELSE SELECT MAX(COD_COMPRA_DET) INTO maximo FROM COMPRA_DET WHERE COD_COMPRA = CodCompra AND COD_EMPRESA = codemp1; posicion := Length(concat('000000' , LTRIM(TO_CHAR(maximo+1)))) - 1; codcompradet := SUBSTR(concat('000000' , LTRIM(TO_CHAR(maximo+1))),pos icion,2); END IF;

-- INSERTANDO DATOS EN LA TABLA COMPRA_DET INSERT INTO COMPRA_DET(COD_COMPRA,COD_COMPRA_DET,COD_EMPRESA,CANT_COMP RA_DET,COD_PEDIDO_DET,ESTADO_COMPRA_DET,PRECIO_COMPRA_DET,TOTAL_COMPRA_DET,CODIG O) VALUES(CodCompra,codcompradet,codemp1,cantdet,codpedidodet,'1',precuni ,prectot,codcatal); INSERT INTO KARDEX_AGENCIA(CODIGO,COD_EMPRESA,COD_AGENCIA,FECHA,DETALL E,INGRESO,COD_TIPO_DOC,NUM_DOCUM) VALUES(codcatal,codemp1,as_agencia,SYSDATE,'INGRESO DE COMPRA',cantdet ,tipodoc,nrodoc);/*se cambio el '01' por la variable 'as_agencia'*/ -- FIN DE INSERCION SELECT COUNT(ROWID) INTO contcatalogo FROM ARTICULO WHERE CODIGO = co dcatal; IF contcatalogo > 0 THEN IF as_agencia ='01' or as_agencia ='16' or as_agencia ='17' or a s_agencia ='18' or as_agencia ='13' or as_agencia ='14' or as_agencia ='22' THEN UPDATE STOCK_AGENCIA SET CANTIDAD = CANTIDAD + cantdet WHERE COD_AGENCIA = as_agencia AND CODIGO = codcatal; END IF; END IF; End; /* Compra Detalle Serie DBSIC*/ -- Author : JASTO -- Created : 25/08/2009 10:51:49 a.m. -- Purpose : Jose Asto Procedure SYNspCompraDetS(CodCompra Char,codemp Char,numserie VarChar2,nrodoc char,codcatal Char,cantdet Number,precuni Number ,prectot Number,codcompradet Char/*, P_CURSOR out CursorResultado*/) Is Begin if codemp='01' then as_agencia:='01'; elsif codemp='02' then as_agencia:='16'; elsif codemp='03' then as_agencia:='13'; elsif codemp='04' then as_agencia:='14'; elsif codemp='05' then as_agencia:='17'; elsif codemp='06' then as_agencia:='18'; elsif codemp='07' then as_agencia:='22'; elsif codemp='10' then as_agencia:='01'; end if; if codemp='02' OR codemp='03' OR codemp='04' OR codemp='05' OR codemp='06' OR codemp='07' OR codemp='10' then codemp1:='02'; elsE codemp1:='01' ; end if; INSERT INTO COMPRA_DET_SERIE(NRO_SERIE,COD_COMPRA,COD_COMPRA_DET,COD_EMPR ESA,ESTADO_COMPRA_DET_SERIE,CREA_COMPRA_DET_SERIE,USU_CREA,CODIGO)

VALUES(numserie,CodCompra,codcompradet,codemp1,'1',SYSDATE,'ALMACEN',c odcatal); End; end PKG_SINCRONIZACION;