• Viernes 8 de Noviembre de 2024, 20:56

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - ecch1

Páginas: [1]
1
Visual FoxPro / Re: Totales Dificiles en Reporte Contable
« en: Jueves 24 de Septiembre de 2009, 01:42 »
Hola

Para sumar las cuentas de acumulacion o cuentas principales debes hacerte una funcion
Supongamos que la estructura de tu catalogo es la siguiente

cuenta          Caracter(20)
descripcion   Caracter(80)
Nivel            Caracter(1)

Y para las cuentas que has definido tienes lo siguiente

cuenta          Descripcion                 Nivel
1                  Activo Corriente         1
10                Caja Bancos                2
101              Caja                           3
10101          Caja Soles                   D      
104              Bancos Cta Cte.          3
10401          Bancos NNN                 4
1040101      Cta. Corriente Soles     D
10402          Bancos XXXX                4
1040201      Cta. Cirriente Dolares   D
12              Clientes                        2
121            Facturas por Cobrar       3
12101        Cliente del Pais              4
1210101     Cliente XXXX                  D  
2                Existencias                   1
20              Mercaderias                  2
201            Almacen No 1                3
20101         Mercanacia XXXXx         D

 
D significa Nivel Detalle detalle, por esta cuenta vas a ingresar los movimientos "Asientos contables"

Bueno: asi sucesivamente, el Plan Contable es muy extenso lo bueno es que existe una estructura estandar que se denomina Plan Contable General, su contenido total lo puedes encontrar con seguridad buscando en la Web, aqui solo he puesto unas cuentas de memoria es posible que esto haya cambiado pero el concepto Basico es el mismo, yo trabajaba en sistemas contables por los años 1988 al 1992 asi que seguramente el plan ha cambiado mucho.

Como ya habras podido apreciar el Tip del asunto es que tengas definido el Nivel de cada cuenta de esa forma hacer la funcion que acumula cada cuenta padre  es secillo de hacer. Pueden haber muchas otras formas, esta es una de las que utilice hace mucho tiempo, tambie hay otras form cuando los niveles se separaban por puntos. Ojo, este codigo lo escribo de memoria asi que puede haber errores ortograficos y de nombres de funciones pero el concepto basico lo expreso aqui  

Ejemplo

Código: Text
  1. FUNCTION SumaCta
  2. PARAMETERS cCodCta, cNivel, ldebe
  3. LOCAL nImp_Total, cSqlStr
  4. * Supongamos que los campo de la tabla donde estan los importes se denomina DEBE y HABER
  5. IF cNivel <> 'D'   
  6.    cNivel = STR(VAL(cNivel)+1),1)
  7.    cSqlStr ="SELECT cuenta FROM DIARIOS WHERE cuenta LIKE '"+cCodCta+"%'"+" AND Nivel='"cNivel+"'"
  8.    &cSqlStr
  9.    if Reccount() = 0
  10.       cNivel = 'D'
  11.    endif
  12. endif
  13.  
  14. iF ldebe
  15.    cSqlStr = "SELECT sum(debe) INTO nImp_Total FROM DIARIO WHERE cuenta LIKE '"+cCodCta+"%'"+" AND Nivel='"cNivel+"'"
  16. Else
  17.    cSqlStr=  "SELECT sum(haber) INTO nImp_Total FROM DIARIO WHERE cuenta LIKE '"+cCodCta+"%'"+" AND Nivel='"cNivel+"'"
  18. ENDiF
  19.  
  20. &cSqlStr
  21. if reccount()=0
  22.     nImp_Total = 0
  23. endif
  24.  USE
  25. RETURN nImp_Total
  26.  
  27.  

Te dejo la Idea, reitero, se puede hacer de muchas maneras, pero esta se me ocurrio por el momento, espero comentarios

Saludos
ecch
Pd La funcion cuando es posible identificar los niveles de las cuentas con un punto se puede utilizar llamadas recursivas.

Páginas: [1]