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 15 de febrero de 2022 02:10

sintaxis
 
hola. tengo que enviar al impresor fiscal item venta, así como me indica el ejemplo.:
Código CPP:
  1. 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")

ahora en COBOL esta bien la sintaxis como la hago ? porque no me tira error, pero no me imprime ningun dato.
todo en cero. Y descripción espacio en blanco.
así envio por ejemplo el importe
No se si el error estara en la sintaxis del Call.

Código COBOL:
  1.       MOVE 'IFOpParamFloatSet' TO FUNCION.
  2.       MOVE 225.22 TO PARAMETRO-PRECIO3.
  3.       CALL FUNCION WITH STDCALL USING BY REFERENCE PARAMETRO-PRECIO1 PARAMETRO-PRECIO2
  4.       PARAMETRO-PRECIO3 RETURNING RESPUESTA-IMPRESOR.
  5.  
  6. working
  7.  01 PARAMETRO-PRECIO1  PIC X(6) VALUE 'Precio'.
  8.  01 PARAMETRO-PRECIO2  PIC X(2) VALUE ", ".  
  9.  01 PARAMETRO-PRECIO3  PIC 99999.99 VALUE ZEROS.

Perdón por molestar, le agradecería mucho me puedan ayudar a resolverlo.
saludos...

Comentario de Moderador

fastpho 15 de febrero de 2022 13:31

Hola @Ale, , por lo que se puede ver no estas respetando las funciones de la libreria.
*funcion IFOpParamFloatSet* devuelve un entero
Código CPP:
  1. int IFOpParamFloatSet (const char * name, double value)
La funcion recibe dos parametros le estas mandando 3 y chequea el retorno que es un entero si te da 0 error y 1 exito
El campo descripcion sale con espacios por que no lo estas mandando o pone el ejemplo completo usando botones de resalto.

Saludos...

Ale 15 de febrero de 2022 14:39

comunicación
 
Hola Fastpho como siempre agradecido por tu ayuda. Estas en lo cierto.. no había percatado eso.
pero lo raro es que me devuelve valor 1. pero no me imprime el importe, lo mismo me pasa con Descripcion. Y no me doy cuenta como armarlo solo con dos parámetros.
Probe varias formas y por ejemplo :
Código COBOL:
  1. 01 PARAMETRO-PRECIO1 PIC X(6) VALUE 'Precio'.
tengo que enviarlo en el using solo separado. ej:
Código COBOL:
  1. USING BY REFERENCE PARAMETRO-PRECIO1 PARAMETRO-PRECIO2
.... por eso tengo
dividirlo en 3.
saludos y muchas gracias por tu ayuda....

fastpho 16 de febrero de 2022 14:43

sintaxis
 
Hola @Ale , te paso un ejemplo de como pasar parametros a la funciones.
Código COBOL:
  1. WORKING-STORAGE SECTION.
  2.  01 Titulo-descripcion      pic x(11)    value "Descripcion".
  3.  01 Titulo-precio           pic x(6)     value "Precio".
  4.  01 Description             pic x(15)    value "Prueba de Venta".
  5.  01 Precio                  pic s9(9)   COMP-5.
  6.  01 SALIDA-IMPRESOR         pic s9(9) COMP-5 value 0.

Código CPP:
  1. int IFOpParamSet (const char * name, const char * value)

Código COBOL:
  1. *******************************************    
  2. * Descripcion
  3. *************
  4.      move spaces                    TO FUNCION.
  5.      MOVE "IFOpParamSet"   TO FUNCION.
  6.      CALL FUNCION WITH STDCALL USING BY REFERENCE Titulo-descripcion
  7.                                                    BY REFERENCE      Description
  8.                                                    returning SALIDA-IMPRESOR.

Código CPP:
  1. int IFOpParamIntSet (const char * name, int value)

Código COBOL:
  1. *******************************************    
  2. * Precio
  3. ********
  4.      move spaces                        TO FUNCION.
  5.      move 123                               TO Precio.
  6.      MOVE "IFOpParamIntSet"   TO FUNC-SAM4-LIB.
  7.      CALL FUNCION WITH STDCALL USING BY REFERENCE Titulo-precio
  8.                                                   BY VALUE      Precio
  9.                                                   returning SALIDA-IMPRESOR.
Saludos ....

Ale 17 de febrero de 2022 01:32

hola fastpho. nuevamente gracias por tu gran ayuda..
Buenísimo los ejemplos fue un gran asesoramiento, pero vos sabes que Precio sigue sin funcionar.. me lo imprime en 0.00 al tique.
Descripción si anda.. pero todo lo que sea importe ya sea Precio, Cantidad, Iva. no anda ninguno.
realmente se me acaba el tiempo y no logro hacerlo funcionar..
un gran saludo...
y agradecido como siempre.

fastpho 17 de febrero de 2022 12:44

sintaxis
 
Hola @Ale deberia funcionarte usando en todos los campos numericos , el ejemplo
que te puse , es decir usando la funcion Entero , NO uses la del Funcion Flotante.


Código CPP:
  1. int IFOpParamIntSet (const char * name, int value)

Saludos.....

Ale 17 de febrero de 2022 13:37

Hola fastpho, perdón pero no me doy cuenta.. pongo otro ejemplo en otro lenguaje por las dudas.
Probé de varias maneras y no hay caso. Lo unico pude hacer funcionar es "Descripcion".

Código CPP:
  1. printf("AbrirTique\n");
  2.         IFOpBegin("AbrirTique");
  3.         cmd_send();
  4.  
  5.         printf("ItemVenta\n");
  6.         IFOpBegin("ItemVenta");
  7.         IFOpParamSet("Descripcion", "Item de prueba");
  8.         IFOpParamFloatSet("Precio", 1.2345);
  9.         IFOpParamFloatSet("IVA", 21.0);
  10.         IFOpParamSet("CodigoProducto", "7791234567898");
  11.         cmd_send();
  12.         printf("Cerrar\n");
  13.         IFOpBegin("Cerrar");
saludos. Ale.

Fito 17 de febrero de 2022 14:54

Hola:

Los valores numéricos tenés que finalizarlos con un null. Ejemplo

Código COBOL:
  1.  
  2. Working...
  3.  
  4.      02 oCant.
  5.         03 xxCant         pic 9(5).9999.            *> Cantidad
  6.         03                pic x value X"00".
  7.  
  8.      02 oPreuni.
  9.         03 xxPreuni       pic 9(7).9999.            *> Precio unitario.
  10.         03                pic x value X"00".
  11. Procedure...
  12.  
  13.         call ImprimirItem with stdcall using
  14.            by value     xSuma
  15.            by reference oArtdenom
  16.            by reference oCant
  17.            by reference oPreuni
  18.            by value     oIva
  19.            by value     oImpint
  20.            by reference oValor
  21.            by value     oIdCod
  22.            by reference oCodigo
  23.            by reference oCodigoUM
  24.            by value     oMedida
  25.            returning wError

Saludos...

Fito...

Ale 14 de marzo de 2025 16:35

sigo probando. ayuda por favor...
 
hola amigos! espero que estén bien..
Aun no puedo lograr enviar esta función a la fiscal (no me funciona),
para enviar el importe en decimales item y cantidad.

manual de la DLL: dice
Código CPP:
  1. int IFOpParamFloatSet (const char * name, double value)

Agrega un parámetro de número flotante por nombre al comando que se está preparando.
Parámetros:
• name: nombre del parámetro. Ver detalles en el Capítulo III.
• value: valor del parámetro. Retorno: 1 en caso de éxito, 0 en caso de error.

ejemplos: otro lenguaje.
Código VB:
  1. drv.IFOpParamFloatSet("Precio", 1.2345);
  2.    
  3.            oPrtFis:IFOpParamFloatSet("Precio", aLinea5).


como se envía con cobol.? y como lo defino en la working a la variable que lleva el precio del articulo.
01 precio.... ya probé definiéndolo como PIC S9(9) COMP-5 y no anduvo.

algo así tengo armado:
Código COBOL:
  1.      move spaces                        TO FUNCION.
  2.      MOVE "IFOpParamFloatSet"   TO FUNCION
  3.      CALL FUNCION WITH STDCALL USING BY REFERENCE PARAMETRO-PRECIO
  4.                                                   BY VALUE      Precio
  5.                                                   returning SALIDA-IMPRESOR.
  6.  
  7.  WORKI...
  8.      01 PARAMETRO-PRECIO        pic x(6)     value "Precio".
  9.      01 precio ....  ?????

Si alguien me puede dar una mano, desde ya muchas gracias..
Saludos a todos....

fastpho 14 de marzo de 2025 18:01

Hola Ale

Para poder ayudarte podrias poner que version de powercobol estas usando , en que entorno estas
la impresora fiscal es ????? , esta fiscalizada o en modo entrenamiento , tipo comunicacion
serial o usb , que libreria estas usando , Podes sacar X y Z basico , subi un pequeño proyecto
para verlo completo como abris el puerto , como lo cerras , como haces el proceso de venta del item o articulo
etc etc

Respeta las normas del foro.....

Saludos ....


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.