| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/19.0/l10n_fr_pdp |
| VERSION | |
| VERSION | 0.1.0 |
| CATEGORY | |
| CATEGORY | Accounting/Localizations/EDI |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | Yes |
| AUTHORS | |
| AUTHORS | Odoo S.A. |
| MAINTAINERS | |
| MAINTAINERS | Odoo S.A. |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Florian Gilbert, Pierrot (prro), jbw-odoo, Gauthier Wala (gawa), Sven Fuehr, Léo Gizard, bhra-odoo, Jugurtha, Maximilien, Jérémy Bazin (baje), Adham Abdeltawab |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/documentation/18.0/applications/finance/fiscal_localizations/france.html#PDP |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:51:41 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - l10n_fr_account - base_iban - account - base_setup - base - web - onboarding - product - bus - web_tour - html_editor - uom - analytic - portal - http_routing - auth_signup - digest - resource - base_vat - account_edi_ubl_cii - l10n_fr - account_peppol_response - account_peppol - account_edi_proxy_client - certificate - auth_totp_mail - auth_totp - iap |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
phonenumbers |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
- Support for the mandatory electronic invoicing in France
- Send and receive documents via the Odoo approved platform
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_journal_dashboard_kanban_view |
account.journal.dashboard.kanban | account.journal | data | Inherits account.account_journal_dashboard_kanban_view |
account_peppol_response_view_form |
account.peppol.response.view.form.l10n.fr.pdp | account.peppol.response | field | Inherits account_peppol_response.account_peppol_response_view_form |
account_peppol_response_view_list |
account.peppol.response.view.list.l10n.fr.pdp | account.peppol.response | field | Inherits account_peppol_response.account_peppol_response_view_list |
l10n_fr_pdp_reports_view_flow_form |
l10n.fr.pdp.reports.flow.form.reporting | l10n.fr.pdp.reports.flow | form | New |
l10n_fr_pdp_reports_view_flow_list |
l10n.fr.pdp.reports.flow.list.reporting | l10n.fr.pdp.reports.flow | list | New |
l10n_fr_pdp_reports_view_flow_search |
l10n.fr.pdp.reports.flow.search.reporting | l10n.fr.pdp.reports.flow | search | New |
l10n_fr_pdp_reports_view_in_invoice_tree |
account.move.in.invoice.tree.l10n.fr.pdp.status | account.move | field | Inherits account.view_in_invoice_tree |
l10n_fr_pdp_reports_view_move_form |
account.move.form.l10n.fr.pdp.status | account.move | button | Inherits account.view_move_form |
l10n_fr_pdp_reports_view_move_kanban |
account.move.kanban.l10n.fr.pdp.status | account.move | xpath | Inherits account.view_account_move_kanban |
l10n_fr_pdp_reports_view_move_search |
account.move.search.l10n.fr.pdp.status | account.move | xpath | Inherits account.view_account_invoice_filter |
l10n_fr_pdp_reports_view_out_credit_note_tree |
account.move.refund.tree.l10n.fr.pdp.flow10.status | account.move | field | Inherits account.view_out_credit_note_tree |
l10n_fr_pdp_reports_view_out_invoice_tree |
account.move.tree.l10n.fr.pdp.status | account.move | field | Inherits account.view_out_invoice_tree |
l10n_fr_pdp_view_account_invoice_filter |
account.invoice.select.inherit | account.move | filter | Inherits account_peppol.account_peppol_view_account_invoice_filter |
l10n_fr_pdp_view_in_bill_tree_inherit |
account.move.tree.inherit | account.move | field | Inherits account.view_in_invoice_bill_tree |
l10n_fr_pdp_view_in_invoice_refund_tree_inherit |
account.move.list.inherit | account.move | field | Inherits account.view_in_invoice_refund_tree |
l10n_fr_pdp_view_move_form |
l10n.fr.pdp.view.move.form | account.move | button | Inherits account_peppol.account_peppol_view_move_form |
l10n_fr_pdp_view_out_credit_note_tree |
account.move.refund.tree.l10n.fr.pdp.status | account.move | field | Inherits account_peppol.account_peppol_view_out_credit_note_tree_inherit |
l10n_fr_pdp_view_out_invoice_tree |
account.move.tree.l10n.fr.pdp.status | account.move | field | Inherits account_peppol.account_peppol_view_out_invoice_tree_inherit |
l10n_fr_pdp_view_send_wizard_form |
l10n.fr.pdp.reports.send.wizard.form.reporting | l10n.fr.pdp.reports.send.wizard | form | New |
pdp_config_wizard_form |
pdp.config.wizard.form | pdp.config.wizard | form | New |
pdp_registration_form |
pdp.registration.form | pdp.registration | form | New |
pdp_response_wizard_form |
pdp.response.wizard.form | pdp.response.wizard | form | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.proxy.user | res.config.settings | xpath | Inherits account_peppol.res_config_settings_view_form |
res_partner_form_l10n_fr_pdp |
res.partner.form.l10n.fr.pdp | res.partner | data | Inherits account_peppol_response.res_partner_form_account_peppol_response |
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)button_fetch_in_einvoices(self)
l10n_fr_pdp_display_info
Boolean
related='company_id.l10n_fr_f10_enable_reporting'
l10n_fr_pdp_error_message
Text
compute='_compute_l10n_fr_pdp_error_message'
string='Flow 10 blocking errors'
l10n_fr_pdp_flow_10_operation_type
Selection
compute='_compute_l10n_fr_pdp_flow_10_operation_type'
copy=False
selection=[('sale', 'Sale'), ('purchase', 'Purchase')]
store=True
l10n_fr_pdp_flow_10_report_type
Selection
compute='_compute_l10n_fr_pdp_flow_10_report_type'
copy=False
selection=[('transaction', 'Transaction'), ('payment', 'Payment')]
store=True
l10n_fr_pdp_has_error
Boolean
compute='_compute_l10n_fr_pdp_has_error'
copy=False
readonly=True
store=True
l10n_fr_pdp_last_flow_id
Many2one → l10n.fr.pdp.reports.flow
comodel_name='l10n.fr.pdp.reports.flow'
compute='_compute_l10n_fr_pdp_last_flow_id'
copy=False
store=True
string='Last PDP Flow'
tracking=True
l10n_fr_pdp_sent_in_flow_ids
Many2many → l10n.fr.pdp.reports.flow
column1='move_id'
column2='flow_id'
comodel_name='l10n.fr.pdp.reports.flow'
copy=False
relation='sent_account_move__pdp_flow'
string='Sent in PDP Flows'
l10n_fr_pdp_status
Selection
compute='_compute_l10n_fr_pdp_status'
copy=False
selection=<expr>
store=True
string='E-Reporting Status'
tracking=True
pdp_can_send_response
Boolean
compute='_compute_pdp_can_send_response'
pdp_is_sent
Boolean
compute='_compute_pdp_is_sent'
pdp_lifecycle_residual
Monetary
compute='_compute_pdp_lifecycle_residual'
copy=False
help='Technical field indicating the amount of collected money we have still to report to the PPF via a lifecycle.'
store=True
string='Lifecycle Residual'
pdp_ppf_lifecycle_state
Selection
compute='_compute_pdp_ppf_state'
copy=False
selection=[('in_progress', 'In Progress'), ('sent', 'Sent'), ('done', 'Done'), ('error', 'Error')]
store=True
string='PPF Lifeycle Status'
pdp_ppf_move_state
Selection
compute='_compute_pdp_ppf_state'
copy=False
selection=[('in_progress', 'In Progress'), ('sent', 'Sent'), ('done', 'Done'), ('error', 'Error')]
store=True
string='PPF Invoice Status'
pdp_uses_pdp
Boolean
compute='_compute_pdp_uses_pdp'
peppol_move_state
Selection
selection_add=[('PD', 'With Payments'), *<expr>]
string='E-Invoicing Status'
action_pdp_open_response_wizard(self, **wizard_kwargs)
button_cancel(self)
No new fields.
Public methods (1)action_what_is_peppol_activate(self, moves)
No new fields.
Public methods (0)No public methods.
pdp_flow_number
Selection
selection=[('1', 'Tax Extract'), ('2', 'Status'), ('6', 'Mandatory Status'), ('10', 'Report')]
string='Flow Number'
pdp_issue_date
Datetime
string='Issue Date'
pdp_payment_info
Json
string='Payment Info'
pdp_ppf_state
Selection
compute='_compute_pdp_ppf_state'
selection=[('sent', 'Sent'), ('received', 'received'), ('error', 'Error')]
store=True
string='PPF Status'
pdp_ref_response_code
Selection
selection=<expr>
string='Original Response Code'
pdp_ref_uuid
Char
pdp_status_info
Text
string='Status Info'
response_code
Selection
ondelete=<expr>
selection_add=<expr>
No public methods.
proxy_type
Selection
ondelete={'pdp': 'cascade'}
selection_add=[('pdp', 'Approved Platform')]
No public methods.
No new fields.
Public methods (0)No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
due_period_end
Date
required=True
due_period_start
Date
required=True
error_move_message
Text
string='Invalid Invoice Details'
error_moves_count
Integer
compute='_compute_move_ids'
initial_flow_id
Many2one → l10n.fr.pdp.reports.flow
comodel_name='l10n.fr.pdp.reports.flow'
move_ids
Many2many → account.move
comodel_name='account.move'
compute='_compute_move_ids'
help='Invoices/Payments reported in this flow.'
name
Char
operation_type
Selection
default='sale'
help='Defines whether the flow reports sales or acquisition transactions.'
required=True
selection=[('sale', 'Sales'), ('purchase', 'Acquisitions')]
payload_id
Many2one → ir.attachment
compute='_compute_payload_attachment'
string='XML Payload'
args: 'ir.attachment'
pdp_flow_id
Char
readonly=True
period_end
Date
required=True
period_start
Date
required=True
period_status
Selection
compute='_compute_period_status'
help='Current status of the reporting period: Open (before grace), Grace (can send), Closed (after deadline).'
selection=[('open', 'Open'), ('grace', 'Grace'), ('closed', 'Closed')]
string='Period Status'
periodicity_code
Char
rectificative_flow_ids
One2many → l10n.fr.pdp.reports.flow
comodel_name='l10n.fr.pdp.reports.flow'
inverse_name='initial_flow_id'
report_type
Selection
default='transaction'
required=True
selection=[('transaction', 'Transaction'), ('payment', 'Payment')]
sent_move_ids
Many2many → account.move
column1='flow_id'
column2='move_id'
comodel_name='account.move'
relation='sent_account_move__pdp_flow'
state
Selection
default='ready'
required=True
selection=<expr>
string='Status'
transmission_type
Selection
compute='_compute_transmission_type'
help='Type of flow transmission.'
selection=[('initial', 'Initial'), ('rectificative', 'Rectificative')]
transport_message
Text
help='Additional message or error returned by the PDP transport API.'
transport_status
Char
help='Raw status returned by the PDP transport API.'
action_build_payload_manual(self)
action_open_send_wizard(self)
action_send(self, check_totp=True)
action_send_from_ui(self)
action_view_error_moves(self)
action_view_initial(self)
action_view_moves(self)
flow_id
Many2one → l10n.fr.pdp.reports.flow
comodel_name='l10n.fr.pdp.reports.flow'
default=<expr>
ondelete='cascade'
required=True
warning
Text
default=<expr>
readonly=True
action_send_anyway(self)
action_view_errors(self)
account_peppol_contact_email
Char
readonly=False
related='company_id.account_peppol_contact_email'
required=True
account_peppol_edi_identification
Char
related='account_peppol_edi_user.edi_identification'
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_proxy_state
Selection
readonly=False
related='company_id.account_peppol_proxy_state'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
button_peppol_unregister(self)
button_sync_form_with_peppol_proxy(self)
No new fields.
Public methods (0)No public methods.
account_peppol_proxy_state
Selection
readonly=False
related='company_id.account_peppol_proxy_state'
auth_url_hash
Char
readonly=False
related='company_id.pdp_authentication_uuid'
string='Company Authentication IAP UUID'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
contact_email
Char
readonly=False
related='company_id.account_peppol_contact_email'
required=True
edi_mode
Selection
compute='_compute_edi_mode'
readonly=False
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'
pdp_authentication_uuid
Char
readonly=False
related='company_id.pdp_authentication_uuid'
store=True
string='Authentication IAP UUID'
pdp_identifier
Char
compute='_compute_pdp_identifier'
help='The identifier starts with the SIREN, the part after the SIREN is optional. The expected format of the identifier is: SIREN, SIREN_SIRET, SIREN_SIRET_CodeRoutage or SIREN_SuffixeAdressage'
inverse='_inverse_pdp_identifier'
readonly=False
required=True
pdp_kyc_status
Selection
readonly=False
related='company_id.pdp_kyc_status'
string='Authentication status'
pdp_pilot_phase
Boolean
help='Participate in the Pilot Phase of the French E-Invoicing. This way you are able to test it before it becomes mandatory.'
readonly=False
related='company_id.l10n_fr_pdp_pilot_phase'
string=' Pilot Phase'
siren_number
Char
compute='_compute_siren_number'
readonly=False
store=True
warnings
Json
compute='_compute_warnings'
string='Warnings'
button_cancel_authentication(self)
button_deregister_pdp_participant(self)
button_open_authentication_link(self)
button_refresh_authentication(self)
button_register_pdp_participant(self)
button_trigger_authentication(self)
display_status_notification_from_uuid(self)
available_statuses
Char
compute='_compute_available_statuses'
help='Technical field to enable dynamic selection of status.'
currency_id
Many2one → res.currency
comodel_name='res.currency'
compute='_compute_currency_id'
help="The payment's currency."
precompute=True
store=True
string='Currency'
fully_paid
Boolean
compute='_compute_paid_amount'
readonly=False
store=True
string='Fully paid'
move_count
Integer
compute='_compute_move_count'
store=True
move_ids
Many2many → account.move
comodel_name='account.move'
required=True
note
Text
paid_amount
Monetary
compute='_compute_paid_amount'
currency_field='currency_id'
readonly=False
store=True
string='Payment Amount'
reason_code
Selection
selection=[('TX_TVA_ERR', 'Incorrect VAT rate'), ('MONTANTTOTAL_ERR', 'Incorrect Total Amount'), ('CALCUL_ERR', 'Billing calculation error'), ('NON_CONFORME', 'Legal information missing'), ('DEST_ERR', 'Wrong recipient'), ('TRANSAC_INC', 'Unknown transaction'), ('EMMET_INC', 'Unknown sender'), ('CONTRAT_TERM', 'Contract completed'), ('DOUBLE_FACT', 'Duplicate Invoice'), ('CMD_ERR', 'Order number is incorrect or missing'), ('ADR_ERR', 'Incorrect electronic billing address'), ('REF_CT_ABSENT', 'Contract reference required to process the missing invoice')]
show_reason_code
Boolean
compute='_compute_show_reason_code'
help="Technical field to hide / show the 'Reason Code' in the view."
status
Selection
selection=[('PD', 'Paid'), ('cancelled', 'Cancelled'), ('refused', 'Refused'), ('AP', 'Approved'), ('in_hand', 'In Hand')]
button_send(self)
l10n_fr_f10_enable_reporting
Boolean
compute='_compute_l10n_fr_f10_enable_reporting'
groups='base.group_user'
readonly=True
store=True
string='Enable Flux 10 Reporting'
l10n_fr_pdp_annuaire_start_date
Date
groups='base.group_user'
help='The date on which the company is registered on the annuaire for the French e-invoicing.'
string='Annuaire Start Date'
l10n_fr_pdp_flow_10_start_date
Date
compute='_compute_l10n_fr_pdp_flow_10_start_date'
groups='base.group_user'
l10n_fr_pdp_periodicity
Selection
default='normal_monthly'
groups='base.group_user'
help='Legal reporting period for transaction and payments flows according to the TVA regime table.\n Real Monthly Normal Regime : transactions reported by decade, payments reported monthly\n Real Normal Quarterly Regime : transactions reported monthly, payments reported monthly\n Simplified VAT Regime (Monthly) : transactions reported monthly, payments reported monthly\n Franchised VAT Regime (Bimonthly) : transactions reported bimonthly, payments reported bimonthly\n '
required=True
selection=[('normal_monthly', 'Real Monthly Normal Regime'), ('normal_quarterly', 'Real Normal Quarterly Regime'), ('simplified_monthly', 'Simplified VAT Regime (Monthly)'), ('simplified_bimonthly', 'Franchised VAT Regime (Bimonthly)')]
string='Flow 10 Report Periodicity'
l10n_fr_pdp_pilot_phase
Boolean
groups='base.group_user'
help='Participate in the Pilot Phase of the French E-Invoicing. This way you are able to test it before it becomes mandatory.'
string='E-Invoicing Pilot Phase'
l10n_fr_pdp_registered
Boolean
compute='_compute_l10n_fr_pdp_registered'
groups='base.group_user'
string='Approved Platform Registerd'
l10n_fr_pdp_send_to_ppf
Boolean
default=True
groups='base.group_user'
help='Activate Flux 1 regulatory data, Flux 6 mandatory statuses and Flux 10 e-reporting generation for this company.'
string='Send to PPF'
pdp_authentication_uuid
Char
groups='account.group_account_invoice'
string='Authentication IAP UUID'
pdp_identifier
Char
compute='_compute_pdp_identifier'
groups='base.group_user'
inverse='_inverse_pdp_identifier'
pdp_kyc_status
Selection
groups='base.group_user'
selection=[('processing', 'Processing'), ('success', 'Success'), ('fail', 'Fail')]
No public methods.
l10n_fr_pdp_annuaire_start_date
Date
help='The date on which the company is registered on the annuaire for the French e-invoicing.'
related='company_id.l10n_fr_pdp_annuaire_start_date'
string='Annuaire Start Date'
l10n_fr_pdp_periodicity
Selection
help='Legal reporting period for transaction and payments flows according to the TVA regime table.\n Real Monthly Normal Regime : transactions reported by decade, payments reported monthly\n Real Normal Quarterly Regime : transactions reported monthly, payments reported monthly\n Simplified VAT Regime (Monthly) : transactions reported monthly, payments reported monthly\n Franchised VAT Regime (Bimonthly) : transactions reported bimonthly, payments reported bimonthly\n '
readonly=False
related='company_id.l10n_fr_pdp_periodicity'
required=True
string='Flow 10 Report Periodicity'
l10n_fr_pdp_pilot_phase
Boolean
compute='_compute_l10n_fr_pdp_pilot_phase'
help='Participate in the Pilot Phase of the French E-Invoicing. This way you are able to test it before it becomes mandatory.'
inverse='_inverse_l10n_fr_pdp_pilot_phase'
string='Pilot Phase'
l10n_fr_pdp_registered
Boolean
related='company_id.l10n_fr_pdp_registered'
string='Approved Platform Registered'
l10n_fr_pdp_send_to_ppf
Boolean
help='Activate Flux 1 regulatory data, Flux 6 mandatory statuses and Flux 10 e-reporting generation for this company.'
readonly=False
related='company_id.l10n_fr_pdp_send_to_ppf'
string='Send to PPF'
action_open_pdp_form(self)
action_open_peppol_form(self)
button_open_pdp_config_wizard(self)
button_open_peppol_config_wizard(self)
invoice_edi_format
Selection
selection_add=[('ubl_21_fr', 'France E-Invoicing (UBL 2.1)')]
pdp_verification_display_state
Selection
compute='_compute_pdp_verification_display_state'
selection=[('not_verified', 'Not verified yet'), ('pdp_not_valid', 'Partner is not in the annuaire'), ('pdp_not_valid_format', 'Partner cannot receive format'), ('pdp_valid', 'Partner is in the annuaire'), ('peppol_not_valid', 'Partner is not on Peppol'), ('peppol_not_valid_format', 'Partner cannot receive format'), ('peppol_valid', 'Partner is on Peppol')]
string='E-Invoicing State'
button_account_peppol_check_partner_endpoint(self, company=None)
fields_get(self, allfields=None, attributes=None)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/18.0/l10n_fr_pdp |
| VERSION | |
| VERSION | 0.1.0 |
| CATEGORY | |
| CATEGORY | Accounting/Localizations/EDI |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | Yes |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Florian Gilbert, Pierrot (prro), jbw-odoo, Gauthier Wala (gawa), Sven Fuehr, Léo Gizard, bhra-odoo, Maximilien, Jérémy Bazin (baje) |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/documentation/18.0/applications/finance/fiscal_localizations/france.html#PDP |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:25:54 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - l10n_fr_account - base_iban - account - base_setup - base - web - onboarding - product - bus - web_tour - html_editor - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - base_vat - l10n_fr - account_edi_ubl_cii_tax_extension - account_edi_ubl_cii - account_peppol_response - account_peppol - account_edi_proxy_client - certificate - auth_totp_mail_enforce - auth_totp - iap |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
phonenumbers cryptography |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
- Support for the mandatory electronic invoicing in France
- Send and receive documents via the Odoo approved platform
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_journal_dashboard_kanban_view |
account.journal.dashboard.kanban | account.journal | data | Inherits account_peppol.account_journal_dashboard_kanban_view |
account_peppol_response_view_form |
account.peppol.response.view.form.l10n.fr.pdp | account.peppol.response | field | Inherits account_peppol_response.account_peppol_response_view_form |
account_peppol_response_view_list |
account.peppol.response.view.list.l10n.fr.pdp | account.peppol.response | field | Inherits account_peppol_response.account_peppol_response_view_list |
l10n_fr_pdp_reports_view_flow_form |
l10n.fr.pdp.reports.flow.form.reporting | l10n.fr.pdp.reports.flow | form | New |
l10n_fr_pdp_reports_view_flow_list |
l10n.fr.pdp.reports.flow.list.reporting | l10n.fr.pdp.reports.flow | list | New |
l10n_fr_pdp_reports_view_flow_search |
l10n.fr.pdp.reports.flow.search.reporting | l10n.fr.pdp.reports.flow | search | New |
l10n_fr_pdp_reports_view_in_invoice_tree |
account.move.in.invoice.tree.l10n.fr.pdp.status | account.move | field | Inherits account.view_in_invoice_tree |
l10n_fr_pdp_reports_view_move_form |
account.move.form.l10n.fr.pdp.status | account.move | button | Inherits account.view_move_form |
l10n_fr_pdp_reports_view_move_kanban |
account.move.kanban.l10n.fr.pdp.status | account.move | xpath | Inherits account.view_account_move_kanban |
l10n_fr_pdp_reports_view_move_search |
account.move.search.l10n.fr.pdp.status | account.move | xpath | Inherits account.view_account_invoice_filter |
l10n_fr_pdp_reports_view_out_credit_note_tree |
account.move.refund.tree.l10n.fr.pdp.flow10.status | account.move | field | Inherits account.view_out_credit_note_tree |
l10n_fr_pdp_reports_view_out_invoice_tree |
account.move.tree.l10n.fr.pdp.status | account.move | field | Inherits account.view_out_invoice_tree |
l10n_fr_pdp_view_account_invoice_filter |
account.invoice.select.inherit | account.move | filter | Inherits account_peppol.account_peppol_view_account_invoice_filter |
l10n_fr_pdp_view_in_bill_tree_inherit |
account.move.tree.inherit | account.move | field | Inherits account.view_in_invoice_bill_tree |
l10n_fr_pdp_view_in_invoice_refund_tree_inherit |
account.move.list.inherit | account.move | field | Inherits account.view_in_invoice_refund_tree |
l10n_fr_pdp_view_move_form |
l10n.fr.pdp.view.move.form | account.move | button | Inherits account_peppol.account_peppol_view_move_form |
l10n_fr_pdp_view_out_credit_note_tree |
account.move.refund.tree.l10n.fr.pdp.status | account.move | field | Inherits account_peppol.account_peppol_view_out_credit_note_tree_inherit |
l10n_fr_pdp_view_out_invoice_tree |
account.move.tree.l10n.fr.pdp.status | account.move | field | Inherits account_peppol.account_peppol_view_out_invoice_tree_inherit |
l10n_fr_pdp_view_send_wizard_form |
l10n.fr.pdp.reports.send.wizard.form.reporting | l10n.fr.pdp.reports.send.wizard | form | New |
pdp_registration_form |
pdp.registration.form | pdp.registration | form | New |
pdp_response_wizard_form |
pdp.response.wizard.form | pdp.response.wizard | form | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.proxy.user | res.config.settings | xpath | Inherits account_peppol.res_config_settings_view_form |
res_partner_form_l10n_fr_pdp |
res.partner.form.l10n.fr.pdp | res.partner | data | Inherits account_peppol_response.res_partner_form_account_peppol_response |
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)peppol_get_new_documents(self)
l10n_fr_pdp_display_info
Boolean
related='company_id.l10n_fr_f10_enable_reporting'
l10n_fr_pdp_error_message
Text
compute='_compute_l10n_fr_pdp_error_message'
string='Flow 10 blocking errors'
l10n_fr_pdp_flow_10_operation_type
Selection
compute='_compute_l10n_fr_pdp_flow_10_operation_type'
copy=False
selection=[('sale', 'Sale'), ('purchase', 'Purchase')]
store=True
l10n_fr_pdp_flow_10_report_type
Selection
compute='_compute_l10n_fr_pdp_flow_10_report_type'
copy=False
selection=[('transaction', 'Transaction'), ('payment', 'Payment')]
store=True
l10n_fr_pdp_has_error
Boolean
compute='_compute_l10n_fr_pdp_has_error'
copy=False
readonly=True
store=True
l10n_fr_pdp_last_flow_id
Many2one → l10n.fr.pdp.reports.flow
comodel_name='l10n.fr.pdp.reports.flow'
compute='_compute_l10n_fr_pdp_last_flow_id'
copy=False
store=True
string='Last PDP Flow'
tracking=True
l10n_fr_pdp_sent_in_flow_ids
Many2many → l10n.fr.pdp.reports.flow
column1='move_id'
column2='flow_id'
comodel_name='l10n.fr.pdp.reports.flow'
copy=False
relation='sent_account_move__pdp_flow'
string='Sent in PDP Flows'
l10n_fr_pdp_status
Selection
compute='_compute_l10n_fr_pdp_status'
copy=False
selection=<expr>
store=True
string='E-Reporting Status'
tracking=True
pdp_can_send_response
Boolean
compute='_compute_pdp_can_send_response'
pdp_is_sent
Boolean
compute='_compute_pdp_is_sent'
pdp_lifecycle_residual
Monetary
compute='_compute_pdp_lifecycle_residual'
copy=False
help='Technical field indicating the amount of collected money we have still to report to the PPF via a lifecycle.'
store=True
string='Lifecycle Residual'
pdp_ppf_lifecycle_state
Selection
compute='_compute_pdp_ppf_state'
copy=False
selection=[('in_progress', 'In Progress'), ('sent', 'Sent'), ('done', 'Done'), ('error', 'Error')]
store=True
string='PPF Lifeycle Status'
pdp_ppf_move_state
Selection
compute='_compute_pdp_ppf_state'
copy=False
selection=[('in_progress', 'In Progress'), ('sent', 'Sent'), ('done', 'Done'), ('error', 'Error')]
store=True
string='PPF Invoice Status'
pdp_uses_pdp
Boolean
compute='_compute_pdp_uses_pdp'
peppol_move_state
Selection
selection_add=[('PD', 'With Payments'), *<expr>]
string='E-Invoicing Status'
action_pdp_open_response_wizard(self, **wizard_kwargs)
button_cancel(self)
No new fields.
Public methods (1)action_what_is_peppol_activate(self, moves)
No new fields.
Public methods (0)No public methods.
pdp_flow_number
Selection
selection=[('1', 'Tax Extract'), ('2', 'Status'), ('6', 'Mandatory Status'), ('10', 'Report')]
string='Flow Number'
pdp_issue_date
Datetime
string='Issue Date'
pdp_payment_info
Json
string='Payment Info'
pdp_ppf_state
Selection
compute='_compute_pdp_ppf_state'
selection=[('sent', 'Sent'), ('received', 'received'), ('error', 'Error')]
store=True
string='PPF Status'
pdp_ref_response_code
Selection
selection=<expr>
string='Original Response Code'
pdp_ref_uuid
Char
pdp_status_info
Text
string='Status Info'
response_code
Selection
ondelete=<expr>
selection_add=<expr>
No public methods.
proxy_type
Selection
ondelete={'pdp': 'cascade'}
selection_add=[('pdp', 'Approved Platform')]
No public methods.
No new fields.
Public methods (0)No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
due_period_end
Date
required=True
due_period_start
Date
required=True
error_move_message
Text
string='Invalid Invoice Details'
error_moves_count
Integer
compute='_compute_move_ids'
initial_flow_id
Many2one → l10n.fr.pdp.reports.flow
comodel_name='l10n.fr.pdp.reports.flow'
move_ids
Many2many → account.move
comodel_name='account.move'
compute='_compute_move_ids'
help='Invoices/Payments reported in this flow.'
name
Char
operation_type
Selection
default='sale'
help='Defines whether the flow reports sales or acquisition transactions.'
required=True
selection=[('sale', 'Sales'), ('purchase', 'Acquisitions')]
payload_id
Many2one → ir.attachment
compute='_compute_payload_attachment'
string='XML Payload'
args: 'ir.attachment'
pdp_flow_id
Char
readonly=True
period_end
Date
required=True
period_start
Date
required=True
period_status
Selection
compute='_compute_period_status'
help='Current status of the reporting period: Open (before grace), Grace (can send), Closed (after deadline).'
selection=[('open', 'Open'), ('grace', 'Grace'), ('closed', 'Closed')]
string='Period Status'
periodicity_code
Char
rectificative_flow_ids
One2many → l10n.fr.pdp.reports.flow
comodel_name='l10n.fr.pdp.reports.flow'
inverse_name='initial_flow_id'
report_type
Selection
default='transaction'
required=True
selection=[('transaction', 'Transaction'), ('payment', 'Payment')]
sent_move_ids
Many2many → account.move
column1='flow_id'
column2='move_id'
comodel_name='account.move'
relation='sent_account_move__pdp_flow'
state
Selection
default='ready'
required=True
selection=<expr>
string='Status'
transmission_type
Selection
compute='_compute_transmission_type'
help='Type of flow transmission.'
selection=[('initial', 'Initial'), ('rectificative', 'Rectificative')]
transport_message
Text
help='Additional message or error returned by the PDP transport API.'
transport_status
Char
help='Raw status returned by the PDP transport API.'
action_build_payload_manual(self)
action_open_send_wizard(self)
action_send(self, check_totp=True)
action_send_from_ui(self)
action_view_error_moves(self)
action_view_initial(self)
action_view_moves(self)
flow_id
Many2one → l10n.fr.pdp.reports.flow
comodel_name='l10n.fr.pdp.reports.flow'
default=<expr>
ondelete='cascade'
required=True
warning
Text
default=<expr>
readonly=True
action_send_anyway(self)
action_view_errors(self)
No new fields.
Public methods (0)No public methods.
account_peppol_proxy_state
Selection
readonly=False
related='company_id.account_peppol_proxy_state'
auth_url_hash
Char
readonly=False
related='company_id.pdp_authentication_uuid'
string='Company Authentication IAP UUID'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
contact_email
Char
readonly=False
related='company_id.account_peppol_contact_email'
required=True
edi_mode
Selection
compute='_compute_edi_mode'
readonly=False
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'
pdp_authentication_uuid
Char
readonly=False
related='company_id.pdp_authentication_uuid'
store=True
string='Authentication IAP UUID'
pdp_identifier
Char
compute='_compute_pdp_identifier'
help='The identifier starts with the SIREN, the part after the SIREN is optional. The expected format of the identifier is: SIREN, SIREN_SIRET, SIREN_SIRET_CodeRoutage or SIREN_SuffixeAdressage'
inverse='_inverse_pdp_identifier'
readonly=False
required=True
pdp_kyc_status
Selection
readonly=False
related='company_id.pdp_kyc_status'
string='Authentication status'
pdp_pilot_phase
Boolean
help='Participate in the Pilot Phase of the French E-Invoicing. This way you are able to test it before it becomes mandatory.'
readonly=False
related='company_id.l10n_fr_pdp_pilot_phase'
string=' Pilot Phase'
siren_number
Char
compute='_compute_siren_number'
readonly=False
store=True
warnings
Json
compute='_compute_warnings'
string='Warnings'
button_cancel_authentication(self)
button_deregister_pdp_participant(self)
button_open_authentication_link(self)
button_refresh_authentication(self)
button_register_pdp_participant(self)
button_trigger_authentication(self)
display_status_notification_from_uuid(self)
available_statuses
Char
compute='_compute_available_statuses'
help='Technical field to enable dynamic selection of status.'
currency_id
Many2one → res.currency
comodel_name='res.currency'
compute='_compute_currency_id'
help="The payment's currency."
precompute=True
store=True
string='Currency'
fully_paid
Boolean
compute='_compute_paid_amount'
readonly=False
store=True
string='Fully paid'
move_count
Integer
compute='_compute_move_count'
store=True
move_ids
Many2many → account.move
comodel_name='account.move'
required=True
note
Text
paid_amount
Monetary
compute='_compute_paid_amount'
currency_field='currency_id'
readonly=False
store=True
string='Payment Amount'
reason_code
Selection
selection=[('TX_TVA_ERR', 'Incorrect VAT rate'), ('MONTANTTOTAL_ERR', 'Incorrect Total Amount'), ('CALCUL_ERR', 'Billing calculation error'), ('NON_CONFORME', 'Legal information missing'), ('DEST_ERR', 'Wrong recipient'), ('TRANSAC_INC', 'Unknown transaction'), ('EMMET_INC', 'Unknown sender'), ('CONTRAT_TERM', 'Contract completed'), ('DOUBLE_FACT', 'Duplicate Invoice'), ('CMD_ERR', 'Order number is incorrect or missing'), ('ADR_ERR', 'Incorrect electronic billing address'), ('REF_CT_ABSENT', 'Contract reference required to process the missing invoice')]
show_reason_code
Boolean
compute='_compute_show_reason_code'
help="Technical field to hide / show the 'Reason Code' in the view."
status
Selection
selection=[('PD', 'Paid'), ('cancelled', 'Cancelled'), ('refused', 'Refused'), ('AP', 'Approved'), ('in_hand', 'In Hand')]
button_send(self)
l10n_fr_f10_enable_reporting
Boolean
compute='_compute_l10n_fr_f10_enable_reporting'
groups='base.group_user'
readonly=True
store=True
string='Enable Flux 10 Reporting'
l10n_fr_pdp_annuaire_start_date
Date
groups='base.group_user'
help='The date on which the company is registered on the annuaire for the French e-invoicing.'
string='Annuaire Start Date'
l10n_fr_pdp_flow_10_start_date
Date
compute='_compute_l10n_fr_pdp_flow_10_start_date'
groups='base.group_user'
l10n_fr_pdp_periodicity
Selection
default='normal_monthly'
groups='base.group_user'
help='Legal reporting period for transaction and payments flows according to the TVA regime table.\n Real Monthly Normal Regime : transactions reported by decade, payments reported monthly\n Real Normal Quarterly Regime : transactions reported monthly, payments reported monthly\n Simplified VAT Regime (Monthly) : transactions reported monthly, payments reported monthly\n Franchised VAT Regime (Bimonthly) : transactions reported bimonthly, payments reported bimonthly\n '
required=True
selection=[('normal_monthly', 'Real Monthly Normal Regime'), ('normal_quarterly', 'Real Normal Quarterly Regime'), ('simplified_monthly', 'Simplified VAT Regime (Monthly)'), ('simplified_bimonthly', 'Franchised VAT Regime (Bimonthly)')]
string='Flow 10 Report Periodicity'
l10n_fr_pdp_pilot_phase
Boolean
groups='base.group_user'
help='Participate in the Pilot Phase of the French E-Invoicing. This way you are able to test it before it becomes mandatory.'
string='E-Invoicing Pilot Phase'
l10n_fr_pdp_registered
Boolean
compute='_compute_l10n_fr_pdp_registered'
groups='base.group_user'
string='Approved Platform Registerd'
l10n_fr_pdp_send_to_ppf
Boolean
default=True
groups='base.group_user'
help='Activate Flux 1 regulatory data, Flux 6 mandatory statuses and Flux 10 e-reporting generation for this company.'
string='Send to PPF'
pdp_authentication_uuid
Char
groups='account.group_account_invoice'
string='Authentication IAP UUID'
pdp_identifier
Char
compute='_compute_pdp_identifier'
groups='base.group_user'
inverse='_inverse_pdp_identifier'
pdp_kyc_status
Selection
groups='base.group_user'
selection=[('processing', 'Processing'), ('success', 'Success'), ('fail', 'Fail')]
No public methods.
l10n_fr_pdp_annuaire_start_date
Date
help='The date on which the company is registered on the annuaire for the French e-invoicing.'
related='company_id.l10n_fr_pdp_annuaire_start_date'
string='Annuaire Start Date'
l10n_fr_pdp_periodicity
Selection
help='Legal reporting period for transaction and payments flows according to the TVA regime table.\n Real Monthly Normal Regime : transactions reported by decade, payments reported monthly\n Real Normal Quarterly Regime : transactions reported monthly, payments reported monthly\n Simplified VAT Regime (Monthly) : transactions reported monthly, payments reported monthly\n Franchised VAT Regime (Bimonthly) : transactions reported bimonthly, payments reported bimonthly\n '
readonly=False
related='company_id.l10n_fr_pdp_periodicity'
required=True
string='Flow 10 Report Periodicity'
l10n_fr_pdp_pilot_phase
Boolean
compute='_compute_l10n_fr_pdp_pilot_phase'
help='Participate in the Pilot Phase of the French E-Invoicing. This way you are able to test it before it becomes mandatory.'
inverse='_inverse_l10n_fr_pdp_pilot_phase'
string='Pilot Phase'
l10n_fr_pdp_registered
Boolean
related='company_id.l10n_fr_pdp_registered'
string='Approved Platform Registered'
l10n_fr_pdp_send_to_ppf
Boolean
help='Activate Flux 1 regulatory data, Flux 6 mandatory statuses and Flux 10 e-reporting generation for this company.'
readonly=False
related='company_id.l10n_fr_pdp_send_to_ppf'
string='Send to PPF'
action_open_pdp_form(self)
action_open_peppol_form(self)
invoice_edi_format
Selection
selection_add=[('ubl_21_fr', 'France E-Invoicing (UBL 2.1)')]
pdp_verification_display_state
Selection
compute='_compute_pdp_verification_display_state'
selection=[('not_verified', 'Not verified yet'), ('pdp_not_valid', 'Partner is not in the annuaire'), ('pdp_not_valid_format', 'Partner cannot receive format'), ('pdp_valid', 'Partner is in the annuaire'), ('peppol_not_valid', 'Partner is not on Peppol'), ('peppol_not_valid_format', 'Partner cannot receive format'), ('peppol_valid', 'Partner is on Peppol')]
string='E-Invoicing State'
button_account_peppol_check_partner_endpoint(self, company=None)
fields_get(self, allfields=None, attributes=None)