Entrar
¿Nuevo usuario? Inscribirme
ifclipper · Impresoras Fiscales & Clipper
? ¿Ya estás suscrito? Entra a Yahoo!

Consejos

¿Sabías que...?
Podés cambiar el orden de los mensajes. Simplemente hacé clic en el enlace de columna fecha. Tus preferencias se guardarán, por lo tanto no necesitarás hacerlo otra vez cuando vuelvas a entrar.

Mensajes

  Mensajes Ayuda
Avanzado
Una mano... por favor...   Lista de mensajes  
Responder | Reenviar Mensaje #8089 de 8408 |
Re: [ifclipper] Una mano... por favor...

A neuquen por via bariloche si queres pago yo el flete...ja ja ja ja ja ja   eso si con factura electronica por favor....
no soy Gustavo pero Carlos no es lo mismo????? ja ja ja ja suena casi parecido
 
 
salu2
Carlos
 
 
 
 
 
----- Original Message -----
Sent: Wednesday, October 01, 2008 1:43 PM
Subject: RE: [ifclipper] Una mano... por favor...

Ricardo , una maravilla mañana me pongo a probar.

Gustavo Gabriele

PD :  Hay una caja de Alfajores Habanna y una de habanet esperado que digas donde los mando


De: ifclipper@gruposyahoo.com.ar [mailto:ifclipper@gruposyahoo.com.ar] En nombre de Ricardo Sassy
Enviado el: Miércoles, 01 de Octubre de 2008 12:02 a.m.
Para: ifclipper@gruposyahoo.com.ar
Asunto: RE: [ifclipper] Una mano... por favor...

Bueno... aqui voy con la explicación del modo spool, aclarando que desde el punto de vista "legal" dicho modo de trabajo sólo se "aceptaría" en aquellos comercios que por su naturaleza está exceptuados de respetar la famosa concomitancia... (¿alguien la respeta?).

El modo "spool" de las impresoras Hasar es un modo de trabajo donde la impresora está todo el tiempo "viendo" lo que le tiran dentro de una carpeta predeterminada y tratando de procesar en forma batch los archivos que se colocan en dicha carpeta.
Si la impresora "encuentra" un archivo interpretable (desde el punto de vista de la impresora o sea con comandos fiscales) lo procesa y devuelve el resultado de ese proceso en otra carpeta predeterminada, con el mismo nombre del archivo de entrada pero con la extensión ".ANS"  (de "answer... ¿vieron?).
En otras palabras, la impresora esta a la espera de que desde nuestro aplicacativo generemos un archivo plano con la secuencia de comandos a ejecutar y le copiemos ese archivo a la carpeta donde "ella" está esperando.

El modo spool se poner en marcha ejecutando el programa WSPOOLER.EXE que es parte de los programas y drivers que se pueden bajar de la página de Hasar.
Este programa abre una sesión de DOS (que luego podemos minimizar) y queda en ejecución permanente hasta que lo cancelemos con CTRL-C.

Vamos a un ejemplo totalmente funcional para comprender los parámetros que necesita este programa:
WSPOOLER -p1 -v57600 -l -n -sC:\FISCAL\ENTRADA -aC:\FISCAL\SALIDA
"-p" es el parámetro donde le indicamos al programa cuál es el puerto COM a abrir para comunicarse con la impreosa.
"-v" es el parámetro donde le indicamos al programa cuál es la velocidad con que operaremos dicho puerto. Esta velocidad debe coincidir con la seteada en la impresora mediante el utilitario Pruf.
"-l" (ojo... ele de lagarto y no i de inútil) sirve para que el programa vaya generando un archivo log que nos puede servir hipotéticamente para detectar errores de comandos o de funcionamiento. Este archivo log se llama -por defecto- "spooler.log" y contiene información muy interesante para ver por qué a veces nos equivocamos en la sintáxis de un comando fiscal o por qué la impresora se niega a ejecutar un comando que creemos que está bien.
Este un ejemplo del contenido (acumulativo) de spooler.log:
30/09-23:04:20: **START SPOOLER**
30/09-23:04:20: A abrir COM1
30/09-23:04:21: Comando completado: *
30/09-23:04:21: Comando completado: *
30/09-23:04:21: Comando completado: D| |0.0|C|0
30/09-23:04:21: Comando completado: E
30/09-23:04:21: Comando completado: J
"-n" sirve para que en el archivo de respuestas que nos devuelve el programa spooler cada linea de respuestas esté encabezada por el comando que le dió origen.
Esto sirve para poder interpretar mejor ese archivo de respuestas y saber qué nos fué "contestando" la impresora por cada comando que le enviamos.
"-s" es el parámetro que sirve para indicarle al programa spooler cuál es la carpeta donde tiene que estar "a la escucha".
Cualquier archivo que "caiga" es esa carpeta será procesado y posteriormente borrado en forma automática por el programa spooler.exe.
"-a" es el parámetro donde le pido al programa spooler que me devuelva los resultados de la impresora fiscal.
Continuando con el ejemplo, si a la carpeta c:\fiscal\entrada le "tiro" un archivo denominado "99XZC208.FIS" (archivo que obviamente contiene una colección de comandos fiscales para -por ejemplo- emitir una factura), la respuesta de la impresora quedará en C:\FISCAL\SALIDA, en un archivo denominado "99XZC208.ANS".

Es responsabilidad de nuestros aplicativos revisar ese archivo de salida para cerciorarnos que la impresión finalizó correctamente y poder recuperar datos que sean necesarios para actualizar nuestras propias bases de datos.
En mi caso, por ejemplo, tomo de ese archivo el nro. de comprobante emitido, el punto de venta y el monto de iva total, para poder actualizar las bases del sistema en corcondancia con lo emitido por la impresora fiscal.

Los comandos que se le envian a la impresora son EXACTAMENTE LOS MISMOS que usamos habitualmente en el modo de trabajo normal.
Para los que hayan tomado el ejemplo de codificación Clipper que ofrece Hasar, cada linea de este archivo es el contenido de la variable "s" de los ejemplos.

Este es un ejemplo de archivo de comandos para emitir una factura "A":

bEmpresa Equis S.A.30702383923ICDomicilio...
@AS
BItem Uno1.01.021.0M0.00b
BItem Dos1.01.010.5M0.00b
CPSubtotal0
DEfectivo100.00T0
E

La primera linea carga los datos del cliente.
La segunda linea abre el comprobante factura "A",
La tercera y cuarta lineas cargan items de venta con distintas tasas de iva.
La quinta linea pide e imprime un subtotal.
La sexta linea es la del pago.
La séptima linea es la del cierre de comprobante.
Si miran con atención verán que el primer caracter es la representación ascii del comando fiscal.
Obviamente lo que aquí se ve como un símbolo raro es la representación del caracter CHR(28) que se utiliza como separador de campos.

Si todo está bien, la impresora nos devolverá un archivo con estas respuestas (siempre en relación el ejemplo de factura "A" de arriba):
b|1100000010000000|0000011000000000
@|1100000010000000|0011011000000000|00000049
B|1100000010000000|0011011000000000
B|1100000010000000|0011011000000000
C|1100000010000000|0011011000000000|2.0000|2.32|0.32|0.00|0.00|0.00
D|1100000010000000|0011011000000000|-97.68
E|1100000010000000|0000011000000000|00000049|1|2369-0800966608
Entonces simplemente hay que leer este archivo plano y en base al primer caracter ir interpretando y rescatando los datos que nos interesan.
Por ejemplo de la linea "E" yo saco el nro. de comprobante otorgado y el nro. de cai y de la linea "C" saco los totales de iva acumulados.
El contenido de cada linea de respuesta es posicionalmente hablando EXACTAMENTE lo que figura en el manual como respuesta a cada comando.
Para facilitar la intepretación de las respuestas, el programa spooler reemplaza el caracter CHR(28) por el caracter "|" (pipe) como separador de campos.

RESUMEN:
1º) Genero un archivo ascii con la colección de comandos necesarios para una tarea determinada (emitir factura "A", pedir un cierre "Z", etc.) y copiarlo a la carpeta de entrada del spooler.
Si se trabaja desde varios puestos de trabajo simultáneos con una única impresora fiscal es conveniente que el nombre del archivo sea en parte relacionado con el puesto de trabajo y en parte al azar.
2º) Esperar alrededor de 20 segundos hasta que la impresora finaliza la impresión y luego leer el archivo de respuestas (mismo nombre que el de entrada pero con extensión ".ANS").
3º) Interpretar el archivo leido y en base a eso interactuar con el aplicativo propio.

VENTAJAS:
1º) Se puede operar la impresora fiscal desde varios puestos de trabajo simultáneamente, con solo tener acceso desde nuestra pc "facturadora" a las carpetas de spool de la pc donde físicamente está conectada la impresora fiscal... que es donde está corriendo el programa spooler.exe.
2º) Nuestro aplicativo se desentiende de abrir y cerrar puertos, setear velocidades y toda la cháchara del hardware. Simplemente le enviamos a la carpeta de spool los comandos a ejecutar.
3º) La operación del aplicactivo es más veloz porque no tiene que esperar la respuesta individual a cada comando sino que lee todo junto, al final y desde un archivo plano.
4º) Como de la parte del hardware se encarga el programa spooler.exe, no importa en qué lenguaje programemos siempre que seamos capaces de generar un archivo plano con los comandos y copiarlo a otra carpeta.
5º) En escenarios de Terminal Server o VPN podemos facturar en las sucursales SIN NINGUN ESFUERZO Y SIN RENEGAR CON EL HARDWARE, usando los programas y archivos que están en el servidor central (esto es maravilloso !!!).

EJEMPLO DE CODIFICACION:
Acá transcibo un ejemplo de cómo abro un loop esperando el archivo de respuestas de la respuesta de la impresora (en forma exclusiva para asegurarme que no falta nada) y luego interpreto ese archivo.


FUNCTION spoolmanager(cTipoDocum)
    IF EMPTY(cSpoolDir) .OR. EMPTY(cAnswerDir)
       ALERT('FALTA DEFINIR CARPETAS SPOOL FISCAL')
       RETURN(.F.)
    ENDIF
    COPY FILE (cArchSpool) TO (cSpoolDir+cFileSPool)
    PONER_MJE(24,"Recuperando Datos Finales... Espere un momento." )
    INKEY(10)
    ********** ACA LEER RESULTADOS Y ASIGNAR nTic
    cArchAnswer := ALLTRIM(cAnswerDir+cFileAnswer)
    nCantLineas := 0
    nIntentos   := 20
    nTic        := 0
    DO WHILE nIntentos > 0
       IF FILE(cArchAnswer)
          DO WHILE FT_FUSE(cArchAnswer,16)<1
          ENDDO
          FT_FGOTOP()
          DO WHILE !FT_FEOF()
             ++nCantLineas
             AADD(aLineasLeidas,FT_FREADLN())
             FT_FSKIP()
          ENDDO
          FT_FUSE()
          FOR I=1 TO nCantLineas
              DO CASE
                 CASE cTipoDocum=='FACTURA'
                      IF LEFT(aLineasLeidas[I],1)='E'
                         nTic  := VAL(SUBST(aLineasLeidas[I],37,8))           //LINEA DE CIERRE DE COMPROBANTE (comando 'E')
                         cCai1 := (SUBST(aLineasLeidas[I],48,15))           //LINEA DE CIERRE DE COMPROBANTE (comando 'E')
                      ENDIF
                      IF LEFT(aLineasLeidas[I],1)='C'
                         nTotalZZ := VAL(TOMAMEDIO(aLineasLeidas[I],'|',4))    //LINEA DE SUBTOTAL              (comando 'C')
                         nIvaZZ   := VAL(TOMAMEDIO(aLineasLeidas[I],'|',5))    //LINEA DE SUBTOTAL              (comando 'C')
                      ENDIF
                 CASE cTipoDocum=='CREDITO'
                      IF LEFT(aLineasLeidas[I],1)=''
                         nTic  := VAL(SUBST(aLineasLeidas[I],37,8))           //LINEA DE CIERRE DE COMPROBANTE (comando 'E')
                         cCai1 := (SUBST(aLineasLeidas[I],48,15))           //LINEA DE CIERRE DE COMPROBANTE (comando 'E')
                      ENDIF
                      IF LEFT(aLineasLeidas[I],1)='p'
                         nIvaZZ   += VAL(TOMAMEDIO(aLineasLeidas[I],'|',5))    //LINEA DE SUBTOTAL
                         nTotalZZ += VAL(TOMAMEDIO(aLineasLeidas[I],'|',8))    //LINEA DE SUBTOTAL
                      ENDIF
                      IF LEFT(aLineasLeidas[I],1)='q'
                         nIvaZZ   += VAL(TOMAMEDIO(aLineasLeidas[I],'|',5))    //LINEA DE SUBTOTAL
                      ENDIF
              ENDCASE
          NEXT
          FERASE(cArchAnswer)
          FERASE(cArchSpool)
          EXIT
       ENDIF
       INKEY(.5)
       nIntentos := nIntentos - 1
       IF nIntentos = 0
          IF ALERT('ESPERANDO RESPUESTA IMPRESORA FISCAL...;¨CONTINUA?',{'SI','NO'}) < 2
             nIntentos := 10
          ENDIF
       ENDIF
    ENDDO
RETURN(.T.)


Espero haber sido claro.

Saludos...
Ricardo Sassy



8 29/09/2008, you wrote:

Ricardo : Si no es mucha molestia, me anoto para tu explicación y desde ya muchas gracias
 
Gustavo Gabriele
 


De: ifclipper@gruposyahoo.com.ar [mailto:ifclipper@gruposyahoo.com.ar] En nombre de Ricardo Sassy
Enviado el: Lunes, 29 de Septiembre de 2008 10:04 p.m.
Para: ifclipper@gruposyahoo.com.ar
Asunto: RE: [ifclipper] Una mano... por favor...
 

Si alguien necesita una explicación del modo spool me avisan.
Es muy fácil y hay que desentenderse de la apertura del puerto y todo eso.
Solamente enviar los comandos relacionados con el documento a imprimir o la consulta que se le quiera efectuar a la impresora.

Saludos...
Ricardo Sassy


At 19:26 29/09/2008, you wrote:

Mario : , alli Ricardo tiro una pista para utilizar la impresora en modo spooll del c2w, Igualmente muchas gracias
 
Gustavo
 


De: ifclipper@gruposyahoo.com.ar [mailto:ifclipper@gruposyahoo.com.ar] En nombre de mariomansilla@arnet.com.ar
Enviado el: Lunes, 29 de Septiembre de 2008 05:36 p.m.
Para: ifclipper@gruposyahoo.com.ar
Asunto: RE: [ifclipper] Una mano... por favor...
 

Hola Gustavo :
                          El ejemplo esta hecho para Hmg oficial , si te es util lo mismo te lo envio .
Saludos .
Mario Mansilla


> Mario : Disculpa la intromison en el tema, es que tengo el mismo problema.
> Tengo dearrollado un modulo de facturación en clipper52 funcionando
> correctamente y debi migrar el sistema , para lo cual utilice la
> herramienta
> de Ciro C2W, pero no puedo hacer funcionar la impresora. Me fui guiando
> con las instrucciones bajas de Hasar pero no hay caso.
> Podrias mandar un ejemplo , desde ya muchas gracias
>
> Gustavo Gabriele
>
> _____
>
>
De: ifclipper@gruposyahoo.com.ar [mailto:ifclipper@gruposyahoo.com.ar] En
> nombre de mariomansilla@arnet.com.ar
> Enviado el: Lunes, 29 de Septiembre de 2008 01:32 p.m.
> Para: ifclipper@gruposyahoo.com.ar
> Asunto: Re: [ifclipper] Una mano... por favor...
>
> Hola Ricardo :
> Disculpas recien hoy veo tu mensaje , yo pude
> hacer funcionar las impresoras fiscales hasar con la winfis32.dll y las
> epson con las ocx de epson , pero con HMG oficial .
> Aun no he tenido tiempo de probar las ocx de hasar .
> Cualquier cosa avisame .
> Saludos .
> Mario Mansilla
>
>
>
>
>> Hola Eduardo.
>> Te agradezco la info.
>> Estoy usando ooHg + Harbour 1.0.
>> El problema que acabo de descubrir es que no puedo acceder a ninguna
>> dll.
>> Probé un ejemplo básico con una dll que tiene funciones que te devuelven
>> el
>> nro. de serie del disco y tampoco funciona.
>> EL programa ejecuta sin errores pero alga pasa que no anda.
>> Inclusive si le cambio el nombre a la dll tampo saltan errores asi que
>> tiene que ser algo muy elemental.
>>
>>
>
Desde ya gracias...
>> ¿Alquien probó acceder a la impresora usando los controles ocx?.
>>
>> Saludos...
>> Ricardo Sassy
>>
>> At 18:58 27/09/2008, you wrote:
>>>Ricardo
>>>
>>>En puertosur estamos armando una clase fiscal para xHarbour consola.
>>>No tengo idea si va a funcionar con Harbour.
>>>Solo te puedo decir q ayer la hice andar pero con xHarbour 1.00
>>> compilacion de
>>>PuertoSur.
>>>Otra version no me funciono. No tengo ni idea de como es el estado de
>>> Harbour
>>>y la compativilidad.
>>>
>>>Direcciones de correo electrónico del grupo
>>>
>>> Enlace relacionado: http://www.puertosur.org
>>> Enviar mensaje: PuertoSur@gruposyahoo.com.ar
>>> Suscribirse: PuertoSur-subscribe@gruposyahoo.com.ar
>>> Cancelar suscripción: PuertoSur-unsubscribe@gruposyahoo.com.ar
>>> Propietario: PuertoSur-owner@gruposyahoo.com.ar
>>>
>>>On Sat, 27 Sep 2008 18:01:01 -0300, Ricardo Sassy wrote
>>> > Hola Juan Carlos
>>> > Uso Harbour 1.0 en modo consola.
>>> > No tengo ningún warning ni nada raro en la compilación.
>>> > El exe se genera normalmente y su ejecución no produce erorres de
>>> ningún tipo.
>>> > Incluso intenté algo tan básico como esto:
>>> > cInfo := CallDll ( "VersionDLLFiscal" , "WINFIS32.DLL" )
>>> > alert(cInfo)
>>> > y devuelve un string vacio.
>>> >
>>> > Evidentemente me falta hacer algo que desconozco.
>>> > Por las dudas... ¿que fecha y tamaño tiene la winfis32.dll que estás
>>> usando?.
>>> > Estoy usando una del 01/12/2005 de 61440 bytes.
>>> > ¿Será que tengo una dll equivocada?.
>>> >
>>> > Saludos y gracias...
>>> > Ricardo Sassy
>>> >
>>> > At 14:13 27/09/2008, you wrote:
>>> >
>>>--
>>> Eduardo Rizzolo
>>> Eldorado, Misiones Argentina
>>> INF 0023
>>> Correo principal y Msn Hotmail:fullpaint@pinturas-misioneras.com.ar
>>> skype:fullpaint1
>>> ICQ:39280741
>>> www.creacionistas.com -> Que lindo cuentito nos contaron!!
>>> www.puertosur.org
>>>
>>>
>>>------------------------------------
>>>
>>>Enlaces a Yahoo! Grupos
>>>
>>>
>>>
>>>
>>
>>
>
>


Este mensaje ha sido verificado por el E-mail Protegido. Antivirus actualizado en 01/10/2008 / Versión: 0.93.1/8366



Mié, 1 de Oct, 2008 5:51 pm

ingsyscad
Sin conexión Sin conexión
Enviar correo Enviar correo

Reenviar Mensaje #8089 de 8408 |
Desplegar mensajes Autor Ordenar por fecha

Mmmaaaarrrrrr avilloso lo suyo... salu2 Carlos ... From: Ricardo Sassy To: ifclipper@... Sent: Wednesday, October 01, 2008 12:01 AM Subject:...
Ingenieria de Sistema...
ingsyscad
Sin conexión Enviar correo
1 de Oct, 2008
12:06 pm

A neuquen por via bariloche si queres pago yo el flete...ja ja ja ja ja ja eso si con factura electronica por favor.... no soy Gustavo pero Carlos no es lo...
Ingenieria de Sistema...
ingsyscad
Sin conexión Enviar correo
1 de Oct, 2008
5:53 pm

Noo No NO NO...ahora explica el tema de trabajar la impresora con IP....me parece interesante.... salu2 Carlos como te pregunto Gerardo esto es con Hasar...
Ingenieria de Sistema...
ingsyscad
Sin conexión Enviar correo
1 de Oct, 2008
10:36 pm

Es fácil. 1º) Arrancás el wspooler con el parámetro "-k". 2º) Con el utilitario "sndcmd.exe" que viene con las Hasar, le mandas el archivo lote de...
Ricardo Sassy
re675432
Sin conexión Enviar correo
1 de Oct, 2008
11:51 pm

Ricardo muchísimas gracias por la explicación. Realmente he estado renegando mucho sin poder obtener información al respecto. Federico de Maussion Deán...
fjdemaussion
fjdesoft
Sin conexión Enviar correo
2 de Oct, 2008
12:17 am

Muchachos, me alegro por el descubrimiento. Pero … lamento meter la púa … jeje. Ojo, la caja de alfajores ya es un compromiso asumido!!! Sin embargo, el...
Claudio Torrillo
clipsupp
Sin conexión Enviar correo
2 de Oct, 2008
1:13 am

HOLA -- Eduardo Rizzolo Eldorado, Misiones Argentina INF 0023 Correo principal y Msn Hotmail:fullpaint@... skype:fullpaint1 ICQ:39280741...
Eduardo Rizzolo
fullpaint
Sin conexión Enviar correo
2 de Oct, 2008
10:37 am

Lo que dice Claudio es muy cierto. Hay que tener cuidado ya que somos solidariamente responsables ante los organismos de control. Pero... (siempre hay un pero)...
Ricardo Sassy
re675432
Sin conexión Enviar correo
2 de Oct, 2008
7:25 pm

Colegas y Amigos Vamos sean vivos!!! El tiempo que van a gastar en armar el spool este, pueden usarlo para armar las cosas como corresponden y definitivamente....
Eduardo Rizzolo
fullpaint
Sin conexión Enviar correo
5 de Oct, 2008
8:27 pm

Hola Ricardo! ¡Felicitaciones!!! Que buena explicación!!! Que clarito que lo hiciste!!!. Muchas, pero muchas gracias! Todavía no renegue con una de 'esas'...
Sergio D.Castellari
sergio1972ar
Sin conexión Enviar correo
2 de Oct, 2008
3:09 pm

Buenas tardes Eduardo, Hay muchas formas de migrar un sistema. Inevitablemente de DOS a Windows tenés una cuestión básica de arquitectura: DOS no contempla...
Jose Luis Otermin
otermin
Sin conexión Enviar correo
5 de Oct, 2008
10:50 pm

Hola Eduardo. El costo de migrar de una plataforma de 16 bits a otra de 32 bits (o 64) actualmente es CERO (0) esfuerzo. Esto se hace tanto con la herramienta...
re675432
Sin conexión Enviar correo
7 de Oct, 2008
7:21 am

Hola Eduardo. El costo de migrar de una plataforma de 16 bits a otra de 32 bits (o 64) actualmente es CERO (0) esfuerzo. Esto se hace tanto con la herramienta...
Ricardo Sassy
re675432
Sin conexión Enviar correo
8 de Oct, 2008
4:56 pm
 Primero  |  |  Siguiente > Último 
Avanzado

Copyright © 2009 Yahoo! de Argentina S.R.L. Todos los derechos reservados.
Política de privacidad - Condiciones del Servicio - Reglas de la comunidad de Yahoo! - Ayuda