jkazmirchuk wrote: ↑Wed Aug 16, 2017 8:16 pm
Roberto:
Buscando info sobre las Impresoras Fiscales de nueva generación vi tu post.
Si entendí bien y no es tarde, el BCC que mencionás se puede obtener con la siguiente función:
* ------------------------------------------------------------------------------
* FUNCTION CF_GetCRC( cCmd )
* CF: Obtener Caracteres de Verificación de Bloque (CRC)
* ------------------------------------------------------------------------------
* Procedimiento: Obtener los Caracteres de Verificación de Bloque (CRC)
* Parámetros : cCmd: Cadena de caracteres para obtener su CRC
* Retorna : Caracteres de Verificación de Bloque (CRC)
* ------------------------------------------------------------------------------
FUNCTION CF_GetCRC( cCmd )
LOCAL nCRC := 0
LOCAL nI
FOR nI := 1 TO Len( cCmd )
nCRC += Asc( SubStr( cCmd, nI, 1 ) )
NEXT
RETURN ( Upper( PadL( NtoC( nCRC, 16 ), 4, '0' ) ) )
* ------------------------------------------------------------------------------
Ese problema (gracias a la ayuda de gente de este foro) lo resolví, pero, también descubrí, que en realidad, hay una forma muchísimo más sencilla de controlar la IF, y es vía la interfase http de la impresora (que incorpora un servidor web).
Si bien, finalmente el proyecto cambió y se optó por IFs de primera generación, yo avancé bastante en la investigación (basándome en ejemplos).
Los comandos pueden enviarse a la impresora, por medio del utilitario "curl" y mi experimento se basó en el, pero, seguramente, podría hacerse, directamente desde Harbour, usando la librería HBTIP (no lo he probado).
Para abrir un comprobante:
Code: Select all
curl http://127.0.0.1/fiscal.xml -H "Content-Type: text/xml" --data-binary @abrircomprobante.xml >resp.txt
El archivo "abrircomprobante.xml" contiene:
Code: Select all
<AbrirDocumento>
<CodigoComprobante>TiqueFacturaB</CodigoComprobante>
</AbrirDocumento>
Para imprimir un ítem:
Code: Select all
curl http://127.0.0.1/fiscal.xml -H "Content-Type: text/xml" --data-binary @imprimiritem.xml >resp.txt
El archivo "imprimiritem.xml" contiene:
Code: Select all
<ImprimirItem>
<Descripcion>Cable miniplug 1.5</Descripcion>
<Cantidad>1.0</Cantidad>
<PrecioUnitario>200.00</PrecioUnitario>
<CondicionIVA>Gravado</CondicionIVA>
<AlicuotaIVA>21.00</AlicuotaIVA>
<OperacionMonto>ModoSumaMonto</OperacionMonto>
<TipoImpuestoInterno>IIVariableKIVA</TipoImpuestoInterno>
<MagnitudImpuestoInterno>0.00</MagnitudImpuestoInterno>
<ModoDisplay>DisplayNo</ModoDisplay>
<ModoBaseTotal>ModoPrecioTotal</ModoBaseTotal>
<UnidadReferencia>20</UnidadReferencia>
<CodigoProducto>779123456789</CodigoProducto>
<CodigoInterno>C1130</CodigoInterno>
<UnidadMedida>Pack</UnidadMedida>
</ImprimirItem>
Para imprimir el subtotal:
Code: Select all
curl http://127.0.0.1/fiscal.xml -H "Content-Type: text/xml" --data-binary @subtotal.xml >resp.txt
El archivo "subtotal.xml" contiene:
Code: Select all
<ConsultarSubtotal>
<Impresion>ImprimeSubtotal</Impresion>
<ModoDisplay>DisplayNo</ModoDisplay>
</ConsultarSubtotal>
Para imprimir el pago:
Code: Select all
curl http://127.0.0.1/fiscal.xml -H "Content-Type: text/xml" --data-binary @imprimirpago.xml >resp.txt
El archivo "imprimirpago.xml" contiene:
Code: Select all
<ImprimirPago>
<Descripcion>Tarjeta de Crédito</Descripcion>
<Monto>200.00</Monto>
<Operacion>Pagar</Operacion>
<ModoDisplay>DisplayNo</ModoDisplay>
<DescripcionAdicional>Nro.: *******3245</DescripcionAdicional>
<CodigoFormaPago>TarjetaDeCredito</CodigoFormaPago>
<Cuotas>6</Cuotas>
<Cupones>12345678</Cupones>
<Referencia>ABC123</Referencia>
</ImprimirPago>
Para cerrar el comprobante:
Code: Select all
curl http://127.0.0.1/fiscal.xml -H "Content-Type: text/xml" --data-binary @cerrarcomprobante.xml >resp.txt
El archivo "cerrarcomprobante.xml" contiene:
Code: Select all
<CerrarDocumento>
<Copias>2</Copias>
<DireccionEMail>cliente@suempresa.com.ar</DireccionEMail>
</CerrarDocumento>
Como Hasar distribuye un emulador junto con la documentación, el software y los ejemplos, es muy fácil experimentar.