Peppol Business Response

account_peppol_response
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/account_peppol_response
VERSION
VERSION 1.0
CATEGORY
CATEGORYAccounting/Accounting
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSOdoo Translation Bot, Florian Gilbert, Pierrot (prro), Gauthier Wala (gawa), Dylan Kiss (dyki), Sven Fuehr
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:45
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account_peppol
    - account_edi_proxy_client
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - certificate
    - account_edi_ubl_cii
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES phonenumbers
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
In addition to the PEPPOL module, this enable the business level response mechanism for PEPPOL documents.
When sending a document, and if the counterpart also handles business responses, you will be able to
see if your document has been accepted or rejected.
When receiving a document, you will be able to send a rejection or approval of the received document.
    

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
account_peppol_rejection_wizard_view_form account.peppol.rejection.wizard.view.form account.peppol.rejection.wizard form New
account_peppol_response_view_form account.peppol.response.view.form account.peppol.response form New
account_peppol_response_view_list account.peppol.response.view.list account.peppol.response list New
account_peppol_response_view_move_form account.peppol.response.view.move.form account.move xpath Inherits account_peppol.account_peppol_view_move_form
res_partner_form_account_peppol_response res.partner.form.account.peppol.response res.partner data Inherits account_peppol.res_partner_form_account_peppol
Models touched (7)

New fields (3)
  • peppol_can_send_response Boolean
    compute='_compute_peppol_can_send_response'
  • peppol_move_state Selection
    selection_add=[('AB', 'Received'), ('AP', 'Approved'), ('RE', 'Rejected')]
  • peppol_response_ids One2many → account.peppol.response
    args: 'account.peppol.response', 'move_id'
Public methods (4)
  • action_open_peppol_reponses(self)
  • action_peppol_open_rejection_wizard(self)
  • action_peppol_send_approval_response(self)
  • button_cancel(self)

New fields (4)
  • code Char
  • description Char
  • list_identifier Selection
    string='List identifier' args: [('OPStatusReason', 'OPStatusReason'), ('OPStatusAction', 'OPStatusAction')]
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • action_ids Many2many → account.peppol.clarification
    comodel_name='account.peppol.clarification' domain="[('list_identifier', '=', 'OPStatusAction')]" help="The actions to be suggested to the document's sender in order for the document to be accepted when sent again (eventually). These will be sent to the document's sender. Not mandatory." relation='account_peppol_rejection_action_rel' string='Rejection actions'
  • move_ids Many2many → account.move
    comodel_name='account.move' required=True
  • reason_ids Many2many → account.peppol.clarification
    comodel_name='account.peppol.clarification' default=<expr> domain="[('list_identifier', '=', 'OPStatusReason')]" help="The reasons to reject the received PEPPOL document. These will be sent to the document's sender." relation='account_peppol_rejection_reason_rel' required=True string='Rejection reasons'
Public methods (1)
  • button_send(self)

New fields (5)
  • company_id Many2one
    related='move_id.company_id'
  • move_id Many2one → account.move
    index='btree_not_null' ondelete='cascade' args: 'account.move'
  • peppol_message_uuid Char
    args: 'Peppol UUID'
  • peppol_state Selection
    selection=[('processing', 'Pending Reception'), ('done', 'Done'), ('error', 'Error'), ('not_serviced', 'Not Serviced')] string='Peppol status'
  • response_code Selection
    required=True selection=[('AB', 'Acknowledgement'), ('IP', 'In Process'), ('UQ', 'Under query'), ('CA', 'Conditionally accepted'), ('RE', 'Rejection'), ('AP', 'Approval'), ('PD', 'Paid')]
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 (2)
  • peppol_response_support Boolean
    compute='_compute_response_support' args: 'Peppol Response Service'
  • peppol_supported_documents Json
    args: 'Supported Peppol Documents'
Public methods (1)
  • button_account_peppol_check_partner_endpoint(self, company=None)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/account_peppol_response
VERSION
VERSION 1.0
CATEGORY
CATEGORYAccounting/Accounting
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Pierrot (prro), Gauthier Wala (gawa), Dylan Kiss (dyki), Sven Fuehr
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:59
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account_peppol
    - account_edi_proxy_client
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - certificate
    - account_edi_ubl_cii
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES phonenumbers
cryptography
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
In addition to the PEPPOL module, this enable the business level response mechanism for PEPPOL documents.
When sending a document, and if the counterpart also handles business responses, you will be able to
see if your document has been accepted or rejected.
When receiving a document, you will be able to send a rejection or approval of the received document.
    

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
account_peppol_rejection_wizard_view_form account.peppol.rejection.wizard.view.form account.peppol.rejection.wizard form New
account_peppol_response_view_form account.peppol.response.view.form account.peppol.response form New
account_peppol_response_view_list account.peppol.response.view.list account.peppol.response list New
account_peppol_response_view_move_form account.peppol.response.view.move.form account.move xpath Inherits account_peppol.account_peppol_view_move_form
res_partner_form_account_peppol_response res.partner.form.account.peppol.response res.partner data Inherits account_peppol.res_partner_form_account_peppol
Models touched (7)

New fields (3)
  • peppol_can_send_response Boolean
    compute='_compute_peppol_can_send_response'
  • peppol_move_state Selection
    selection_add=[('AB', 'Received'), ('AP', 'Approved'), ('RE', 'Rejected')]
  • peppol_response_ids One2many → account.peppol.response
    args: 'account.peppol.response', 'move_id'
Public methods (4)
  • action_open_peppol_reponses(self)
  • action_peppol_open_rejection_wizard(self)
  • action_peppol_send_approval_response(self)
  • button_cancel(self)

New fields (4)
  • code Char
  • description Char
  • list_identifier Selection
    string='List identifier' args: [('OPStatusReason', 'OPStatusReason'), ('OPStatusAction', 'OPStatusAction')]
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • action_ids Many2many → account.peppol.clarification
    comodel_name='account.peppol.clarification' domain="[('list_identifier', '=', 'OPStatusAction')]" help="The actions to be suggested to the document's sender in order for the document to be accepted when sent again (eventually). These will be sent to the document's sender. Not mandatory." relation='account_peppol_rejection_action_rel' string='Rejection actions'
  • move_ids Many2many → account.move
    comodel_name='account.move' required=True
  • reason_ids Many2many → account.peppol.clarification
    comodel_name='account.peppol.clarification' default=<expr> domain="[('list_identifier', '=', 'OPStatusReason')]" help="The reasons to reject the received PEPPOL document. These will be sent to the document's sender." relation='account_peppol_rejection_reason_rel' required=True string='Rejection reasons'
Public methods (1)
  • button_send(self)

New fields (5)
  • company_id Many2one
    related='move_id.company_id'
  • move_id Many2one → account.move
    ondelete='cascade' args: 'account.move'
  • peppol_message_uuid Char
    args: 'Peppol UUID'
  • peppol_state Selection
    selection=[('processing', 'Pending Reception'), ('done', 'Done'), ('error', 'Error'), ('not_serviced', 'Not Serviced')] string='Peppol status'
  • response_code Selection
    required=True selection=[('AB', 'Acknowledgement'), ('IP', 'In Process'), ('UQ', 'Under query'), ('CA', 'Conditionally accepted'), ('RE', 'Rejection'), ('AP', 'Approval'), ('PD', 'Paid')]
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 (2)
  • peppol_response_support Boolean
    compute='_compute_response_support' args: 'Peppol Response Service'
  • peppol_supported_documents Json
    args: 'Supported Peppol Documents'
Public methods (1)
  • button_account_peppol_check_partner_endpoint(self, company=None)
    @handle_demo