diff --git a/__manifest__.py b/__manifest__.py index 6e76aceaccba23bed25429985e278b4b991c0a0c..316cbed434c630a3a36360c21a82bb796397cd75 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -17,6 +17,7 @@ "wizard/acc_account_wizard_views.xml", "wizard/acc_account_surplus_wizard_views.xml", # views + "views/assets.xml", "views/acc_sale_price_views.xml", "views/acc_operation_views.xml", "views/acc_counter_views.xml", diff --git a/models/acc_account.py b/models/acc_account.py index d85cc354fa210f034c4c98bbe9719ea8d0d7a1c0..1687ebddb6ba0bad10f6dc106a406c00fd96492c 100644 --- a/models/acc_account.py +++ b/models/acc_account.py @@ -229,3 +229,18 @@ class AccAccountTax(models.Model): name = fields.Char(string="Nom", required=True) amount = fields.Float(required=True, digits=(16, 4), default=0.0) + + +class AccAccountTaxTcfe(models.Model): + _name = "acc.account.tax.tcfe" + _description = "Taxe TCFE" + + def _get_default_currency_id(self): + return self.env.company.currency_id.id + + start_date = fields.Date("Début de la période") + end_date = fields.Date("Fin de la période") + currency_id = fields.Many2one( + "res.currency", "Devise", default=_get_default_currency_id + ) + price = fields.Float("Tarif", digits="Sale Price") diff --git a/models/acc_operation.py b/models/acc_operation.py index 96de41b5ce8a0d4b0921784e74bb63fc384c38b0..200184972e3e430da3be380c1813df881c9bad80 100644 --- a/models/acc_operation.py +++ b/models/acc_operation.py @@ -200,87 +200,88 @@ class AccOperation(models.Model): power_total = self.calc_power_by_cons_by_prod( acc_injection_id, acc_delivery_id, date_start, date_end ) - Account = self.env["acc.account"] + if power_total > 0: + Account = self.env["acc.account"] - acc_account = Account.create( - { - "acc_operation_id": self.id, - "acc_injection_id": acc_injection_id.id, - "acc_delivery_id": acc_delivery_id.id, - "power_cons": power_total, - "start_date": date_start, - "end_date": date_end, - "tax_tcfe": self.tax_tcfe, - } - ) - - interval_ids = self.env["acc.sale.price"].search( - [ - ("acc_operation_id", "=", self.id), - ("acc_injection_id", "=", acc_injection_id.id), - ("acc_delivery_id", "=", acc_delivery_id.id), - ("start_date", "<=", date_start), - ("end_date", "=", False), - ] - ) - if not interval_ids: - price_ids = self.env["acc.sale.price"].search( - [ - ("acc_operation_id", "=", self.id), - ("acc_injection_id", "=", acc_injection_id.id), - ("acc_delivery_id", "=", acc_delivery_id.id), - ("end_date", ">=", date_start), - ] + acc_account = Account.create( + { + "acc_operation_id": self.id, + "acc_injection_id": acc_injection_id.id, + "acc_delivery_id": acc_delivery_id.id, + "power_cons": power_total, + "start_date": date_start, + "end_date": date_end, + "tax_tcfe": self.tax_tcfe, + } ) - price2_ids = self.env["acc.sale.price"].search( + + interval_ids = self.env["acc.sale.price"].search( [ ("acc_operation_id", "=", self.id), ("acc_injection_id", "=", acc_injection_id.id), ("acc_delivery_id", "=", acc_delivery_id.id), - ("start_date", "<=", date_end), + ("start_date", "<=", date_start), + ("end_date", "=", False), ] ) - interval_ids = price_ids & price2_ids - - for interval in interval_ids: - if date_start > interval.start_date: - date_interval_start = date_start - else: - date_interval_start = interval.start_date - - if interval.end_date: - if date_end < interval.end_date: - date_interval_end = date_end + if not interval_ids: + price_ids = self.env["acc.sale.price"].search( + [ + ("acc_operation_id", "=", self.id), + ("acc_injection_id", "=", acc_injection_id.id), + ("acc_delivery_id", "=", acc_delivery_id.id), + ("end_date", ">=", date_start), + ] + ) + price2_ids = self.env["acc.sale.price"].search( + [ + ("acc_operation_id", "=", self.id), + ("acc_injection_id", "=", acc_injection_id.id), + ("acc_delivery_id", "=", acc_delivery_id.id), + ("start_date", "<=", date_end), + ] + ) + interval_ids = price_ids & price2_ids + + for interval in interval_ids: + if date_start > interval.start_date: + date_interval_start = date_start else: - date_interval_end = interval.end_date - else: - date_interval_end = date_end - - power_total = self.calc_power_by_cons_by_prod( - acc_injection_id, - acc_delivery_id, - date_interval_start, - date_interval_end, - ) + date_interval_start = interval.start_date - AccountLine = self.env["acc.account.line"] + if interval.end_date: + if date_end < interval.end_date: + date_interval_end = date_end + else: + date_interval_end = interval.end_date + else: + date_interval_end = date_end - # Création de la ligne de facture - # par intervalle de période de prix - AccountLine.create( - { - "quantity": power_total, - "price_unit": interval.price, - "acc_account_id": acc_account.id, - "start_date": date_interval_start, - "end_date": date_interval_end, - "description": "Période du " - + str(date_interval_start) - + " au " - + str(date_interval_end), - } - ) - account_list.append(acc_account) + power_total = self.calc_power_by_cons_by_prod( + acc_injection_id, + acc_delivery_id, + date_interval_start, + date_interval_end, + ) + + AccountLine = self.env["acc.account.line"] + + # Création de la ligne de facture + # par intervalle de période de prix + AccountLine.create( + { + "quantity": power_total, + "price_unit": interval.price, + "acc_account_id": acc_account.id, + "start_date": date_interval_start, + "end_date": date_interval_end, + "description": "Période du " + + str(date_interval_start) + + " au " + + str(date_interval_end), + } + ) + account_list.append(acc_account) action = self.env["ir.actions.actions"]._for_xml_id( "acc_account.action_acc_account" @@ -316,21 +317,25 @@ class AccOperation(models.Model): lazy=False, ) - prod_tot = power_tab_by_prod[0]["power"] - power_tab_by_prod[1]["power"] + if power_tab_by_prod[0]["power"] and power_tab_by_prod[1]["power"]: + prod_tot = power_tab_by_prod[0]["power"] - power_tab_by_prod[1]["power"] power_tab_by_prod = self.get_power_by_prod( acc_injection_id, date_start, date_end ) - power_autoprod_percent = ( - (power_tab_by_prod[0]["power"] - power_tab_by_prod[1]["power"]) * 100 - ) / prod_tot - power_tab_by_cons = self.get_power_by_cons( - acc_delivery_id, date_start, date_end - ) - power_total = (power_tab_by_cons[0]["power"] / 1000 / 2) * ( - power_autoprod_percent / 100 - ) + power_total = 0 + if prod_tot > 0: + power_autoprod_percent = ( + (power_tab_by_prod[0]["power"] - power_tab_by_prod[1]["power"]) * 100 + ) / prod_tot + power_tab_by_cons = self.get_power_by_cons( + acc_delivery_id, date_start, date_end + ) + if power_tab_by_cons[0]["power"]: + power_total = (power_tab_by_cons[0]["power"] / 1000 / 2) * ( + power_autoprod_percent / 100 + ) return power_total def create_account_surplus(self, date_month, account_periodicity): diff --git a/report/account_template.xml b/report/account_template.xml index 4116fa19e0ff2485b36aab4ba2ff4107450373ba..658930ad18fc139e7d364e0f193e0df7f66de36a 100644 --- a/report/account_template.xml +++ b/report/account_template.xml @@ -5,280 +5,491 @@ <template id="report_account_document"> <t t-call="acc_account.external_layout_spe"> <t t-set="o" t-value="o.with_context(lang=o.producer_id.lang)" /> - <div class="page"> - <div class="row"> - <div class="col-3"> - <img - t-if="o.producer_id.image_1920" - t-att-src="image_data_uri(o.producer_id.image_1920)" - style="max-height: 80px;" - alt="Logo" - /> - <p class="mt-2" t-field="o.producer_id.name" /> +<!-- Rapport Facture Surplus--> + <t t-if="o.is_account_buyer"> + <div class="page"> + <div class="row"> + <div class="col-3"> + <img + t-if="o.producer_id.image_1920" + t-att-src="image_data_uri(o.producer_id.image_1920)" + style="max-height: 80px;" + alt="Logo" + /> + <p class="mt-2" t-field="o.producer_id.name" /> + </div> + + <div class="col-9 text-right"> + <p class="font-weight-bold"> + <span>Facture <t t-esc="o.name" /></span><br /> + <span>En date du: <t t-esc="o.date" /> + </span><br /> + <t + t-if="o.producer_id.vat" + >TVA Intracommunautaire: <span + t-field="o.producer_id.vat" + /></t> + </p> + </div> + </div> + + <div class="row mt32 mb32"> + <div class="col-3"> + </div> + <div class="col-9"> + <div class="text-right"> + <p> + <span + class="font-weight-bold" + t-field="o.producer_id.name" + /><br /> + <span t-field="o.producer_id.street" /><br /> + <t t-if="o.producer_id.street2"><span + t-field="o.producer_id.street2" + /><br /></t> + <span t-field="o.producer_id.zip" /> - <span + t-field="o.producer_id.city" + /><br /> + </p> + </div> + + </div> </div> + <div class="row mt32 mb32"> + <div class="col-12"> + <p + >Objet: Facture de production d'énergie renouvelable - Surplus <span + t-field="o.acc_operation_id.name" + /></p> + <table + class="table table-sm o_main_table" + name="account_line_table" + > + <thead> + <tr> + <th>Description</th> + <th>Qté</th> + <th>PU H.T.</th> + <th>Total H.T.</th> + </tr> + </thead> + <tbody> + <t t-set="lines" t-value="o.line_ids" /> + <t t-set="current_subtotal" t-value="0" /> + <t t-foreach="lines" t-as="line"> + <t + t-set="current_subtotal" + t-value="current_subtotal + line.price_total" + /> + <tr class=""> + <t + name="account_invoice_line_accountable" + > + <td + name="account_invoice_line_name" + > + <span + t-field="line.description" + t-options="{'widget': 'text'}" + /> + </td> + <td class="text-right"> + <span + class="text-nowrap" + t-field="line.quantity" + /> + </td> + <td class="text-right"> + <span + class="text-nowrap" + t-field="line.price_unit" + /><span> kWh</span> + </td> + <td class="text-right"> + <span + class="text-nowrap" + t-field="line.price_total" + /> + </td> + </t> + </tr> - <div class="col-9 text-right"> - <p class="font-weight-bold"> + </t> + </tbody> + </table> + <div class="clearfix"> + <div id="total" class="row"> + <div t-attf-class="col-6 ml-auto"> + <table + class="table table-sm" + style="page-break-inside: avoid;" + > + <tr + class="border-black o_subtotal" + style="" + > + <td><strong>Sous-Total</strong></td> + <td class="text-right"> + <span + t-field="o.amount_untaxed" + /> + </td> + </tr> + <t t-if="o.is_tva"> + <tr style=""> + <t> + <td><span + class="text-nowrap" + />TVA</td> + <td + class="text-right o_price_total" + > + <span + class="text-nowrap" + t-field="o.amount_tax" + /> + </td> + </t> + </tr> + </t> + <tr style=""> + <t> + <td><span + class="text-nowrap" + />Taxes CPSE/TCF</td> + <td + class="text-right o_price_total" + > + <span + class="text-nowrap" + t-field="o.amount_tax_tcfe" + /> + </td> + </t> + </tr> + <tr class="border-black o_total"> + <td><strong>Total</strong></td> + <td class="text-right"> + <span + class="text-nowrap" + t-field="o.amount_total" + /> + </td> + </tr> + </table> + </div> + </div> + </div> + </div> + </div> + <div class="mt32 "> + <p t-if="o.producer_id.iban" name="payment_term"> + <span + class="font-weight-bold" + >Modalités de paiement : règlement par virement</span><br + /> <span - class="text-uppercase text-uppercase mt0 " - >Autoconsommation Collective <t - t-esc="o.acc_operation_id.name" - /></span><br /> + >Le règlement par virement bancaire doit être effectué sur le compte suivant :</span><br + /> + <span>IBAN : <t t-esc="o.producer_id.iban" /></span><br + /> + <span>BIC : <t t-esc="o.producer_id.bic" /></span><br /> + <br /> <span - class="text-uppercase mt0 " - >Vente d'électricité d'origine renouvelable</span><br /> - <span>Facture <t t-esc="o.name" /> du <t - t-esc="o.date" - /></span> + >Merci de bien vouloir indiquer le numéro de facture et/ou votre référence client sur l’ordre de virement</span> + </p> + <p> + 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. </p> </div> </div> - - <div class="row mt32 mb32"> - <div class="col-4"> - <div> - <p> - <span - class="text-center font-weight-bold" - >Vos références utiles</span><br /> - <span - class="font-weight-bold" - >Titulaire du contrat:</span><br /> - <t t-set="address"> - <address - t-field="o.consumer_id" - t-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": True}' - /><br /> - </t> - <span class="font-weight-bold">Courrier:</span><br - /> - <span t-field="o.consumer_id.email" /><br /> - <span - class="font-weight-bold" - >Référence Client:</span><br /> - <span t-field="o.consumer_id.ref" /> - </p> - <hr /> - <p> - <span - class="font-weight-bold" - >Référence Point de livraison:</span><br /> - <span t-field="o.acc_delivery_id.name" /><br /> - <span - class="font-weight-bold" - >Lieu de consommation:</span><br /> - <span t-field="o.consumer_id.street" /> - </p> + </t> + <t t-else=""> + <div class="page"> + <div class="row"> + <div class="col-3"> + <img + t-if="o.producer_id.image_1920" + t-att-src="image_data_uri(o.producer_id.image_1920)" + style="max-height: 80px;" + alt="Logo" + /> + <p class="mt-2" t-field="o.producer_id.name" /> </div> - <div> - <p> + + <div class="col-9 text-right"> + <p class="font-weight-bold"> <span - class="text-center font-weight-bold" - >Pour répondre à vos questions</span><br /> - <span class="font-weight-bold">Contact PMO</span><br - /> + class="text-uppercase text-uppercase mt0 " + >Autoconsommation Collective <t + t-esc="o.acc_operation_id.name" + /></span><br /> <span - class="font-weight-bold" - t-field="o.pmo_id.name" - /><br /> - <span t-field="o.pmo_id.street" /><br /> - <t t-if="o.pmo_id.street2"><span - t-field="o.pmo_id.street2" - /><br /></t> - <span t-field="o.pmo_id.zip" /> - <span - t-field="o.pmo_id.city" - /><br /> - <span class="font-weight-bold">Téléphone:</span><br + class="text-uppercase mt0 " + >Vente d'électricité d'origine renouvelable</span><br /> - <span t-field="o.pmo_id.phone" /><br /> - <span - class="text-center font-weight-bold" - >Courrier:</span><br /> - <span t-field="o.consumer_id.email" /> - </p> - <hr /> - <p> - <span - class="text-center font-weight-bold" - >Référence Autoconsommation collective:</span><br /> - <span t-field="o.acc_operation_id.name" /><br /> - <span - class="text-center font-weight-bold" - >Lieu de production:</span><br /> - <!-- <p t-field="o.consumer_id.street"/>--> + <span>Facture <t t-esc="o.name" /> du <t + t-esc="o.date" + /></span> </p> </div> </div> - <div class="col-8"> - <div class="text-right"> - <p> - <span - class="text-center font-weight-bold" - >Coordonnées de facturation</span><br /> - <span - class="font-weight-bold" - t-field="o.consumer_id.name" - /><br /> - <span t-field="o.consumer_id.street" /><br /> - <t t-if="o.consumer_id.street2"><span - t-field="o.consumer_id.street2" - /><br /></t> - <span t-field="o.consumer_id.zip" /> - <span - t-field="o.consumer_id.city" - /><br /> - </p> - </div> - <div> - <p> - <span - class="font-weight-bold" - >Synthèse de votre facture</span><br /> - <span - class="font-weight-bold" - >Période de livraison concernée : du <t - t-esc="start_date" - /> au <t t-esc="end_date" /></span><br /> - </p> - <table - class="table table-sm o_main_table" - name="account_line_table" - > - <tr> - <td>Prix de l'électricité locale</td> - <td class="text-right"> - <span - t-field="o.price_kwh" - t-options='{"widget": "monetary", "display_currency": o.currency_id}' - > HT/kWh</span> - </td> - </tr> - <tr> - <td>Consommation locale (index Enedis)</td> - <td class="text-right"> - <span t-field="o.power_cons" /> <span - >kWh</span> - </td> - </tr> - <tr> - <td>Taxes CPSE/TCF</td> - <td class="text-right"> - <span t-field="o.tax_tcfe" /> <span - >en €/kWh</span> - </td> - </tr> - <t t-set="lines" t-value="o.line_ids" /> - <t t-set="current_subtotal" t-value="0" /> - <t t-foreach="lines" t-as="line"> - <t - t-set="current_subtotal" - t-value="current_subtotal + line.price_total" + <div class="row mt32 mb32"> + <div class="col-4"> + <div> + <p> + <span + class="text-center font-weight-bold" + >Vos références utiles</span><br /> + <span + class="font-weight-bold" + >Titulaire du contrat:</span><br /> + <t t-set="address"> + <address + t-field="o.consumer_id" + t-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": True}' + /><br /> + </t> + <span + class="font-weight-bold" + >Courrier:</span><br /> + <span t-field="o.consumer_id.email" /><br /> + <span + class="font-weight-bold" + >Référence Client:</span><br /> + <span t-field="o.consumer_id.ref" /> + </p> + <hr /> + <p> + <span + class="font-weight-bold" + >Référence Point de livraison:</span><br /> + <span t-field="o.acc_delivery_id.name" /><br /> + <span + class="font-weight-bold" + >Lieu de consommation:</span><br /> + <span t-field="o.consumer_id.street" /> + </p> + </div> + <div> + <p> + <span + class="text-center font-weight-bold" + >Pour répondre à vos questions</span><br /> + <span + class="font-weight-bold" + >Contact PMO</span><br /> + <span + class="font-weight-bold" + t-field="o.pmo_id.name" + /><br /> + <span t-field="o.pmo_id.street" /><br /> + <t t-if="o.pmo_id.street2"><span + t-field="o.pmo_id.street2" + /><br /></t> + <span t-field="o.pmo_id.zip" /> - <span + t-field="o.pmo_id.city" + /><br /> + <span + class="font-weight-bold" + >Téléphone:</span><br /> + <span t-field="o.pmo_id.phone" /><br /> + <span + class="text-center font-weight-bold" + >Courrier:</span><br /> + <span t-field="o.consumer_id.email" /> + </p> + <hr /> + <p> + <span + class="text-center font-weight-bold" + >Référence Autoconsommation collective:</span><br /> - <tr class="border-black"> - <t name="account_invoice_line_accountable"> - <td name="account_invoice_line_name"> - <span - t-field="line.description" - t-options="{'widget': 'text'}" - /><br /> - à <span - class="text-nowrap" - t-field="line.price_unit" - /> € - </td> - <td class="text-right"> - <span - class="text-nowrap" - t-field="line.price_total" - /> - </td> - </t> + <span t-field="o.acc_operation_id.name" /><br /> + <span + class="text-center font-weight-bold" + >Lieu de production:</span><br /> + <!-- <p t-field="o.consumer_id.street"/>--> + </p> + </div> + </div> + <div class="col-8"> + <div class="text-right"> + <p> + <span + class="text-center font-weight-bold" + >Coordonnées de facturation</span><br /> + <span + class="font-weight-bold" + t-field="o.consumer_id.name" + /><br /> + <span t-field="o.consumer_id.street" /><br /> + <t t-if="o.consumer_id.street2"><span + t-field="o.consumer_id.street2" + /><br /></t> + <span t-field="o.consumer_id.zip" /> - <span + t-field="o.consumer_id.city" + /><br /> + </p> + </div> + <div> + <p> + <span + class="font-weight-bold" + >Synthèse de votre facture</span><br /> + <span + class="font-weight-bold" + >Période de livraison concernée : du <t + t-esc="start_date" + /> au <t t-esc="end_date" /></span><br /> + </p> + <table + class="table table-sm o_main_table" + name="account_line_table" + > + <tr> + <td>Prix de l'électricité locale</td> + <td class="text-right"> + <span + t-field="o.price_kwh" + t-options='{"widget": "monetary", "display_currency": o.currency_id}' + > HT/kWh</span> + </td> + </tr> + <tr> + <td>Consommation locale (index Enedis)</td> + <td class="text-right"> + <span t-field="o.power_cons" /> <span + >kWh</span> + </td> + </tr> + <tr> + <td>Taxes CPSE/TCF</td> + <td class="text-right"> + <span t-field="o.tax_tcfe" /> <span + >en €/kWh</span> + </td> </tr> - </t> - </table> + <t t-set="lines" t-value="o.line_ids" /> + <t t-set="current_subtotal" t-value="0" /> + <t t-foreach="lines" t-as="line"> + <t + t-set="current_subtotal" + t-value="current_subtotal + line.price_total" + /> + <tr class="border-black"> + <t + name="account_invoice_line_accountable" + > + <td + name="account_invoice_line_name" + > + <span + t-field="line.description" + t-options="{'widget': 'text'}" + /><br /> + à <span + class="text-nowrap" + t-field="line.price_unit" + /> € + </td> + <td class="text-right"> + <span + class="text-nowrap" + t-field="line.price_total" + /> + </td> + </t> + </tr> - </div> - <div class="clearfix"> - <div id="total" class="row"> - <div t-attf-class="col-6 ml-auto"> - <table - class="table table-sm" - style="page-break-inside: avoid;" - > - <tr - class="border-black o_subtotal" - style="" + </t> + </table> + + </div> + <div class="clearfix"> + <div id="total" class="row"> + <div t-attf-class="col-6 ml-auto"> + <table + class="table table-sm" + style="page-break-inside: avoid;" > - <td><strong>Sous-Total</strong></td> - <td class="text-right"> - <span t-field="o.amount_untaxed" /> - </td> - </tr> - <t t-if="o.is_tva"> + <tr + class="border-black o_subtotal" + style="" + > + <td><strong>Sous-Total</strong></td> + <td class="text-right"> + <span + t-field="o.amount_untaxed" + /> + </td> + </tr> + <t t-if="o.is_tva"> + <tr style=""> + <t> + <td><span + class="text-nowrap" + />TVA</td> + <td + class="text-right o_price_total" + > + <span + class="text-nowrap" + t-field="o.amount_tax" + /> + </td> + </t> + </tr> + </t> <tr style=""> <t> <td><span class="text-nowrap" - />TVA</td> + />Taxes CPSE/TCF</td> <td class="text-right o_price_total" > <span class="text-nowrap" - t-field="o.amount_tax" + t-field="o.amount_tax_tcfe" /> </td> </t> </tr> - </t> - <tr style=""> - <t> - <td><span - class="text-nowrap" - />Taxes CPSE/TCF</td> - <td - class="text-right o_price_total" - > + <tr class="border-black o_total"> + <td><strong>Total</strong></td> + <td class="text-right"> <span class="text-nowrap" - t-field="o.amount_tax_tcfe" + t-field="o.amount_total" /> </td> - </t> - </tr> - <tr class="border-black o_total"> - <td><strong>Total</strong></td> - <td class="text-right"> - <span - class="text-nowrap" - t-field="o.amount_total" - /> - </td> - </tr> - </table> + </tr> + </table> + </div> </div> </div> </div> </div> - </div> - - <p t-if="o.producer_id.iban" name="payment_term" class="mt32 "> - <span - class="font-weight-bold" - >Modalités de paiement : règlement par virement</span><br /> - <span - >Le règlement par virement bancaire doit être effectué sur le compte suivant :</span><br - /> - <span>IBAN : <t t-esc="o.producer_id.iban" /></span><br /> - <span>BIC : <t t-esc="o.producer_id.bic" /></span><br /> - <br /> - <span - >Merci de bien vouloir indiquer le numéro de facture et/ou votre référence client sur l’ordre de virement</span> - </p> - </div> + <p t-if="o.producer_id.iban" name="payment_term" class="mt32 "> + <span + class="font-weight-bold" + >Modalités de paiement : règlement par virement</span><br /> + <span + >Le règlement par virement bancaire doit être effectué sur le compte suivant :</span><br + /> + <span>IBAN : <t t-esc="o.producer_id.iban" /></span><br /> + <span>BIC : <t t-esc="o.producer_id.bic" /></span><br /> + <br /> + <span + >Merci de bien vouloir indiquer le numéro de facture et/ou votre référence client sur l’ordre de virement</span> + </p> + </div> + </t> <div t-attf-class="footer o_boxed_footer o_company_layout"> <div class="text-center"> <ul class="list-inline"> diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index d95fc03162ed4524ec00eb48e2c465a3d2662ca9..f4fd523374c9c8fbda2a29b36780121e2181243c 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -17,3 +17,5 @@ id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink "access_acc_account_wizard_group_user","acc_account_wizard group_user","model_acc_account_wizard","base.group_user",1,0,0,0 "access_acc_account_surplus_wizard_group_partner_manager","acc_account_surplus_wizard group_partner_manager","model_acc_account_surplus_wizard","base.group_partner_manager",1,1,1,1 "access_acc_account_surplus_wizard_group_user","acc_account_surplus_wizard group_user","model_acc_account_surplus_wizard","base.group_user",1,0,0,0 +"access_acc_account_tax_tcfe_group_partner_manager","acc_account_tax_tcfe group_partner_manager","model_acc_account_tax_tcfe","base.group_partner_manager",1,1,1,1 +"access_acc_account_tax_tcfe_group_user","acc_account_tax_tcfe group_user","model_acc_account_tax_tcfe","base.group_user",1,0,0,0 diff --git a/static/src/scss/style.scss b/static/src/scss/style.scss new file mode 100644 index 0000000000000000000000000000000000000000..9351058055958b1f8714096d6d2d98c3ff8d4dc2 --- /dev/null +++ b/static/src/scss/style.scss @@ -0,0 +1,9 @@ +.o_report_layout_boxed .row > div > table tr:last-child td { + background-color: #fff !important; + color: #495057 !important; +} + +.o_report_layout_boxed .row > div > table tr.o_total strong, +.o_report_layout_boxed div#total table tr.o_total strong { + color: #000 !important; +} diff --git a/views/acc_account_views.xml b/views/acc_account_views.xml index f2c91fdcdaabbc14c09acd63263c648b1b9785f2..29f1ed98919eb9c76451361b447482dfbc2a694a 100644 --- a/views/acc_account_views.xml +++ b/views/acc_account_views.xml @@ -387,5 +387,11 @@ </field> </record> + <record id="acc_action_tcfe_form" model="ir.actions.act_window"> + <field name="name">Taxes</field> + <field name="res_model">acc.account.tax.tcfe</field> + <field name="view_mode">tree,form</field> + </record> + </data> </odoo> diff --git a/views/assets.xml b/views/assets.xml new file mode 100644 index 0000000000000000000000000000000000000000..d491fe7782d48cc634345790ebd95b621397cb34 --- /dev/null +++ b/views/assets.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" ?> +<odoo> + <!-- Assets for reports --> + <template id="report_assets_common" inherit_id="web.report_assets_common"> + <xpath expr="." position="inside">--> + <link + rel="stylesheet" + type="text/scss" + href="/acc_account/static/src/scss/style.scss" + /> + </xpath> + </template> + +</odoo> diff --git a/views/menu_views.xml b/views/menu_views.xml index 9b74b585654439567141dbee2926a226e2bef500..9235f26eeb97c98c0a74688cdd281a17c79c50e1 100644 --- a/views/menu_views.xml +++ b/views/menu_views.xml @@ -41,5 +41,13 @@ action="acc_action_tax_form" /> + <menuitem + id="acc_account_tcfe_menu" + parent="menu_account" + name="Taxes TCFE" + sequence="50" + action="acc_action_tcfe_form" + /> + </data> </odoo> diff --git a/wizard/acc_sale_price_wizard.py b/wizard/acc_sale_price_wizard.py index dce4c398938f916e5218ee6ba0b282cc5008d4d7..96818cbbdee4d28831eb2228eeabca99d5755c43 100644 --- a/wizard/acc_sale_price_wizard.py +++ b/wizard/acc_sale_price_wizard.py @@ -28,9 +28,9 @@ class AccSalePriceWizard(models.TransientModel): ("acc_operation_id", "=", self.env.context.get("active_id")), ] ) - recs = self.env["res.partner"].search( + recs = self.env["acc.counter"].search( [ - ("is_b", "=", True), + ("is_delivery", "=", True), ("acc_operation_id", "=", self.env.context.get("active_id")), ] )