Conservar la autorización del SRI cuando falla el envío del PDF

 Detalles

Anteriormente, cuando el Servicio de Rentas Internas (SRI) autorizaba un comprobante electrónico pero ocurría una falla al generar el archivo PDF o al enviar el correo al cliente, Odoo revertía todo el proceso. Esto provocaba que el comprobante figurara como 'pendiente de envío' a pesar de estar legalmente autorizado en la base de datos del SRI, lo que causaba inconsistencias contables y desinformación sobre el estado real de la transacción.

Ahora la autorización y el envío del PDF funcionan de forma independiente, así que la autorización del SRI se conserva aunque falle el envío. Además, el documento muestra un aviso en la parte superior que indica que fue autorizado pero que el PDF no se pudo enviar, para que el usuario lo reintente con el botón "Enviar". El aviso desaparece solo cuando el reenvío se completa, sea de forma automática o manual.


 ¿Qué cambia?

  • Se corrigió el procesamiento de documentos electrónicos para que la autorización del SRI se conserve aunque falle la generación del PDF o el envío del correo.
  • Se agregó un aviso en el documento cuando fue autorizado por el SRI pero no se pudo enviar el PDF.
  • Se agregó la eliminación automática del aviso cuando el reenvío se completa con éxito.

 Detalle técnico

  • En Odoo v18, se separó el envío del PDF/email de la autorización usando un savepoint. Si el envío falla, solo se revierten esos cambios y se conservan el estado enviado, el XML adjunto y l10n_ec_authorization_date. El error queda registrado como warning en el log del servidor.
  • Se agregó el campo l10n_ec_pdf_send_error en account.move, que controla el aviso del formulario y se limpia al reenviar con éxito, tanto por el flujo EDI automático como por el botón "Enviar".

  • Riesgo: medio
  • Tipo: bug / nueva funcionalidad
  • Descripción:

    Al procesar documentos EDI (SRI), si el renderizado o envío del PDF fallaba después de que el SRI ya autorizó el documento, la excepción propagaba hacia arriba revirtiendo toda la transacción. El documento quedaba en estado to_send en Odoo aunque el SRI lo había autorizado correctamente.

    Se desacoplan los dos procesos en _process_job() usando savepoint(): si el PDF/email falla, el savepoint revierte solo esos cambios parciales, preservando state='sent', el attachment XML y l10n_ec_authorization_date. El error queda logueado como warning en el servidor.

    Para visibilidad del operador, se agrega el campo l10n_ec_pdf_send_error en account.move que muestra un banner alert-warning en la parte superior del formulario indicando que el documento fue autorizado pero el envío del PDF falló. El campo se limpia automáticamente al reenviar con éxito, ya sea por el flujo EDI automático (_process_job) o manualmente con el botón "Enviar" (action_send_and_print).

image

Iniciar sesión para dejar un comentario
Integración de Odoo con d2 Web de Biometrika para Nómina