Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Impresora Fiscal Epson LX-300F (https://www.clubdelphi.com/foros/showthread.php?t=49636)

Carlos Lesca 25-10-2007 21:36:58

Impresora Fiscal Epson LX-300F
 
Hola Gente.

Les cuento un poco. Hace bastante he trabajado con impresoras Hasar y realmente son espectaculares. Muy claros los manuales, claros las funciones del OCX y un par de consultas que hice desde la pagina, me respondieron espectacularmente a mi mail.

El tema es que tengo que hacerlo para una LX-300F de Epson. Utilizo el OCX y no paso del encabezado.

Aclaro que es un engendro, por que?, Es una aplicacion Web, que devuelve un XML en cual levanto en Delphi y mando a imprimir a la impresora fiscal.

Aca les dejo el codigo de delphi y abajo el ejemplo del XML, que por ahi es donde le estoy errando.

Código Delphi [-]
procedure TfmPrincipal.DBImprimirFAC;
var   
Respuesta : Boolean;   
PRECIO : WideString;   
DESCRIPCION : WideString;   
iVA : WideString;   
CANTIDAD : WideString;   
TIPO_ITEM : WideString;    
TipoComprobante,   
TipoSalidaHoja,   
LetraDocumento,   
CantidadCopias,   
TipoFormulario,   
TamCaracter,   
IVAComprador,   
NombreComp1,   
NombreComp2,   
DocumentoCompTipo,   
DocumentoCompNro,   
BienDeUso,   
DomicilioComp1,   
DomicilioComp2,   
DomicilioComp3,   
Remito1,   
Remito2,   
Aux,   
NroComprobanteEmitido,   
AuxVacio       : WideString;   

begin   
FlagImprimir := TRUE;    

if modelo = 'TM' then TipoComprobante   := 'T' // Ticket
  else TipoComprobante := 'F';
  TipoSalidaHoja    := 'C'; // formulario Continuo
  LetraDocumento    := cdsEncabezadoLetra.AsString;
  CantidadCopias    := cdsEncabezadoCopias.AsString;
  TipoFormulario    := 'F'; // La impresora NO imprime las lineas de los marcos (P para que imprima)
  TamCaracter       := '12';
  IVAComprador      := cdsEncabezadoCompradorIva.AsString;
  NombreComp1       := cdsEncabezadoCompradorNombre1.AsString;
  NombreComp2       := #127; //cdsEncabezadoCompradorNombre2.AsString;
  DocumentoCompTipo := cdsEncabezadoCompradorTipoDoc.AsString;
  DocumentoCompNro  := cdsEncabezadoCompradorNroDoc.AsString;
  BienDeUso         := 'N';
  DomicilioComp1    := cdsEncabezadoCompradorDomicilio1.AsString;
  DomicilioComp2    := #127; //cdsEncabezadoCompradorDomicilio2.AsString;
  DomicilioComp3    := #127; //cdsEncabezadoCompradorDomicilio3.AsString;
  Remito1           := #127; //cdsEncabezadoRemito1.AsString;
  Remito2           := #127; //cdsEncabezadoRemito2.AsString;
  Aux               := 'G';  // Estaba C
  AuxVacio          := #127;

  respuesta := PrnFisc.OpenInvoice(  TipoComprobante,  // 1
                        TipoSalidaHoja,   // 2
                        LetraDocumento,   // 3
                        CantidadCopias,   // 4
                        TipoFormulario,   // 5
                        TamCaracter,      // 6
                        AuxVacio,         // 7  ** solo para que ande, despues toma el valor de la memoria de la impresora **
                        IVAComprador,     // 8
                        NombreComp1,      // 9
                        NombreComp2,      // 10
                        DocumentoCompTipo,// 11
                        DocumentoCompNro, // 12
                        BienDeUso,        // 13
                        DomicilioComp1,   // 14
                        DomicilioComp2,   // 15
                        DomicilioComp3,   // 16
                        Remito1,          // 17
                        Remito2,          // 18
                        Aux               // 19
                      );

  Aux := '0';

  if respuesta then   begin     cdsDetalle.First;     while not cdsDetalle.Eof do     begin       DESCRIPCION := cdsDetalleDescripcion.AsString;       PRECIO      := cdsDetallePrecio.AsString;       IVA         := cdsDetalleIva.AsString;       TIPO_ITEM   := cdsDetalleTipoItem.AsString;       CANTIDAD    := cdsDetalleCantidad.AsString;        respuesta := PrnFisc.SendInvoiceItem ( DESCRIPCION,                               CANTIDAD,                               PRECIO,                               IVA,                               TIPO_ITEM,                               AUX,                               AUX,                               AuxVacio,                               AuxVacio,                               AuxVacio,                               Aux,                               Aux                           );       if not respuesta then  raise Exception.Create('ERROR AL IMPRIMIR ITEM');
      cdsDetalle.Next;
    end;

    AUX := 'P';
    DESCRIPCION := 'SUBTOTAL';
    RESPUESTA := PrnFisc.GetInvoiceSubtotal(AUX,DESCRIPCION);
    if not respuesta then  ShowMessage('ERROR DE IMPRESION DE SUBTOTAL');


    DESCRIPCION := 'DESCUENTO';
    PRECIO      := cdsEncabezadoDescuento.AsString;
    TIPO_ITEM   := 'D';
    RESPUESTA := PrnFisc.SendInvoicePayment( DESCRIPCION,
                                PRECIO,
                                TIPO_ITEM);
    if not respuesta then  raise Exception.Create('ERROR AL IMPRIMIR DESCUENTO');

    DESCRIPCION := 'PAGO';
    PRECIO      := cdsEncabezadoPago.AsString;
    TIPO_ITEM   := 'T';
    RESPUESTA := PrnFisc.SendInvoicePayment( DESCRIPCION,
                                PRECIO,
                                TIPO_ITEM);
    if not respuesta then  raise Exception.Create('ERROR AL IMPRIMIR PAGO');


    DESCRIPCION := 'TOTAL:';
    respuesta := PrnFisc.CloseInvoice(TipoComprobante,LetraDocumento,DESCRIPCION);
    if not respuesta then  raise Exception.Create('ERROR AL CERRAR EL COMPROBANTE. EL COMPROBANTE QUEDO ABIERTO Y NO SE GUARDO. (Cancelar Todo)');

    // aca tengo que obtener el nro de la factura que se imprimio para pasarlo
    // despues a la tabla de encabezado
     NroComprobanteEmitido := PrnFisc.AnswerField_3;      GuardarFactura2(StrToInt(NroComprobanteEmitido),'FAC');
  end   else     raise Exception.Create('VERIFIQUE EL ESTADO DE SU IMPRESORA');

  FlagImprimir := FALSE;

end;

Este es el XML

<?xml version="1.0"?>
<!DOCTYPE COMPROBANTE>

<COMPROBANTE>
<TIPO>FAC</TIPO>
<LETRA>B</LETRA>
<COPIAS>1</COPIAS>
<COMPRADOR>
<IVA>R</IVA>
<NOMBRE1>Lesca Carlos</NOMBRE1>
<NOMBRE2></NOMBRE2>
<TIPODOC>CUIT</TIPODOC>
<NRODOC>23171793149</NRODOC>
<DOMICILIO1>UN DOMICILIO</DOMICILIO1>
<DOMICILIO2>OTRO DOM</DOMICILIO2>
<DOMICILIO3>EXTRA</DOMICILIO3>
</COMPRADOR>
<FACTURAS_AFECTADAS>
<FAC1></FAC1>
<FAC2></FAC2>
</FACTURAS_AFECTADAS>
<REMITOS>
<REM1></REM1>
<REM2></REM2>
</REMITOS>
<ITEMS>
<ITEM CANTIDAD="1" PRECIOUNITARIO="11" IVA="10.5" TIPO="M">DESCRIPCION 01</ITEM>
<ITEM CANTIDAD="2" PRECIOUNITARIO="12" IVA="10.5" TIPO="M">DESCRIPCION 02</ITEM>

</ITEMS>
<PAGOS>
<PAGO IMPORTE="100" TIPO="T">DESCRIPCION</PAGO>
<PAGO IMPORTE="10" TIPO="D">DESCRIPCION</PAGO>
</PAGOS>
</COMPROBANTE>


Mil Gracias a todos.

ptt 25-10-2007 23:32:36

Cual es el error ?
En que momento acurre ?
Es por un estado de la impresora o es de programacion ?
Hasta donde llega el comprobante ?
Abre la factura ?
Imprime una venta ?
O es que no cierra ?

Mandá mas datos para poder saber que pasa !! :confused:

______________
Saludos.

Carlos Lesca 26-10-2007 15:48:17

Cita:

Empezado por ptt (Mensaje 241260)
Cual es el error ?
En que momento acurre ?
Es por un estado de la impresora o es de programacion ?
Hasta donde llega el comprobante ?
Abre la factura ?
Imprime una venta ?
O es que no cierra ?

Mandá mas datos para poder saber que pasa !! :confused:

______________
Saludos.

Momento: Cuando intento abrir un comprobante, en el openinvoice. Directamente devuelve falso la respuesta del controlador y no abre el comprobante, despues imprime la anulacion del mismo.

creo que el resto esta respondido porque no abre el comprobante directamente.

Aprobecho y pregunto otra cosa. El tema de los descuentos cuando se hace el pago. Va el importe y el tipo es "D". Eso va antes de un tipo "T" que es el pago?, o es indistinto, porque estuve haciendo algunas pruebitas por otro lado (batch directo) y logre que imprima pero me da error en ese punto. El error es que no puede realizar la impresion del pago/descuento.

Muchas gracias nuevamente.

ptt 29-10-2007 23:51:25

Proba poniendo I en el campo 7 si es Responsable Inscripto, si estas en modo entrenamiento es obligatorio este campo.
Si es factura B poné a un consumidor final F en el campo 8.
Estos son los errores que veo, yo no utilizo el OCX pero debe haber alguna forma de que te devuelva una respuesta mas amplia que verdadero o falso, el protocolo informa el campo que está mal en la respuesta.
Además no te olvides que se debe hacer un cierre Z después de 24 hs de abierta la jornada fiscal, si no se hace la impresora da error a todos los comandos.
Una vez ingresado un pago 'T' no se aceptan mas descuentos 'D' ni recargos 'R'

Espero haberte sido de utilidad.

______________
Saludos.

mariano_9 05-03-2008 15:31:02

Probá cambiando de parametro xq no soporta ticket
 
Te comento que yo estoy usando ese controlador y pude facturar pero no poniendo T sino F

if modelo = 'TM' then TipoComprobante := 'T' // Ticket

en esta linea yo pondria 'F' de factura.

Fijate si asi te funciona. sino busca otro hilo que hice yo donde hay un ejemplo completo de una impresion de factura A.

Si queres imprimir Ticket este controlador no lo soporta. fijate en el pruf y vas a ver que lo tenes deshabilitado para ese modelo.

Un abrazo y suerte!!

luis vazquez 18-04-2009 21:35:38

urgente por favor ocx
 
buenas estoy realizando un programa de facturacion hasta ahora he trabajando con impresoras BMC FISCALES y me ha funcionado todo bien, pero tengo un cliente con una epson Lx300F nesecito los controladores ocx y los dll para cargarlos a mi programa en delphis 6, pero no los consigo, me conecte a la epson y me inscribi pero no me envian los drivers solo dice que enviaran un link para que los baje pero nunca llega, podrias facilitarme los ocx y dll POR FAVOR Y SI FUERA POSIBLE UN EJEMPLO EN CODIGO DE UNA FACTURA FISCAL, GRACIAS POR ADELANTADO.:D

mariano_9 18-04-2009 21:57:04

Hola Luis

Yo trabajé hace un tiempo con esos controladores. Recuerdo que me fue complicado conseguir la dll pero la encontré en la web.
(Voy a ver si encuentro la info y te la envío)
Lo que si te puedo dejar es un ejemplo de como crear el objeto e instanciarlo para poder hacer una factura A


pruebaControlador := CreateComObject( CLASS_PrinterFiscal ) as _PrinterFiscalDisp;
pruebaControlador.PortNumber := 1;
pruebaControlador.BaudRate := '9600';

///Factura A///

//esto abre la factura
PruebaControlador.OpenInvoice('F', 'C', 'A', '1', 'P', '12',
'I', 'I', 'Nombre1', '-', 'CUIT', '33708116828',
'N', 'DomComprador1', 'DomComprador2', 'DomComprador3', '001', '001', 'C');

//imprime un item
PruebaControlador.SendInvoiceItem('Descripcion', '1000', '1', '21', 'M',
'1', '0', 'DescripExt1', 'DescripExt2', 'DescripExt3', '10.50', '0');

//cierra la factura
PruebaControlador.CloseInvoice('f', 'A', 'se cerro sin problemas');

mariano_9 18-04-2009 22:02:48

Mas info y dirección de contacto.. espero ayude..
 
Hola!

Acá encontré la dirección que yo contactaba y acá te pego un ejemplo de lo que me respondieron para nota de crédito.
De ésta manera ya tienes un ejemplo de factura A y de Nota de Crédito
(No soy de responder muy seguido porque no estoy trabjando mas en desarrollo, pero en cuanto pueda entraré de nuevo para ver como te fue)

usted consultó: Estoy programando sobre un
controlador epson lx-300f+ y no se que funcion usar para hacer una nota de
credito ni que parametros pasarle. les escribo a este lugar q es solo para
impresoras porque no encontré un grupo para controladores ni este modelo.
espero puedan responderme a la brevedad. muchas gracias


es por esta consulta que le envío un ejemplo para realizar notas de credito.

ABRIR NOTA DE CREDITO

abrenotacredito = Me.PrinterFiscal1.OpenInvoice("F", "C", "A", "1", "F", "17", "I", "I", "Nombre comercial 1", "Nombre comercial 2", "CUIT", "30614104712", "N", "Domicilio 1", "Domicilio 2", "Domicilio 3", "Remitos 1", "Remitos 2", "C")

ENVIAR ITEM PARA NOTA DE CREDITO

item = Me.PrinterFiscal1.SendInvoiceItem("Descripcion 1", "00001000", "00000000200", "2100", "M", "00000", "00000000", "Descripcion 1", "Descripcion 2", "Descripcion 3", "0000", "000000000000000")

CERRAR NOTA DE CREDITO

cierraticket = Me.PrinterFiscal1.CloseInvoice("N", "A", "")


Ante cualquier otra consulta no dude en volver a comunicarse con nosotros.
Saludos cordiales,

Atte.

Maximiliano Aringoli
Soporte Técnico
EPSON ARGENTINA S.R.L.
011-5167-0300
soporte_tecnico_argentina@epson.com.ar
:)

luis vazquez 20-04-2009 16:30:40

Gracias
 
muchas gracias por sus ayuda, ya epson me envio los ocx y dll, voy a subirlos a mi espacio para ponerlos a la dispocision de los programadores delphis, enm cuanto lo tenga envio la direscion
:D:D

ingmichel 24-04-2013 21:22:08

Ayuda
 
Hola, me puedes facilitar el ocx y dll para delphi por favor ?, necesito imprimir en una impresora fiscal epson y necesito esos ocx ya que solo aparecen para vb6 y tambien por favor si me puedes enviar un ejemplo de como hacer una impresion, gracias de antemano...

Cita:

Empezado por luis vazquez (Mensaje 345528)
muchas gracias por sus ayuda, ya epson me envio los ocx y dll, voy a subirlos a mi espacio para ponerlos a la dispocision de los programadores delphis, enm cuanto lo tenga envio la direscion
:D:D



La franja horaria es GMT +2. Ahora son las 01:19:03.

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