diff --git a/__manifest__.py b/__manifest__.py index 04493e6824aa0b372bc82c188205749a54e5f6a2..7e7b0405495a4bfb8703144194c8881762bf75d4 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -27,6 +27,7 @@ "views/acc_counter_views.xml", "views/acc_account_views.xml", "views/res_partner_views.xml", + "views/res_config_settings_views.xml", # views menu "views/menu_views.xml", "report/report_template.xml", diff --git a/models/__init__.py b/models/__init__.py index 3d4023209133dd09800780cab50c0652d31aa82f..a7f9a3f968079f69cb94b80f68b6074f84dd8603 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -8,3 +8,5 @@ from . import acc_operation from . import acc_account from . import acc_counter from . import res_partner +from . import company +from . import res_config_settings diff --git a/models/acc_account.py b/models/acc_account.py index cd81abc1792565689367f3232ebb1895d4598aff..62d0509e78268d384c060584777b5d5915f0997d 100644 --- a/models/acc_account.py +++ b/models/acc_account.py @@ -15,6 +15,14 @@ class AccAccount(models.Model): def _get_default_currency_id(self): return self.env.company.currency_id.id + @api.model + def _default_invoice_terms(self): + return self.env.company.invoice_terms or '' + + @api.model + def _default_invoice_terms_tax(self): + return self.env.company.invoice_terms_tax or '' + # ------------------------------------------------------ # Fields declaration # ------------------------------------------------------ @@ -129,6 +137,8 @@ class AccAccount(models.Model): tracking=True, default="draft", ) + invoice_terms = fields.Text("Termes and conditions de paiement", default=_default_invoice_terms) + invoice_terms_tax = fields.Text("Termes and conditions des taxes", default=_default_invoice_terms_tax) @api.model_create_multi def create(self, vals_list): diff --git a/models/company.py b/models/company.py new file mode 100644 index 0000000000000000000000000000000000000000..d89284cada22832829ef32cc65d8639a38594bf5 --- /dev/null +++ b/models/company.py @@ -0,0 +1,43 @@ +# Copyright 2023 Le Filament (<http://www.le-filament.com>) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class ResCompany(models.Model): + _inherit = "res.company" + + # ------------------------------------------------------ + # Fields declaration + # ------------------------------------------------------ + + invoice_terms = fields.Text(string="Termes & Conditions de paiement") + invoice_terms_tax = fields.Text(string="Terms & Conditions des taxes") + + # ------------------------------------------------------ + # SQL Constraints + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Default methods + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Computed fields / Search Fields + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Onchange / Constraints + # ------------------------------------------------------ + + # ------------------------------------------------------ + # CRUD methods (ORM overrides) + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Actions + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Business methods + # ------------------------------------------------------ diff --git a/models/res_config_settings.py b/models/res_config_settings.py new file mode 100644 index 0000000000000000000000000000000000000000..11e8ff7af06b92533cbb817f362a694752e2f0de --- /dev/null +++ b/models/res_config_settings.py @@ -0,0 +1,45 @@ +# Copyright 2023 Le Filament (<http://www.le-filament.com>) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models, _ + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + invoice_terms = fields.Text(related='company_id.invoice_terms', + string="Termes & Conditions de paiement", + readonly=False) + invoice_terms_tax = fields.Text(related='company_id.invoice_terms_tax', + string="Terms & Conditions des taxes", readonly=False) + # ------------------------------------------------------ + # Fields declaration + # ------------------------------------------------------ + + # ------------------------------------------------------ + # SQL Constraints + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Default methods + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Computed fields / Search Fields + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Onchange / Constraints + # ------------------------------------------------------ + + # ------------------------------------------------------ + # CRUD methods (ORM overrides) + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Actions + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Business methods + # ------------------------------------------------------ diff --git a/report/account_template.xml b/report/account_template.xml index 5191f36beca2a2d68547af63497c0d8db428e513..500700b2f275021543c362cbe8bb3aa13c96b97c 100644 --- a/report/account_template.xml +++ b/report/account_template.xml @@ -471,7 +471,7 @@ </div> <div class="row mt-3"> <div class="col-12 font-italic"> - En cas de paiement anticipé, aucun escompte ne sera accordé. Indemnités pour frais de recouvrement en cas de retard de paiement : 40.00€ sauf frais supplémentaires. Conformément à l’article L 441-6 du Code de commerce, en cas de non paiement à l'échéance, sera appliquée une pénalité de retard équivalente à trois fois le taux d'intérêt légal en vigueur. + <span t-field="o.invoice_terms"/> </div> </div> <t t-set="prmi_ids" t-value="o.line_ids.mapped('acc_injection_id')"/> @@ -662,7 +662,9 @@ t-options='{"widget": "monetary", "display_currency": o.currency_id}' /> </h6> - <p class="mt-5 font-italic">* le droit d’accise sur l’électricité est la fusion progressive depuis le 1er janvier 2022 de la TICFE (taxe intérieure sur la consommation finale d’électricité, anciennement CSPE) et de la TLCFE (taxe locale sur la consommation finale d’électricité) perçues par la Direction générale des finances publiques.</p> + <p class="mt-5 font-italic"> + <span t-field="o.invoice_terms_tax"/> + </p> </div> </div> </t> diff --git a/views/acc_account_views.xml b/views/acc_account_views.xml index 264a5316f2601d00484f4df07facf7ad3bbca89f..7f15a9832c7e50c446d5ad3d45332d7d42f5150a 100644 --- a/views/acc_account_views.xml +++ b/views/acc_account_views.xml @@ -338,6 +338,14 @@ class="oe_subtotal_footer_separator" /> </group> + <group> + <group> + <field name="invoice_terms" placeholder="Termes and conditions de paiement..."/> + </group> + <group> + <field name="invoice_terms_tax" placeholder="Termes and conditions des taxes..."/> + </group> + </group> </page> </notebook> </sheet> diff --git a/views/res_config_settings_views.xml b/views/res_config_settings_views.xml new file mode 100644 index 0000000000000000000000000000000000000000..b2d0c0cde0ed551ce6d7e12274d94a9d1288ae2a --- /dev/null +++ b/views/res_config_settings_views.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8" ?> +<odoo> + + <record id="res_config_settings_view_form" model="ir.ui.view"> + <field name="name">res.config.settings.view.form.inherit.app</field> + <field name="model">res.config.settings</field> + <field name="inherit_id" ref="acc_operation.res_config_settings_view_form" /> + <field name="arch" type="xml"> + <xpath expr="//div[@id='acc_settings_block']" position="inside"> + <h2>Facturation</h2> + <div + class="row mt16 o_settings_container" + id="invoice_acc_selection_settings" + > + <div class="col-12 col-lg-6 o_setting_box" id="terms_invoice"> + <div class="o_setting_right_pane"> + <label for="invoice_terms"/> + <span class="fa fa-lg fa-building-o" role="img"/> + <div class="text-muted"> + Affichage des termes et conditions générales des factures + </div> + <div class="content-group"> + <div class="mt16"> + <field name="invoice_terms" placeholder="Rédiger les termes et conditions de paiement ici..."/> + </div> + </div> + </div> + </div> + <div class="col-12 col-lg-6 o_setting_box" id="terms_invoice_tax"> + <div class="o_setting_right_pane"> + <label for="invoice_terms_tax"/> + <span class="fa fa-lg fa-building-o" role="img"/> + <div class="text-muted"> + Affichage des termes et conditions générales des taxes des factures + </div> + <div class="content-group"> + <div class="mt16"> + <field name="invoice_terms_tax" placeholder="Rédiger les termes et conditions des taxes ici..."/> + </div> + </div> + </div> + </div> + </div> + </xpath> + </field> + </record> + +</odoo>