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