Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   Fujitsu COBOL (https://www.cobolforo.es/forumdisplay.php?f=77)
-   -   [Sintaxis] Problemas con comunicación impresoras fiscales. (https://www.cobolforo.es/showthread.php?t=1435)

Ale 17 de marzo de 2025 14:06

controlador fiscal
 
si si "Int" entero. Estamos probando de esa forma, aunque manual de Dll indique que tiene que ser "float".
y menos "cantidad" lo demas funciona aparentemente.
Voy a tratar de probar en otra pc con version 7 Binary-long a ver que pasa. Toda prueba me sirve hasta lograr hacerlo funcionar.
Si es que lo logro.

Ale 17 de marzo de 2025 17:34

controlador fiscal
 
1 Archivos Adjunto(s)
leyendo manual de protocolos compatibles, les adjunto en un archivo, la parte que explica el formato de los datos.

Kuk 17 de marzo de 2025 21:46

@Ale, he mirado el documento y me ha entrado la duda, pero es que acabo de fijarme en el ejemplo de Fito siguiente: Problemas con comunicación impresoras fiscales. - Página 2 - Cobol Foro

Y la verdad es que.... :mm:

Es que la función se llama "*float" pero por lo que entiendo no lo es...
El formato supongo es el mismo en todas la funciones. Si es así, debes enviar un valor de texto, con su punto.
Fíjate en el ejemplo de Fito, el campo oPreunies de texto (editado de Cobol) con un nulo al final!
Has probado con ese ejemplo?

Ale 17 de marzo de 2025 23:13

1 Archivos Adjunto(s)
Adjunte los parámetros según manual de la Dll.
Y también a continuación les muestro, como lo tengo echo y (me funciona), de la otra forma de comunicarme con la misma fiscal.
Que como les indique anteriormente, no lo hago por esta Dll, lo hago con un programa que se llama (Samdrv.exe), que lo que hace es leerme un txt
que le envío armado para que imprima.

Código COBOL:
  1. WORKING.....
  2. 01 REG-TEXTADD GLOBAL.
  3.     03 FILLER            PIC X(8) value "[txtadd]".
  4.     03 FILLER            PIC X VALUE ";".
  5.     03 TEXTO-ITEM-FISCAL PIC X(26) VALUE SPACES.
  6. ** probado no mas de 26 caracteres para texto item    
  7.     03 FILLER            PIC X VALUE ";".
  8.  01 REG-ITEM GLOBAL.
  9.     03 FILLER             PIC X(6) value "[item]".
  10.     03 FILLER             PIC X VALUE ";".
  11.     03 COD-ARTICULO-FISCAL   pic X(16) value SPACES.    
  12.     03 FILLER             PIC X VALUE ";".
  13.     03 CANT-UNI-FISCAL    PIC X(7) VALUE SPACES.
  14.     03 FILLER             PIC X VALUE ";".
  15.     03 PRECIO-UNI-FISCAL  PIC X(8) VALUE SPACES.    
  16.     03 FILLER             PIC X VALUE ";".
  17.     03 TAZA-IVA-FISCAL    PIC XX VALUE "21".
  18.     03 FILLER              PIC X VALUE ";".
  19.     03 FILLER              PIC X(10) VALUE "0.00000000".
  20.     03 FILLER              PIC X VALUE ";".
  21.     03 FILLER              PIC 9 VALUE 0.
  22.     03 FILLER              PIC X VALUE ";".
  23. *    03 COD-ARTICULO-FISCAL PIC X(15).
  24.     03 FILLER              PIC X VALUE ";".
  25.     03 FILLER              PIC 9 VALUE 0.
  26.     03 FILLER              PIC X VALUE ";".
  27. ********************************************
  28.   01 PASAJE-UNITARIO  PIC 999999.99.
  29.   01 PASAJE-CANTIDAD  PIC 9999.99.
  30.   01 PASAJE-TAZA     PIC 99.99.
  31.  
  32.    PROCEDURE...
  33.          ******  
  34.           MOVE "Numeric"(4) OF "ListItems" (ULTIMA-LINEA-ACTIVA) OF LIST1 TO PASAJE-CANTIDAD.
  35.           MOVE "Numeric"(5) OF "ListItems" (ULTIMA-LINEA-ACTIVA) OF LIST1 TO PASAJE-UNITARIO.
  36.           MOVE PASAJE-CANTIDAD TO CANT-UNI-FISCAL.
  37.           MOVE PASAJE-UNITARIO TO PRECIO-UNI-FISCAL.  
  38.     *** aca arma el registro : 01 REG-ITEM global.
  39.            
  40.  
  41.  Formato del txt que envio :  IN_ELLIX40F.TXT                                                                                                                                                                    
  42.   [txtadd];DISCO FREN CLIO 1.4 R9 R11;                                                                                                                                                                    
  43.   [item];4WD84705        ;0002.00;033000.0;21;0.00000000;0;;0;                                                                                                                                            
  44.   [pago];0066000.00;20;                                                                                                                                                                                  
  45.   [cerrar];

Fito 18 de marzo de 2025 15:32

Hola:

Deberías probar pasarle el pdf del manual a una IA y ver qué te dice. Yo uso Claude y me ha sacado del paso

Saludos

Fito..

Ale 18 de marzo de 2025 16:30

controlador fiscal
 
hola Fito.
si ya no se que mas probar, tu ejemplo lo probé pero tampoco me lo tomo.
buscare lo que me dijiste.
muchas gracias....


Ahora se me presento este problema, como obtener la respuesta del texto enviado?
En esta función de la dll.
Código CPP:
  1. const char * IFOpRetGet (const char * name)
Obtiene un campo de respuesta por nombre.
Parámetros:
• name: nombre del campo de respuesta. Ver detalles en el Capítulo III.
Retorno: texto del campo de respuesta pedido.

Ejemplo: otro lenguaje
Código CPP:
  1. Console.WriteLine(" Numero: {0}", drv.IFOpRetGet("Numero"));
  2.                 Console.WriteLine(" CodigoTipo: {0}", drv.IFOpRetGet("CodigoTipo"));

fastpho 18 de marzo de 2025 17:19

Impresora fiscal ticket
 
Cita:

Citación del post de Ale (Mensaje 9959)
hola Fito.
si ya no se que mas probar, tu ejemplo lo probé pero tampoco me lo tomo.
buscare lo que me dijiste.
muchas gracias....


Ahora se me presento este problema, como obtener la respuesta del texto enviado?
En esta función de la dll.
const char * IFOpRetGet (const char * name) Obtiene un campo de respuesta por nombre.
Parámetros:
• name: nombre del campo de respuesta. Ver detalles en el Capítulo III.
Retorno: texto del campo de respuesta pedido.

Ejemplo: otro lenguaje
Código CPP:
  1. Console.WriteLine(" Numero: {0}", drv.IFOpRetGet("Numero"));
  2.                 Console.WriteLine(" CodigoTipo: {0}", drv.IFOpRetGet("CodigoTipo"));

@Ale que paso con el tema del ticket lo pudiste resolver , por que cambiaste el tema del problema original que
era no podias mandar valores numericos a las variables que lo requerian para confeccionar un ticket en la fiscal
Saludos...

Ale 18 de marzo de 2025 17:54

controlador fiscal
 
hola fastpho, si si funciono como me indicaste vos.
Logicaménte hay que jugar con los datos numéricos para lograr los decimales.
Enviándolo: MOVE "IFOpParamIntSet" TO FUNCION. Me tomo "precio", "IVA", pero no me tomo "Cantidad", y no se porque. Es numérico también.
Revise todo por las dudas varias veces y nada. No Cancela el tiquet, pero no toma ningún valor cantidad. Lo toma por defecto como cantidad = 1.
No me acuerdo si probé enviarlos como importe en bruto (by value 123.36), pero creo que lo probé.

Perdón que me fui a otro problema, es que se me junto todo.
Código CPP:
  1. const char * IFOpRetGet (const char * name)
Esto lo tengo que resolver, para leer el valor del numero de comprobante que me devuelve el impresor.

Muchas gracias por su aporte tiempo...
son muy amables. y la tienen muy clara.
saludos.

fastpho 18 de marzo de 2025 18:30

@Ale es igual la forma de implementacion
Código COBOL:
  1.  
  2.      MOVE "IFOpRetGet"   TO FUNC-SAM4-LIB.
  3.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY REFERENCE "comando" returning "respuesta".

Ale 18 de marzo de 2025 20:19

controlador fiscal
 
Gracias fastpho, a la noche arranco con las pruebas..
Código COBOL:
  1.  CALL FUNC-SAM4-LIB WITH STDCALL USING BY REFERENCE "comando" returning "respuesta".
comando en este caso seria "Numero" (numero de comprobante), pero en respuesta, me traerá el numero de comprobante que preciso? o solo me trae el valor, si se ejecuto bien la función?


La franja horaria es GMT +2. Ahora son las 15:44.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.