Skip to content
Extraits de code Groupes Projets
Valider a53ea012 rédigé par Julien - Le Filament's avatar Julien - Le Filament
Parcourir les fichiers

[FIX] fix horodate on period

parent b91be7ca
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!23[FIX] fix horodate on period
......@@ -136,7 +136,8 @@ class AccOperation(models.Model):
_("Pas de données brute pour le mois précedent présente")
)
# contrôle, l'ensemble des affectations ne doit pas dépasser la production à affecter
# contrôle, l'ensemble des affectations ne
# doit pas dépasser la production à affecter
for slot in data:
item = data.get(slot)
affect = item.get("affect")
......@@ -147,7 +148,8 @@ class AccOperation(models.Model):
if abs(affect_sum + remaining_prod - total_production) > 1e-3:
raise ValidationError(
_(
"Une erreur s'est produite lors de l'affectation de l'auto-consommation"
"Une erreur s'est produite lors de "
"l'affectation de l'auto-consommation"
)
)
......@@ -158,14 +160,18 @@ class AccOperation(models.Model):
if affect:
total_production = item.get("prod_initiale")
# calcul du pourcentage attribué à chaque compteur par rapport à la production totale
# calcul du pourcentage attribué à chaque
# compteur par rapport à la production totale
weights = {}
for counter_id in affect:
affecte_counter = affect.get(counter_id)
if total_production == 0:
weight = 0.0
else:
weight = math.floor((affecte_counter * 100 / total_production) * 1e+6) / 1e+6
weight = (
math.floor((affecte_counter * 100 / total_production) * 1e6)
/ 1e6
)
weights[counter_id] = weight
slot_line = []
......@@ -381,9 +387,11 @@ class AccOperation(models.Model):
"""
counter_period = {}
res = [
datetime.strptime(d, "%d-%m-%y")
d.date()
for d in list(
OrderedDict.fromkeys([h.strftime("%d-%m-%y") for h in date_list])
OrderedDict.fromkeys(
[utc_to_local(h, "Europe/Paris") for h in date_list]
)
)
]
for date_item in res:
......
......@@ -189,7 +189,8 @@ class AccPriorityGroup(models.Model):
total_affecte += part_a_affecter
data[slot]["prod_totale"] = remaining_prod - total_affecte
# possiblement on peut avoir affecté plus que la production total_affecte=496.00000000000006
# possiblement on peut avoir affecté plus que la p
# roduction total_affecte=496.00000000000006
return data
......
......@@ -39,9 +39,16 @@ class AccPriorityGroupCounter(models.Model):
string="Counter domain", compute="_compute_acc_counter_id_domain"
)
acc_counter_share = fields.Float(string='Quote-part', help="Part de la production affectée à ce PRM, au prorata de l'ensemble des parts affectées aux autres PRMs")
group_type_algo = fields.Selection(related="acc_priority_group_id.type_algo", readonly=True)
acc_counter_percentage = fields.Float(compute="_compute_acc_counter_percentage", store=False)
acc_counter_share = fields.Float(
string="Quote-part",
help="Part de la production affectée à ce PRM, au prorata de l'ensemble des parts affectées aux autres PRMs",
)
group_type_algo = fields.Selection(
related="acc_priority_group_id.type_algo", readonly=True
)
acc_counter_percentage = fields.Float(
compute="_compute_acc_counter_percentage", store=False
)
# ------------------------------------------------------
# SQL Constraints
......@@ -55,11 +62,15 @@ class AccPriorityGroupCounter(models.Model):
# Computed fields / Search Fields
# ------------------------------------------------------
@api.depends('acc_priority_group_id.acc_priority_group_counter_ids', "acc_counter_share")
@api.depends(
"acc_priority_group_id.acc_priority_group_counter_ids", "acc_counter_share"
)
def _compute_acc_counter_percentage(self):
for record in self:
total_share = record.acc_priority_group_id.total_share
record.acc_counter_percentage = record.acc_counter_share / total_share if total_share else 0
record.acc_counter_percentage = (
record.acc_counter_share / total_share if total_share else 0
)
@api.depends("acc_counter_id", "acc_priority_group_id")
def _compute_acc_counter_id_domain(self):
......@@ -121,14 +132,16 @@ class AccPriorityGroupCounter(models.Model):
return group_ids
def action_open_counter_share_form(self):
print('action_open_counter_share_form')
print("action_open_counter_share_form")
return {
'type': 'ir.actions.act_window',
'name': 'Modifier la quote-part du point de soutirage',
'res_model': 'acc.priority.group.counter',
'view_mode': 'form',
'target': 'new',
'res_id': self.id,
'view_id': self.env.ref('oacc_repartition_keys.acc_operation_priority_group_counter_share_form').id,
"type": "ir.actions.act_window",
"name": "Modifier la quote-part du point de soutirage",
"res_model": "acc.priority.group.counter",
"view_mode": "form",
"target": "new",
"res_id": self.id,
"view_id": self.env.ref(
"oacc_repartition_keys.acc_operation_priority_group_counter_share_form"
).id,
#'context': {'default_field_name': 'Auto-filled Text'}
}
......@@ -88,15 +88,26 @@
<div><field name="counter_owner" /></div>
<div><field name="counter_street" /></div>
<field name="group_type_algo" invisible="1" />
<group attrs="{'invisible': [('group_type_algo', '!=', 'quotepart')]}">
<group
attrs="{'invisible': [('group_type_algo', '!=', 'quotepart')]}"
>
<div class="d-flex justify-content-between">
<div>
<div>
Quote-part: <field name="acc_counter_share"/>
(<field name="acc_counter_percentage" widget="percentage"/>)
Quote-part: <field
name="acc_counter_share"
/>
(<field
name="acc_counter_percentage"
widget="percentage"
/>)
</div>
</div>
<div class="align-self-end"><button name="action_open_counter_share_form" type="object" class="btn btn-sm btn-primary text-end">Modifier</button></div>
<div class="align-self-end"><button
name="action_open_counter_share_form"
type="object"
class="btn btn-sm btn-primary text-end"
>Modifier</button></div>
</div>
</group>
</div>
......
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