Arregar Catalogo de Cuentas Contables

De CidesaWiki

Saltar a navegación, buscar

CREATE OR REPLACE FUNCTION "SIMA003".arreglarcuentas()
  RETURNS "numeric" AS
$BODY$
DECLARE
   REGISTRO RECORD;
   REGISTRO1 RECORD;
   SALDO_ANT NUMERIC;
   SALDO_ACT NUMERIC;
   CADENA VARCHAR;
   SALDOS CURSOR IS SELECT A.CODCTA,A.DESCTA,A.CARGAB,A.DEBCRE FROM CONTABB A ORDER BY CODCTA DESC;
   CUANTOS NUMERIC;
   I INTEGER;
   MONCRE NUMERIC;
BEGIN
   set search_path to "SIMA003";
   OPEN SALDOS;
   FETCH SALDOS INTO REGISTRO;
   IF FOUND THEN
      LOOP
        ------------------AGREGAR RUPTURAS FALTANTES
   	    CADENA:=RTRIM(REGISTRO.CODCTA);
		for I in reverse LENGTH(CADENA)..1
		loop
          IF SUBSTR(REGISTRO.CODCTA,I,1)='-' THEN
       	     CADENA:=SUBSTR(REGISTRO.CODCTA,1,I-1);
       	     SELECT COUNT(*) INTO CUANTOS FROM  CONTABB WHERE CODCTA=RPAD(CADENA,32,' ');
       	     IF CUANTOS=0 THEN-- NO LO ENCONTRO ENTONCES INSERTO
                INSERT INTO CARGABLES SELECT RPAD(CADENA,32,' '),'I' FROM CONTABB WHERE CODCTA=REGISTRO.CODCTA;
       	  	    INSERT INTO CONTABB SELECT RPAD(CADENA,32,' '),DESCTA,FECINI,FECCIE,SALANT,DEBCRE,CARGAB,SALPRGPER,SALACUPER,SALPRGPERFOR FROM CONTABB WHERE CODCTA=REGISTRO.CODCTA;
       	  	    --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;
		end loop;
		-----------------------FIN AGREGAR RUPTURAS
		
		-------------------DETERMINAR CARGABLES
		  SELECT COUNT(*) INTO CUANTOS FROM CONTABB WHERE CODCTA LIKE RTRIM(REGISTRO.CODCTA)||'%' AND LENGTH(RTRIM(REGISTRO.CODCTA))<LENGTH(RTRIM(CODCTA));
          IF CUANTOS=0 THEN --ENTONCES ES CARGABLE
             INSERT INTO CARGABLES SELECT CODCTA,CARGAB FROM CONTABB WHERE CODCTA=REGISTRO.CODCTA AND CARGAB='N';
  	         UPDATE CONTABB SET CARGAB='C' WHERE CODCTA=REGISTRO.CODCTA;
  	
  	         --COMMIT;
          ELSE
             INSERT INTO CARGABLES SELECT CODCTA,CARGAB FROM CONTABB WHERE CODCTA=REGISTRO.CODCTA AND CARGAB='C';
             UPDATE CONTABB SET CARGAB='N' WHERE CODCTA=REGISTRO.CODCTA;

  	         --COMMIT;  	
          END IF;
         -------------------FIN DETERMINAR CARGABLES
        FETCH SALDOS INTO REGISTRO;
        IF NOT FOUND THEN
           EXIT;
        END IF;
     END LOOP;
   END IF;
   CLOSE SALDOS;
   RETURN 0;
END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION "SIMA003".arreglarcuentas() OWNER TO wiki;

--Pablosilva 17:24 9 dic 2008 (VET)

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas