L10n FR Chorus

l10n_fr_chorus_account
REPOSITORY
REPOSITORYOCA/l10n-france
GIT
GIThttps://github.com/OCA/l10n-france.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-france/tree/18.0/l10n_fr_chorus_account
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYFrench Localization
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, Florian da Costa, Weblate, OCA-git-bot, oca-ci, Olivier Bitsch
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-france
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/l10n-france:
    - l10n_fr_siret_account
    - l10n_fr_siret
OCA/server-env:
    - server_environment
OCA/server-tools:
    - base_view_inheritance_extension
odoo/odoo:
    - l10n_fr
    - base
    - l10n_fr_account
    - base_iban
    - account
    - base_setup
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_vat
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES requests_oauthlib
python-stdnum
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This is the base module for the support of [Chorus
Pro](https://chorus-pro.gouv.fr/), the electronic invoicing plateform of
the French administration. Chorus Pro specifications are available on
[Chorus Pro Community
website](https://communaute-chorus-pro.finances.gouv.fr/). All the
suppliers of the French administration must send their invoices through
Chorus Pro. To know more about Chorus and the obligation to send
electronic invoices to the French administration, read [the dedicated
page](https://www.economie.gouv.fr/entreprises/marches-publics-facture-electronique)
on the website of the Ministry of Economic Affairs.

To be able to generate an electronic invoice for Chorus, you need the
module *l10n_fr_chorus_factur-x* or *l10n_fr_chorus_ubl*.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
account_invoice_chorus_send_form account.invoice.chorus.send form New
chorus_flow_form chorus.flow.form chorus.flow form New
chorus_flow_search chorus.flow.search chorus.flow search New
chorus_flow_tree chorus.flow.list chorus.flow list New
chorus_partner_service_form chorus.partner.service.form chorus.partner.service form New
chorus_partner_service_search chorus.partner.service.search chorus.partner.service search New
chorus_partner_service_tree chorus.partner.service.tree chorus.partner.service list New
res_config_settings_view_form chorus.account.res.settings.form res.config.settings block Inherits account.res_config_settings_view_form
view_account_invoice_filter Chorus groupby on Invoice search view account.move filter Inherits account.view_account_invoice_filter
view_invoice_tree account.move field Inherits account.view_invoice_tree
view_move_form Chorus support on Customer Invoice form view account.move field Inherits account.view_move_form
view_partner_form chorus.res.partner.form res.partner field Inherits account.view_partner_property_form
Models touched (7)

New fields (4)
  • chorus_invoice_format Selection
    related='company_id.fr_chorus_invoice_format'
  • company_id Many2one → res.company
    readonly=True string='Company' args: 'res.company'
  • invoice_count Integer
    readonly=True string='Number of Invoices'
  • invoice_ids Many2many → account.move
    check_company=True readonly=True string='Invoices to Send' args: 'account.move'
Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • run(self)

New fields (7)
  • chorus_attachment_ids Many2many → ir.attachment
    check_company=True copy=False string='Chorus Attachments' args: 'ir.attachment', 'account_move_chorus_ir_attachment_rel'
  • chorus_flow_id Many2one → chorus.flow
    check_company=True copy=False readonly=True string='Chorus Flow' tracking=True args: 'chorus.flow'
  • chorus_identifier Integer
    copy=False readonly=True string='Chorus Invoice Identifier' tracking=True
  • chorus_service_code Char
    related='partner_id.fr_chorus_service_id.code' store=True string='Chorus Service Code'
  • chorus_status Char
    copy=False readonly=True string='Chorus Invoice Status' tracking=True
  • chorus_status_date Datetime
    copy=False readonly=True string='Last Chorus Invoice Status Update'
  • invoice_sending_method Selection
    related='commercial_partner_id.invoice_sending_method' store=True
Public methods (1)
  • chorus_update_invoice_status(self)
    Called by a button on the invoice or by cron

New fields (12)
  • attachment_id Many2one → ir.attachment
    check_company=True copy=False readonly=True string='File Sent to Chorus' args: 'ir.attachment'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • date Date
    copy=False readonly=True required=True args: 'Flow Date'
  • initial_invoice_ids Many2many → account.move
    check_company=True help='Invoices in the flow before potential rejections' readonly=True string='Initial Invoices' args: 'account.move', 'chorus_flow_initial_account_move_rel', 'chorus_flow_id', 'move_id'
  • invoice_identifiers Boolean
    compute='_compute_invoice_identifiers' readonly=True store=True
  • invoice_ids One2many → account.move
    help='Invoices in the flow after potential rejections' readonly=True string='Invoices' args: 'account.move', 'chorus_flow_id'
  • name Char
    copy=False readonly=True required=True args: 'Flow Ref'
  • notes Text
    copy=False readonly=True
  • status Char
    copy=False readonly=True string='Flow Status (raw value)'
  • status_date Datetime
    copy=False readonly=True string='Last Status Update'
  • status_display Char
    compute='_compute_status_display' store=True string='Flow Status'
  • syntax Selection
    copy=False readonly=True string='Flow Syntax' args: []
Public methods (4)
  • chorus_cron(self)
    @api.model
  • get_invoice_identifiers(self)
    Called by a button or cron
  • syntax_odoo2chorus(self)
    @api.model
  • update_flow_status(self)
    Called by a button on the flow or by cron

New fields (6)
  • active Boolean
    default=True
  • chorus_identifier Integer
    readonly=True
  • code Char
    required=True string='Service Code'
  • engagement_required Boolean
  • name Char
    required=True string='Service Name'
  • partner_id Many2one → res.partner
    domain=[('parent_id', '=', False)] ondelete='cascade' string='Customer' args: 'res.partner'
Public methods (1)
  • service_update(self)

New fields (6)
  • fr_chorus_api_login Char
    groups='base.group_system' string='Chorus Technical User Login'
  • fr_chorus_api_password Char
    groups='base.group_system' string='Chorus Technical User Password'
  • fr_chorus_check_commitment_number Boolean
    help="If enabled, Odoo will check the commitment number upon invoice validation. This commitment number must be set in the field 'Customer Reference' of the invoice. It will also check it upon sale order validation if the module l10n_fr_chorus_sale is installed." string='Check Commitment Numbers'
  • fr_chorus_expiry_remind_user_ids Many2many → res.users
    string='Users Receiving the Expiry Reminder' args: 'res.users', 'fr_chorus_api_expiry_remind_user_rel', 'company_id', 'user_id'
  • fr_chorus_invoice_format Selection
    string='Chorus Invoice Format' args: []
  • fr_chorus_pwd_expiry_date Date
    string='Chorus Technical User Password Expiry Date'
Public methods (2)
  • chorus_api_expiry_reminder_cron(self)
    @api.model
  • chorus_expiry_remind_user_list(self)

New fields (8)
  • fr_chorus_api_login Char
    readonly=False related='company_id.fr_chorus_api_login'
  • fr_chorus_api_password Char
    readonly=False related='company_id.fr_chorus_api_password'
  • fr_chorus_check_commitment_number Boolean
    readonly=False related='company_id.fr_chorus_check_commitment_number'
  • fr_chorus_expiry_remind_user_ids Many2many
    readonly=False related='company_id.fr_chorus_expiry_remind_user_ids'
  • fr_chorus_invoice_format Selection
    readonly=False related='company_id.fr_chorus_invoice_format'
  • fr_chorus_pwd_expiry_date Date
    readonly=False related='company_id.fr_chorus_pwd_expiry_date'
  • fr_chorus_qualif Boolean
    default=<expr> readonly=True string='Use Chorus Qualification Platform'
  • group_chorus_api Boolean
    help="If you select 'Use Chorus Pro API', it will add all users to the Chorus API group." implied_group='l10n_fr_chorus_account.group_chorus_api' string='Use Chorus Pro API'
Public methods (1)
  • fr_chorus_test_api(self)

New fields (6)
  • fr_chorus_identifier Integer
    readonly=True args: 'Chorus Identifier'
  • fr_chorus_required Selection
    compute='_compute_fr_chorus_required' readonly=False store=True string='Info Required for Chorus' tracking=True args: [('none', 'None'), ('service', 'Service'), ('engagement', 'Engagement'), ('service_or_engagement', 'Service or Engagement'), ('service_and_engagement', 'Service and Engagement')]
  • fr_chorus_service_count Integer
    compute='_compute_fr_chorus_service_count' readonly=True string='Number of Chorus Services'
  • fr_chorus_service_id Many2one → chorus.partner.service
    ondelete='restrict' string='Chorus Service' tracking=True args: 'chorus.partner.service'
  • fr_chorus_service_ids One2many → chorus.partner.service
    string='Chorus Services' args: 'chorus.partner.service', 'partner_id'
  • invoice_sending_method Selection
    ondelete={'fr_chorus': 'set null'} selection_add=[('fr_chorus', 'Chorus Pro')]
Public methods (5)
  • chorus_cron(self)
    @api.model
  • fr_chorus_identifier_and_required_button(self)
  • fr_chorus_identifier_get(self)
  • fr_chorus_required_get(self)
  • fr_chorus_services_get(self)
REPOSITORY
REPOSITORYOCA/l10n-france
GIT
GIThttps://github.com/OCA/l10n-france.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-france/tree/17.0/l10n_fr_chorus_account
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYFrench Localization
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, Daniel Reis, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-france
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-invoicing:
    - account_invoice_transmit_method
OCA/bank-payment:
    - account_payment_partner
    - account_payment_mode
OCA/l10n-france:
    - l10n_fr_siret
OCA/server-env:
    - server_environment
OCA/server-tools:
    - base_view_inheritance_extension
odoo/odoo:
    - l10n_fr
    - base_iban
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_vat
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES requests_oauthlib
python-stdnum>=1.18
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This is the base module for the support of [Chorus
Pro](https://chorus-pro.gouv.fr/), the electronic invoicing plateform of
the French administration. Chorus Pro specifications are available on
[Chorus Pro Community
website](https://communaute-chorus-pro.finances.gouv.fr/). All the
suppliers of the French administration must send their invoices through
Chorus Pro. To know more about Chorus and the obligation to send
electronic invoices to the French administration, read [the dedicated
page](https://www.economie.gouv.fr/entreprises/marches-publics-facture-electronique)
on the website of the Ministry of Economic Affairs.

To be able to generate an electronic invoice for Chorus, you need the
module *l10n_fr_chorus_factur-x* or *l10n_fr_chorus_ubl*.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
account_invoice_chorus_send_form account.invoice.chorus.send form New
chorus_flow_form chorus.flow.form chorus.flow form New
chorus_flow_search chorus.flow.search chorus.flow search New
chorus_flow_tree chorus.flow.tree chorus.flow tree New
chorus_partner_service_form chorus.partner.service.form chorus.partner.service form New
chorus_partner_service_search chorus.partner.service.search chorus.partner.service search New
chorus_partner_service_tree chorus.partner.service.tree chorus.partner.service tree New
res_config_settings_view_form chorus.account.res.settings.form res.config.settings block Inherits account.res_config_settings_view_form
view_account_invoice_filter Chorus groupby on Invoice search view account.move filter Inherits account.view_account_invoice_filter
view_invoice_tree account.move field Inherits account.view_invoice_tree
view_move_form Chorus support on Customer Invoice form view account.move field Inherits account_invoice_transmit_method.view_move_form
view_partner_form chorus.res.partner.form res.partner xpath Inherits base.view_partner_form
Models touched (7)

New fields (4)
  • chorus_invoice_format Selection
    related='company_id.fr_chorus_invoice_format'
  • company_id Many2one → res.company
    readonly=True string='Company' args: 'res.company'
  • invoice_count Integer
    readonly=True string='Number of Invoices'
  • invoice_ids Many2many → account.move
    check_company=True readonly=True string='Invoices to Send' args: 'account.move'
Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • run(self)

New fields (6)
  • chorus_attachment_ids Many2many → ir.attachment
    copy=False string='Chorus Attachments' args: 'ir.attachment', 'account_move_chorus_ir_attachment_rel'
  • chorus_flow_id Many2one → chorus.flow
    copy=False readonly=True string='Chorus Flow' tracking=True args: 'chorus.flow'
  • chorus_identifier Integer
    copy=False readonly=True string='Chorus Invoice Identifier' tracking=True
  • chorus_service_code Char
    related='partner_id.fr_chorus_service_id.code' store=True string='Chorus Service Code'
  • chorus_status Char
    copy=False readonly=True string='Chorus Invoice Status' tracking=True
  • chorus_status_date Datetime
    copy=False readonly=True string='Last Chorus Invoice Status Update'
Public methods (3)
  • action_post(self)
    Check validity of Chorus invoices
  • chorus_get_invoice(self, chorus_invoice_format)
  • chorus_update_invoice_status(self)
    Called by a button on the invoice or by cron

New fields (12)
  • attachment_id Many2one → ir.attachment
    copy=False readonly=True string='File Sent to Chorus' args: 'ir.attachment'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • date Date
    copy=False readonly=True required=True args: 'Flow Date'
  • initial_invoice_ids Many2many → account.move
    help='Invoices in the flow before potential rejections' readonly=True string='Initial Invoices' args: 'account.move', 'chorus_flow_initial_account_move_rel', 'chorus_flow_id', 'move_id'
  • invoice_identifiers Boolean
    compute='_compute_invoice_identifiers' readonly=True store=True
  • invoice_ids One2many → account.move
    help='Invoices in the flow after potential rejections' readonly=True string='Invoices' args: 'account.move', 'chorus_flow_id'
  • name Char
    copy=False readonly=True required=True args: 'Flow Ref'
  • notes Text
    copy=False readonly=True
  • status Char
    copy=False readonly=True string='Flow Status (raw value)'
  • status_date Datetime
    copy=False readonly=True string='Last Status Update'
  • status_display Char
    compute='_compute_status_display' store=True string='Flow Status'
  • syntax Selection
    copy=False readonly=True string='Flow Syntax' args: []
Public methods (4)
  • chorus_cron(self)
    @api.model
  • get_invoice_identifiers(self)
    Called by a button or cron
  • syntax_odoo2chorus(self)
    @api.model
  • update_flow_status(self)
    Called by a button on the flow or by cron

New fields (6)
  • active Boolean
    default=True
  • chorus_identifier Integer
    readonly=True
  • code Char
    required=True string='Service Code'
  • engagement_required Boolean
  • name Char
    required=True string='Service Name'
  • partner_id Many2one → res.partner
    domain=[('parent_id', '=', False)] ondelete='cascade' string='Customer' args: 'res.partner'
Public methods (1)
  • service_update(self)

New fields (7)
  • fr_chorus_api_login Char
    groups='base.group_system' string='Chorus Technical User Login'
  • fr_chorus_api_password Char
    groups='base.group_system' string='Chorus Technical User Password'
  • fr_chorus_check_commitment_number Boolean
    help="If enabled, Odoo will check the commitment number upon invoice validation. This commitment number must be set in the field 'Customer Reference' of the invoice. It will also check it upon sale order validation if the module l10n_fr_chorus_sale is installed." string='Check Commitment Numbers'
  • fr_chorus_expiry_remind_user_ids Many2many → res.users
    string='Users Receiving the Expiry Reminder' args: 'res.users', 'fr_chorus_api_expiry_remind_user_rel', 'company_id', 'user_id'
  • fr_chorus_invoice_format Selection
    string='Chorus Invoice Format' args: []
  • fr_chorus_pwd_expiry_date Date
    string='Chorus Technical User Password Expiry Date'
  • fr_chorus_qualif Boolean
    help='Use the Chorus Pro qualification website' args: 'Chorus Test Mode'
Public methods (2)
  • chorus_api_expiry_reminder_cron(self)
    @api.model
  • chorus_expiry_remind_user_list(self)

New fields (8)
  • fr_chorus_api_login Char
    readonly=False related='company_id.fr_chorus_api_login'
  • fr_chorus_api_password Char
    readonly=False related='company_id.fr_chorus_api_password'
  • fr_chorus_check_commitment_number Boolean
    readonly=False related='company_id.fr_chorus_check_commitment_number'
  • fr_chorus_expiry_remind_user_ids Many2many
    readonly=False related='company_id.fr_chorus_expiry_remind_user_ids'
  • fr_chorus_invoice_format Selection
    readonly=False related='company_id.fr_chorus_invoice_format'
  • fr_chorus_pwd_expiry_date Date
    readonly=False related='company_id.fr_chorus_pwd_expiry_date'
  • fr_chorus_qualif Boolean
    readonly=False related='company_id.fr_chorus_qualif'
  • group_chorus_api Boolean
    help="If you select 'Use Chorus Pro API', it will add all users to the Chorus API group." implied_group='l10n_fr_chorus_account.group_chorus_api' string='Use Chorus Pro API'
Public methods (0)

No public methods.

New fields (5)
  • fr_chorus_identifier Integer
    readonly=True args: 'Chorus Identifier'
  • fr_chorus_required Selection
    string='Info Required for Chorus' tracking=True args: [('none', 'None'), ('service', 'Service'), ('engagement', 'Engagement'), ('service_or_engagement', 'Service or Engagement'), ('service_and_engagement', 'Service and Engagement')]
  • fr_chorus_service_count Integer
    compute='_compute_fr_chorus_service_count' readonly=True string='Number of Chorus Services'
  • fr_chorus_service_id Many2one → chorus.partner.service
    ondelete='restrict' string='Chorus Service' tracking=True args: 'chorus.partner.service'
  • fr_chorus_service_ids One2many → chorus.partner.service
    string='Chorus Services' args: 'chorus.partner.service', 'partner_id'
Public methods (5)
  • chorus_cron(self)
    @api.model
  • fr_chorus_identifier_and_required_button(self)
  • fr_chorus_identifier_get(self)
  • fr_chorus_required_get(self)
  • fr_chorus_services_get(self)
REPOSITORY
REPOSITORYOCA/l10n-france
GIT
GIThttps://github.com/OCA/l10n-france.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-france/tree/16.0/l10n_fr_chorus_account
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYFrench Localization
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-france
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:59
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-invoicing:
    - account_invoice_transmit_method
OCA/bank-payment:
    - account_payment_partner
    - account_payment_mode
OCA/l10n-france:
    - l10n_fr_siret
OCA/server-env:
    - server_environment
OCA/server-tools:
    - base_view_inheritance_extension
odoo/odoo:
    - l10n_fr
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
    - base_vat
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES requests_oauthlib
python-stdnum
astor
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
account_invoice_chorus_send_form account.invoice.chorus.send form New
chorus_flow_form chorus.flow.form chorus.flow form New
chorus_flow_search chorus.flow.search chorus.flow search New
chorus_flow_tree chorus.flow.tree chorus.flow tree New
chorus_partner_service_form chorus.partner.service.form chorus.partner.service form New
chorus_partner_service_search chorus.partner.service.search chorus.partner.service search New
chorus_partner_service_tree chorus.partner.service.tree chorus.partner.service tree New
res_config_settings_view_form chorus.account.res.settings.form res.config.settings div Inherits account.res_config_settings_view_form
view_account_invoice_filter Chorus groupby on Invoice search view account.move filter Inherits account.view_account_invoice_filter
view_invoice_tree account.move field Inherits account.view_invoice_tree
view_move_form Chorus support on Customer Invoice form view account.move field Inherits account_invoice_transmit_method.view_move_form
view_partner_form chorus.res.partner.form res.partner xpath Inherits base.view_partner_form
Models touched (7)

New fields (4)
  • chorus_invoice_format Selection
    related='company_id.fr_chorus_invoice_format'
  • company_id Many2one → res.company
    readonly=True string='Company' args: 'res.company'
  • invoice_count Integer
    readonly=True string='Number of Invoices'
  • invoice_ids Many2many → account.move
    readonly=True string='Invoices to Send' args: 'account.move'
Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • run(self)

New fields (7)
  • chorus_attachment_ids Many2many → ir.attachment
    copy=False readonly=True states={'draft': [('readonly', False)]} string='Chorus Attachments' args: 'ir.attachment', 'account_move_chorus_ir_attachment_rel'
  • chorus_flow_id Many2one → chorus.flow
    copy=False readonly=True string='Chorus Flow' tracking=True args: 'chorus.flow'
  • chorus_identifier Integer
    copy=False readonly=True string='Chorus Invoice Identifier' tracking=True
  • chorus_service_code Char
    related='partner_id.fr_chorus_service_id.code' store=True string='Chorus Service Code'
  • chorus_status Char
    copy=False readonly=True string='Chorus Invoice Status' tracking=True
  • chorus_status_date Datetime
    copy=False readonly=True string='Last Chorus Invoice Status Update'
  • transmit_method_id Many2one
    readonly=True states={'draft': [('readonly', False)]}
Public methods (5)
  • action_post(self)
    Check validity of Chorus invoices
  • chorus_api_consulter_historique(self, api_params, session=None)
  • chorus_get_invoice(self, chorus_invoice_format)
  • chorus_update_invoice_status(self)
    Called by a button on the invoice or by cron
  • prepare_chorus_deposer_flux_payload(self)

New fields (12)
  • attachment_id Many2one → ir.attachment
    copy=False readonly=True string='File Sent to Chorus' args: 'ir.attachment'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • date Date
    copy=False readonly=True required=True args: 'Flow Date'
  • initial_invoice_ids Many2many → account.move
    help='Invoices in the flow before potential rejections' readonly=True string='Initial Invoices' args: 'account.move', 'chorus_flow_initial_account_move_rel', 'chorus_flow_id', 'move_id'
  • invoice_identifiers Boolean
    compute='_compute_invoice_identifiers' readonly=True store=True
  • invoice_ids One2many → account.move
    help='Invoices in the flow after potential rejections' readonly=True string='Invoices' args: 'account.move', 'chorus_flow_id'
  • name Char
    copy=False readonly=True required=True args: 'Flow Ref'
  • notes Text
    copy=False readonly=True
  • status Char
    copy=False readonly=True string='Flow Status (raw value)'
  • status_date Datetime
    copy=False readonly=True string='Last Status Update'
  • status_display Char
    compute='_compute_status_display' store=True string='Flow Status'
  • syntax Selection
    copy=False readonly=True string='Flow Syntax' args: []
Public methods (7)
  • chorus_api_consulter_cr(self, api_params, session=None)
  • chorus_api_rechercher_fournisseur(self, api_params, session=None)
  • chorus_cron(self)
    @api.model
  • get_invoice_identifiers(self)
    Called by a button or cron
  • name_get(self)
    @api.depends('name', 'status_display')
  • syntax_odoo2chorus(self)
    @api.model
  • update_flow_status(self)
    Called by a button on the flow or by cron

New fields (6)
  • active Boolean
    default=True
  • chorus_identifier Integer
    readonly=True
  • code Char
    required=True string='Service Code'
  • engagement_required Boolean
  • name Char
    string='Service Name'
  • partner_id Many2one → res.partner
    domain=[('parent_id', '=', False)] ondelete='cascade' string='Customer' args: 'res.partner'
Public methods (5)
  • api_consulter_service(self, api_params, session)
  • name_get(self)
    @api.depends('code', 'name')
  • name_search(self, name='', args=None, operator='ilike', limit=80)
    @api.model
  • service_factures_publiques_dont_use(self)
    @api.constrains('code')
  • service_update(self)

New fields (7)
  • fr_chorus_api_login Char
    string='Chorus Technical User Login'
  • fr_chorus_api_password Char
    string='Chorus Technical User Password'
  • fr_chorus_check_commitment_number Boolean
    help="If enabled, Odoo will check the commitment number upon invoice validation. This commitment number must be set in the field 'Customer Reference' of the invoice. It will also check it upon sale order validation if the module l10n_fr_chorus_sale is installed." string='Check Commitment Numbers'
  • fr_chorus_expiry_remind_user_ids Many2many → res.users
    string='Users Receiving the Expiry Reminder' args: 'res.users', 'fr_chorus_api_expiry_remind_user_rel', 'company_id', 'user_id'
  • fr_chorus_invoice_format Selection
    string='Chorus Invoice Format' args: []
  • fr_chorus_pwd_expiry_date Date
    string='Chorus Technical User Password Expiry Date'
  • fr_chorus_qualif Boolean
    help='Use the Chorus Pro qualification website' args: 'Chorus Test Mode'
Public methods (5)
  • chorus_api_expiry_reminder_cron(self)
    @api.model
  • chorus_expiry_remind_user_list(self)
  • chorus_get_api_params(self, raise_if_ko=False)
  • chorus_get_piste_api_oauth_identifiers(self, raise_if_ko=False)
    Inherit this method if you want to configure your Chorus certificates elsewhere or have per-company Chorus certificates
  • chorus_post(self, api_params, url_path, payload, session=None)
    @api.model

New fields (8)
  • fr_chorus_api_login Char
    readonly=False related='company_id.fr_chorus_api_login'
  • fr_chorus_api_password Char
    readonly=False related='company_id.fr_chorus_api_password'
  • fr_chorus_check_commitment_number Boolean
    readonly=False related='company_id.fr_chorus_check_commitment_number'
  • fr_chorus_expiry_remind_user_ids Many2many
    readonly=False related='company_id.fr_chorus_expiry_remind_user_ids'
  • fr_chorus_invoice_format Selection
    readonly=False related='company_id.fr_chorus_invoice_format'
  • fr_chorus_pwd_expiry_date Date
    readonly=False related='company_id.fr_chorus_pwd_expiry_date'
  • fr_chorus_qualif Boolean
    readonly=False related='company_id.fr_chorus_qualif'
  • group_chorus_api Boolean
    help="If you select 'Use Chorus Pro API', it will add all users to the Chorus API group." implied_group='l10n_fr_chorus_account.group_chorus_api' string='Use Chorus Pro API'
Public methods (0)

No public methods.

New fields (5)
  • fr_chorus_identifier Integer
    readonly=True args: 'Chorus Identifier'
  • fr_chorus_required Selection
    string='Info Required for Chorus' tracking=True args: [('none', 'None'), ('service', 'Service'), ('engagement', 'Engagement'), ('service_or_engagement', 'Service or Engagement'), ('service_and_engagement', 'Service and Engagement')]
  • fr_chorus_service_count Integer
    compute='_compute_fr_chorus_service_count' readonly=True string='Number of Chorus Services'
  • fr_chorus_service_id Many2one → chorus.partner.service
    ondelete='restrict' string='Chorus Service' tracking=True args: 'chorus.partner.service'
  • fr_chorus_service_ids One2many → chorus.partner.service
    string='Chorus Services' args: 'chorus.partner.service', 'partner_id'
Public methods (10)
  • check_fr_chorus_service(self)
    @api.constrains('fr_chorus_service_id', 'name', 'parent_id')
  • chorus_cron(self)
    @api.model
  • chorus_service_ok(self)
  • fr_chorus_api_rechercher_services(self, api_params, session)
  • fr_chorus_api_structures_consulter(self, api_params, session)
  • fr_chorus_api_structures_rechercher(self, api_params, session=None)
  • fr_chorus_identifier_and_required_button(self)
  • fr_chorus_identifier_get(self)
  • fr_chorus_required_get(self)
  • fr_chorus_services_get(self)
REPOSITORY
REPOSITORYOCA/l10n-france
GIT
GIThttps://github.com/OCA/l10n-france.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-france/tree/15.0/l10n_fr_chorus_account
VERSION
VERSION 1.3.0
CATEGORY
CATEGORYFrench Localization
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-france
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-invoicing:
    - account_invoice_transmit_method
OCA/l10n-france:
    - l10n_fr_siret
OCA/server-env:
    - server_environment
OCA/server-tools:
    - base_view_inheritance_extension
odoo/odoo:
    - l10n_fr
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
    - base_vat
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES requests_oauthlib
python-stdnum>=1.18
astor
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
account_invoice_chorus_send_form account.invoice.chorus.send form New
chorus_flow_form chorus.flow.form chorus.flow form New
chorus_flow_search chorus.flow.search chorus.flow search New
chorus_flow_tree chorus.flow.tree chorus.flow tree New
chorus_partner_service_form chorus.partner.service.form chorus.partner.service form New
chorus_partner_service_search chorus.partner.service.search chorus.partner.service search New
chorus_partner_service_tree chorus.partner.service.tree chorus.partner.service tree New
res_config_settings_view_form chorus.account.res.settings.form res.config.settings div Inherits account.res_config_settings_view_form
view_account_invoice_filter Chorus groupby on Invoice search view account.move filter Inherits account.view_account_invoice_filter
view_invoice_tree account.move field Inherits account.view_invoice_tree
view_move_form Chorus support on Customer Invoice form view account.move button Inherits account_invoice_transmit_method.view_move_form
view_partner_form chorus.res.partner.form res.partner field Inherits base.view_partner_form
Models touched (7)

New fields (4)
  • chorus_invoice_format Selection
    readonly=True related='company_id.fr_chorus_invoice_format'
  • company_id Many2one → res.company
    readonly=True string='Company' args: 'res.company'
  • invoice_count Integer
    readonly=True string='Number of Invoices'
  • invoice_ids Many2many → account.move
    readonly=True string='Invoices to Send' args: 'account.move'
Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • run(self)

New fields (5)
  • chorus_attachment_ids Many2many → ir.attachment
    copy=False readonly=True states={'draft': [('readonly', False)]} string='Chorus Attachments' args: 'ir.attachment', 'account_move_chorus_ir_attachment_rel'
  • chorus_flow_id Many2one → chorus.flow
    copy=False readonly=True string='Chorus Flow' tracking=True args: 'chorus.flow'
  • chorus_identifier Integer
    copy=False readonly=True string='Chorus Invoice Indentifier' tracking=True
  • chorus_status Char
    copy=False readonly=True string='Chorus Invoice Status' tracking=True
  • chorus_status_date Datetime
    copy=False readonly=True string='Last Chorus Invoice Status Date'
Public methods (8)
  • action_post(self)
    Check validity of Chorus invoices
  • chorus_api_check_commitment_number(self, api_params, company_identifier, order_ref, session=None, raise_if_not_found=True)
    @api.model
  • chorus_api_consulter_historique(self, api_params, session=None)
  • chorus_check_commitment_number(self, company, order_ref, raise_if_not_found=True)
    @api.model
  • chorus_get_invoice(self, chorus_invoice_format)
  • chorus_invoice_check_commitment_number(self, raise_if_not_found=True)
  • chorus_update_invoice_status(self)
    Called by a button on the invoice or by cron
  • prepare_chorus_deposer_flux_payload(self)

New fields (12)
  • attachment_id Many2one → ir.attachment
    copy=False readonly=True string='File Sent to Chorus' args: 'ir.attachment'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • date Date
    copy=False readonly=True required=True args: 'Flow Date'
  • initial_invoice_ids Many2many → account.move
    help='Invoices in the flow before potential rejections' string='Initial Invoices' args: 'account.move', 'chorus_flow_initial_account_move_rel', 'chorus_flow_id', 'move_id'
  • invoice_identifiers Boolean
    compute='_compute_invoice_identifiers' readonly=True store=True
  • invoice_ids One2many → account.move
    help='Invoices in the flow after potential rejections' readonly=True string='Invoices' args: 'account.move', 'chorus_flow_id'
  • name Char
    copy=False readonly=True required=True args: 'Flow Ref'
  • notes Text
    copy=False readonly=True
  • status Char
    copy=False readonly=True string='Flow Status (raw value)'
  • status_date Datetime
    copy=False readonly=True string='Last Status Update'
  • status_display Char
    compute='_compute_status_display' store=True string='Flow Status'
  • syntax Selection
    copy=False readonly=True string='Flow Syntax' args: []
Public methods (7)
  • chorus_api_consulter_cr(self, api_params, session=None)
  • chorus_api_rechercher_fournisseur(self, api_params, session=None)
  • chorus_cron(self)
    @api.model
  • get_invoice_identifiers(self)
    Called by a button or cron
  • name_get(self)
    @api.depends('name', 'status_display')
  • syntax_odoo2chorus(self)
    @api.model
  • update_flow_status(self)
    Called by a button on the flow or by cron

New fields (6)
  • active Boolean
    default=True
  • chorus_identifier Integer
    readonly=True
  • code Char
    required=True string='Service Code'
  • engagement_required Boolean
  • name Char
    string='Service Name'
  • partner_id Many2one → res.partner
    domain=[('parent_id', '=', False)] ondelete='cascade' string='Customer' args: 'res.partner'
Public methods (5)
  • api_consulter_service(self, api_params, session)
  • name_get(self)
    @api.depends('code', 'name')
  • name_search(self, name='', args=None, operator='ilike', limit=80)
    @api.model
  • service_factures_publiques_dont_use(self)
    @api.constrains('code')
  • service_update(self)

New fields (7)
  • fr_chorus_api_login Char
    string='Chorus Technical User Login'
  • fr_chorus_api_password Char
    string='Chorus Technical User Password'
  • fr_chorus_check_commitment_number Boolean
    help="If enabled, Odoo will check the commitment number ('engagement juridique' in French) upon invoice validation. It corresponds to the 'customer order reference' in the administrative tongue. It will also check it upon sale order validation if the module l10n_fr_chorus_sale is installed." string='Check Commitment Numbers'
  • fr_chorus_expiry_remind_user_ids Many2many → res.users
    string='Users Receiving the Expiry Reminder' args: 'res.users', 'fr_chorus_api_expiry_remind_user_rel', 'company_id', 'user_id'
  • fr_chorus_invoice_format Selection
    string='Chorus Invoice Format' args: []
  • fr_chorus_pwd_expiry_date Date
    string='Chorus Technical User Password Expiry Date'
  • fr_chorus_qualif Boolean
    help='Use the Chorus Pro qualification website' args: 'Chorus Test Mode'
Public methods (5)
  • chorus_api_expiry_reminder_cron(self)
    @api.model
  • chorus_expiry_remind_user_list(self)
  • chorus_get_api_params(self, raise_if_ko=False)
  • chorus_get_piste_api_oauth_identifiers(self, raise_if_ko=False)
    Inherit this method if you want to configure your Chorus certificates elsewhere or have per-company Chorus certificates
  • chorus_post(self, api_params, url_path, payload, session=None)
    @api.model

New fields (8)
  • fr_chorus_api_login Char
    readonly=False related='company_id.fr_chorus_api_login'
  • fr_chorus_api_password Char
    readonly=False related='company_id.fr_chorus_api_password'
  • fr_chorus_check_commitment_number Boolean
    readonly=False related='company_id.fr_chorus_check_commitment_number'
  • fr_chorus_expiry_remind_user_ids Many2many
    readonly=False related='company_id.fr_chorus_expiry_remind_user_ids'
  • fr_chorus_invoice_format Selection
    readonly=False related='company_id.fr_chorus_invoice_format'
  • fr_chorus_pwd_expiry_date Date
    readonly=False related='company_id.fr_chorus_pwd_expiry_date'
  • fr_chorus_qualif Boolean
    readonly=False related='company_id.fr_chorus_qualif'
  • group_chorus_api Boolean
    help="If you select 'Use Chorus Pro API', it will add all users to the Chorus API group." implied_group='l10n_fr_chorus_account.group_chorus_api' string='Use Chorus Pro API'
Public methods (0)

No public methods.

New fields (5)
  • fr_chorus_identifier Integer
    readonly=True args: 'Chorus Identifier'
  • fr_chorus_required Selection
    string='Info Required for Chorus' tracking=True args: [('none', 'None'), ('service', 'Service'), ('engagement', 'Engagement'), ('service_or_engagement', 'Service or Engagement'), ('service_and_engagement', 'Service and Engagement')]
  • fr_chorus_service_count Integer
    compute='_compute_fr_chorus_service_count' readonly=True string='Number of Chorus Services'
  • fr_chorus_service_id Many2one → chorus.partner.service
    ondelete='restrict' string='Chorus Service' tracking=True args: 'chorus.partner.service'
  • fr_chorus_service_ids One2many → chorus.partner.service
    string='Chorus Services' args: 'chorus.partner.service', 'partner_id'
Public methods (10)
  • check_fr_chorus_service(self)
    @api.constrains('fr_chorus_service_id', 'name', 'parent_id')
  • chorus_cron(self)
    @api.model
  • chorus_service_ok(self)
  • fr_chorus_api_rechercher_services(self, api_params, session)
  • fr_chorus_api_structures_consulter(self, api_params, session)
  • fr_chorus_api_structures_rechercher(self, api_params, session=None)
  • fr_chorus_identifier_and_required_button(self)
  • fr_chorus_identifier_get(self)
  • fr_chorus_required_get(self)
  • fr_chorus_services_get(self)
REPOSITORY
REPOSITORYOCA/l10n-france
GIT
GIThttps://github.com/OCA/l10n-france.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-france/tree/14.0/l10n_fr_chorus_account
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYFrench Localization
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, GitHub, OCA Transbot, Sébastien BEAU, oca-travis, Weblate, OCA-git-bot, hparfr, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-france
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-invoicing:
    - account_invoice_transmit_method
OCA/l10n-france:
    - l10n_fr_siret
OCA/server-env:
    - server_environment
OCA/server-tools:
    - base_view_inheritance_extension
odoo/odoo:
    - l10n_fr
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
    - base_vat
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES requests_oauthlib
python-stdnum
astor
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
account_invoice_chorus_send_form account.invoice.chorus.send form New
chorus_flow_form chorus.flow.form chorus.flow form New
chorus_flow_search chorus.flow.search chorus.flow search New
chorus_flow_tree chorus.flow.tree chorus.flow tree New
chorus_partner_service_form chorus.partner.service.form chorus.partner.service form New
chorus_partner_service_search chorus.partner.service.search chorus.partner.service search New
chorus_partner_service_tree chorus.partner.service.tree chorus.partner.service tree New
res_config_settings_view_form chorus.account.res.settings.form res.config.settings div Inherits account.res_config_settings_view_form
view_account_invoice_filter Chorus groupby on Invoice search view account.move filter Inherits account.view_account_invoice_filter
view_invoice_tree account.move field Inherits account.view_invoice_tree
view_move_form Chorus support on Customer Invoice form view account.move button Inherits account_invoice_transmit_method.view_move_form
view_partner_form chorus.res.partner.form res.partner field Inherits base.view_partner_form
Models touched (7)

New fields (4)
  • chorus_invoice_format Selection
    readonly=True related='company_id.fr_chorus_invoice_format'
  • company_id Many2one → res.company
    readonly=True string='Company' args: 'res.company'
  • invoice_count Integer
    readonly=True string='Number of Invoices'
  • invoice_ids Many2many → account.move
    readonly=True string='Invoices to Send' args: 'account.move'
Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • run(self)

New fields (5)
  • chorus_attachment_ids Many2many → ir.attachment
    copy=False readonly=True states={'draft': [('readonly', False)]} string='Chorus Attachments' args: 'ir.attachment', 'account_move_chorus_ir_attachment_rel'
  • chorus_flow_id Many2one → chorus.flow
    copy=False readonly=True string='Chorus Flow' tracking=True args: 'chorus.flow'
  • chorus_identifier Integer
    copy=False readonly=True string='Chorus Invoice Identifier' tracking=True
  • chorus_status Char
    copy=False readonly=True string='Chorus Invoice Status' tracking=True
  • chorus_status_date Datetime
    copy=False readonly=True string='Last Chorus Invoice Status Date'
Public methods (8)
  • action_post(self)
    Check validity of Chorus invoices
  • chorus_api_check_commitment_number(self, api_params, company_identifier, order_ref, session=None, raise_if_not_found=True)
    @api.model
  • chorus_api_consulter_historique(self, api_params, session=None)
  • chorus_check_commitment_number(self, company, order_ref, raise_if_not_found=True)
    @api.model
  • chorus_get_invoice(self, chorus_invoice_format)
  • chorus_invoice_check_commitment_number(self, commitment_number, raise_if_not_found=True)
  • chorus_update_invoice_status(self)
    Called by a button on the invoice or by cron
  • prepare_chorus_deposer_flux_payload(self)

New fields (12)
  • attachment_id Many2one → ir.attachment
    copy=False readonly=True string='File Sent to Chorus' args: 'ir.attachment'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • date Date
    copy=False readonly=True required=True args: 'Flow Date'
  • initial_invoice_ids Many2many → account.move
    help='Invoices in the flow before potential rejections' string='Initial Invoices' args: 'account.move', 'chorus_flow_initial_account_move_rel', 'chorus_flow_id', 'move_id'
  • invoice_identifiers Boolean
    compute='_compute_invoice_identifiers' readonly=True store=True
  • invoice_ids One2many → account.move
    help='Invoices in the flow after potential rejections' readonly=True string='Invoices' args: 'account.move', 'chorus_flow_id'
  • name Char
    copy=False readonly=True required=True args: 'Flow Ref'
  • notes Text
    copy=False readonly=True string='Notes'
  • status Char
    copy=False readonly=True string='Flow Status (raw value)'
  • status_date Datetime
    copy=False readonly=True string='Last Status Update'
  • status_display Char
    compute='_compute_status_display' store=True string='Flow Status'
  • syntax Selection
    copy=False readonly=True string='Flow Syntax' args: []
Public methods (7)
  • chorus_api_consulter_cr(self, api_params, session=None)
  • chorus_api_rechercher_fournisseur(self, api_params, session=None)
  • chorus_cron(self)
    @api.model
  • get_invoice_identifiers(self)
    Called by a button or cron
  • name_get(self)
    @api.depends('name', 'status_display')
  • syntax_odoo2chorus(self)
    @api.model
  • update_flow_status(self)
    Called by a button on the flow or by cron

New fields (6)
  • active Boolean
    default=True
  • chorus_identifier Integer
    readonly=True
  • code Char
    required=True string='Service Code'
  • engagement_required Boolean
    string='Engagement Required'
  • name Char
    string='Service Name'
  • partner_id Many2one → res.partner
    domain=[('parent_id', '=', False)] ondelete='cascade' string='Customer' args: 'res.partner'
Public methods (5)
  • api_consulter_service(self, api_params, session)
  • name_get(self)
    @api.depends('code', 'name')
  • name_search(self, name='', args=None, operator='ilike', limit=80)
    @api.model
  • service_factures_publiques_dont_use(self)
    @api.constrains('code')
  • service_update(self)

New fields (7)
  • fr_chorus_api_login Char
    string='Chorus Technical User Login'
  • fr_chorus_api_password Char
    string='Chorus Technical User Password'
  • fr_chorus_check_commitment_number Boolean
    help="If enabled, Odoo will check the commitment number ('engagement juridique' in French) upon invoice validation. It corresponds to the 'customer order reference' in the administrative tongue. It will also check it upon sale order validation if the module l10n_fr_chorus_sale is installed." string='Check Commitment Numbers'
  • fr_chorus_expiry_remind_user_ids Many2many → res.users
    string='Users Receiving the Expiry Reminder' args: 'res.users', 'fr_chorus_api_expiry_remind_user_rel', 'company_id', 'user_id'
  • fr_chorus_invoice_format Selection
    string='Chorus Invoice Format' args: []
  • fr_chorus_pwd_expiry_date Date
    string='Chorus Technical User Password Expiry Date'
  • fr_chorus_qualif Boolean
    help='Use the Chorus Pro qualification website' args: 'Chorus Test Mode'
Public methods (5)
  • chorus_api_expiry_reminder_cron(self)
    @api.model
  • chorus_expiry_remind_user_list(self)
  • chorus_get_api_params(self, raise_if_ko=False)
  • chorus_get_piste_api_oauth_identifiers(self, raise_if_ko=False)
    Inherit this method if you want to configure your Chorus certificates elsewhere or have per-company Chorus certificates
  • chorus_post(self, api_params, url_path, payload, session=None)
    @api.model

New fields (8)
  • fr_chorus_api_login Char
    readonly=False related='company_id.fr_chorus_api_login'
  • fr_chorus_api_password Char
    readonly=False related='company_id.fr_chorus_api_password'
  • fr_chorus_check_commitment_number Boolean
    readonly=False related='company_id.fr_chorus_check_commitment_number'
  • fr_chorus_expiry_remind_user_ids Many2many
    readonly=False related='company_id.fr_chorus_expiry_remind_user_ids'
  • fr_chorus_invoice_format Selection
    readonly=False related='company_id.fr_chorus_invoice_format'
  • fr_chorus_pwd_expiry_date Date
    readonly=False related='company_id.fr_chorus_pwd_expiry_date'
  • fr_chorus_qualif Boolean
    readonly=False related='company_id.fr_chorus_qualif'
  • group_chorus_api Boolean
    help="If you select 'Use Chorus Pro API', it will add all users to the Chorus API group." implied_group='l10n_fr_chorus_account.group_chorus_api' string='Use Chorus Pro API'
Public methods (0)

No public methods.

New fields (5)
  • fr_chorus_identifier Integer
    readonly=True args: 'Chorus Identifier'
  • fr_chorus_required Selection
    string='Info Required for Chorus' tracking=True args: [('none', 'None'), ('service', 'Service'), ('engagement', 'Engagement'), ('service_or_engagement', 'Service or Engagement'), ('service_and_engagement', 'Service and Engagement')]
  • fr_chorus_service_count Integer
    compute='_compute_fr_chorus_service_count' readonly=True string='Number of Chorus Services'
  • fr_chorus_service_id Many2one → chorus.partner.service
    ondelete='restrict' string='Chorus Service' tracking=True args: 'chorus.partner.service'
  • fr_chorus_service_ids One2many → chorus.partner.service
    string='Chorus Services' args: 'chorus.partner.service', 'partner_id'
Public methods (10)
  • check_fr_chorus_service(self)
    @api.constrains('fr_chorus_service_id', 'name', 'parent_id')
  • chorus_cron(self)
    @api.model
  • chorus_service_ok(self)
  • fr_chorus_api_rechercher_services(self, api_params, session)
  • fr_chorus_api_structures_consulter(self, api_params, session)
  • fr_chorus_api_structures_rechercher(self, api_params, session=None)
  • fr_chorus_identifier_and_required_button(self)
  • fr_chorus_identifier_get(self)
  • fr_chorus_required_get(self)
  • fr_chorus_services_get(self)
REPOSITORY
REPOSITORYOCA/l10n-france
GIT
GIThttps://github.com/OCA/l10n-france.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-france/tree/12.0/l10n_fr_chorus_account
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYFrench Localization
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, Sylvain LE GAL, OCA Transbot, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-france
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-invoicing:
    - account_invoice_transmit_method
OCA/contract:
    - agreement_account
    - agreement
OCA/l10n-france:
    - l10n_fr_siret
OCA/server-env:
    - server_environment
OCA/server-tools:
    - base_view_inheritance_extension
odoo/odoo:
    - l10n_fr
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
    - base_iban
    - base_vat
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES requests_oauthlib
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
account_invoice_chorus_send_form account.invoice.chorus.send form New
chorus_flow_form chorus.flow.form chorus.flow form New
chorus_flow_search chorus.flow.search chorus.flow search New
chorus_flow_tree chorus.flow.tree chorus.flow tree New
chorus_partner_service_form chorus.partner.service.form chorus.partner.service form New
chorus_partner_service_search chorus.partner.service.search chorus.partner.service search New
chorus_partner_service_tree chorus.partner.service.tree chorus.partner.service tree New
invoice_form Chorus support on Customer Invoice form view account.invoice button Inherits account_invoice_transmit_method.invoice_form
res_config_settings_view_form chorus.account.res.settings.form res.config.settings div Inherits account.res_config_settings_view_form
view_account_invoice_filter Chorus groupby on Invoice search view account.invoice filter Inherits account.view_account_invoice_filter
view_partner_form chorus.res.partner.form res.partner field Inherits base.view_partner_form
Models touched (7)

New fields (4)
  • chorus_flow_id Many2one → chorus.flow
    copy=False readonly=True string='Chorus Flow' track_visibility='onchange' args: 'chorus.flow'
  • chorus_identifier Integer
    copy=False readonly=True string='Chorus Invoice Identifier' track_visibility='onchange'
  • chorus_status Char
    copy=False readonly=True string='Chorus Invoice Status' track_visibility='onchange'
  • chorus_status_date Datetime
    copy=False readonly=True string='Last Chorus Invoice Status Date'
Public methods (8)
  • action_move_create(self)
    Check validity of Chorus invoices
  • chorus_api_check_commitment_number(self, api_params, company_identifier, order_ref, session=None, raise_if_not_found=True)
    @api.model
  • chorus_api_consulter_historique(self, api_params, session=None)
  • chorus_check_commitment_number(self, company, order_ref, raise_if_not_found=True)
    @api.model
  • chorus_get_invoice(self, chorus_invoice_format)
  • chorus_invoice_check_commitment_number(self, raise_if_not_found=True)
  • chorus_update_invoice_status(self)
    Called by a button on the invoice or by cron
  • prepare_chorus_deposer_flux_payload(self)

New fields (4)
  • chorus_invoice_format Selection
    readonly=True related='company_id.fr_chorus_invoice_format'
  • company_id Many2one → res.company
    readonly=True string='Company' args: 'res.company'
  • invoice_count Integer
    readonly=True string='Number of Invoices'
  • invoice_ids Many2many → account.invoice
    readonly=True string='Invoices to Send' args: 'account.invoice'
Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • run(self)

New fields (10)
  • attachment_id Many2one → ir.attachment
    copy=False readonly=True string='File Sent to Chorus' args: 'ir.attachment'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • date Date
    copy=False readonly=True required=True args: 'Flow Date'
  • invoice_identifiers Boolean
    compute='_compute_invoice_identifiers' readonly=True store=True
  • invoice_ids One2many → account.invoice
    readonly=True string='Invoices' args: 'account.invoice', 'chorus_flow_id'
  • name Char
    copy=False readonly=True required=True args: 'Flow Ref'
  • notes Text
    copy=False readonly=True string='Notes'
  • status Char
    copy=False readonly=True string='Flow Status'
  • status_date Datetime
    copy=False readonly=True string='Last Status Update'
  • syntax Selection
    copy=False readonly=True required=True string='Flow Syntax' args: []
Public methods (7)
  • chorus_api_consulter_cr(self, api_params, session=None)
  • chorus_api_rechercher_fournisseur(self, api_params, session=None)
  • chorus_cron(self)
    @api.model
  • get_invoice_identifiers(self)
    Called by a button or cron
  • name_get(self)
  • syntax_odoo2chorus(self)
    @api.model
  • update_flow_status(self)
    Called by a button on the flow or by cron

New fields (6)
  • active Boolean
    default=True
  • chorus_identifier Integer
    readonly=True string='Chorus Identifier'
  • code Char
    required=True string='Service Code'
  • engagement_required Boolean
    string='Engagement Required'
  • name Char
    string='Service Name'
  • partner_id Many2one → res.partner
    domain=[('parent_id', '=', False)] ondelete='cascade' string='Customer' args: 'res.partner'
Public methods (5)
  • api_consulter_service(self, api_params, session)
  • name_get(self)
    @api.depends('code', 'name')
  • name_search(self, name='', args=None, operator='ilike', limit=80)
    @api.model
  • service_factures_publiques_dont_use(self)
    @api.constrains('code')
  • service_update(self)

New fields (7)
  • fr_chorus_api_login Char
    string='Chorus Technical User Login'
  • fr_chorus_api_password Char
    string='Chorus Technical User Password'
  • fr_chorus_check_commitment_number Boolean
    help="If enabled, Odoo will check the commitment number ('engagement juridique' in French) upon invoice validation. It corresponds to the 'customer order reference' in the administrative tongue. It will also check it upon sale order validation if the module l10n_fr_chorus_sale is installed." string='Check Commitment Numbers'
  • fr_chorus_expiry_remind_user_ids Many2many → res.users
    string='Users Receiving the Expiry Reminder' args: 'res.users', 'fr_chorus_api_expiry_remind_user_rel', 'company_id', 'user_id'
  • fr_chorus_invoice_format Selection
    string='Chorus Invoice Format' args: []
  • fr_chorus_pwd_expiry_date Date
    string='Chorus Technical User Password Expiry Date'
  • fr_chorus_qualif Boolean
    help='Use the Chorus Pro qualification website' args: 'Chorus Test Mode'
Public methods (5)
  • chorus_api_expiry_reminder_cron(self)
    @api.model
  • chorus_expiry_remind_user_list(self)
  • chorus_get_api_params(self, raise_if_ko=False)
  • chorus_get_piste_api_oauth_identifiers(self, raise_if_ko=False)
    Inherit this method if you want to configure your Chorus certificates elsewhere or have per-company Chorus certificates
  • chorus_post(self, api_params, url_path, payload, session=None)
    @api.model

New fields (8)
  • fr_chorus_api_login Char
    readonly=False related='company_id.fr_chorus_api_login'
  • fr_chorus_api_password Char
    readonly=False related='company_id.fr_chorus_api_password'
  • fr_chorus_check_commitment_number Boolean
    readonly=False related='company_id.fr_chorus_check_commitment_number'
  • fr_chorus_expiry_remind_user_ids Many2many
    readonly=False related='company_id.fr_chorus_expiry_remind_user_ids'
  • fr_chorus_invoice_format Selection
    readonly=False related='company_id.fr_chorus_invoice_format'
  • fr_chorus_pwd_expiry_date Date
    readonly=False related='company_id.fr_chorus_pwd_expiry_date'
  • fr_chorus_qualif Boolean
    readonly=False related='company_id.fr_chorus_qualif'
  • group_chorus_api Boolean
    help="If you select 'Use Chorus Pro API', it will add all users to the Chorus API group." implied_group='l10n_fr_chorus_account.group_chorus_api' string='Use Chorus Pro API'
Public methods (0)

No public methods.

New fields (5)
  • fr_chorus_identifier Integer
    readonly=True args: 'Chorus Identifier'
  • fr_chorus_required Selection
    string='Info Required for Chorus' track_visibility='onchange' args: [('none', 'None'), ('service', 'Service'), ('engagement', 'Engagement'), ('service_or_engagement', 'Service or Engagement'), ('service_and_engagement', 'Service and Engagement')]
  • fr_chorus_service_count Integer
    compute='_compute_fr_chorus_service_count' readonly=True string='Number of Chorus Services'
  • fr_chorus_service_id Many2one → chorus.partner.service
    ondelete='restrict' string='Chorus Service' track_visibility='onchange' args: 'chorus.partner.service'
  • fr_chorus_service_ids One2many → chorus.partner.service
    string='Chorus Services' args: 'chorus.partner.service', 'partner_id'
Public methods (10)
  • check_fr_chorus_service(self)
    @api.constrains('fr_chorus_service_id', 'name', 'parent_id')
  • chorus_cron(self)
    @api.model
  • chorus_service_ok(self)
  • fr_chorus_api_rechercher_services(self, api_params, session)
  • fr_chorus_api_structures_consulter(self, api_params, session)
  • fr_chorus_api_structures_rechercher(self, api_params, session=None)
  • fr_chorus_identifier_and_required_button(self)
  • fr_chorus_identifier_get(self)
  • fr_chorus_required_get(self)
  • fr_chorus_services_get(self)
REPOSITORY
REPOSITORYOCA/l10n-france
GIT
GIThttps://github.com/OCA/l10n-france.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-france/tree/10.0/l10n_fr_chorus_account
VERSION
VERSION 3.0.0
CATEGORY
CATEGORYFrench Localization
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, GitHub, OCA Transbot, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:03
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-invoicing:
    - account_invoice_transmit_method
OCA/contract:
    - agreement_account
OCA/l10n-france:
    - l10n_fr_siret
OCA/server-tools:
    - base_view_inheritance_extension
odoo/odoo:
    - l10n_fr
    - base_iban
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - report
    - analytic
    - web_planner
    - base_vat
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES requests_oauthlib
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
account_invoice_chorus_send_form account.invoice.chorus.send form New
chorus_flow_form chorus.flow.form chorus.flow form New
chorus_flow_search chorus.flow.search chorus.flow search New
chorus_flow_tree chorus.flow.tree chorus.flow tree New
chorus_partner_service_form chorus.partner.service.form chorus.partner.service form New
chorus_partner_service_search chorus.partner.service.search chorus.partner.service search New
chorus_partner_service_tree chorus.partner.service.tree chorus.partner.service tree New
invoice_form Chorus support on Customer Invoice form view account.invoice button Inherits account_invoice_transmit_method.invoice_form
view_account_config_settings chorus.account.config.settings.form account.config.settings xpath Inherits account.view_account_config_settings
view_account_invoice_filter Chorus groupby on Invoice search view account.invoice filter Inherits account.view_account_invoice_filter
view_partner_form chorus.res.partner.form res.partner field Inherits base.view_partner_form
view_partner_property_form chorus.account_tab.res.partner.form res.partner group Inherits account_invoice_transmit_method.view_partner_property_form
Models touched (7)

New fields (8)
  • fr_chorus_api_login Char
    readonly=False related='company_id.fr_chorus_api_login'
  • fr_chorus_api_password Char
    readonly=False related='company_id.fr_chorus_api_password'
  • fr_chorus_check_commitment_number Boolean
    readonly=False related='company_id.fr_chorus_check_commitment_number'
  • fr_chorus_expiry_remind_user_ids Many2many
    readonly=False related='company_id.fr_chorus_expiry_remind_user_ids'
  • fr_chorus_invoice_format Selection
    readonly=False related='company_id.fr_chorus_invoice_format'
  • fr_chorus_pwd_expiry_date Date
    readonly=False related='company_id.fr_chorus_pwd_expiry_date'
  • fr_chorus_qualif Boolean
    readonly=False related='company_id.fr_chorus_qualif'
  • group_chorus_api Selection
    help="If you select 'Use Chorus API', it will add all users to the Chorus API group." implied_group='l10n_fr_chorus_account.group_chorus_api' string='Use Chorus API' args: [(0, 'Do not use Chorus API'), (1, 'Use Chorus API via PISTE')]
Public methods (0)

No public methods.

New fields (4)
  • chorus_flow_id Many2one → chorus.flow
    copy=False readonly=True string='Chorus Flow' track_visibility='onchange' args: 'chorus.flow'
  • chorus_identifier Integer
    copy=False readonly=True string='Chorus Invoice Indentifier' track_visibility='onchange'
  • chorus_status Char
    copy=False readonly=True string='Chorus Invoice Status' track_visibility='onchange'
  • chorus_status_date Datetime
    copy=False readonly=True string='Last Chorus Invoice Status Date'
Public methods (8)
  • action_move_create(self)
    @api.multi
    Check validity of Chorus invoices
  • chorus_api_check_commitment_number(self, api_params, company_identifier, order_ref, session=None, raise_if_not_found=True)
    @api.model
  • chorus_api_consulter_historique(self, api_params, session=None)
  • chorus_check_commitment_number(self, company, order_ref, raise_if_not_found=True)
    @api.model
  • chorus_get_invoice(self, chorus_invoice_format)
  • chorus_invoice_check_commitment_number(self, raise_if_not_found=True)
  • chorus_update_invoice_status(self)
    Called by a button on the invoice or by cron
  • prepare_chorus_deposer_flux_payload(self)

New fields (4)
  • chorus_invoice_format Selection
    readonly=True related='company_id.fr_chorus_invoice_format'
  • company_id Many2one → res.company
    readonly=True string='Company' args: 'res.company'
  • invoice_count Integer
    readonly=True string='Number of Invoices'
  • invoice_ids Many2many → account.invoice
    readonly=True string='Invoices to Send' args: 'account.invoice'
Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • run(self)

New fields (10)
  • attachment_id Many2one → ir.attachment
    copy=False readonly=True string='File Sent to Chorus' args: 'ir.attachment'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • date Date
    copy=False readonly=True required=True args: 'Flow Date'
  • invoice_identifiers Boolean
    compute='_compute_invoice_identifiers' readonly=True store=True
  • invoice_ids One2many → account.invoice
    readonly=True string='Invoices' args: 'account.invoice', 'chorus_flow_id'
  • name Char
    copy=False readonly=True required=True args: 'Flow Ref'
  • notes Text
    copy=False readonly=True string='Notes'
  • status Char
    copy=False readonly=True string='Flow Status'
  • status_date Datetime
    copy=False readonly=True string='Last Status Update'
  • syntax Selection
    copy=False readonly=True required=True string='Flow Syntax' args: []
Public methods (7)
  • chorus_api_consulter_cr(self, api_params, session=None)
  • chorus_api_rechercher_fournisseur(self, api_params, session=None)
  • chorus_cron(self)
    @api.model
  • get_invoice_identifiers(self)
    Called by a button or cron
  • name_get(self)
  • syntax_odoo2chorus(self)
    @api.model
  • update_flow_status(self)
    Called by a button on the flow or by cron

New fields (6)
  • active Boolean
    default=True
  • chorus_identifier Integer
    readonly=True
  • code Char
    required=True string='Service Code'
  • engagement_required Boolean
    string='Engagement Required'
  • name Char
    string='Service Name'
  • partner_id Many2one → res.partner
    domain=[('parent_id', '=', False)] ondelete='cascade' string='Customer' args: 'res.partner'
Public methods (5)
  • api_consulter_service(self, api_params, session)
  • name_get(self)
    @api.depends('code', 'name')
  • name_search(self, name='', args=None, operator='ilike', limit=80)
    @api.model
  • service_factures_publiques_dont_use(self)
    @api.constrains('code')
  • service_update(self)

New fields (7)
  • fr_chorus_api_login Char
    string='Chorus Technical User Login'
  • fr_chorus_api_password Char
    string='Chorus Technical User Password'
  • fr_chorus_check_commitment_number Boolean
    help="If enabled, Odoo will check the commitment number ('engagement juridique' in French) upon invoice validation. It corresponds to the 'customer order reference' in the administrative tongue. It will also check it upon sale order validation if the module l10n_fr_chorus_sale is installed." string='Check Commitment Numbers'
  • fr_chorus_expiry_remind_user_ids Many2many → res.users
    string='Users Receiving the Expiry Reminder' args: 'res.users', 'fr_chorus_api_expiry_remind_user_rel', 'company_id', 'user_id'
  • fr_chorus_invoice_format Selection
    string='Chorus Invoice Format' args: []
  • fr_chorus_pwd_expiry_date Date
    string='Chorus Technical User Password Expiry Date'
  • fr_chorus_qualif Boolean
    help='Use the Chorus Pro qualification website' args: 'Chorus Test Mode'
Public methods (5)
  • chorus_api_expiry_reminder_cron(self)
    @api.model
  • chorus_expiry_remind_user_list(self)
  • chorus_get_api_params(self, raise_if_ko=False)
  • chorus_get_piste_api_oauth_identifiers(self, raise_if_ko=False)
    Inherit this method if you want to configure your Chorus certificates elsewhere or have per-company Chorus certificates
  • chorus_post(self, api_params, url_path, payload, session=None)
    @api.model

New fields (5)
  • fr_chorus_identifier Integer
    readonly=True args: 'Chorus Identifier'
  • fr_chorus_required Selection
    string='Info Required for Chorus' track_visibility='onchange' args: [('none', 'None'), ('service', 'Service'), ('engagement', 'Engagement'), ('service_or_engagement', 'Service or Engagement'), ('service_and_engagement', 'Service and Engagement')]
  • fr_chorus_service_count Integer
    compute='_compute_fr_chorus_service_count' readonly=True string='Number of Chorus Services'
  • fr_chorus_service_id Many2one → chorus.partner.service
    ondelete='restrict' string='Chorus Service' track_visibility='onchange' args: 'chorus.partner.service'
  • fr_chorus_service_ids One2many → chorus.partner.service
    string='Chorus Services' args: 'chorus.partner.service', 'partner_id'
Public methods (10)
  • check_fr_chorus_service(self)
    @api.constrains('fr_chorus_service_id', 'name', 'parent_id')
  • chorus_cron(self)
    @api.model
  • chorus_service_ok(self)
  • fr_chorus_api_rechercher_services(self, api_params, session)
  • fr_chorus_api_structures_consulter(self, api_params, session)
  • fr_chorus_api_structures_rechercher(self, api_params, session=None)
  • fr_chorus_identifier_and_required_button(self)
  • fr_chorus_identifier_get(self)
  • fr_chorus_required_get(self)
  • fr_chorus_services_get(self)
REPOSITORY
REPOSITORYOCA/l10n-france
GIT
GIThttps://github.com/OCA/l10n-france.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-france/tree/8.0/l10n_fr_chorus_account
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYFrench Localization
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, oca-travis, OCA-git-bot
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:27
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-invoicing:
    - account_invoice_transmit_method
OCA/l10n-france:
    - l10n_fr_siret
odoo/odoo:
    - l10n_fr
    - base_iban
    - base
    - account
    - base_setup
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - report
    - analytic
    - board
    - edi
    - email_template
    - account_chart
    - base_vat
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
invoice_form chorus.account.invoice.form account.invoice xpath Inherits account_invoice_transmit_method.invoice_form
public_market_form public.market.form public.market form New
public_market_search public.market.search public.market search New
public_market_tree public.market.tree public.market tree New
view_account_config_settings chorus.account.config.settings.form account.config.settings xpath Inherits account.view_account_config_settings
view_account_invoice_filter chorus.account.invoice.search account.invoice group Inherits account.view_account_invoice_filter
view_partner_form chorus.res.partner.form res.partner field Inherits base.view_partner_form
view_partner_property_form chorus.account_tab.res.partner.form res.partner xpath Inherits account_invoice_transmit_method.view_partner_property_form
Models touched (5)

New fields (1)
  • fr_vat_scheme Selection
    related='company_id.partner_id.fr_vat_scheme'
Public methods (0)

No public methods.

New fields (1)
  • public_market_id Many2one → public.market
    ondelete='restrict' readonly=True states={'draft': [('readonly', False)]} string='Public Market' track_visibility='onchange' args: 'public.market'
Public methods (1)
  • action_move_create(self)
    @api.multi
    Check validity of Chorus invoices

New fields (7)
  • active Boolean
    default=True string='Active'
  • code Char
    copy=False required=True size=50 string='Market Number'
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • display_name Char
    compute='compute_display_name_field' readonly=True store=True
  • invoice_ids One2many → account.invoice
    readonly=True string='Invoices' args: 'account.invoice', 'public_market_id'
  • name Char
    required=True string='Market Name'
  • partner_id Many2one → res.partner
    domain=[('customer', '=', True), ('parent_id', '=', False)] ondelete='restrict' required=True string='Customer' args: 'res.partner'
Public methods (1)
  • compute_display_name_field(self)
    @api.multi@api.depends('code', 'name')

New fields (1)
  • fr_vat_scheme Selection
    related='partner_id.fr_vat_scheme'
Public methods (0)

No public methods.

New fields (3)
  • fr_chorus_required Selection
    string='Info Required for Chorus' track_visibility='onchange' args: [('none', 'None'), ('service', 'Service'), ('engagement', 'Engagement'), ('service_or_engagement', 'Service or Engagement'), ('service_and_engagement', 'Service and Engagement')]
  • fr_chorus_service_code Char
    help='Service Code may be required for Chorus invoices' size=100 string='Chorus Service Code' track_visibility='onchange'
  • fr_vat_scheme Selection
    default='debit' string='French VAT Scheme' args: [('debit', 'Debit'), ('cashin', 'Cash in')]
Public methods (0)

No public methods.