Skip to content
Extraits de code Groupes Projets
Valider a88f62e1 rédigé par Juliana's avatar Juliana
Parcourir les fichiers

[UPD] Update tax

parent 9e614445
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# Copyright 2021 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
from dateutil.relativedelta import relativedelta
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class AccAccount(models.Model):
......@@ -91,18 +94,12 @@ class AccAccount(models.Model):
amount_tax = fields.Monetary(
string="Taxe", store=True, readonly=True, compute="_compute_amount"
)
amount_tax_tcfe = fields.Monetary(
string="Taxes CPSE/TCF", store=True, readonly=True, compute="_compute_amount"
)
amount_total = fields.Monetary(
string="Total", store=True, readonly=True, compute="_compute_amount"
)
# inverse='_inverse_amount_total')
power_cons = fields.Float("Consommation locale (index Enedis)")
url = fields.Char("URL", compute="_compute_url", store=True)
tax_tcfe = fields.Float(
"Taxes CPSE/TCF (en €/kWh)", digits="Sale Price", default=0.105
)
@api.model_create_multi
def create(self, vals_list):
......@@ -141,13 +138,11 @@ class AccAccount(models.Model):
"line_ids.price_total",
"line_ids.price_unit",
"line_ids.quantity",
"tax_tcfe",
)
def _compute_amount(self):
for move in self:
total_tax = 0.0
total = 0.0
amount_tax_tcfe = 0.0
tot_qty = 0.0
for line in move.line_ids:
......@@ -157,13 +152,9 @@ class AccAccount(models.Model):
if move.is_tva and move.tax_id:
total_tax = (total * move.tax_id.amount) / 100
if move.tax_tcfe > 0:
amount_tax_tcfe = (tot_qty * move.tax_tcfe) / 100
move.amount_untaxed = total
move.amount_tax = total_tax
move.amount_tax_tcfe = amount_tax_tcfe
move.amount_total = total + total_tax + amount_tax_tcfe
move.amount_total = total + total_tax
def _compute_url(self):
for account in self:
......@@ -243,3 +234,44 @@ class AccAccountTaxTcfe(models.Model):
"res.currency", "Devise", default=_get_default_currency_id
)
price = fields.Float("Tarif", digits="Sale Price")
@api.model_create_multi
def create(self, vals_list):
new_vals = []
for vals in vals_list:
if "start_date" in vals:
start_date = fields.Date.to_date(vals["start_date"])
# If date start period doesn't exist
price_ids = self.env["acc.account.tax.tcfe"].search([])
# Creation d'une nouvelle période date anniversaire à date renseignée - 1 jour
if not price_ids:
val_new = {
"price": vals["price"],
"start_date": "01/01/2000",
"end_date": start_date - relativedelta(days=1),
}
new_vals.append(val_new)
# Si une période existe après la date renseignée
price_ids = self.env["acc.account.tax.tcfe"].search(
[
("start_date", "<=", start_date),
("end_date", ">", start_date),
]
)
if price_ids:
raise ValidationError(
_("Un prix de vente existe déjà pour cette date là")
)
price_id = self.env["acc.account.tax.tcfe"].search([],
limit=1,
order="create_date desc",
)
if price_id:
price_id.end_date = start_date - relativedelta(days=1)
vals_list += new_vals
res = super(AccAccountTaxTcfe, self).create(vals_list)
return res
......@@ -43,9 +43,6 @@ class AccOperation(models.Model):
string="Nombre de factures Surplus",
compute="_compute_acc_account_surplus_count",
)
tax_tcfe = fields.Float(
"Taxes CPSE/TCF (en €/kWh)", digits="Sale Price", default=0.105
)
# ------------------------------------------------------
# SQL Constraints
......@@ -211,7 +208,6 @@ class AccOperation(models.Model):
"power_cons": power_total,
"start_date": date_start,
"end_date": date_end,
"tax_tcfe": self.tax_tcfe,
}
)
......@@ -243,6 +239,8 @@ class AccOperation(models.Model):
)
interval_ids = price_ids & price2_ids
# Création des lignes de facturation
# pour chaque période de tarifs trouvée
for interval in interval_ids:
if date_start > interval.start_date:
date_interval_start = date_start
......@@ -283,6 +281,67 @@ class AccOperation(models.Model):
)
account_list.append(acc_account)
tax_interval_ids = self.env["acc.account.tax.tcfe"].search(
[
("start_date", "<=", date_start),
("end_date", "=", False),
]
)
if not tax_interval_ids:
tax_ids = self.env["acc.account.tax.tcfe"].search(
[
("end_date", ">=", date_start),
]
)
tax2_ids = self.env["acc.account.tax.tcfe"].search(
[
("start_date", "<=", date_end),
]
)
tax_interval_ids = tax_ids & tax2_ids
# Création des lignes de facturation
# pour chaque période de taxes trouvée
for interval in tax_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
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,
)
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": "TCFE - 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"
)
......
......@@ -152,21 +152,6 @@
</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">
......@@ -456,21 +441,6 @@
</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">
......
......@@ -241,10 +241,6 @@
<field name="start_date" />
<field name="end_date" />
<field name="power_cons" />
<field
name="tax_tcfe"
options="{'field_digits': True}"
/>
</group>
</group>
<group>
......@@ -296,7 +292,6 @@
name="amount_tax"
attrs="{'invisible': [('is_tva', '=', False)]}"
/>
<field name="amount_tax_tcfe" readonly="1" />
<field
name="amount_total"
class="oe_subtotal_footer_separator"
......@@ -383,6 +378,19 @@
</field>
</record>
<record id="acc_view_tax_tcfe_tree" model="ir.ui.view">
<field name="name">acc.account.tax.tcfe.tree</field>
<field name="model">acc.account.tax.tcfe</field>
<field name="arch" type="xml">
<tree string="Taxes TCFE">
<field name="start_date" />
<field name="end_date" />
<field name="currency_id" />
<field name="price" />
</tree>
</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>
......
......@@ -123,9 +123,6 @@
name="account"
attrs="{'invisible': [('is_account_active', '=', False)]}"
>
<group>
<field name="tax_tcfe" options="{'field_digits': True}" />
</group>
<field
name="acc_account_ids"
widget="one2many"
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter