TIP: You can type at any time to perform a new search.

Security findings

Repository
odoo/odoo · module folder
Module version
1.2
Category
Accounting/Accounting
Folder size
5.11 MB
License
LGPL-3
Application
No
Auto-installable
Yes
Website
None
Last tracking update
2026-10-05 00:19:50
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Xavier Morel, Raphael Collet, Thibault Delavallée, odoo, Josse Colpaert, Odoo Translation Bot, Christophe Matthieu, Jorge Pinna Puissant, Julien Mougenot, Anh Thao Pham (pta), Tiffany Chang (tic), william-andre, assellalou, Antoine Vandevenne (anv), luvi, Pierrot (prro), Thomas Becquevort (thbe), amdi-odoo, Gauthier Wala (gawa), Dylan Kiss (dyki), Paolo Gatti, Antoine Boonen, Paolo Gatti (pgi), Chong Wang (cwg), Harsh Modi, Zeel Patel, Aurelien MARIE (auma), Sven Fuehr, kcv-odoo, Louis Gobert, hatr-odoo, Claire (clbr), Antoine Dupuis, Saif (segn), Victor Miguel Armenta Carrillo, roto-odoo, Anton Romanova (roan), Corentin Heinix (cohe), Allesio, Corentin Lombard, anko-odoo, Krzysztof Magusiak (krma), Guillaume V, Ester Andreetto, bhra-odoo, Yassien Ghoniem, Jugurtha, times-odoo, Jeanne Delneste, Laurent Smet (LAS), Julien Launois (jula), Jérôme Belpaire, Martin Doyen, h4818, Ashish Nirmal, Ayush Modi, Nisarg (nipl), Lionel Piraux (lipi), GACI Jugurtha, Arnav Varshney, Sudarshan Maity (sumai), Zachary (zavan), Kadam Darji, Jérémy Bazin (baje), soza-odoo, Kyrillos, Jean Schoenlaub
Odoo dependencies
Python dependencies
phonenumbers
System dependencies
None
Required by
l10n_fr_pdp, l10n_sg
Description
- Register as a Peppol participant
- Send and receive documents via Peppol network in Peppol BIS Billing 3.0 format
    

Code Analysis info_outline

Views touched (12)
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_view_account_invoice_filter account.invoice.select.inherit account.move Inherits account.view_account_invoice_filter
account_peppol_view_move_form account.peppol.view.move.form account.move form Inherits account.view_move_form
account_peppol_view_out_credit_note_tree_inherit account.move.credit.note.list.inherit account.move list Inherits account.view_out_credit_note_tree
account_peppol_view_out_invoice_tree_inherit account.move.out.invoice.list.inherit account.move list Inherits account.view_out_invoice_tree
mail_notification_layout_with_responsible_signature_and_peppol Mail: mail notification layout with responsible signature (user_id of the record) and Peppol status ir.ui.view qweb Inherits mail.mail_notification_layout_with_responsible_signature
peppol_registration_form peppol.registration.form peppol.registration form New
portal_my_details portal_my_details ir.ui.view qweb Inherits portal.portal_my_details
res_config_settings_view_form res.config.settings.view.form.inherit.proxy.user res.config.settings form Inherits account.res_config_settings_view_form
res_partner_form_account_peppol res.partner.form.account.peppol res.partner form Inherits account_edi_ubl_cii.view_partner_property_form
HTTP endpoints (5)
Route(s)HandlerAuthTypeMethodsFlags
/peppol/authentication/callback PeppolAuthentication.peppol_authentication_callback user http GET sudo
/peppol/authentication/webhook PeppolAuthentication.peppol_authentication_webhook public http POST csrf off sudo
/peppol/webhook/message-state-update PeppolWebhookController.webhook_message_update public http POST csrf off sudo
/peppol/webhook/new-message PeppolWebhookController.webhook_new_message public http POST csrf off sudo
/peppol/webhook/user-state-update PeppolWebhookController.webhook_user_update public http POST csrf off sudo
Models touched (15)

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)
  • account_peppol_proxy_state Selection
    related='company_id.account_peppol_proxy_state'
  • is_peppol_journal Boolean
    default=False string='Account used for Peppol'
Public methods (2)
  • button_fetch_in_einvoices(self)
  • button_refresh_out_einvoices_status(self)

New fields (5)
  • peppol_can_send_response Boolean
    compute='_compute_peppol_can_send_response'
  • peppol_is_sent Boolean
    compute='_compute_peppol_is_sent'
  • peppol_message_uuid Char
    copy=False index='btree_not_null' string='Peppol message ID'
  • peppol_move_state Selection
    compute='_compute_peppol_move_state' copy=False selection=[('ready', 'Ready to send'), ('to_send', 'Queued'), ('processing', 'Pending Reception'), ('done', 'Done'), ('AB', 'Received'), ('AP', 'Approved'), ('RE', 'Rejected'), ('error', 'Error')] store=True string='Peppol status'
  • peppol_response_ids One2many → account.peppol.response
    args: 'account.peppol.response', 'move_id'
Public methods (8)
  • action_cancel_peppol_documents(self)
  • action_open_peppol_reponses(self)
  • action_peppol_cancel_and_remove_sequence(self)
  • action_peppol_open_rejection_wizard(self)
  • action_peppol_reset_documents(self, ids_to_delete=None)
  • action_peppol_send_approval_response(self)
  • action_send_and_print(self)
  • button_cancel(self)

New fields (0)

No new fields.

Public methods (1)
  • action_what_is_peppol_activate(self, moves)

New fields (0)

No new fields.

Public methods (1)
  • action_send_and_print(self, force_synchronous=False, allow_fallback_pdf=False)

New fields (0)

No new fields.

Public methods (1)
  • action_send_and_print(self, allow_fallback_pdf=False)

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
    index='btree_not_null' string='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 (1)
  • proxy_type Selection
    ondelete={'peppol': 'cascade'} selection_add=[('peppol', 'Peppol')]
Public methods (0)

No public methods.

New fields (21)
  • account_peppol_proxy_state Selection
    related='company_id.account_peppol_proxy_state'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • contact_email Char
    readonly=False related='selected_company_id.account_peppol_contact_email' required=True
  • display_itsme_login Boolean
    compute='_compute_peppol_can_connect_data'
  • display_no_auth_buttons Boolean
    compute='_compute_peppol_can_connect_data'
  • display_use_parent_connection_selection Boolean
    compute='_compute_display_use_parent_connection_selection'
  • edi_mode Selection
    compute='_compute_edi_mode' selection=[('demo', 'Demo'), ('test', 'Test'), ('prod', 'Live')] string='EDI mode'
  • edi_user_id Many2one → account_edi_proxy_client.user
    comodel_name='account_edi_proxy_client.user' compute='_compute_edi_user_id' string='EDI user'
  • parent_company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_parent_company_id'
  • parent_company_name Char
    related='parent_company_id.name'
  • peppol_can_connect_data Json
    compute='_compute_peppol_can_connect_data'
  • peppol_eas Selection
    compute='_compute_peppol_eas_endpoint' readonly=False selection='_get_peppol_eas_selection' store=True
  • peppol_endpoint Char
    compute='_compute_peppol_eas_endpoint' readonly=False store=True
  • peppol_external_provider Char
    compute='_compute_smp_registration_external_provider'
  • peppol_identifier Char
    compute='_compute_peppol_identifier'
  • peppol_warnings Json
    compute='_compute_peppol_warnings' string='Peppol warnings'
  • phone_number Char
    readonly=False related='selected_company_id.account_peppol_phone_number'
  • selected_company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_selected_company_id'
  • smp_registration Boolean
    compute='_compute_smp_registration_external_provider' string='Register as a receiver'
  • use_parent_connection Boolean
    compute='_compute_use_parent_connection'
  • use_parent_connection_selection Selection
    compute='_compute_use_parent_connection_selection' readonly=False selection=[('use_parent', 'Send from parent company'), ('use_self', 'Register this company on peppol')] store=True
Public methods (2)
  • button_register_peppol_participant(self, selected_auth=None)
  • button_register_with_itsme(self)

New fields (11)
  • account_peppol_contact_email Char
    compute='_compute_account_peppol_contact_email' help='Primary contact email for Peppol connection related communications and notifications.\nIn particular, this email is used by Odoo to reconnect your Peppol account in case of database change.' readonly=False store=True string='Primary contact email'
  • account_peppol_edi_user Many2one → account_edi_proxy_client.user
    comodel_name='account_edi_proxy_client.user' compute='_compute_account_peppol_edi_user'
  • account_peppol_migration_key Char
    groups='base.group_system' string='Migration Key'
  • account_peppol_phone_number Char
    compute='_compute_account_peppol_phone_number' help='This number is used for identification purposes only.' readonly=False store=True string='Mobile number'
  • account_peppol_proxy_state Selection
    default='not_registered' required=True selection=[('not_registered', 'Not registered'), ('sender', 'Can send but not receive'), ('smp_registration', 'Can send, pending registration to receive'), ('receiver', 'Can send and receive'), ('rejected', 'Rejected')] string='PEPPOL status'
  • peppol_can_send Boolean
    compute='_compute_peppol_can_send'
  • peppol_external_provider Char
    tracking=True
  • peppol_metadata Json
    string='Peppol Metadata'
  • peppol_metadata_updated_at Datetime
    string='Peppol meta updated at'
  • peppol_parent_company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_peppol_parent_company_id'
  • peppol_purchase_journal_id Many2one → account.journal
    comodel_name='account.journal' compute='_compute_peppol_purchase_journal_id' domain=[('type', '=', 'purchase')] inverse='_inverse_peppol_purchase_journal_id' readonly=False store=True string='Peppol Purchase Journal'
Public methods (0)

No public methods.

New fields (16)
  • account_is_token_out_of_sync Boolean
    readonly=False related='account_peppol_edi_user.is_token_out_of_sync'
  • account_peppol_contact_email Char
    compute='_compute_account_peppol_contact_email' inverse='_inverse_account_peppol_contact_email'
  • account_peppol_edi_identification Char
    related='account_peppol_edi_user.edi_identification'
  • account_peppol_edi_mode Selection
    related='account_peppol_edi_user.edi_mode'
  • account_peppol_edi_user Many2one
    related='company_id.account_peppol_edi_user'
  • account_peppol_migration_key Char
    readonly=False related='company_id.account_peppol_migration_key'
  • account_peppol_phone_number Char
    readonly=False related='company_id.account_peppol_phone_number'
  • account_peppol_proxy_state Selection
    readonly=False related='company_id.account_peppol_proxy_state'
  • account_peppol_purchase_journal_id Many2one
    readonly=False related='company_id.peppol_purchase_journal_id'
  • peppol_external_provider Char
    readonly=False related='company_id.peppol_external_provider'
  • peppol_parent_company_name Char
    compute='_compute_peppol_use_parent_company'
  • peppol_participation_role Selection
    compute='_compute_peppol_participation_role' inverse='_inverse_peppol_participation_role' selection=[('sending_and_receiving', 'Sending & Receiving'), ('sending_only', 'Sending Only')]
  • peppol_purchase_journal_required Boolean
    compute='_compute_peppol_purchase_journal_required'
  • peppol_use_parent_company Boolean
    compute='_compute_peppol_use_parent_company'
  • routing_endpoint Char
    readonly=False related='company_id.partner_id.routing_endpoint' string='Routing Endpoint'
  • routing_scheme Selection
    readonly=False related='company_id.partner_id.routing_scheme' string='Routing Scheme'
Public methods (6)
  • action_open_peppol_form(self)
  • button_disconnect_this_database(self)
    Disconnect the current database from the Peppol network. This does not delete or affect the IAP connection, which will remain intact. So don't use this to deregister the participant/connection.
  • button_peppol_deregister(self)
    Unregister the user from Peppol network.
  • button_peppol_disconnect_branch_from_parent(self)
  • button_peppol_reregister(self)
  • button_reconnect_this_database(self)
    Re-establish an out-of-sync connection

New fields (7)
  • available_peppol_edi_formats Json
    compute='_compute_available_peppol_edi_formats'
  • available_peppol_sending_methods Json
    compute='_compute_available_peppol_sending_methods'
  • invoice_sending_method Selection
    selection_add=[('peppol', 'by Peppol')]
  • peppol_response_support Boolean
    compute='_compute_response_support' args: 'Peppol Response Service'
  • peppol_supported_documents Json
    args: 'Supported Peppol Documents'
  • peppol_verification_state Selection
    company_dependent=True selection=[('not_verified', 'Unchecked'), ('not_valid', 'Partner is not on Peppol'), ('not_valid_format', 'Partner cannot receive format'), ('valid', 'Partner is on Peppol')] string='Peppol status'
  • routing_scheme Selection
    selection_add=[('odemo', 'Odoo Demo ID')]
Public methods (2)
  • button_account_peppol_check_partner_endpoint(self, company=None)
    A basic check for whether a participant is reachable at the explicit routing identifier (``routing_scheme:routing_endpoint``). The SML (Service Metadata Locator) assigns a DNS name to each Peppol participant, which resolves into the participant's SMP (Service Metadata Publisher).
  • create(self, vals_list)
    @api.model_create_multi

Loading…

Loading…

Loading…

Loading…