
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://w.cidesa.com.ve/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>http://w.cidesa.com.ve/index.php?feed=atom&amp;target=Ogutierrez&amp;title=Especial%3AContribuciones%2FOgutierrez</id>
		<title>CidesaWiki - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="http://w.cidesa.com.ve/index.php?feed=atom&amp;target=Ogutierrez&amp;title=Especial%3AContribuciones%2FOgutierrez"/>
		<link rel="alternate" type="text/html" href="http://w.cidesa.com.ve/index.php/Especial:Contribuciones/Ogutierrez"/>
		<updated>2026-04-13T13:30:08Z</updated>
		<subtitle>De CidesaWiki</subtitle>
		<generator>MediaWiki 1.16.2</generator>

	<entry>
		<id>http://w.cidesa.com.ve/index.php/Arregar_Catalogo_de_Cuentas_Contables</id>
		<title>Arregar Catalogo de Cuentas Contables</title>
		<link rel="alternate" type="text/html" href="http://w.cidesa.com.ve/index.php/Arregar_Catalogo_de_Cuentas_Contables"/>
				<updated>2008-12-09T22:44:15Z</updated>
		
		<summary type="html">&lt;p&gt;Ogutierrez: /* Arreglar Catálogo Contable */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El procedimiento hace lo siguiente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.-Recorre todo el catalogo contable buscando omisiones en las rupturas de jerarquia, y una vez que consigue una omision la inserta con la descripcion de la ruptura de mayor nivel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
por ejemplo si tenemos el catalogo de esta manera&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1 Activos&lt;br /&gt;
&lt;br /&gt;
1-1-1-1 Caja Principal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
el Procedimiento inserta los codigos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1-1 Caja principal&lt;br /&gt;
&lt;br /&gt;
1-1-1 Caja principal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.-Verifica que no existan cuantas madres(Acumuladoras) cargables, es decir Si consigue alguna cuenta con hijos pone cargable='N' y si consigue una cuenta sin hijos asigna cargable='C'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La tabla cargables simplemente es para saber que operaciones realizo el procedimiento,&lt;br /&gt;
si el campo cargab de esa tabla='N' es porq estaba como &amp;quot;'''no'''&amp;quot; cargable y se cambio para cargable de manera similar con el caso contrario. Cuando el valor es igual a 'I' significa que se inserto esa nueva ruptura.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se Debe recordar hacer los insert correspondientes en contabb1 por cada registro insertado (ruptura nueva) es decir 12 registros por cada cuenta nueva insertada. Cuando son pocas las cuentas y no se es muy ducho haciendo querys se puede optar por consultar por el sistema cada cuenta nueva creada y al darle salvar se insertaran los registros automaticamente en contabb1 para esa cuenta (version vb no me consta con php)&lt;br /&gt;
&lt;br /&gt;
La manera de correr el procedimiento es la siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
select arreglarcuentas();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Ojo: Cambiar el schema por el del cliente'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Table: &amp;quot;SIMA003&amp;quot;.cargables&lt;br /&gt;
&lt;br /&gt;
-- DROP TABLE &amp;quot;SIMA003&amp;quot;.cargables;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE &amp;quot;SIMA003&amp;quot;.cargables&lt;br /&gt;
(&lt;br /&gt;
  cuenta varchar(32),&lt;br /&gt;
  cargab varchar(2)&lt;br /&gt;
) &lt;br /&gt;
WITH OIDS;&lt;br /&gt;
ALTER TABLE &amp;quot;SIMA003&amp;quot;.cargables OWNER TO wiki;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CREATE OR REPLACE FUNCTION &amp;quot;SIMA003&amp;quot;.arreglarcuentas()&lt;br /&gt;
  RETURNS &amp;quot;numeric&amp;quot; AS&lt;br /&gt;
$BODY$&lt;br /&gt;
DECLARE&lt;br /&gt;
   REGISTRO RECORD;&lt;br /&gt;
   REGISTRO1 RECORD;&lt;br /&gt;
   SALDO_ANT NUMERIC;&lt;br /&gt;
   SALDO_ACT NUMERIC;&lt;br /&gt;
   CADENA VARCHAR;&lt;br /&gt;
   SALDOS CURSOR IS SELECT A.CODCTA,A.DESCTA,A.CARGAB,A.DEBCRE FROM CONTABB A ORDER BY CODCTA DESC;&lt;br /&gt;
   CUANTOS NUMERIC;&lt;br /&gt;
   I INTEGER;&lt;br /&gt;
   MONCRE NUMERIC;&lt;br /&gt;
BEGIN&lt;br /&gt;
   set search_path to &amp;quot;SIMA003&amp;quot;;&lt;br /&gt;
   OPEN SALDOS;&lt;br /&gt;
   FETCH SALDOS INTO REGISTRO;&lt;br /&gt;
   IF FOUND THEN&lt;br /&gt;
      LOOP&lt;br /&gt;
        ------------------AGREGAR RUPTURAS FALTANTES&lt;br /&gt;
   	    CADENA:=RTRIM(REGISTRO.CODCTA);&lt;br /&gt;
		for I in reverse LENGTH(CADENA)..1&lt;br /&gt;
		loop&lt;br /&gt;
          IF SUBSTR(REGISTRO.CODCTA,I,1)='-' THEN&lt;br /&gt;
       	     CADENA:=SUBSTR(REGISTRO.CODCTA,1,I-1);&lt;br /&gt;
       	     SELECT COUNT(*) INTO CUANTOS FROM  CONTABB WHERE CODCTA=RPAD(CADENA,32,' ');&lt;br /&gt;
       	     IF CUANTOS=0 THEN-- NO LO ENCONTRO ENTONCES INSERTO&lt;br /&gt;
                INSERT INTO CARGABLES SELECT RPAD(CADENA,32,' '),'I' FROM CONTABB WHERE CODCTA=REGISTRO.CODCTA;&lt;br /&gt;
       	  	    INSERT INTO CONTABB SELECT RPAD(CADENA,32,' '),DESCTA,FECINI,FECCIE,SALANT,DEBCRE,CARGAB,SALPRGPER,SALACUPER,SALPRGPERFOR FROM CONTABB WHERE CODCTA=REGISTRO.CODCTA;&lt;br /&gt;
       	  	    --COMMIT;&lt;br /&gt;
       	     ELSE	&lt;br /&gt;
       	  	   --SRW.MESSAGE(100,'COMO CONSEGUI EL NIVEL ENTONCES NO BUSCO MAS');&lt;br /&gt;
       	  	    EXIT;&lt;br /&gt;
       	     END IF;&lt;br /&gt;
       	  --SRW.MESSAGE(100,'AQUI BUSCO, SI NO CONSIGO INSERTO, DE LO CONTRARIO NO DEBERIA SEGUIR');&lt;br /&gt;
          END IF;&lt;br /&gt;
		end loop;&lt;br /&gt;
		-----------------------FIN AGREGAR RUPTURAS&lt;br /&gt;
		&lt;br /&gt;
		-------------------DETERMINAR CARGABLES&lt;br /&gt;
		  SELECT COUNT(*) INTO CUANTOS FROM CONTABB WHERE CODCTA LIKE RTRIM(REGISTRO.CODCTA)||'%' AND LENGTH(RTRIM(REGISTRO.CODCTA))&amp;lt;LENGTH(RTRIM(CODCTA));&lt;br /&gt;
          IF CUANTOS=0 THEN --ENTONCES ES CARGABLE&lt;br /&gt;
             INSERT INTO CARGABLES SELECT CODCTA,CARGAB FROM CONTABB WHERE CODCTA=REGISTRO.CODCTA AND CARGAB='N';&lt;br /&gt;
  	         UPDATE CONTABB SET CARGAB='C' WHERE CODCTA=REGISTRO.CODCTA;&lt;br /&gt;
  	&lt;br /&gt;
  	         --COMMIT;&lt;br /&gt;
          ELSE&lt;br /&gt;
             INSERT INTO CARGABLES SELECT CODCTA,CARGAB FROM CONTABB WHERE CODCTA=REGISTRO.CODCTA AND CARGAB='C';&lt;br /&gt;
             UPDATE CONTABB SET CARGAB='N' WHERE CODCTA=REGISTRO.CODCTA;&lt;br /&gt;
&lt;br /&gt;
  	         --COMMIT;  	&lt;br /&gt;
          END IF;&lt;br /&gt;
         -------------------FIN DETERMINAR CARGABLES&lt;br /&gt;
        FETCH SALDOS INTO REGISTRO;&lt;br /&gt;
        IF NOT FOUND THEN&lt;br /&gt;
           EXIT;&lt;br /&gt;
        END IF;&lt;br /&gt;
     END LOOP;&lt;br /&gt;
   END IF;&lt;br /&gt;
   CLOSE SALDOS;&lt;br /&gt;
   RETURN 0;&lt;br /&gt;
END;&lt;br /&gt;
$BODY$&lt;br /&gt;
  LANGUAGE 'plpgsql' VOLATILE;&lt;br /&gt;
ALTER FUNCTION &amp;quot;SIMA003&amp;quot;.arreglarcuentas() OWNER TO wiki;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--[[Usuario:Pablosilva|Pablosilva]] 17:24 9 dic 2008 (VET)&lt;/div&gt;</summary>
		<author><name>Ogutierrez</name></author>	</entry>

	<entry>
		<id>http://w.cidesa.com.ve/index.php/Arregar_Catalogo_de_Cuentas_Contables</id>
		<title>Arregar Catalogo de Cuentas Contables</title>
		<link rel="alternate" type="text/html" href="http://w.cidesa.com.ve/index.php/Arregar_Catalogo_de_Cuentas_Contables"/>
				<updated>2008-12-09T22:43:50Z</updated>
		
		<summary type="html">&lt;p&gt;Ogutierrez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Arreglar Catálogo Contable ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El procedimiento hace lo siguiente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.-Recorre todo el catalogo contable buscando omisiones en las rupturas de jerarquia, y una vez que consigue una omision la inserta con la descripcion de la ruptura de mayor nivel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
por ejemplo si tenemos el catalogo de esta manera&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1 Activos&lt;br /&gt;
&lt;br /&gt;
1-1-1-1 Caja Principal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
el Procedimiento inserta los codigos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1-1 Caja principal&lt;br /&gt;
&lt;br /&gt;
1-1-1 Caja principal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.-Verifica que no existan cuantas madres(Acumuladoras) cargables, es decir Si consigue alguna cuenta con hijos pone cargable='N' y si consigue una cuenta sin hijos asigna cargable='C'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La tabla cargables simplemente es para saber que operaciones realizo el procedimiento,&lt;br /&gt;
si el campo cargab de esa tabla='N' es porq estaba como &amp;quot;'''no'''&amp;quot; cargable y se cambio para cargable de manera similar con el caso contrario. Cuando el valor es igual a 'I' significa que se inserto esa nueva ruptura.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se Debe recordar hacer los insert correspondientes en contabb1 por cada registro insertado (ruptura nueva) es decir 12 registros por cada cuenta nueva insertada. Cuando son pocas las cuentas y no se es muy ducho haciendo querys se puede optar por consultar por el sistema cada cuenta nueva creada y al darle salvar se insertaran los registros automaticamente en contabb1 para esa cuenta (version vb no me consta con php)&lt;br /&gt;
&lt;br /&gt;
La manera de correr el procedimiento es la siguiente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
select arreglarcuentas();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Ojo: Cambiar el schema por el del cliente'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Table: &amp;quot;SIMA003&amp;quot;.cargables&lt;br /&gt;
&lt;br /&gt;
-- DROP TABLE &amp;quot;SIMA003&amp;quot;.cargables;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE &amp;quot;SIMA003&amp;quot;.cargables&lt;br /&gt;
(&lt;br /&gt;
  cuenta varchar(32),&lt;br /&gt;
  cargab varchar(2)&lt;br /&gt;
) &lt;br /&gt;
WITH OIDS;&lt;br /&gt;
ALTER TABLE &amp;quot;SIMA003&amp;quot;.cargables OWNER TO wiki;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CREATE OR REPLACE FUNCTION &amp;quot;SIMA003&amp;quot;.arreglarcuentas()&lt;br /&gt;
  RETURNS &amp;quot;numeric&amp;quot; AS&lt;br /&gt;
$BODY$&lt;br /&gt;
DECLARE&lt;br /&gt;
   REGISTRO RECORD;&lt;br /&gt;
   REGISTRO1 RECORD;&lt;br /&gt;
   SALDO_ANT NUMERIC;&lt;br /&gt;
   SALDO_ACT NUMERIC;&lt;br /&gt;
   CADENA VARCHAR;&lt;br /&gt;
   SALDOS CURSOR IS SELECT A.CODCTA,A.DESCTA,A.CARGAB,A.DEBCRE FROM CONTABB A ORDER BY CODCTA DESC;&lt;br /&gt;
   CUANTOS NUMERIC;&lt;br /&gt;
   I INTEGER;&lt;br /&gt;
   MONCRE NUMERIC;&lt;br /&gt;
BEGIN&lt;br /&gt;
   set search_path to &amp;quot;SIMA003&amp;quot;;&lt;br /&gt;
   OPEN SALDOS;&lt;br /&gt;
   FETCH SALDOS INTO REGISTRO;&lt;br /&gt;
   IF FOUND THEN&lt;br /&gt;
      LOOP&lt;br /&gt;
        ------------------AGREGAR RUPTURAS FALTANTES&lt;br /&gt;
   	    CADENA:=RTRIM(REGISTRO.CODCTA);&lt;br /&gt;
		for I in reverse LENGTH(CADENA)..1&lt;br /&gt;
		loop&lt;br /&gt;
          IF SUBSTR(REGISTRO.CODCTA,I,1)='-' THEN&lt;br /&gt;
       	     CADENA:=SUBSTR(REGISTRO.CODCTA,1,I-1);&lt;br /&gt;
       	     SELECT COUNT(*) INTO CUANTOS FROM  CONTABB WHERE CODCTA=RPAD(CADENA,32,' ');&lt;br /&gt;
       	     IF CUANTOS=0 THEN-- NO LO ENCONTRO ENTONCES INSERTO&lt;br /&gt;
                INSERT INTO CARGABLES SELECT RPAD(CADENA,32,' '),'I' FROM CONTABB WHERE CODCTA=REGISTRO.CODCTA;&lt;br /&gt;
       	  	    INSERT INTO CONTABB SELECT RPAD(CADENA,32,' '),DESCTA,FECINI,FECCIE,SALANT,DEBCRE,CARGAB,SALPRGPER,SALACUPER,SALPRGPERFOR FROM CONTABB WHERE CODCTA=REGISTRO.CODCTA;&lt;br /&gt;
       	  	    --COMMIT;&lt;br /&gt;
       	     ELSE	&lt;br /&gt;
       	  	   --SRW.MESSAGE(100,'COMO CONSEGUI EL NIVEL ENTONCES NO BUSCO MAS');&lt;br /&gt;
       	  	    EXIT;&lt;br /&gt;
       	     END IF;&lt;br /&gt;
       	  --SRW.MESSAGE(100,'AQUI BUSCO, SI NO CONSIGO INSERTO, DE LO CONTRARIO NO DEBERIA SEGUIR');&lt;br /&gt;
          END IF;&lt;br /&gt;
		end loop;&lt;br /&gt;
		-----------------------FIN AGREGAR RUPTURAS&lt;br /&gt;
		&lt;br /&gt;
		-------------------DETERMINAR CARGABLES&lt;br /&gt;
		  SELECT COUNT(*) INTO CUANTOS FROM CONTABB WHERE CODCTA LIKE RTRIM(REGISTRO.CODCTA)||'%' AND LENGTH(RTRIM(REGISTRO.CODCTA))&amp;lt;LENGTH(RTRIM(CODCTA));&lt;br /&gt;
          IF CUANTOS=0 THEN --ENTONCES ES CARGABLE&lt;br /&gt;
             INSERT INTO CARGABLES SELECT CODCTA,CARGAB FROM CONTABB WHERE CODCTA=REGISTRO.CODCTA AND CARGAB='N';&lt;br /&gt;
  	         UPDATE CONTABB SET CARGAB='C' WHERE CODCTA=REGISTRO.CODCTA;&lt;br /&gt;
  	&lt;br /&gt;
  	         --COMMIT;&lt;br /&gt;
          ELSE&lt;br /&gt;
             INSERT INTO CARGABLES SELECT CODCTA,CARGAB FROM CONTABB WHERE CODCTA=REGISTRO.CODCTA AND CARGAB='C';&lt;br /&gt;
             UPDATE CONTABB SET CARGAB='N' WHERE CODCTA=REGISTRO.CODCTA;&lt;br /&gt;
&lt;br /&gt;
  	         --COMMIT;  	&lt;br /&gt;
          END IF;&lt;br /&gt;
         -------------------FIN DETERMINAR CARGABLES&lt;br /&gt;
        FETCH SALDOS INTO REGISTRO;&lt;br /&gt;
        IF NOT FOUND THEN&lt;br /&gt;
           EXIT;&lt;br /&gt;
        END IF;&lt;br /&gt;
     END LOOP;&lt;br /&gt;
   END IF;&lt;br /&gt;
   CLOSE SALDOS;&lt;br /&gt;
   RETURN 0;&lt;br /&gt;
END;&lt;br /&gt;
$BODY$&lt;br /&gt;
  LANGUAGE 'plpgsql' VOLATILE;&lt;br /&gt;
ALTER FUNCTION &amp;quot;SIMA003&amp;quot;.arreglarcuentas() OWNER TO wiki;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--[[Usuario:Pablosilva|Pablosilva]] 17:24 9 dic 2008 (VET)&lt;/div&gt;</summary>
		<author><name>Ogutierrez</name></author>	</entry>

	</feed>