Crear Escalera Presupuestaria en wiki
De CidesaWiki
(Diferencias entre revisiones)
(New page: <pre> CREATE OR REPLACE FUNCTION "SIMA004"."creare_scalera" () RETURNS integer AS $body$ - →Permite Crear la escalera Presupuestaria: DECLARE cuentas_new RECORD; cadena VA...) |
|||
Línea 10: | Línea 10: | ||
cadena VARCHAR; | cadena VARCHAR; | ||
cadena1 VARCHAR; | cadena1 VARCHAR; | ||
- | |||
R varchar; | R varchar; | ||
i INTEGER; | i INTEGER; | ||
Línea 25: | Línea 24: | ||
LOOP | LOOP | ||
cadena := trim(cuentas_new.codpre); | cadena := trim(cuentas_new.codpre); | ||
- | |||
/* FOR i in reverse 1..p LOOP | /* FOR i in reverse 1..p LOOP | ||
IF (SUBSTR(cadena,i,1)='-') THEN | IF (SUBSTR(cadena,i,1)='-') THEN | ||
Línea 71: | Línea 69: | ||
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; | LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; | ||
</pre> | </pre> | ||
+ | |||
+ | |||
+ | Este Codigo hay que Mejorarla... | ||
+ | |||
+ | |||
+ | --[[Usuario:Jlobaton|Jlobaton]] 17:42 10 ene 2008 (VET) |
Última versión de 21:42 10 ene 2008
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)