Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Corte de Caja (https://www.clubdelphi.com/foros/showthread.php?t=58795)

Ferrari 01-08-2008 02:53:31

Corte de Caja
 
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:
Cita:

*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:
Código:

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.

coso 01-08-2008 15:49:25

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

Código Delphi [-]
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.

coso 01-08-2008 15:57:05

para las sumas finales, deberias hacer consultas, antes o despues, como

Código Delphi [-]
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.

Caro 01-08-2008 16:52:02

Por lo que entiendo, tiene los datos en un solo campo.

Cita:

Empezado por ContraVeneno (Mensaje 304971)
Solamente que tengas el dato del efectivo / Cheque / Tarjeta en un solo campo, algo como:
Código:

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.


La franja horaria es GMT +2. Ahora son las 23:40:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi