GeneXus - Generar Estado de Resultado y Balance General

   
Vista:

Generar Estado de Resultado y Balance General

Publicado por Aroldo (103 intervenciones) el 15/02/2011 18:39:40
Saludos Foro

Para los que leyeron mis consultas anteriores, he seguido trabajando con el sistema contable, ahora tengo la siguiente consulta:

Tengo una Transaccion para crear cuentas e indicar si son cuentas de estado de resultado o de balance general, esto lo hago con un un combo box para estado de resultado donde selecciono si es ingreso, gastos de operacion, de ventas, etc; y otro combo box para indicar que es de balance general donde seleeciono si es de activo, pasivo o capital o cualquiera de sus subdiviciones.

ahora bien, nececito crear un reporte que sea el estado de resultado y uno para el balance general, se hacer la parte de que ingrese todas la cuentas que son de estado de resultado por ejempo, pero no se como ordenar las cuentas en el balance general siguiendo el orden de este por ejemplo

ACTIVOS

CIRCULANTE ( para la venta, o que se va a convertir en efectivo a corto plazo)

Caja Chica xxxx

Caja xxxx

Banco xxxx

FIJO (articulos q se usan en la empresa para su propio uso , no para la venta)

Edificio xxxx

Mobiliario xxxx

Equipo de reparto xxxx

TOTAL ACTIVOS

y hacer el resto de los pasivos y capital

desde ya gracias por su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Generar Estado de Resultado y Balance General

Publicado por Aroldo (103 intervenciones) el 15/02/2011 20:55:00
No se como hacerlo con el reporteador de genexus, se que es mas facil con crystal reports pero no se como llamar los reportes de CR desde GX
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generar Estado de Resultado y Balance General

Publicado por Julio (1 intervención) el 16/02/2011 02:46:38
Hola Aroldo, sinceramente no tengo mucha experiencia en sistemas contables pero algo sí he visto.
He visto por ejemplo que en el registro donde se crea una cuenta hay algunos parámetros a indicar, entre ellos y para ir al grano es el que mencionas, es decir, indicar si la cuenta es de resultados o de balance general, teniendo esto como un parámetro de la cuenta y, si este atributo está referenciado (como Att directo o subtipo) en la Trn donde creas los asientos contables entonces podrías hacer un reporte para el balance general de la siguiente manera:

for each order CtaTpoCta // TABAST, Tabla de Detalle de asientos
where CtaTpoCta = 'B' // OJO Lee solo las cuentas de balance general
&TotalPorTipoCuenta = 0
for each oder CtaTpoCta CtaId // TABAST, Break
&TotalPorCuenta = 0
for each CtaTpoCta CtaId // TABAST, Break
&TotalPorCuenta += AstVal
endfor // TABAST, Break
if &TotalPorCuenta > 0
// Imprime total por cuenta
&TotalPorTipoCuenta += &TotalPorCuenta
endif
endfor // TABAST, Break
if &TotalPorTipoCuenta > 0
// Imprime total por cuenta de balance general
endif
endfor // TABAST, Tabla de Detalle de asientos
(Debes hacerle las tabulaciones necesarias para que se pueda leer mejor el script.)

Como te mencioné, no soy experto en contabilidad pero espero que esta ayuda te de alguna idea de lo que necesitas. Es posible que en el tabla de asientos contables se necesite guardar el código contable partido en más de un atributo para realizar un break más detallado porque por lo general estos códigod llevan el formato 99.999.999
En GX es muy sencillo hacer los reportes pero hay que prestar atención en el diseño de la estructura de las tablas según lo que a futuro queramos obtener.
La opción ORDER en el for each sirve para hacer un break y es muy potente, si no estas familiarizado con esto sería bueno que leas un poquito acerca de.
Por favor coméntanos que tal te pareció, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generar Estado de Resultado y Balance General

Publicado por Aroldo (103 intervenciones) el 17/02/2011 05:54:59
Entiendo muy bien el codigo, pero no aplica por como tengo definidas las transacciones, explico ahora como tengo creada esta parte:

Tengo una transaccion para crear las cuentas conde ingreso un codigo de cuenta (no lleva el formato que mencionas, ellos lo prefieren sin los puntos, un solo numero), el nombre de la cuenta, un combo box de Balance General (Activo circulante, activo fijo, otros activos, etc) y un combo box de Estado de Resultado (Ingreso, Gasto por operacion, gastos financieros). Ahora bien, tengo otra transaccion llamada Adicion de Transacciones (donde crean las distintas transacciones de la empresa) y una llamada Adicion de Partidas (donde se crean las partidas) que tiene la siguiente estructura:

Codigo de Transaccion o Partida
Tipo de Documento (sacado de otra TRN)
Moneda
Concepto
GRILLA
Cuenta
Debe
Haber

TotalDebe
TotalHaber

El estado de resultados deberia salir de estas transacciones igual que el balance general. No se si sea la mejor manera de hacerlo, si estoy trabajando mal estas TRN dimelo o si tienes alguna idea de como hacerlo.

desde ya gracias por tu ayuda...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generar Estado de Resultado y Balance General

Publicado por Julio (301 intervenciones) el 17/02/2011 19:31:15
Entiendo, lo que voy a explicar es la manera como yo lo haría y puede ser que no sea la forma como lo estas trabajando, únicamente trato de darte ideas.

Primero me voy a referir a la tabla en la que se guarda el catálogo de cuentas, digamos que tengo una cuenta 101001001 (solo es un ejemplo), este codigo se desglosa así:

1 Activos
01 Subcuenta
001 Sub-Subcuenta (1)
001 Sub-Subcuenta (2)

El código desglosado tiene cuatro partes, estas partes también las guardo (a más del codigo entero, nombre y otras cosas más) en un atributo cada una respectivamente, y digamos que la estructura quedaría mas o menos así:

CtaId*
CtaNom
CtaTpo (de Resultados o de Balance general)
CtaSub
CtaSub01
CtaSub02

Ahora iremos a la tabla de detalle de los asientos contables o movimientos y la definiría así:

AstId* (ASTCAB, Tabla cabecera de asientos)
AstFch
AstEtc
(DetSec* (ASTDET, Tabla detalle de asientos)
DetCtaId (Subtipo de CtaId)
DetCtaNom (Subtipo de CtaNom)
DetCtaTpo (Subtipo de CtaTpo)
DetCtaSub (Subtipo de CtaSub)
DetCtaSub01 (Subtipo de CtaSub01)
DetCatSub02 (Subtipo de CtaSub02)
DetCrDb (Crédito/Débito)
DetVal (Valor)
DetEtc)

En referencia a los subtipos, no está por demás aclarar que en la tabla de detalle solo se almacenará el código contable DetCtaId, los otros subtipos son solamente inferidos.

Mi reporte podría quedar algo así:

for each order DetCtaTpo DetCatId // ASTDET
where DetCtaTpo = 'B' // Cuentas de Balance general
for each order DetCtaTpo DetCatId DetCtaSub // ASTDET, Break 01
&TotCtaSub = 0
for each DetCtaTpo DetCatId DetCtaSub // ASTDET, Break 02
if DetCrDb = 'C' // Crédito
&TotCtaSub += DetVal
else // Débito
&TotCtaSub -= DetVal
endif // DetCrDb = 'C'
endfor// ASTDET, Break 02
if &TotCtaSub <> 0
print Detalle // Subcuenta y su Total
&GranTot += &TotCtaSub
endif
endfor// ASTDET, Break 01
print Total // Total de las cuentas de Balance general
endfor // ASTDET

Armado de esta manera también podemos hacer breaks por las demas subcuentas interiores y de la manera como mejor te convenga.
Si te preguntas si GX acepta armar for each con subtipos la respuesta es sí, solo en los modelos que manejan base de datos.
Tengo otras ideas pero hay que tratar de ir por lo menos costoso.
Repito, lo que te doy no es la única fórmula lo que pretendo es darte ideas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generar Estado de Resultado y Balance General

Publicado por Aroldo (103 intervenciones) el 18/02/2011 07:34:02
Saludos de nuevo foro.

Julio muchas gracias por tus ideas de verdad que me ayudaron, lo resolvi de la siguiente manera:

En el reporte de estado de balance general tengo 4 PrintBlock:

1. Header (Encabezado)
2. Activos
3. Pasivos
4. Capital

luego Cree un for each para que en cada bloque aparezcan las cuentas que corresponden, tome la idea de la segunda sugerencia de Julio. haciendo esto simplemente hago los calculos en las variables necesarias y escribo resultados, lo demas es estetica.

Hice el mismo proceso de los PrintBlock en el Estado de Resultado.

Saludos y espero esta idea le sirva a alguien mas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generar Estado de Resultado y Balance General

Publicado por Julio (301 intervenciones) el 19/02/2011 07:32:55
Me alegro Aroldo, pues como te habras dado cuenta hay mùltiples maneras de solucionar, incluso podrìas obviar el hacer un print block para cada cuenta general pero dejèmoslo asì, mas adelante iras puliendo.

Felicitaciones y saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar