Code Monkey home page Code Monkey logo

Comments (6)

gonzaabel avatar gonzaabel commented on May 28, 2024

Hola Catriel, sí. Para las Hasar eso esta disponible y gracias a eso en el json solamente enviamos el número de ticket para el caso de, por ejemplo, las notas de crédito.
Estamos enfocados a las Hasar ya que no disponemos una impresora fiscal de otra marca. Igual con leer el manual de la Epson sería una mejora fácil de implementar.
Igualmente nuestro objetivo es hacer que Fiscalberry sea lo más compatible posible (mientras más compatible, mejor para todos) por lo tanto estaremos agradecidos de recibir colaboraciones.
Si quieres colaborar te explico masomenos la estructura de Fiscalberry, el cual te podría ser fácil de aprender si te encuentras acostumbrado a trabajar con el patrón de software MVC (Modelo, Vista, Controlador) y si logras asociar de alguna manera la arquitectura de FB con este patrón de desarrollo.
Si conoces MVC, podrás comparar la arquitectura de FB de la siguiente manera:

  • El Traductor sería como un controlador, ya que salvo el TraductoresHandler, los demás son propios de cada tipo de impresora. Se encarga de traducir lo que el JSON contiene para que posteriormente se ejecute el/los comando/s de la clase de Comando que corresponda.

  • El Comando vendría a hacer el 'modelo' por así decirlo, ya que en este caso no hay base de datos. El comando contiene las acciones que podes usar en la impresora, y cada clase tiene un sendCommand que se encarga de enviar ese comando a la impresora, y la respuesta la capturara posteriormente el driver.

  • El Driver viene a ser como la 'vista'. En el sentido que viene a ser lo que genera el resultado final. Una vez que recibe respuesta de la impresora, esta pasa a manos del server.py que te la re-envía al cliente de WS.

  • También tenemos al TraductoresHandler que viene a ser a su vez como el dispatcher. Ese traductor contiene todos los comandos genéricos que no son para un tipo de impresora en concreto (EJ: el getAvailablePrinters). Pero cuando viene el printerName y el comando que le mandas a ejecutar no es genérico, es el encargado de mirar el nombre de impresora y el comando que llega por ese mismo JSON, para definir a que traductor redirigir la petición.

Bueno, esa es la forma que tuve yo de entenderlo fácilmente (quizás pude haberle errado en algún detalle) pero me ayudo muchísimo para entender Fiscalberry el asociar su estructura a la misma forma de trabajo que tengo con CakePHP. La wiki dispone de info acerca de la arquitectura, la cual te recomiendo que también la leas.
De la wiki nos queda mejorarla bastante en las secciones sobre los comandos y también mover cosas del readme hacía ella. Y en cuanto dispongamos de tiempo nos pondremos con eso ya que tener la documentación al día es una parte vital del proyecto.
Espero haberte guiado, y ante dudas podes mirar la wiki o preguntarnos. Muchas gracias por tu interés en Fiscalberry, esperaremos tu pull request si te animas al desafió. :)
Saludos!

from fiscalberry.

catrielr avatar catrielr commented on May 28, 2024

Logre que me devuelva el punto de venta, agregando el comando "getInitData" ese trae toda la info de la impresora fiscal.
En Hasar funciona bien, en Epson tengo el problema que abri en el #18

from fiscalberry.

catrielr avatar catrielr commented on May 28, 2024

Aca dejo lo que modifique para obtener el Punto de Venta. Estaria bueno agregar este comando para poder guardar el numero completo del ticket o factura emitido.
Saludos!

EpsonComandos.py:
Agrego en Linea: 39:
CMD_GET_INIT_DATA = (0x2a)

Agrego en Linea 327:

def getPtoVta(self, letter): reply = self._sendCommand(self.CMD_GET_INIT_DATA, ["C"], True) if len(reply) < 3: # La respuesta no es válida. Vuelvo a hacer el pedido y # si hay algún error que se reporte como excepción reply = self._sendCommand(self.CMD_GET_INIT_DATA, ["C"], False) return reply [3]
HasarCommandos.py:
Agrego en Linea 39:
CMD_GET_INIT_DATA = 0x73

Agrego en Linea 470:
def getPtoVta(self, letter): reply = self._sendCommand(self.CMD_GET_INIT_DATA, [], True) if len(reply) < 3: # La respuesta no es válida. Vuelvo a hacer el pedido y # si hay algún error que se reporte como excepción reply = self._sendCommand(self.CMD_GET_INIT_DATA, [], False) return reply [6]

TraductorFiscal.py

Agrego linea 40:
def getPtoVta(self, tipo_cbte): "Devuelve el punto de venta de la impresora fiscal" letra_cbte = tipo_cbte[-1] \ if len(tipo_cbte) > 1 else None return self.comando.getPtoVta(letra_cbte)

from fiscalberry.

gonzaabel avatar gonzaabel commented on May 28, 2024

Hola Catrielr, gracias por tu aporte. 😃
Testeare tu código y lo incorporare lo más pronto que me sea posible.
Saludos!

from fiscalberry.

catrielr avatar catrielr commented on May 28, 2024

Me falto agregreagar
ComandoInterface.py
Linea 341
def getPtoVta(self, letter): """"Obtiene el punto de venta """ raise NotImplementedError

from fiscalberry.

gonzaabel avatar gonzaabel commented on May 28, 2024

Hola Catrielr, lo siento por demorarme demasiado en ponerme a incorporar tu código.
Han pasado varios meses y Fiscalberry ha cambiado bastante. ¿Podrías actualizar tu fork de fiscalberry, incorporar nuevamente tu código y testearlo de nuevo?
Una vez hecho eso, nos generas una pull request para aprovechar las herramientas de esta plataforma y así hacer un merge más fácil.
Si necesitas ayuda para actualizar tu fork, subir tus cambios y generar una pull request, no dudes en contactarme a través de esta issue.
Gracias, saludos!

from fiscalberry.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.