Colombia - Factura Electrónica Software Propio

l10n_co_electronic_invoice_self
REPOSITORY
REPOSITORYOCA/l10n-colombia
GIT
GIThttps://github.com/OCA/l10n-colombia.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-colombia/tree/19.0/l10n_co_electronic_invoice_self
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYAccounting/Localizations
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), IKU Solutions - Yan Chirino
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), IKU Solutions - Yan Chirino
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, Yan Chirino
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-colombia
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:50
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/l10n-colombia:
    - l10n_co_electronic_invoice
odoo/odoo:
    - account_edi
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - account_edi_ubl_cii
    - base_address_extended
    - contacts
    - l10n_co
    - account_debit_note
    - l10n_latam_base
    - base_vat
    - l10n_latam_invoice_document
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - certificate
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES cryptography
lxml
qrcode
requests
xmlsig
xmltodict
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Integración directa con los servicios web de la DIAN para la emisión de
facturación electrónica colombiana en modo **software propio**.

Funcionalidades:

- Generación de XML UBL 2.1 con extensiones DIAN
- Firma digital XAdES-EPES y envelope SOAP con WS-Security
- Envío SendTestSetAsync (habilitación) y SendBillSync (producción)
- Consulta de estado: GetStatusZip y GetStatus (por CUFE)
- Consulta de rangos de numeración y clave técnica (GetNumberingRange)
- Generación de AttachedDocument con CDATA
- Eventos RADIAN con flujo secuencial (030, 031, 032, 033)
- Importación de facturas de proveedor desde XML o ZIP
- Representación gráfica PDF según requisitos DIAN
- Generación de ZIP (PDF + XML) para envío por email

Modos de operación: **Demostración**, **Habilitación** y **Producción**.

Documentos soportados:

- Factura electrónica de venta (01)
- Factura electrónica de exportación (02)
- Nota crédito electrónica (91) con o sin referencia
- Nota débito electrónica (92)
- Documento soporte (05)
- Nota de ajuste documento soporte (95)

Copyright (C) 2025 IKU Solutions - Yan Chirino <yan.chirino@iku.solutions>

Code Analysis

Views touched (20)
XML IDNameModelTypeStatus
dian_attached_document Contenedor Electrónico AttachedDocument UBL 2.1 ir.ui.view qweb New
dian_credit_note_ubl_content DIAN Credit Note UBL Content ir.ui.view qweb New
dian_debit_note_ubl_content DIAN Debit Note UBL Content ir.ui.view qweb New
dian_demo_application_response DIAN Demo ApplicationResponse ir.ui.view qweb New
dian_demo_numbering_range_response DIAN Demo GetNumberingRange Response ir.ui.view qweb New
dian_demo_send_bill_sync_response DIAN Demo SendBillSync Response ir.ui.view qweb New
dian_demo_send_test_set_async_response DIAN Demo SendTestSetAsync Response ir.ui.view qweb New
dian_invoice_ubl_content DIAN Invoice UBL Content ir.ui.view qweb New
dian_numbering_range_query_content Consulta de Rango de Numeración para la DIAN ir.ui.view qweb New
dian_partner_fiscal_info dian_partner_fiscal_info ir.ui.view qweb New
dian_soap_envelope Envoltura XML para peticiones SOAP hacia la DIAN ir.ui.view qweb New
l10n_co_radian_event_wizard_form l10n_co.dian.radian.event.wizard.form l10n_co.dian.radian.event.wizard form New
report_invoice_document_dian_fiscal_info report_invoice_document_dian_fiscal_info ir.ui.view qweb Inherits account.report_invoice_document
report_invoice_document_dian_footer report_invoice_document_dian_footer ir.ui.view qweb Inherits account.report_invoice_document
report_invoice_document_dian_payment report_invoice_document_dian_payment ir.ui.view qweb Inherits account.report_invoice_document
report_invoice_document_dian_title report_invoice_document_dian_title ir.ui.view qweb Inherits account.report_invoice_document
report_layout_dian_company_info report_layout_dian_company_info ir.ui.view qweb Inherits web.external_layout_standard
view_account_journal_form_inherit account.journal.form.electronic.invoice account.journal xpath Inherits account.view_account_journal_form
view_invoice_tree_dian_status account.move.tree.dian.status account.move xpath Inherits account.view_invoice_tree
view_move_form_radian_button account.move.form.radian.button account.move xpath Inherits account.view_move_form
Models touched (10)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (22)
  • l10n_co_dian_operation_mode Selection
    default='demo' help='Demostración: genera XML y firma con certificado demo, no envía a DIAN. Habilitación: envía al ambiente de pruebas DIAN. Producción: envía al ambiente productivo DIAN.' required=True selection=[('demo', 'Demostración'), ('test', 'Habilitación'), ('production', 'Producción')] string='Modo de Operación'
  • l10n_co_dian_resolution_type Selection
    copy=False help='Corresponde al tipo de resolución de la factura' selection=[('FACTURA ELECTRÓNICA DE VENTA', 'FACTURA ELECTRÓNICA DE VENTA'), ('FACTURA D.E./P.O.S.', 'FACTURA D.E. / P.O.S.'), ('FACTURA POR TALONARIO O DE PAPEL', 'FACTURA POR TALONARIO O DE PAPEL'), ('DOCUMENTO SOPORTE', 'DOCUMENTO SOPORTE')] string='Tipo de Resolución'
  • l10n_co_dian_resolution_type_test Selection
    copy=False default='FACTURA ELECTRÓNICA DE VENTA' help='Corresponde al tipo de resolución de la factura (Habilitación)' selection=[('FACTURA ELECTRÓNICA DE VENTA', 'FACTURA ELECTRÓNICA DE VENTA'), ('FACTURA D.E./P.O.S.', 'FACTURA D.E. / P.O.S.'), ('FACTURA POR TALONARIO O DE PAPEL', 'FACTURA POR TALONARIO O DE PAPEL'), ('DOCUMENTO SOPORTE', 'DOCUMENTO SOPORTE')] string='Tipo de Resolución (Habilitación)'
  • l10n_co_dian_software_identification Char
    string='Identificación'
  • l10n_co_dian_software_pin Char
    string='Pin'
  • l10n_co_dian_software_technical_key Char
    string='Clave técnica (Producción)'
  • l10n_co_dian_software_technical_key_test Char
    string='Clave Técnica (Hab.)'
  • l10n_co_dian_test_set_id Char
    help='Identificador del set de pruebas asignado por la DIAN al registrar el software. Requerido para SendTestSetAsync en ambiente de habilitación.' string='TestSetId (Hab.)'
  • l10n_co_electronic_document_end_number Integer
    string='Número de Fin'
  • l10n_co_electronic_document_end_number_test Integer
    string='Número de Fin (Hab.)'
  • l10n_co_electronic_document_end_resolution_date Date
    string='Fecha de Fin de Resolución'
  • l10n_co_electronic_document_end_resolution_date_test Date
    string='Fecha Fin Resolución (Hab.)'
  • l10n_co_electronic_document_message Text
    string='Mensaje de Resolución'
  • l10n_co_electronic_document_message_test Text
    string='Mensaje Resolución (Hab.)'
  • l10n_co_electronic_document_prefix Char
    string='Prefijo'
  • l10n_co_electronic_document_prefix_test Char
    string='Prefijo (Hab.)'
  • l10n_co_electronic_document_resolution Char
    string='Resolución'
  • l10n_co_electronic_document_resolution_test Char
    default='000000000' string='Resolución (Hab.)'
  • l10n_co_electronic_document_start_number Integer
    string='Número de Inicio'
  • l10n_co_electronic_document_start_number_test Integer
    string='Número de Inicio (Hab.)'
  • l10n_co_electronic_document_start_resolution_date Date
    string='Fecha de Inicio de Resolución'
  • l10n_co_electronic_document_start_resolution_date_test Date
    string='Fecha Inicio Resolución (Hab.)'
Public methods (1)
  • action_query_numbering_range(self)
    Query DIAN for numbering ranges via GetNumberingRange.

New fields (3)
  • l10n_co_is_support_document Boolean
    compute='_compute_l10n_co_is_support_document' string='Es Documento Soporte'
  • l10n_co_radian_events_sent Char
    copy=False help='Códigos de eventos RADIAN enviados, separados por coma. Ej: 030,032,033' string='Eventos RADIAN enviados'
  • l10n_co_radian_status Selection
    copy=False selection=[('pending', 'Pendiente'), ('receipt_sent', 'Acuse enviado'), ('goods_received', 'Bienes/Servicios recibidos'), ('accepted', 'Aceptada'), ('rejected', 'Reclamada')] string='Estado RADIAN'
Public methods (2)
  • action_open_radian_wizard(self)
    Abrir el wizard de eventos RADIAN.
  • action_query_dian_status(self)
    Query DIAN for document status. Uses GetStatusZip (by zipKey) in test/habilitación mode, or GetStatus (by CUFE/trackId) in production mode.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • event_type Selection
    default='030' required=True selection=RADIAN_EVENTS string='Tipo de Evento'
  • move_id Many2one → account.move
    comodel_name='account.move' readonly=True required=True string='Factura'
  • note Text
    string='Nota'
Public methods (2)
  • action_send_event(self)
    Enviar evento RADIAN a la DIAN.
  • default_get(self, fields_list)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/l10n-colombia
GIT
GIThttps://github.com/OCA/l10n-colombia.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-colombia/tree/18.0/l10n_co_electronic_invoice_self
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYAccounting/Localizations
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), IKU Solutions - Yan Chirino
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), IKU Solutions - Yan Chirino
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, Yan Chirino
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-colombia
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/l10n-colombia:
    - l10n_co_electronic_invoice
odoo/odoo:
    - account_edi
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - account_edi_ubl_cii
    - base_address_extended
    - contacts
    - l10n_co
    - account_debit_note
    - l10n_latam_base
    - base_vat
    - l10n_latam_invoice_document
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - certificate
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES cryptography
lxml
qrcode
requests
xmlsig
xmltodict
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Integración directa con los servicios web de la DIAN para la emisión de
facturación electrónica colombiana en modo **software propio**.

Funcionalidades:

- Generación de XML UBL 2.1 con extensiones DIAN
- Firma digital XAdES-EPES y envelope SOAP con WS-Security
- Envío SendTestSetAsync (habilitación) y SendBillSync (producción)
- Consulta de estado: GetStatusZip y GetStatus (por CUFE)
- Consulta de rangos de numeración y clave técnica (GetNumberingRange)
- Generación de AttachedDocument con CDATA
- Eventos RADIAN con flujo secuencial (030, 031, 032, 033)
- Importación de facturas de proveedor desde XML o ZIP
- Representación gráfica PDF según requisitos DIAN
- Generación de ZIP (PDF + XML) para envío por email

Modos de operación: **Demostración**, **Habilitación** y **Producción**.

Documentos soportados:

- Factura electrónica de venta (01)
- Factura electrónica de exportación (02)
- Nota crédito electrónica (91) con o sin referencia
- Nota débito electrónica (92)
- Documento soporte (05)
- Nota de ajuste documento soporte (95)

Copyright (C) 2025 IKU Solutions - Yan Chirino <yan.chirino@iku.solutions>

Code Analysis

Views touched (19)
XML IDNameModelTypeStatus
dian_attached_document Contenedor Electrónico AttachedDocument UBL 2.1 ir.ui.view qweb New
dian_credit_note_ubl_content DIAN Credit Note UBL Content ir.ui.view qweb New
dian_debit_note_ubl_content DIAN Debit Note UBL Content ir.ui.view qweb New
dian_demo_application_response DIAN Demo ApplicationResponse ir.ui.view qweb New
dian_demo_numbering_range_response DIAN Demo GetNumberingRange Response ir.ui.view qweb New
dian_demo_send_bill_sync_response DIAN Demo SendBillSync Response ir.ui.view qweb New
dian_demo_send_test_set_async_response DIAN Demo SendTestSetAsync Response ir.ui.view qweb New
dian_invoice_ubl_content DIAN Invoice UBL Content ir.ui.view qweb New
dian_numbering_range_query_content Consulta de Rango de Numeración para la DIAN ir.ui.view qweb New
dian_partner_fiscal_info dian_partner_fiscal_info ir.ui.view qweb New
dian_soap_envelope Envoltura XML para peticiones SOAP hacia la DIAN ir.ui.view qweb New
l10n_co_radian_event_wizard_form l10n_co.dian.radian.event.wizard.form l10n_co.dian.radian.event.wizard form New
report_invoice_document_dian_fiscal_info report_invoice_document_dian_fiscal_info ir.ui.view qweb Inherits account.report_invoice_document
report_invoice_document_dian_footer report_invoice_document_dian_footer ir.ui.view qweb Inherits account.report_invoice_document
report_invoice_document_dian_payment report_invoice_document_dian_payment ir.ui.view qweb Inherits account.report_invoice_document
report_invoice_document_dian_title report_invoice_document_dian_title ir.ui.view qweb Inherits account.report_invoice_document
report_layout_dian_company_info report_layout_dian_company_info ir.ui.view qweb Inherits web.external_layout_standard
view_account_journal_form_inherit account.journal.form.electronic.invoice account.journal xpath Inherits account.view_account_journal_form
view_move_form_radian_button account.move.form.radian.button account.move xpath Inherits account.view_move_form
Models touched (10)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (22)
  • l10n_co_dian_operation_mode Selection
    default='demo' help='Demostración: genera XML y firma con certificado demo, no envía a DIAN. Habilitación: envía al ambiente de pruebas DIAN. Producción: envía al ambiente productivo DIAN.' required=True selection=[('demo', 'Demostración'), ('test', 'Habilitación'), ('production', 'Producción')] string='Modo de Operación'
  • l10n_co_dian_resolution_type Selection
    copy=False help='Corresponde al tipo de resolución de la factura' selection=[('FACTURA ELECTRÓNICA DE VENTA', 'FACTURA ELECTRÓNICA DE VENTA'), ('FACTURA D.E./P.O.S.', 'FACTURA D.E. / P.O.S.'), ('FACTURA POR TALONARIO O DE PAPEL', 'FACTURA POR TALONARIO O DE PAPEL'), ('DOCUMENTO SOPORTE', 'DOCUMENTO SOPORTE')] string='Tipo de Resolución'
  • l10n_co_dian_resolution_type_test Selection
    copy=False default='FACTURA ELECTRÓNICA DE VENTA' help='Corresponde al tipo de resolución de la factura (Habilitación)' selection=[('FACTURA ELECTRÓNICA DE VENTA', 'FACTURA ELECTRÓNICA DE VENTA'), ('FACTURA D.E./P.O.S.', 'FACTURA D.E. / P.O.S.'), ('FACTURA POR TALONARIO O DE PAPEL', 'FACTURA POR TALONARIO O DE PAPEL'), ('DOCUMENTO SOPORTE', 'DOCUMENTO SOPORTE')] string='Tipo de Resolución (Habilitación)'
  • l10n_co_dian_software_identification Char
    string='Identificación'
  • l10n_co_dian_software_pin Char
    string='Pin'
  • l10n_co_dian_software_technical_key Char
    string='Clave técnica (Producción)'
  • l10n_co_dian_software_technical_key_test Char
    string='Clave Técnica (Hab.)'
  • l10n_co_dian_test_set_id Char
    help='Identificador del set de pruebas asignado por la DIAN al registrar el software. Requerido para SendTestSetAsync en ambiente de habilitación.' string='TestSetId (Hab.)'
  • l10n_co_electronic_document_end_number Integer
    string='Número de Fin'
  • l10n_co_electronic_document_end_number_test Integer
    string='Número de Fin (Hab.)'
  • l10n_co_electronic_document_end_resolution_date Date
    string='Fecha de Fin de Resolución'
  • l10n_co_electronic_document_end_resolution_date_test Date
    string='Fecha Fin Resolución (Hab.)'
  • l10n_co_electronic_document_message Text
    string='Mensaje de Resolución'
  • l10n_co_electronic_document_message_test Text
    string='Mensaje Resolución (Hab.)'
  • l10n_co_electronic_document_prefix Char
    string='Prefijo'
  • l10n_co_electronic_document_prefix_test Char
    string='Prefijo (Hab.)'
  • l10n_co_electronic_document_resolution Char
    string='Resolución'
  • l10n_co_electronic_document_resolution_test Char
    default='000000000' string='Resolución (Hab.)'
  • l10n_co_electronic_document_start_number Integer
    string='Número de Inicio'
  • l10n_co_electronic_document_start_number_test Integer
    string='Número de Inicio (Hab.)'
  • l10n_co_electronic_document_start_resolution_date Date
    string='Fecha de Inicio de Resolución'
  • l10n_co_electronic_document_start_resolution_date_test Date
    string='Fecha Inicio Resolución (Hab.)'
Public methods (1)
  • action_query_numbering_range(self)
    Query DIAN for numbering ranges via GetNumberingRange.

New fields (3)
  • l10n_co_is_support_document Boolean
    compute='_compute_l10n_co_is_support_document' string='Es Documento Soporte'
  • l10n_co_radian_events_sent Char
    copy=False help='Códigos de eventos RADIAN enviados, separados por coma. Ej: 030,032,033' string='Eventos RADIAN enviados'
  • l10n_co_radian_status Selection
    copy=False selection=[('pending', 'Pendiente'), ('receipt_sent', 'Acuse enviado'), ('goods_received', 'Bienes/Servicios recibidos'), ('accepted', 'Aceptada'), ('rejected', 'Reclamada')] string='Estado RADIAN'
Public methods (2)
  • action_open_radian_wizard(self)
    Abrir el wizard de eventos RADIAN.
  • action_query_dian_status(self)
    Query DIAN for document status. Uses GetStatusZip (by zipKey) in test/habilitación mode, or GetStatus (by CUFE/trackId) in production mode.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • event_type Selection
    default='030' required=True selection=RADIAN_EVENTS string='Tipo de Evento'
  • move_id Many2one → account.move
    comodel_name='account.move' readonly=True required=True string='Factura'
  • note Text
    string='Nota'
Public methods (2)
  • action_send_event(self)
    Enviar evento RADIAN a la DIAN.
  • default_get(self, fields_list)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.