Crear Escalera Presupuestaria en wiki

De CidesaWiki

Revisión a fecha de 21:42 10 ene 2008; Jlobaton (Discusión | contribuciones)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a navegación, buscar
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)

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas