Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Obtener PDF #3

Open
lghamie opened this issue Nov 27, 2018 · 17 comments
Open

Obtener PDF #3

lghamie opened this issue Nov 27, 2018 · 17 comments

Comments

@lghamie
Copy link

lghamie commented Nov 27, 2018

Tienen idea si hay algun endpoint que permita generar el PDF de la factura?

Saludos!

@mbenedettini
Copy link
Contributor

AFAIK Afip no provee eso, tenes que disenarla y generarla vos. Si te sirve de algo, yo estoy generandolo a partir de html con pupeteer y usando esta fuente https://github.com/Holger-Will/2of5-font para el codigo de barras.

@emilioastarita
Copy link
Owner

Busqué lo mismo en su momento para guardarme algún comprobante pero no hay me dijeron en la AFIP.
@mbenedettini para diseñar uno la factura tiene muchas vueltas en cuanto a normativa ? Capaz es una linda funcionalidad que le podemos agregar a la lib. Si tenes alguna info/código pasa!

Gracias

@lghamie
Copy link
Author

lghamie commented Dec 4, 2018

Mil gracias!

@mbenedettini
Copy link
Contributor

@emilioastarita no mucho, de todas maneras yo me basé en el diseño de la afip y sí es obligatorio el código de barras (https://www.afip.gob.ar/genericos/guiavirtual/consultas_detalle.aspx?id=129672). Tengo algo armado pero en este momento está super tightly coupled con LoopbackJS que es lo que uso en backend. Voy a ver si me hago algo de tiempo y armo una librería.

@tulsidas
Copy link

Estoy laburando en esto. Un html (muy simple) que se renderice en PNG (no encontré fácil pasar de HTML a PDF, tampoco busqué mucho) incluyendo el QR obligatorio de la AFIP. ¡Novedades pronto!

@mbenedettini
Copy link
Contributor

@tulsidas te paso el html2pdf que hice, es super viejo y probablemente hoy en día se pueda hacer más limpio con puppeteer https://gist.github.com/mbenedettini/e88b5d09a980944783f0705d248ae43a

@tulsidas
Copy link

@mbenedettini joya, lo voy a pispear. Bajé un modulo npm que supuestamente hacía html-to-pdf usando puppeteer y no me funcionó, igual no le dediqué ni 5 minutos, por ahora estoy laburando en generar la factura bien, después convertirla a PDF, PNG o cualquier otro formato son detalles

@mbenedettini
Copy link
Contributor

@tulsidas me olvidé, si tengo el circuito completo más nuevo. Este es otro snippet que incluye desde la generacion del html con barcode hasta el pdf con puppeteer https://gist.github.com/mbenedettini/59d51076e813f5bbb14e42cae4895455

@tulsidas
Copy link

bueno ya tengo esto funcionando (por ahora sólo en el entorno de homologación), enchulo el código y mando pull request

@hbjav
Copy link

hbjav commented May 19, 2021

Buenas! Una actualización por el tema del código de barras, para el que no lo había visto ya. Ahora es obligatorio un QR, la info acá: https://www.afip.gob.ar/fe/qr.

@tulsidas
Copy link

Yo tengo código que arma factura cheta con QR y toda la pompa, recién veo que el 28 de Marzo dije que iba a subir el código y nunca lo hice. Juro armar pull request pronto!

@emilioastarita
Copy link
Owner

incomprobable!! hasta que no lo veamos XD

@tulsidas
Copy link

Hice un fork y cambié quichicientas cosas (mea culpa), por lo que veo 3 opciones:

  1. subo todo a mi fork así como está y vemos con tiempo de mergearlo, mientras tanto cada cual puede ver cómo lo hice
  2. mergeo todo lindo y lo dejo bien cheto, pero me va a llevar un buen rato
  3. subo sólo los archivos relacionados a la generación de la factura (no sé si aplica realmente porque debe haber dependencias con otros cambios)

Opiniones?

@emilioastarita
Copy link
Owner

como prefieras che y depende mucho de los tiempos de cada uno.

Para reintegrar acá debería ser 1 PR / 1 FEATURE así podemos hacer review porque al menos yo lo uso comercialmente en prod y necesito mantenerlo estable.

Pero también si te resulta más sencillo por la cantidad de cambios, hacer un fork y subirlo, tampoco hay problema. Ahi podemos mirar que features incorporaste y cuales tienen sentido para facturajs y luego se ve como podemos ir migrandolas por PR.

Obviamente todo esto con todo el tiempo del mundo que estamos todxs con mil cosas

slds

@tulsidas
Copy link

Bueno ahí lo subí a mi fork, básicamente hice unos retoques estéticos porque soy un obse, agregué algunas interfaces porque amo los tipos, y el quid del asunto es RenderService.ts que genera la factura y factura.html que es el template html que se usa para generar el PNG.

factura.html tiene varias cosas con @@ que habría que cambiar (lo tenía hardcodeado) o bien parametrizar

Como nota de color hice este desarrollo/fork para la cooperadora de una escuela que tiene que emitir factura cada mes para cada alumno que paga la cuota y es un parto, de esta forma se automatiza, pienso compartirlo con otras cooperadoras una vez que esté más pulido, gracias por el código de base <3

Acepto todo tipo de comentarios, sugerencias y puteadas.

@mbenedettini
Copy link
Contributor

Yo realmente creo que la generacion de la factura le escapa al proposito de esta libreria (que es proveer una api javascript contra el ws de la afip).

Problemas que veo:

  1. Hasta ahora en esta libreria, para los datos de una factura, la informacion va en una sola direccion: afip -> facturajs -> tu aplicacion. Si introducis la impresion tenes que fetchear la factura en tu sistema y pasarsela a la rutina de impresion, y si se te ocurrio guardar la factura de manera ligeramente distinta a como te la manda la afip vas a tener que reconvertir eso antes de mandarlo a imprimir (ejemplo clasico: manejar internamente estructuras de datos con nombres de atributos/columnas en ingles).
  2. El disenio de la factura: esta bien proveer un disenio base pero tiene que ser facil de customizar, si no realmente ya conviene arrancar algo propio desde 0 ya que de otra manera va a ser un dolor de cabeza grande.
  3. Si vas a usar algo basado en puppeteer en un entorno productivo con cierto trafico vas a tener problemas si no parametrizas bien la triada puppeteer + chrome (o chromium) + docker, por cuestiones de memoria y performance de chrome. Por esto es que yo prefiero usar puppeteer pelado y construir sobre el y eventualmente tener la posibilidad de tener un microservicio que se dedica exclusivamente a generar facturas.

Sorry por mi vision negativa, de todas maneras no deja de ser solo una opinion.

@emilioastarita
Copy link
Owner

coincido un poco con lo que dice Mariano, habría que buscarle la vuelta para que se pueda usar con flexibilidad. No sé si escapa al propósito de la librería, que para mí es que te solucione poder facturar y cumplir con los requisitos de la Afip. Si eso ahora incluye generar una factura, trataría que la librería lo aborde.

Voy a investigar un poco que opciones tenemos para esto.

Por otro lado ya que en este issue se habla de poco un todo, les cuento que estuve chusmeando wsdl-to-typescript que te genera toda la info de métodos en interfaces typescript del webservice. El output sale bastante bugueado por lo que vi, pero está interesante para poder automatizar la creación de métodos y ofrecer todo el abanico de WS que ofrece el servicio.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants