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)

Kuk 26 de marzo de 2025 22:25

@Ale, podrías decirme en qué lenguaje son los ejemplos qué pones? Porque no es ni C ni C++, tiene pinta de Visual Basic

Ale 27 de marzo de 2025 20:36

Código VB:
  1. Drv.IFOpBegin("ItemVenta")
  2.         Drv.IFOpParamSet("Descripcion", "Item de prueba")
  3.         Drv.IFOpParamFloatSet("Precio", 1.2345)
  4.         Drv.IFOpParamFloatSet("IVA", 21.0)
  5.         Drv.IFOpParamSet("CodigoProducto", "7791234567898")
  6.         If (Drv.IFOpSend(1) = 0) Then
  7.             CmdError("ItemVenta")
  8.             Return
  9.         End If
  10.  
  11.         Drv.IFOpBegin("Cerrar")
  12.         If (Drv.IFOpSend(1) = 0) Then

hay un par de archivos con ejemplos en distintos lenguajes. la carpeta dice (VBnet).

Kuk 27 de marzo de 2025 21:39

Cita:

Citación del post de Ale (Mensaje 9994)
VBnet

Acabaramos... Claro, ya decía yo. Es Visual Basic .NET que es la respuesta de Microsoft a Java... Por eso no funcionaba lo que decía, no funciona igual que C o C++.

Hay alguna subcarpeta que diga C o C++ o VB o algún archivo con extensiones similares?

La librería a la que llamas no está hecha en VB.NET porque no se puede llamar "código gestionado" (managed code) tal cual, sin pasar por el Run-Time .NET (equivalente a la JVM). Con lo cual, debe haber ejemplos para lenguajes de compilación nativa, como es el caso de C (unmanaged code).

Ale 27 de marzo de 2025 22:34

controlador fiscal
 
Código CPP:
  1. printf("EstablecerEncabezadoCola\n");
  2.         IFOpBegin("EstablecerEncabezadoCola");
  3.         IFOpParamIntSet("Numero", 19);
  4.         IFOpParamSet("Texto", "Cola libre 9");
  5.         cmd_send();
Este ejemplo esta e la carpeta lenguaje (C). Esto es lo que no logro hacer funcionar, enviar al impresor una leyenda. Entre los valores de 11 a 20 van los textos cola. Todas las demás operaciones, peleándola y gracias a todos uds, pude hacer funcionar. solo me falta esto.
Si precisan algún archivo de esas lineas de programación me avisan

fastpho 27 de marzo de 2025 23:28

@Ale te paso ejemplo...
Código COBOL:
  1. WORKING-STORAGE SECTION.
  2.  01 TITULO-ECabCola  PIC X(24) VALUE "EstablecerEncabezadoCola".
  3.  01 TITULO-ECNumero  PIC X(6)  VALUE "Numero".
  4.  01 TITULO-ECTexto   PIC X(5)  VALUE "Texto".
  5.  01 Valor-ECNumero   PIC S9(9) COMP-5.
  6.  01 Valor-ECTexto    PIC X(50).
  7.  01 HEADER-11.
  8.     03 H-CAJERO  PIC X(7) VALUE "CAJERO:".
  9.     03 H-CODIGO  PIC 9(2).
  10.     03 FILLER    PIC X VALUE SPACES.
  11.     03 H-NOMBRE  PIC X(19).
  12.     03 H-CAJA    PIC X(7) VALUE "  CAJA:".
  13.     03 H-NUMERO  PIC 9(4).
  14.  PROCEDURE       DIVISION.
  15.  
  16.  
  17.      MOVE spaces        TO FUNC-SAM4-LIB.
  18.      MOVE "IFOpBegin"   TO FUNC-SAM4-LIB.
  19.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY CONTENT TITULO-ECabCola returning Respuesta-Impresor.
  20.      DISPLAY "TITULO-ECabCola " , Respuesta-Impresor.
  21.  
  22. ************    
  23. *Texto Cola
  24.  
  25.      MOVE spaces           TO FUNC-SAM4-LIB.
  26.      MOVE "IFOpParamSet"   TO FUNC-SAM4-LIB.
  27. *     MOVE SPACES  TO Valor-ECTexto.
  28.      MOVE 2 TO H-CODIGO.
  29.      MOVE "Osvaldo Linea 11 " TO H-NOMBRE.
  30.      MOVE 3 TO H-NUMERO.
  31.      MOVE HEADER-11        TO Valor-ECTexto.
  32.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY REFERENCE TITULO-ECTexto
  33.                                            BY REFERENCE     Valor-ECTexto
  34.                                            returning Respuesta-Impresor.
  35.      DISPLAY "TITULO-ECTexto " , Respuesta-Impresor.
  36.  
  37. *****************
  38. *Numero Cola
  39.      MOVE spaces              TO FUNC-SAM4-LIB.
  40.      MOVE "IFOpParamIntSet"   TO FUNC-SAM4-LIB.
  41.      MOVE 11                  TO Valor-ECNumero.
  42.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY REFERENCE TITULO-ECNumero
  43.                                            BY VALUE   Valor-ECNumero
  44.                                            returning Respuesta-Impresor.
  45.      DISPLAY "titulo-ECNumero " , Respuesta-Impresor.
  46.                                          
  47.  
  48.              
  49.  
  50. *--------------
  51. * Send
  52.      MOVE spaces          TO FUNC-SAM4-LIB.
  53.      MOVE "IFOpSend"   TO FUNC-SAM4-LIB.
  54.      MOVE 1            TO sWait.
  55.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY VALUE sWait returning Respuesta-Impresor.
  56.      DISPLAY "SEND TITULO-ECabCola " , Respuesta-Impresor.

Saludos ....

Ale 28 de marzo de 2025 01:35

impresoras fiscales
 
muchas gracias. Fasthpo

Algo parecido estaba probando ayer. y probé con tu ejemplo.
Yo lo estoy enviando, luego de comando Pago y antes de Cerrar el documento.
Cuando envío numero de cola, no cancela comprobante pero no imprime nada.
Enviándolo como (IntSet) me tira error. respuesta impresor.
si lo envío como ParamSet no tira error respuesta-impresor, pero tampoco imprime nada.



Código COBOL:
  1.   MOVE "IFOpBegin" to FUNCION3.      
  2.       CALL FUNCION3 WITH STDCALL USING BY CONTENT PARAMETRO-ENCABEZADO RETURNING RESPUESTA-IMPRESOR.
  3.  
  4. *** numero-cola.
  5.      MOVE spaces              TO FUNCION3.
  6. *     MOVE "IFOpParamIntSet"   TO FUNCION3.
  7.      MOVE "IFOpParamSet"TO FUNCION3.
  8.      MOVE 11 TO Valor-ECNumero.
  9.      CALL FUNCION3 WITH STDCALL USING BY CONTENT TITULO-ECNumero
  10.                                            BY VALUE   Valor-ECNumero
  11.                                            returning Respuesta-Impresor.
  12.      if respuesta-impresor = 0 move "error-cola" to pow-text of error-cod-cola.
  13. **... texto-cola      
  14.      MOVE spaces           TO FUNCION.
  15.      MOVE "IFOpParamSet"   TO FUNCION.
  16. *     MOVE SPACES  TO Valor-ECTexto.
  17.      MOVE 2 TO H-CODIGO.
  18.      MOVE "Osvaldo Linea .11 " TO H-NOMBRE.
  19.      MOVE 3 TO H-NUMERO.
  20.      MOVE HEADER-11  TO Valor-ECTexto.
  21.      CALL FUNCION WITH STDCALL USING BY REFERENCE TITULO-ECTexto
  22.                                            BY REFERENCE Valor-ECTexto
  23.                                            returning Respuesta-Impresor.        
  24.      if respuesta-impresor = 0 move "error-texto-cola" to pow-text of error-tex-cola.

fastpho 28 de marzo de 2025 13:07

@Ale
Mandalo como te pongo en el ejemplo tal cual solo cambie el orden y la el numero de cola
por CONTENT

El envio de la cola lo podes probar sin la necesidad de hacer un ticket
pone un boton y envialo , si despues le metes un ticket al impresor
en la cola 11 deberia poner
*CAJERO:02 Osvaldo Linea 11 CAJA:3*
Código COBOL:
  1. WORKING-STORAGE SECTION.
  2.  01 TITULO-ECabCola  PIC X(24) VALUE "EstablecerEncabezadoCola".
  3.  01 TITULO-ECNumero  PIC X(6)  VALUE "Numero".
  4.  01 TITULO-ECTexto   PIC X(5)  VALUE "Texto".
  5.  01 Valor-ECNumero   PIC S9(9) COMP-5.
  6.  01 Valor-ECTexto    PIC X(50).
  7.  01 HEADER-11.
  8.     03 H-CAJERO  PIC X(7) VALUE "CAJERO:".
  9.     03 H-CODIGO  PIC 9(2).
  10.     03 FILLER    PIC X VALUE SPACES.
  11.     03 H-NOMBRE  PIC X(19).
  12.     03 H-CAJA    PIC X(7) VALUE "  CAJA:".
  13.     03 H-NUMERO  PIC 9(4).
  14. 01 Respuesta-Impresor PIC S9(9) COMP-5.
  15.  
  16. PROCEDURE       DIVISION.
  17.      MOVE spaces        TO FUNC-SAM4-LIB.
  18.      MOVE "IFOpBegin"   TO FUNC-SAM4-LIB.
  19.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY CONTENT TITULO-ECabCola returning Respuesta-Impresor.
  20.      DISPLAY "TITULO-ECabCola " , Respuesta-Impresor.
  21.  
  22.  
  23.  
  24.  
  25. ****************
  26. *Numero Cola
  27.      MOVE spaces              TO FUNC-SAM4-LIB.
  28.      MOVE "IFOpParamIntSet"   TO FUNC-SAM4-LIB.
  29.      MOVE 11                  TO Valor-ECNumero. *> Numero de Cola 11
  30.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY CONTENT TITULO-ECNumero *> Esto cambie POR CONTENT
  31.                                            BY VALUE   Valor-ECNumero
  32.                                            returning Respuesta-Impresor.
  33.      DISPLAY "titulo-ECNumero " , Respuesta-Impresor.    
  34.  
  35.  
  36.  
  37.  
  38. ************    
  39. *Texto Cola
  40.      MOVE spaces           TO FUNC-SAM4-LIB.
  41.      MOVE "IFOpParamSet"   TO FUNC-SAM4-LIB.
  42.      MOVE 2                   TO H-CODIGO.
  43.      MOVE "Osvaldo Linea 11 " TO H-NOMBRE.
  44.      MOVE 3                   TO H-NUMERO.
  45.      MOVE HEADER-11        TO Valor-ECTexto.
  46.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY REFERENCE TITULO-ECTexto
  47.                                            BY REFERENCE     Valor-ECTexto
  48.                                            returning Respuesta-Impresor.
  49.      DISPLAY "TITULO-ECTexto " , Respuesta-Impresor.
  50.  
  51. *--------------
  52. * Send
  53.      MOVE spaces       TO FUNC-SAM4-LIB.
  54.      MOVE "IFOpSend"   TO FUNC-SAM4-LIB.
  55.      MOVE 1            TO sWait.
  56.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY VALUE sWait returning Respuesta-Impresor.
  57.      DISPLAY "SEND TITULO-ECabCola " , Respuesta-Impresor.

Saludos...

Ale 29 de marzo de 2025 02:31

fastpho probé pero no hay caso, no lo puedo resolver.. encima ahora me doy cuenta, que lo que tanto me costo hacer funcionar (cantidad en item) resulta que en tiquet anda perfecto, pero en inscr. monotr. exento, no me toma la cantidad, lo toma como valor 1.:enamor:
se me termina el tiempo y la esperanza.
saludos.

Ale 31 de marzo de 2025 18:33

impresoras fiscales
 
hola amigos. como estan?
Les hago consulta, para ver si uds se dan cuenta como resolverlo.

Código COBOL:
  1.  working....
  2.  01 PARAMETRO-ENCABEZADO  PIC X(24) VALUE "EstablecerEncabezadoCola".                                      
  3.  01 TITULO-ECNumero  PIC X(6)  VALUE "Numero".
  4.  01 TITULO-ECTexto   PIC X(5)  VALUE "Texto".
  5.  01 Valor-ECNumero   PIC S9(9) COMP-5.
  6.  01 Valor-ECTexto    PIC X(26).
  7.  
  8.  procedure.
  9.    inicio.
  10.          ......
  11.          ......
  12.          cargo (item-venta), envio (pago).  y luego antes de cerrar comprobante.
  13.          voy a probar-cola.
  14.    
  15.    
  16.    PROBANDO-COLA.
  17.       MOVE SPACES TO comando.    
  18.       move zero to respuesta-impresor.
  19.       MOVE "IFOpBegin" to comando.        
  20.       CALL comando WITH STDCALL USING BY reference parametro-encabezado                                    
  21.                                       RETURNING RESPUESTA-IMPRESOR.      
  22.       if respuesta-impresor = 0 MOVE "ERROR estableziendo cola" TO POW-TEXT OF armado-cola.
  23.  
  24. ****** este comando ya me larga (error) cuando lo envio.   probe como (content) tambien.                                                                                    
  25.  
  26. *** numero-cola.
  27.       MOVE spaces TO FUNCION3.
  28.       MOVE "IFOpParamSet"TO FUNCION3.
  29. *** Acá lo envio como ParamSet..(texto), porque como "IFOpParamIntSet" no me funciono (me larga error) valor 0
  30.       CALL FUNCION3 WITH STDCALL USING BY CONTENT TITULO-ECNumero
  31.                                        by CONTENT "19"
  32.                                        returning Respuesta-Impresor.
  33.       if respuesta-impresor = 0 move "error-colas" to pow-text of error-cod-cola.
  34. *** texto-cola      
  35.       MOVE spaces           TO FUNCION.
  36.       MOVE "IFOpParamSet"   TO FUNCION.
  37.       MOVE SPACES  TO Valor-ECTexto.      
  38.       move "probando transparencia fiscal" to Valor-ECTexto.
  39.       CALL FUNCION WITH STDCALL USING BY reference TITULO-ECTexto
  40.                                       BY REFERENCE Valor-ECTexto
  41.                                       returning Respuesta-Impresor.        
  42.       if respuesta-impresor = 0 move "error-texto-cola" to pow-text of error-tex-cola.    
  43.  
  44. *************************
  45.                 Consulta que opinan y como hacerlo si envío todo junto. algo así:
  46.      
  47.       moOVE SPACES TO comando.    
  48.       move zero to respuesta-impresor.
  49.       MOVE "IFOpBegin" to comando.        
  50.       CALL comando WITH STDCALL USING BY reference parametro-encabezado                                    
  51.                                       by reference TITULO-ECNumero
  52.                                       by content "19"
  53.                                       by reference TITULO-ECTexto
  54.                                       ....    
  55.                                       ....    
  56.                                       RETURNING RESPUESTA-IMPRESOR.

saludos....

fastpho 31 de marzo de 2025 20:03

@Ale esto asi esta mal por que no respeta el protocolo
Código COBOL:
  1. *************************
  2.                 Consulta que opinan y como hacerlo si envío todo junto. algo así:
  3.      
  4.       moOVE SPACES TO comando.    
  5.       move zero to respuesta-impresor.
  6.       MOVE "IFOpBegin" to comando.        
  7.       CALL comando WITH STDCALL USING BY reference parametro-encabezado                                    
  8.                                       by reference TITULO-ECNumero
  9.                                       by content "19"
  10.                                       by reference TITULO-ECTexto
  11.                                       ....    
  12.                                       ....    
  13.                                       RETURNING RESPUESTA-IMPRESOR.

Código COBOL:
  1. MOVE SPACES TO comando.    
  2.       move zero to respuesta-impresor.
  3.       MOVE "IFOpBegin" to comando.        
  4.       CALL comando WITH STDCALL USING BY reference parametro-encabezado                                    
  5.                                       RETURNING RESPUESTA-IMPRESOR.      
  6.       if respuesta-impresor = 0 MOVE "ERROR estableziendo cola" TO POW-TEXT OF armado-cola.
  7.  
  8. ****** este comando ya me larga (error) cuando lo envio.   probe como (content) tambien.                                                                                    
  9.  
  10. *** numero-cola.
  11.       MOVE spaces TO FUNCION3.
  12.       MOVE "IFOpParamSet"TO FUNCION3.
  13. *** Acá lo envio como ParamSet..(texto), porque como "IFOpParamIntSet" no me funciono (me larga error) valor 0
  14.       CALL FUNCION3 WITH STDCALL USING BY CONTENT TITULO-ECNumero
  15.                                        by CONTENT "19"
  16.                                        returning Respuesta-Impresor.
  17.       if respuesta-impresor = 0 move "error-colas" to pow-text of error-cod-cola.
y para este caso donde esta el "SEND"
Otra consulta : decime de año es la version de la libreria Sam4sFiscalDriver la fecha que te figura ?
consulta nro 2 : antes de querer implementar esto trabajabas por el samdrv.exe ?
Saludos



Post añadido a las 19:03. Post anterior a las 18:53


Cita:

Citación del post de fastpho (Mensaje 10005)
@Ale esto asi esta mal por que no respeta el protocolo
Código COBOL:
  1. *************************
  2.                 Consulta que opinan y como hacerlo si envío todo junto. algo así:
  3.      
  4.       moOVE SPACES TO comando.    
  5.       move zero to respuesta-impresor.
  6.       MOVE "IFOpBegin" to comando.        
  7.       CALL comando WITH STDCALL USING BY reference parametro-encabezado                                    
  8.                                       by reference TITULO-ECNumero
  9.                                       by content "19"
  10.                                       by reference TITULO-ECTexto
  11.                                       ....    
  12.                                       ....    
  13.                                       RETURNING RESPUESTA-IMPRESOR.

Código COBOL:
  1. MOVE SPACES TO comando.    
  2.       move zero to respuesta-impresor.
  3.       MOVE "IFOpBegin" to comando.        
  4.       CALL comando WITH STDCALL USING BY reference parametro-encabezado                                    
  5.                                       RETURNING RESPUESTA-IMPRESOR.      
  6.       if respuesta-impresor = 0 MOVE "ERROR estableziendo cola" TO POW-TEXT OF armado-cola.
  7.  
  8. ****** este comando ya me larga (error) cuando lo envio.   probe como (content) tambien.                                                                                    
  9.  
  10. *** numero-cola.
  11.       MOVE spaces TO FUNCION3.
  12.       MOVE "IFOpParamSet"TO FUNCION3.
  13. *** Acá lo envio como ParamSet..(texto), porque como "IFOpParamIntSet" no me funciono (me larga error) valor 0
  14.       CALL FUNCION3 WITH STDCALL USING BY CONTENT TITULO-ECNumero
  15.                                        by CONTENT "19"
  16.                                        returning Respuesta-Impresor.
  17.       if respuesta-impresor = 0 move "error-colas" to pow-text of error-cod-cola.
y para este caso donde esta el "SEND"
Otra consulta : decime de año es la version de la libreria Sam4sFiscalDriver la fecha que te figura ?
consulta nro 2 : antes de querer implementar esto trabajabas por el samdrv.exe ?
Saludos

Código:

[cli];5;LUIS OCAÑA;;96;17142938;;;;;
[txtadd];19 012 IC03 000764 P 11/09/2019;
[txtadd];49003524 PARTY JABX80GR CR;
[item];EMOSO;1,00;12,399;21,00;0.00000000;0;0;0;
[item];43204 REC. SEG.;1,00;0,115;21,00;0.00000000;0;0;0;
[descgral]; Descuento  1.52%;0,19;
[colaset];11;Regimen de Transparencia Fiscal;
[subinfo];
[cerrar]



La franja horaria es GMT +2. Ahora son las 16:41.

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