Crear Escalera Presupuestaria en wiki
De CidesaWiki
Revisión a fecha de 21:42 10 ene 2008; Jlobaton (Discusión | contribuciones)
CREATE OR REPLACE FUNCTION "SIMA004"."creare_scalera" () RETURNS integer AS
$body$
/*
Permite Crear la escalera Presupuestaria
*/
DECLARE
cuentas_new RECORD;
cadena VARCHAR;
cadena1 VARCHAR;
R varchar;
i INTEGER;
CUANTOS INTEGER;
INI INTEGER;
FIN INTEGER;
cuentas cursor is select * from cpdeftit order by codpre DESC;
DECLARE
BEGIN
OPEN cuentas;
FETCH cuentas into cuentas_new;
IF FOUND THEN
LOOP
cadena := trim(cuentas_new.codpre);
/* FOR i in reverse 1..p LOOP
IF (SUBSTR(cadena,i,1)='-') THEN
cadena := SUBSTR(cadena,1,i-1);
--SRW.MESSAGE(100,CADENA);
SELECT COUNT(*) AS CUANTOS FROM "SIMA004".cpdeftit WHERE trim(codpre)=cadena;
IF (CUANTOS=0) THEN -- NO LO ENCONTRO ENTONCES INSERTO
--SRW.MESSAGE(100,'AQUI INSERTO '||CADENA);
INSERT INTO "SIMA004".cpdeftit SELECT RPAD(cadena,32,' '),codpre, nompre, codcta, stacod, coduni, codtip, estatus FROM CONTABB WHERE CODCTA=cadena;
COMMIT;
ELSE
--SRW.MESSAGE(100,'COMO CONSEGUI EL NIVEL ENTONCES NO BUSCO MAS');
EXIT;
END IF;
--SRW.MESSAGE(100,'AQUI BUSCO, SI NO CONSIGO INSERTO, DE LO CONTRARIO NO DEBERIA SEGUIR');
END IF;
*/
cadena1 := trim(cuentas_new.codpre);
INI := 1;
FIN := INSTR(cadena1,'-',INI,1);
WHILE FIN <> 0 LOOP
cadena := SUBSTR(cadena1,1,FIN-1);
SELECT INTO CUANTOS COUNT(codpre) FROM cpdeftit WHERE trim(codpre)=cadena;
IF (CUANTOS=0) THEN -- NO LO ENCONTRO ENTONCES INSERTO
INSERT INTO cpdeftit SELECT RPAD(cadena,32,' '), nompre, codcta, stacod, coduni, codtip, estatus FROM cpdeftit WHERE trim(codpre)=cadena1;
ELSE
--EXIT;
END IF;
INI := FIN+1;
FIN := INSTR(cadena1,'-',INI,1);
END LOOP;
FETCH cuentas into cuentas_new;
IF NOT FOUND THEN
EXIT;
END IF;
END LOOP;
END IF;
CLOSE cuentas;
RETURN(0);
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
Este Codigo hay que Mejorarla...
--Jlobaton 17:42 10 ene 2008 (VET)