Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION LLENAR_PKDEXAUXILIAR2 (fecha VARCHAR2)
- RETURN VARCHAR2
- IS
- RES VARCHAR2(2000);
- CURSOR RI IS
- SELECT punto_id, id_med, TO_DATE(TO_CHAR(fecha_sol,'dd/mm/yyyy')) AS fech,
- TO_DATE(TO_CHAR(fecha_sol,'dd/mm/yyyy')) AS hora, SUM(cant_sol) AS cantsol, fue,
- '1' AS n_fue, ope, lote_id, 'A' AS estado
- FROM ripsmedicamentos
- WHERE ripsmedicamentos.fecha_sol <= TO_DATE(fecha) AND estado = 0
- GROUP BY punto_id, id_med, lote_id, fue, ope, TO_CHAR(fecha_sol,'dd/mm/yyyy'), valor_tipo_entrega
- ORDER BY TO_CHAR(fecha_sol,'dd/mm/yyyy');
- PE RI%ROWTYPE;
- -------------
- --sacando datos de la entrega para enviarselos al procedimiento llevar_kardex
- CURSOR LK IS
- SELECT DISTINCT PEVIR.BOD AS BODP, CCOST.C_COS AS CCOSTP, PEVIR.FECHA AS FECP, PEVIR.BOD AS BOD1, CUENTAS_VAL.CUENTA AS CUENP,
- PEVIR.VALOR_TIPO_ENTREGA AS PKVTE, PEVIR.VALOR_TIPO_ENTREGA AS VTEP, PEVIR.OPE AS OPEP, PEVIR.N_FUE AS NFUEP
- FROM (SELECT punto_id AS BOD, id_med AS COD, TO_DATE(TO_CHAR(fecha_sol,'dd/mm/yyyy')) AS FECHA,
- TO_DATE(TO_CHAR(fecha_sol,'dd/mm/yyyy')) AS HORA, SUM(cant_sol) AS CAN, FUE,
- '1' AS N_FUE, OPE, lote_id AS LOTE,
- 'A' AS ESTADO,'03' AS TIPO_ENTREGA, valor_tipo_entrega
- FROM ripsmedicamentos
- WHERE ripsmedicamentos.fecha_sol <= TO_DATE(fecha) AND estado = 0
- GROUP BY punto_id, id_med, lote_id, fue, ope, TO_CHAR(fecha_sol,'dd/mm/yyyy'), valor_tipo_entrega
- ORDER BY TO_CHAR(fecha_sol,'dd/mm/yyyy'))
- PEVIR, CCOST, BODEGA, CUENTAS_VAL
- WHERE CCOST.NOM = BODEGA.NOM
- AND PEVIR.BOD = BODEGA.C_BOD
- AND CUENTAS_VAL.VAL1 = PEVIR.VALOR_TIPO_ENTREGA
- ORDER BY TO_CHAR(PEVIR.FECHA,'dd/mm/yyyy');
- LKE LK%ROWTYPE;
- -------
- BODP2 RIPSMEDICAMENTOS.PUNTO_ID%TYPE;--bodega2 para procedimiento
- GEMPP VARCHAR2(20);--global empresa para procedimiento
- GUSRP VARCHAR2(20);--global usuario para procedimiento
- CCLAP VARCHAR2(20);
- BOD1 RIPSMEDICAMENTOS.PUNTO_ID%TYPE;--bodega
- NIT PE_KARDEX_AUXILIAR.BOD%TYPE;
- CRLK NUMBER;--Controlador de error en el momento de generar los datos para la funcion llevar_kardex
- CRLK2 NUMBER;--Controlador de error en el momento de generar los datos para la funcion llevar_kardex
- COUNTGOOD NUMBER;--Controlador de error en el momento de generar los datos para la funcion llevar_kardex
- COUNTBAD NUMBER;--Controlador de error en el momento de generar los datos para la funcion llevar_kardex
- MSG_LK VARCHAR2(2000);
- TEST_MSG_LK VARCHAR2(200);
- FECHAB DATE;
- BEGIN
- CRLK:=0;
- CRLK2:=0;
- COUNTGOOD:=0;
- COUNTBAD:=0;
- --FECHAB:=TO_DATE(fecha);
- BODP2:='01';
- GEMPP:='01';
- GUSRP:='PHARMAWEB';
- DELETE FROM PE_KARDEX;
- --insertar datos en pe_kardex
- OPEN RI;
- LOOP
- FETCH RI INTO PE;
- EXIT WHEN RI%NOTFOUND; -- Último registro.
- BEGIN
- --dbms_output.put_line('ENTRO'||fecha);
- INSERT INTO pe_kardex
- (BOD,COD,FECHA,
- HORA,CAN,FUE,
- N_FUE,OPE,LOTE,ESTADO)
- VALUES
- (PE.punto_id,PE.id_med,PE.fech,
- PE.hora,PE.cantsol,PE.fue,
- '1',PE.ope,PE.lote_id, 'A');
- EXCEPTION
- WHEN OTHERS THEN
- CRLK2:= CRLK2 + 1;
- --RES:='error al insertar datos en pe_kardex: '||SQLERRM;
- --dbms_output.put_line(RES);
- --RETURN RES;
- END;
- END LOOP;
- CLOSE RI;
- ----------------------
- dbms_output.put_line('Errores de insercion en pe_kardex: '||CRLK2);
- COMMIT;
- IF CRLK = 0 THEN
- OPEN LK;
- LOOP
- FETCH LK INTO LKE;
- EXIT WHEN LK%NOTFOUND; -- Último registro.
- NIT := LKE.BOD1;
- IF (SUBSTR(LKE.BOD1,0,1) = '0') THEN
- NIT := SUBSTR(LKE.BOD1,2);
- END IF;
- dbms_output.put_line('NIT: '||NIT);
- MSG_LK := LLEVAR_KARDEX(LKE.BODP,BODP2,GEMPP,GUSRP,LKE.CCOSTP,TO_CHAR(LKE.FECP,'DDMMYYYY'),'406',NIT,LKE.CUENP,LKE.PKVTE,'03',NULL,NULL,NULL,NULL,LKE.OPEP);
- TEST_MSG_LK := SUBSTR(MSG_LK,0,21);
- IF TEST_MSG_LK = 'Proceso Terminado con' THEN
- COUNTGOOD:=COUNTGOOD+1;
- dbms_output.put_line(''||MSG_LK);
- --return 'termino';
- ELSE
- dbms_output.put_line('Ocurrio el siguiente error: '||MSG_LK);
- COUNTBAD:=COUNTBAD+1;
- deshacer;
- END IF;
- END LOOP;
- CLOSE LK;
- ELSE
- dbms_output.put_line('Ocurrio un error al momento de generar los datos para el procedimiento almacenado, no se ejecuto ninguna transaccion...');
- END IF;
- RETURN 'Procedimiento ejecutado correctamente '||COUNTGOOD||' veces, errores de ejecucion '||COUNTBAD;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement