Generar PDF con comprobante autorizado

RunLLM
RunLLM

Sí, puedes generar el PDF en cualquier momento usando los datos del comprobante autorizado (incluyendo CAE, fechas, totales, etc.), no es necesario hacerlo inmediatamente después de la autorización. Solo necesitas armar el HTML con esos datos y luego usar el método createPDF del SDK para Node.js, pasando el HTML y las opciones de formato según el ejemplo oficial.

Ejemplo en Node.js:

const Afip = require('@afipsdk/afip.js');
const fs = require('fs');

// Leer el HTML de ejemplo y reemplazar los datos dinámicamente
const html = fs.readFileSync('./bill.html', 'utf8'); // Usa tu HTML con los datos del comprobante

const afip = new Afip({ CUIT: 20409378472 }); // Usa el CUIT correspondiente

const options = {
  width: 8,
  marginLeft: 0.4,
  marginRight: 0.4,
  marginTop: 0.4,
  marginBottom: 0.4
};

(async () => {
  const res = await afip.ElectronicBilling.createPDF({
    html: html, // HTML con los datos del comprobante autorizado
    file_name: 'FacturaEjemplo',
    options: options
  });
  console.log(res.file); // URL del PDF generado (disponible 24hs)
})();

Puedes personalizar el HTML con los datos del comprobante autorizado antes de generar el PDF. El archivo generado estará disponible para descargarlo o enviarlo por email según lo necesites.

Sources:

ElManu
ElManu

@user Como personalizo el HTML con los datos del comprobante autorizado antes de generar el pDF?

RunLLM
RunLLM

Debes usar un motor de plantillas (por ejemplo, Jinja2 en Python, Twig o Mustache en PHP, o cualquier template engine en Node.js como EJS o Handlebars) para reemplazar los valores dinámicos en el HTML antes de pasarlo al método createPDF. Así puedes insertar CAE, fecha, totales, etc., en el HTML base del comprobante autorizado.

En Node.js, puedes usar Handlebars así:

const Handlebars = require('handlebars');
const fs = require('fs');

const htmlTemplate = fs.readFileSync('./bill.html', 'utf8');
const template = Handlebars.compile(htmlTemplate);

const datosComprobante = {
  numero: '0001-00000001',
  cae: '12345678901234',
  fecha: '20240601',
  total: 121,
  // ...otros datos
};

const html = template(datosComprobante);
// Luego usas este HTML en createPDF

Más detalles y ejemplos de cómo pasar datos al HTML están explicados en la comunidad y documentación oficial del SDK, recomendando el uso de motores de plantillas para este fin.

Sources:

ElManu
ElManu

@user Si genero un comprobante de prueba y me retorna un CAE, puedo consultar dicho comprobante de prueba a través de await afip.ElectronicBilling.getVoucherInfo()

RunLLM
RunLLM

Sí, puedes consultar un comprobante de prueba generado en modo desarrollo usando await afip.ElectronicBilling.getVoucherInfo(), pero solo funcionará para comprobantes emitidos en el mismo entorno de desarrollo. En producción, deberás emitir y consultar comprobantes reales; los de prueba no aparecen allí ni son válidos oficialmente.

Para confirmar que el comprobante de prueba fue generado correctamente, consulta con el mismo CUIT, punto de venta y tipo de comprobante en el entorno de desarrollo. Si necesitas validar aún más, puedes usar el servicio de constatación de comprobantes en modo desarrollo también. ¿Te gustaría ver un ejemplo de código para la consulta?

Sources: