danielmaximiliano wrote: ↑Tue Feb 25, 2020 12:25 pm
Hola Roberto,mi vieja aplicacion fue portada de usar la DLL ("Winfis.dll") a OCX de la siguiente forma
Daniel,
Como siempre, muchas Gracias.
En lo que estoy trabajando, es en adaptar un punto de venta fiscal, que está funcionando en equipos Hasar de primera generación (715 y 441), a los de segunda generación (ya que los de primera, no se van a poder seguir usando el año próximo).
El problema (que descubrí hace un rato) es que los métodos no retornan variables, sino estructuras de datos, que no están disponibles en Harbour.
Por lo cual, después de cada comando (si queremos conocer su resultado y el estado del equipo) hay que usar un método que acepta como parámetro el nombre de la propiedad que queremos conocer y devuelve su contenido como una variable simple.
Por ejemplo:
Code: Select all
oHasar:CerrarDocumento(, )
res := oHasar:ObtenerCampoRespuesta('NumeroComprobante')
msginfo(res)
Acá va el experimento que hice, portando partes de los ejemplos en VB (solo trae demos en VB y C#).
Las herramientas de desarrollo, incluyen un emulador, que es el que usé para hacer las pruebas (no las hice aun en un equipo físico).
Code: Select all
#define CRLF Chr( 13 ) + Chr( 10 )
#include "hmg.ch"
PROCEDURE MAIN()
DEFINE WINDOW main_form ;
AT 114,218 ;
WIDTH 334 ;
HEIGHT 276 ;
TITLE 'TEST HASAR' ;
MAIN
DEFINE MAIN MENU
DEFINE POPUP "Test"
MENUITEM 'Reporte X' ACTION ReporteX()
MENUITEM 'Reporte Z' ACTION ReporteZ()
MENUITEM 'Factura A' ACTION FacturaA()
MENUITEM 'Factura B' ACTION FacturaB()
MENUITEM 'Salir' ACTION EXIT PROGRAM
END POPUP
END MENU
END WINDOW
Main_form.center
Main_form.activate
RETURN
*------------------------------------------------------------------------------------------*
STATIC PROCEDURE ReporteX()
*------------------------------------------------------------------------------------------*
LOCAL oHasar
TipoReporte_ReporteX := 88
oHasar := CreateObject( "HasarArgentina.ImpresoraFiscalRG3561" )
oHasar:Conectar("127.0.0.1")
oHasar:CerrarJornadaFiscal(88)
oHasar := nil
RETURN
*------------------------------------------------------------------------------------------*
STATIC PROCEDURE ReporteZ()
*------------------------------------------------------------------------------------------*
LOCAL oHasar
TipoReporte_ReporteZ := 90
oHasar := CreateObject( "HasarArgentina.ImpresoraFiscalRG3561" )
oHasar:Conectar("127.0.0.1")
oHasar:CerrarJornadaFiscal(TipoReporte_ReporteZ)
oHasar := nil
RETURN
*------------------------------------------------------------------------------------------*
STATIC PROCEDURE FacturaA()
*------------------------------------------------------------------------------------------*
LOCAL oHasar
oHasar := CreateObject( "HasarArgentina.ImpresoraFiscalRG3561" )
oHasar:Conectar("127.0.0.1")
ResponsableInscripto := 73
TipoCUIT := 67
TiqueFacturaA := 81
Gravado := 7
ModoSumaMonto := 77
IIVariablePorcentual := 37
DisplayNo := 48
ModoPrecioBase := 66
Unidad := 7
Pagar := 84
Efectivo := 8
oHasar:CargarDatosCliente ( "Razón Social Cliente...", "99999999995", ResponsableInscripto, TipoCUIT, "Domicilio Cliente...", "Domicilio extensión 1...", "Domicilio extensión 2...", "Domicilio extensión 3...." )
respabrir := oHasar:AbrirDocumento(TiqueFacturaA)
oHasar:ImprimirItem ( "Item a la venta...", 1, 100, Gravado, 21, ModoSumaMonto, IIVariablePorcentual, 0.00000001, DisplayNo, ModoPrecioBase, 1, "779123456789", , Unidad )
resppago := oHasar:ImprimirPago("Efectivo...", 90, Pagar, DisplayNo, , Efectivo, , "")
respcierre := oHasar:CerrarDocumento(, "")
oHasar := nil
RETURN
*------------------------------------------------------------------------------------------*
STATIC PROCEDURE FacturaB()
*------------------------------------------------------------------------------------------*
LOCAL oHasar
* Constantes
TiposDeResponsabilidadesCliente_Monotributo := 77
TiposDeDocumentoCliente_TipoCUIT := 67
TiposComprobante_TiqueFacturaB := 82
CondicionesIVA_Gravado := 7
ModosDeMonto_ModoSumaMonto := 77
ModosDeImpuestosInternos_IIVariablePorcentual := 37
ModosDeDisplay_DisplayNo := 48
ModosDePrecio_ModoPrecioBase := 66
UnidadesMedida_Unidad := 7
ModosDePago_Pagar := 84
TiposPago_Cheque := 3
oHasar := CreateObject( "HasarArgentina.ImpresoraFiscalRG3561" )
oHasar:Conectar("127.0.0.1")
oHasar:CargarDatosCliente("Cliente Uno ...", "99999999995", TiposDeResponsabilidadesCliente_Monotributo, TiposDeDocumentoCliente_TipoCUIT, "Calle Uno, entre Dos y Tres, Nro. 1234 ...", , , )
respabrir := oHasar:AbrirDocumento(TiposComprobante_TiqueFacturaB)
oHasar:ImprimirItem("Producto Uno ...", 1.0, 131.0, CondicionesIVA_Gravado, 1.0, ModosDeMonto_ModoSumaMonto, ModosDeImpuestosInternos_IIVariablePorcentual, 10.0, ModosDeDisplay_DisplayNo, ModosDePrecio_ModoPrecioBase, 1, "7791234500001", "00001", UnidadesMedida_Unidad)
oHasar:ImprimirPago("Medio de Pago Uno ..." , 30.46, ModosDePago_Pagar, ModosDeDisplay_DisplayNo, "", TiposPago_Cheque, 0, "")
oHasar:CerrarDocumento(, )
res := oHasar:ObtenerCampoRespuesta('NumeroComprobante')
msginfo(res)
oHasar := nil
RETURN
Espero que el código te sirva para cuando te toque migrar a impresoras 2G.
De nuevo, muchas Gracias.