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): ...@@ -136,7 +136,8 @@ class AccOperation(models.Model):
_("Pas de données brute pour le mois précedent présente") _("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: for slot in data:
item = data.get(slot) item = data.get(slot)
affect = item.get("affect") affect = item.get("affect")
...@@ -147,7 +148,8 @@ class AccOperation(models.Model): ...@@ -147,7 +148,8 @@ class AccOperation(models.Model):
if abs(affect_sum + remaining_prod - total_production) > 1e-3: if abs(affect_sum + remaining_prod - total_production) > 1e-3:
raise ValidationError( 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): ...@@ -158,14 +160,18 @@ class AccOperation(models.Model):
if affect: if affect:
total_production = item.get("prod_initiale") 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 = {} weights = {}
for counter_id in affect: for counter_id in affect:
affecte_counter = affect.get(counter_id) affecte_counter = affect.get(counter_id)
if total_production == 0: if total_production == 0:
weight = 0.0 weight = 0.0
else: 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 weights[counter_id] = weight
slot_line = [] slot_line = []
...@@ -381,9 +387,11 @@ class AccOperation(models.Model): ...@@ -381,9 +387,11 @@ class AccOperation(models.Model):
""" """
counter_period = {} counter_period = {}
res = [ res = [
datetime.strptime(d, "%d-%m-%y") d.date()
for d in list( 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: for date_item in res:
......
...@@ -189,7 +189,8 @@ class AccPriorityGroup(models.Model): ...@@ -189,7 +189,8 @@ class AccPriorityGroup(models.Model):
total_affecte += part_a_affecter total_affecte += part_a_affecter
data[slot]["prod_totale"] = remaining_prod - total_affecte 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 return data
......
...@@ -39,9 +39,16 @@ class AccPriorityGroupCounter(models.Model): ...@@ -39,9 +39,16 @@ class AccPriorityGroupCounter(models.Model):
string="Counter domain", compute="_compute_acc_counter_id_domain" 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") acc_counter_share = fields.Float(
group_type_algo = fields.Selection(related="acc_priority_group_id.type_algo", readonly=True) string="Quote-part",
acc_counter_percentage = fields.Float(compute="_compute_acc_counter_percentage", store=False) 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 # SQL Constraints
...@@ -55,11 +62,15 @@ class AccPriorityGroupCounter(models.Model): ...@@ -55,11 +62,15 @@ class AccPriorityGroupCounter(models.Model):
# Computed fields / Search Fields # 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): def _compute_acc_counter_percentage(self):
for record in self: for record in self:
total_share = record.acc_priority_group_id.total_share 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") @api.depends("acc_counter_id", "acc_priority_group_id")
def _compute_acc_counter_id_domain(self): def _compute_acc_counter_id_domain(self):
...@@ -121,14 +132,16 @@ class AccPriorityGroupCounter(models.Model): ...@@ -121,14 +132,16 @@ class AccPriorityGroupCounter(models.Model):
return group_ids return group_ids
def action_open_counter_share_form(self): def action_open_counter_share_form(self):
print('action_open_counter_share_form') print("action_open_counter_share_form")
return { return {
'type': 'ir.actions.act_window', "type": "ir.actions.act_window",
'name': 'Modifier la quote-part du point de soutirage', "name": "Modifier la quote-part du point de soutirage",
'res_model': 'acc.priority.group.counter', "res_model": "acc.priority.group.counter",
'view_mode': 'form', "view_mode": "form",
'target': 'new', "target": "new",
'res_id': self.id, "res_id": self.id,
'view_id': self.env.ref('oacc_repartition_keys.acc_operation_priority_group_counter_share_form').id, "view_id": self.env.ref(
"oacc_repartition_keys.acc_operation_priority_group_counter_share_form"
).id,
#'context': {'default_field_name': 'Auto-filled Text'} #'context': {'default_field_name': 'Auto-filled Text'}
} }
...@@ -88,15 +88,26 @@ ...@@ -88,15 +88,26 @@
<div><field name="counter_owner" /></div> <div><field name="counter_owner" /></div>
<div><field name="counter_street" /></div> <div><field name="counter_street" /></div>
<field name="group_type_algo" invisible="1" /> <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 class="d-flex justify-content-between">
<div> <div>
<div> <div>
Quote-part: <field name="acc_counter_share"/> Quote-part: <field
(<field name="acc_counter_percentage" widget="percentage"/>) name="acc_counter_share"
/>
(<field
name="acc_counter_percentage"
widget="percentage"
/>)
</div> </div>
</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> </div>
</group> </group>
</div> </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