Ver la Versión Completa : Corte de Caja
Ferrari
01-08-2008, 02:53:31
Hola a tod@s, ahora me toco ponerles 'gorro' estoy tratando de generar un reporte para el corte de caja y estoy trabajando con QReport y D7 en SQL...Los datos los muestro a traves de un cxGrid mas no se como separar en columnas de los datos de la sig. forma, ej:
*Entradas:
No. Factura | Nombre del Cliente | Tipo Mov. | Efectivo | CHeque | Tarjeta
========================================================
|101 .........JUAN PEREZ .............MOSTRADOR ..$ 100.00
|102 .........FER LOPEZ ...............VENTA ..........$ 200.00
|103 .........MARIA RIVAS ............VENTA ....................$ 800.00
|104 .........JUAN ORTEGA ...........MOSTRADOR .........................$ 500.00
========================================================
|................................................TOTALES: $ 300.00 $ 800.00 $ 500.00
Pd. los puntitos los utilice solo pra tratar de alinear las columnas:p
ContraVeneno
01-08-2008, 14:40:55
a caray... no veo cuál es el problema.
En quickreport utilizarías una banda "ColumHeader" que es donde van los encabezados; una banda detalle ("Detail") que es donde van los datos ya separados, según los acomodes, será el espacio que tenga cada uno; y una banda tipo "Summary" que es donde van las sumas totales.
No veo cuál es el problema. :confused:
Ferrari
01-08-2008, 14:59:47
El detalle es mas que nada en acomodar los datos x columna en el 'Detail', es decir...la fila que sea de efectivo en la 'Columna' de Efectivo, si la fila viene con cheque...que aparezca en la columna de cheque..etc. Lo del encabezado y lo de las sumas si le entiendo. Grx.
Se me esta ocurriendo crear una tabla temporal y hacerle un 'barrido a la consulta 'global' para ir re-acomodando la info x columnas:p
ContraVeneno
01-08-2008, 15:22:33
Si tienes los datos separados, no le veo problema :confused::confused:
Solo colocas un TQRDBText enlazado al campo respectivo y colocado en la posición necesaria. :confused:
Solamente que tengas el dato del efectivo / Cheque / Tarjeta en un solo campo, algo como:
Cantidad FormaPago
100 Cheque
200 Tarjeta
300 Efectivo
100 Tarjeta
Por cierto, no recomendaría diferenciar los tipos de pago con letras, es mucho más rápido y fácil tener un catálogo de tipos y un identificador numérico para cada uno.
Entonces lo que tendrías que utilizar es un TQRExpr en lugar de TDBText.
En la propiedad expression, pondrías algo como: If(FormaPago='Cheque',Cantidad,'')
Pero sigo sin entender cuál es la situación exacta en la que estas.
Deberias usar un qrdbtext para cada campo, y estos los alineas segun te convengan, en la banda detail. Respecto a lo que dices de ponerlo en una columna u otra segun cobro, puedes usar la QRBandBeforePrint, algo asi
if tabla.FieldByName('PAGO') = 'CHEQUE' then QRDBText_cantidad.Left := QRText_Titulo_Cheque.Left;
else
if tabla.FieldByName('PAGO') = 'TARJETA' then QRDBText_cantidad.Left := QRText_Titulo_Tarjeta.Left;
else
if tabla.FieldByName('PAGO') = 'EFECTIVO' then QRDBText_cantidad.Left := QRText_titulo_Efectivo.Left;
mas o menos.
para las sumas finales, deberias hacer consultas, antes o despues, como
q.Active := false;
q.SQL.Text := 'select pago, sum(total) as TOTAL_CHEQ from tabla where PAGO = ''CHEQUES''';
q.Active := true;
total_cheq := q.FieldByName('TOTAL_CHEQ').Asfloat
etc...
y poner unos QRLabel en un summary band con esos valores.
saludos.
Por lo que entiendo, tiene los datos en un solo campo.
Solamente que tengas el dato del efectivo / Cheque / Tarjeta en un solo campo, algo como:
Cantidad FormaPago
100 Cheque
200 Tarjeta
300 Efectivo
100 Tarjeta
Entonces lo que tendrías que utilizar es un TQRExpr en lugar de TDBText.
En la propiedad expression, pondrías algo como: If(FormaPago='Cheque',Cantidad,'')
Yo también lo haría con un QRExpr, solo que necesitarías 3 QRExpr, uno para cada columna y utilizarlo de la forma que te explica ContraVeneno:
QrExpr1 -> Expresion -> If(FormaPago='Cheque',Cantidad,'')
QrExpr2 -> Expresion -> If(FormaPago='Tarjeta',Cantidad,'')
QrExpr3 -> Expresion -> If(FormaPago='Efectivo',Cantidad,'')
Saluditos
enecumene
01-08-2008, 18:20:49
También se puede usar con una sentencia SQL utilizando CASE WHEN.
Saludos.
Ferrari
01-08-2008, 21:14:58
Gracias a Tod@s por su aportacion...ya quedo solucionado el problema con el QRExpr y he podido nuevamente respirar :D.
Saludos a Contraveneno pork vi que eres tambien de Torreon, Coah. Hay si sabes de alguien para desarrollo en Delphi te lo encargo paisano.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.