Arregar Catalogo de Cuentas Contables
De CidesaWiki
Revisión a fecha de 21:13 9 dic 2008; Pablosilva (Discusión | contribuciones)
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;