Ir al contenido


Foto

imprimir facturas


  • Por favor identifícate para responder
19 respuestas en este tema

#1 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 05 enero 2010 - 11:28



delphi
  1. @prow()+1,0 say " "
  2. @prow(),0 say padc(AR(1),80," ")
  3. select 1
  4. @Prow()+1,0 say padc(ar(3),80," ")
  5. @Prow()+1,0 say padc(ar(4),80," ")
  6. @prow()+2,0 say targ
  7. @prow(),58 say ruta 
  8. @prow(),61 say notaruta
  9. @prow(),94 say "BALANCE PENDIENTE + FACT ACTUAL"
  10. @prow()+1,0 SAY CLIENTE
  11. @prow(),58 say ar(2)
  12. @prow(),93 SAY REPLICATE ("-",22)
  13. @prow()+1,0 SAY DIRECCION
  14. @prow(),58 say ar(5)
  15. @prow(),93 say "VENTAS"
  16. @prow(),106 say m7 pict"RD$999,999.99"
  17. @prow()+1,0 SAY TELEFONO
  18. @prow(),58 say ar(15)
  19. @prow(),93 say "ACOPLAMIENTOS"
  20. @prow(),106 say m6 pict "RD$999,999.99"
  21. @prow()+1,0 say replicate("-",80)
  22. @PROW(),93 SAY REPLICATE ("=",28)
  23. @prow()+1,0 say "CANTIDAD"
  24. @prow(),10 say "DETALLES"
  25. @prow(),58 SAY "TOTAL  "
  26. @prow(),93 say "TOTAL"
  27. @prow(),106 say m5 pict "RD$999,999.99"
  28. @prow()+1,0 SAY REPLICATE ("-",80)
  29.  
  30.  
  31. COD1=SPACE(04)
  32. store 0 to cantidad
  33. cantidad=1
  34. @prow()+1,0 SAY CANTIDAD PICT '9'
  35. @prow(),10 SAY AR(6)
  36. totales=aco*cantidad
  37. @prow(),58 say totales*3 pict '9999.99'
  38. if guar>0
  39. @prow()+1,0 SAY CANTIDAD PICT '9'
  40. @prow(),10 SAY AR(7)
  41. totales1 =guar*cantidad
  42. @prow(),58 say totales1 pict'9999.99'
  43. endif
  44. if report>0
  45. @prow()+1,0 SAY CANTIDAD PICT '9'
  46. @prow(),10 SAY AR(8)
  47. totales2=report*cantidad
  48. @prow(),58 say totales2 pict '9999.99'
  49. endif
  50.  
  51. @prow()+1,0 say replicate ("-",80)
  52. @prow()+1,30 SAY 'TOTAL FACTURADO + ITBI'
  53. @prow(),54 say MONT pict "$99,999.99"
  54. @prow()+1,0 SAY REPLICATE ("=",80)
  55. *//@prow()+1,0 SAY "NOTA  " +AR(9)
  56. @prow()+1,87 SAY "REVISADA POR"
  57. @prow(),114 SAY "RECIBIDA POR"
  58. @prow()+1,12 SAY AR(9)
  59. @prow()+1,0 say " "
  60. @prow()+1,0 say " "
  61. @prow()+1,0 say " "
  62. endif
  63. if prow()>=55
  64. eject
  65. endif
  66. set devi to screen
  67. f1=f1+1
  68. endfor
  69. deac wind all
  70. return
  71.    



saludos a todos

Esto es un codigo realizado en foxpro para MSDOS que imprime facturas de tres en tres por pagina  en una impresosa de matrix tipo epson lx300 o similar.

la medida de esta hoja de papel continuo es 9 1/2 x 3  2/3 

La idea es poder imprimir por ejemplo 500 facturas de forma continua en una impresora de este tipo y de tres en tres, pero utilizando delphi con quick report o con cualquier otra herramienta.

Alguna idea?.


Pero como una imagen vale mas que mil palabras. La idea es esta:

Imagen Enviada


  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 05 enero 2010 - 11:35

Claro que se puede amigo, ahora si lo quieres exactamente como la imagen pues deberás usar Canvas, de lo contrario puedes usar QuickReports.

Saludos.
  • 0

#3 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 05 enero 2010 - 11:44

yo lo haría directamente al canvas, el tipo y cantidad de impresiones seria la opción mas eficiente, según mi punto de vista.
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 05 enero 2010 - 11:46

Yo hace tiempo, cuando solo se usaban impresoras matriciales, imprimia recibos de 3 en 3 con QuickReport configurando el tamaño de la página tanto en QR como en la impresora.

Imagen Enviada

Salud OS
  • 0

#5 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 05 enero 2010 - 12:03

yo lo haría directamente al canvas, el tipo y cantidad de impresiones seria la opción mas eficiente, según mi punto de vista.

Porque entiendes que asi es mas eficiente y dame una idea de como hacerlo.


Egostar la opcion de quick report parece mas simple de usar o me equivoco?

Gracias por su ayuda
  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 05 enero 2010 - 12:14


yo lo haría directamente al canvas, el tipo y cantidad de impresiones seria la opción mas eficiente, según mi punto de vista.

Porque entiendes que asi es mas eficiente y dame una idea de como hacerlo.


Egostar la opcion de quick report parece mas simple de usar o me equivoco?

Gracias por su ayuda


Pues es mas gráfica, por lo que te evita ciertos dolores de cabeza al usar Canvas, a mi me gusta mas usar el canvas, pero en este caso donde los datos son estáticos preferí utilizar QR, cuando son datos dinámicos, si creo que usar Canvas es la mejor opción.

Salud OS
  • 0

#7 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 05 enero 2010 - 12:18

A mi manera de ver las cosas, la impresión directa por canvas es mas rápida que la impresión por editor de reportes, esto se debe a la forma que procesa windows la impresión.

Trabajar con cualquier editor de reportes es mas rápido para diseñar, pero la velocidad de impresión mejora mucho con la impresión directa.

El siguiente ejemplo es una adaptación que hice de un código de Seoane o Eliseo no recuerdo ahorita el autor, pero para tus fines debe servirte.



delphi
  1. procedure ImprimirFactura(dsCabecera, dsLineasDetalles: TKbmMemTable; Avance: Integer);
  2. var
  3.   DeviceMode: THandle;
  4.   Device, Driver, Port: array[0..1023] of char;
  5.   ms: Integer; //margen superior
  6.   nLineas: Integer;
  7.  
  8.   procedure SaltarLinea;
  9.   begin
  10.       ms := ms + 10;
  11.   end;
  12.   procedure ImprimirLinea(Linea: String);
  13.   begin
  14.       Printer.Canvas.TextOut(10, ms, Linea);
  15.       SaltarLinea;
  16.   end;
  17. begin
  18.   //Configura la impresora
  19.   Printer.GetPrinter(Device, Driver, Port, DeviceMode);
  20.   Printer.SetPrinter('Nombre Impresora', Driver, Port, DeviceMode);
  21.   Printer.Title := 'Factura de Venta';
  22.   with Printer do
  23.   begin
  24.     SetMapMode(Printer.Handle,MM_LOMETRIC);
  25.     BeginDoc;
  26.     Canvas.Font.Size:= 12;
  27.     Canvas.Font.Name := 'TAHOMA';
  28.     //------------Datos del encabezado
  29.     //Empresa
  30.     ImprimirLinea('Cualquier Cosa');
  31.     //Factura
  32.     ImprimirLinea('Cualquier Cosa');
  33.     //Datos del Cliente
  34.     ImprimirLinea('RIF: ');
  35.     ImprimirLinea('CLIENTE: ');
  36.     ImprimirLinea('DIRECCION: ');
  37.     SaltarLinea;
  38.     //Encabezado
  39.     ImprimirLinea('Can Descripcion Unitario Total');
  40.     //Imprime los detalles
  41.     nLineas := 0;
  42.     dsDetalles.First;
  43.     while not dsDetalles.Eof do
  44.     begin
  45.       ImprimirLinea('Linea XXXX XXXX XXXX.XX');
  46.       Inc(nLineas);
  47.       dsDetalles.Next;
  48.     end;
  49.     while nLineas < 10 do
  50.     begin
  51.       SaltarLinea;
  52.       Inc(nLineas);
  53.     end; //Rellena el numero de las lineas faltantes
  54.     //Imprime el cierre de la factura
  55.     ImprimirLinea('SubTotal: ');
  56.     ImprimirLinea('Descuento: ');
  57.     ImprimirLinea('IVA ');
  58.     ImprimirLinea('Total: ');
  59.     ImprimirLinea('PAGADO');
  60.     if Avance > 0 then
  61.     begin
  62.       ms := ms + Avance;
  63.       ImprimirLinea('-');
  64.     end;
  65.     EndDoc;
  66.   end;
  67. end;


  • 0

#8 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 06 enero 2010 - 12:05

Hola, yo tengo una pregunta... no he explorado mucho el terreno de los reportes con QR.
¿Y cómo le hacen para que salgan tres reportes en una hoja? ¿O es que se trata de un reporte con 3 detalles? 8-) *-)

En la imagen que pone Eliseo veo un reporte...
¿Cómo es que se hace para decirle que debe imprimir 3 por hoja? ¿Alguna propiedad, o juego de eventos? ¿O alguna configuración?

Si lo hacen por medio del Canvas, entonces debes "pintar" el reporte tres veces... uno debajo del otro ¿no?

Es una curiosidad mía.

Saludos,
  • 0

#9 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 06 enero 2010 - 12:19

Hola, yo tengo una pregunta... no he explorado mucho el terreno de los reportes con QR.
¿Y cómo le hacen para que salgan tres reportes en una hoja? ¿O es que se trata de un reporte con 3 detalles? 8-) *-)

En la imagen que pone Eliseo veo un reporte...
¿Cómo es que se hace para decirle que debe imprimir 3 por hoja? ¿Alguna propiedad, o juego de eventos? ¿O alguna configuración?

Si lo hacen por medio del Canvas, entonces debes "pintar" el reporte tres veces... uno debajo del otro ¿no?

Es una curiosidad mía.

Saludos,


Hola Marcelo

El caso que puse de ejemplo es un recibo con datos estáticos, es decir, solo un registro por recibo, este recibo está configurado para trabajar con impresoras matriciales con tractor, la cual se configura su tamaño de hoja a 1/3 de hoja por cada recibo, las propiedades de la impresión en QR es la misma que en la impresora, de tal suerte que se imprime tres veces por cada hoja tamaño carta, deteniendose cada vez que termina de imprimir un recibo ( las hojas ya están preconfiguradas con corte 3 en cada hoja tamaño carta).

Salud OS
  • 0

#10 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 06 enero 2010 - 11:15

Hola Marcelo

El caso que puse de ejemplo es un recibo con datos estáticos, es decir, solo un registro por recibo, este recibo está configurado para trabajar con impresoras matriciales con tractor, la cual se configura su tamaño de hoja a 1/3 de hoja por cada recibo, las propiedades de la impresión en QR es la misma que en la impresora, de tal suerte que se imprime tres veces por cada hoja tamaño carta, deteniendose cada vez que termina de imprimir un recibo ( las hojas ya están preconfiguradas con corte 3 en cada hoja tamaño carta).

Salud OS

Ahora entiendo.
Recién caigo en la idea... (vaya si seré lento :s)
Muchas gracias por explicármelo amigo.

Saludos,
  • 0

#11 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 20 junio 2010 - 01:23

Estoy retomando este proyecto y cuando voy a compilarlo recibo el error sobre

Undeclared identifier:TKbmMemTable'

Hay alguna unidad que deba declarar? 
Que debo hacer para seguir con la compilacion?

  • 0

#12 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 20 junio 2010 - 06:23

No conozco ese componente y si, el error es por falta de la unidad correspondiente. Me imagino que es parte de los DevExpress.

Salud OS
  • 0

#13 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 20 junio 2010 - 06:46

Es un componente que permite crear tablas temporales en memoria:

http://www.component...ts/kbmmemtable/

Pero supongo que con pequeños cambios se podría utilizar cualquier otro tipo de tabla.
  • 0

#14 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 20 junio 2010 - 07:46

Saludos.

El mismo puede ser sustituido por el TClientDataSet sin mayores problemas.
  • 0

#15 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 21 junio 2010 - 06:36

Es una tabla de memoria, pero cambia donde aparece TKbmMemTable por ClientDataset, eso si recuerda agregar midaslib a las uses.
  • 0

#16 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 21 junio 2010 - 07:47

Ah vaya, pues si, el ClientDataSet bien puede servir.

Salud OS
  • 0

#17 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 23 febrero 2011 - 09:43

Perdon por la tardanza en darle seguimiento a este hilo, pero la mayoria sabe porque no habia podido hacerlo asi que no vayan a jo...  :@

Quiero usar el procedimiento que indica Eduarcol y hacerlo con una base de datos firebird, utilizando los componentes zeos. Que debo hacer para usar el clientdataset que me indican. Debo crear una tabla con este componente y adicionarle los registros de mi query.

Como deberia hacerlo?

Gracias por adelantado
  • 0

#18 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 24 febrero 2011 - 07:25

Realmente no hace falta un clientdataset con cualquier dataset es suficiente.
  • 0

#19 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 24 febrero 2011 - 06:43

Gracias eduarcol, hoy no he tenido tiempo, pero manana voy a trabajar con esto, asi que te estare molestando por skype con algunas preguntas.

gracias por adelantado y asi te comprometo. :D :p
  • 0

#20 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 25 febrero 2011 - 06:35

jajaja dale a ver que se puede hacer
  • 0




IP.Board spam blocked by CleanTalk.