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

[REF] PRM periods

parent 5b7b4806
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -90,11 +90,14 @@ class AccOperation(models.Model):
- date de début opération
"""
self._check_access_api()
# TODO: Update to get curves only for existing periods
# Si pas de PRM sélectionnés
if not usage_point_cons_ids and not usage_point_prod_ids:
usage_point_cons_ids = self.acc_delivery_ids
usage_point_prod_ids = self.acc_injection_ids
usage_point_cons_ids = self.acc_delivery_period_ids.mapped("acc_counter_id")
usage_point_prod_ids = self.acc_injection_period_ids.mapped(
"acc_counter_id"
)
message = ""
message += (
......@@ -236,6 +239,7 @@ class AccOperation(models.Model):
de mois entre la date de début de contrat et la date du jour. Puis
récupération des données de tous les mois
"""
# TODO: Update to get curves only for existing periods
nb_months = (date.today().year - self.date_start_contract.year) * 12 + (
date.today().month - self.date_start_contract.month
)
......@@ -258,6 +262,7 @@ class AccOperation(models.Model):
- liste des PRM
- date de début opération
"""
# TODO : refactor, too complex
self._check_access_api()
message = ""
message += (
......@@ -282,12 +287,11 @@ class AccOperation(models.Model):
if usage_point["end"] != "9999-12-31"
else False
)
usage_id = self.env["acc.counter"].search(
[
("acc_operation_id", "=", self.id),
("name", "=", usage_point["usage_point_id"]),
]
)
usage_point_prm_type = False
if usage_point["type"] == "CONS":
usage_point_prm_type = "delivery"
elif usage_point["type"] == "PROD":
usage_point_prm_type = "injection"
message += (
"<br/>PRM "
+ usage_point["usage_point_id"]
......@@ -297,50 +301,50 @@ class AccOperation(models.Model):
+ usage_point["end"]
+ "<br/>"
)
if usage_id and len(usage_id) == 1:
counter_id = self.env["acc.counter"].search(
[
("acc_operation_id", "=", self.id),
("name", "=", usage_point["usage_point_id"]),
]
)
if counter_id and len(counter_id) == 1:
message += "PRM existe dans Odoo<br/>"
if not usage_id.date_start_contract:
usage_id.date_start_contract = usage_point_start
counter_period_ids = counter_id.period_ids
if counter_period_ids.filtered(
lambda p: p.date_start == usage_point_start
and p.date_end == usage_point_end
):
message += (
"mise à jour date de début " + usage_point["start"] + "<br/>"
"période existante avec les mêmes dates, pas de modif<br/>"
)
elif usage_id.date_start_contract != usage_point_start:
elif counter_period_ids.filtered(
lambda p: p.date_start == usage_point_start
):
counter_period_ids.filtered(
lambda p: p.date_start == usage_point_start
).date_end = usage_point_end
message += (
"date de début ne correspond pas, "
"merci de vérifier manuellement ce PRM : "
"date de début Odoo : "
+ fields.Date.to_string(usage_id.date_start_contract)
+ "<br/>"
"période existante avec la même date de début, mais date de "
"fin différente, mise à jour date de fin<br/>"
)
if usage_point_end and not usage_id.date_end_contract:
usage_id.date_end_contract = usage_point_end
message += (
"mise à jour date de fin : " + usage_point["end"] + "<br/>"
else:
self.env["acc.counter.period"].create(
{
"acc_counter_id": counter_id.id,
"prm_type": usage_point_prm_type,
"acc_operation_id": self.id,
"date_start": usage_point_start,
"date_end": usage_point_end,
}
)
elif usage_id.date_end_contract != usage_point_end:
message += (
"date de fin ne correspond pas"
", merci de vérifier manuellement ce PRM : "
"date de fin Odoo : "
+ fields.Date.to_string(usage_id.date_end_contract)
+ "<br/>"
"période inexistante avec les mêmes dates : création<br/>"
)
if usage_point["type"] == "CONS" and not usage_id.is_delivery:
usage_id.is_delivery = True
message += "PRM configuré comme point de soutirage <br/>"
if usage_point["type"] == "PROD" and not usage_id.is_injection:
usage_id.is_injection = True
message += "PRM configuré comme point d'injection <br/>"
elif len(usage_id) > 1:
elif len(counter_id) > 1:
message += "Plusieurs PRMs trouvés avec ce numéro - pas de modif<br/>"
else:
message += "PRM n'existe pas : Création ...<br/>"
is_delivery = False
is_injection = False
if usage_point["type"] == "CONS":
is_delivery = True
if usage_point["type"] == "PROD":
is_injection = True
if usage_point_prm_type == "injection":
# Si la date de l'opération n'est pas renseignée ou
# après la date de démarrage du point d'injection
# alors on force la date à celle du point d'injection
......@@ -349,25 +353,29 @@ class AccOperation(models.Model):
or self.date_start_contract > usage_point_start
):
self.date_start_contract = usage_point_start
usage_id = self.env["acc.counter"].create(
counter_id = self.env["acc.counter"].create(
{
"name": usage_point["usage_point_id"],
"is_delivery": is_delivery,
"is_injection": is_injection,
}
)
self.env["acc.counter.period"].create(
{
"acc_counter_id": counter_id.id,
"prm_type": usage_point_prm_type,
"acc_operation_id": self.id,
"date_start_contract": usage_point_start,
"date_end_contract": usage_point_end,
"date_start": usage_point_start,
"date_end": usage_point_end,
}
)
message += "Fin de la création du PRM<br/>"
if usage_point["type"] == "PROD":
if usage_point_prm_type == "injection":
if usage_point["usage_point_id"] not in list_injection:
list_injection.append(usage_point["usage_point_id"])
if usage_point["type"] == "CONS":
if usage_point_prm_type == "delivery":
if usage_point["usage_point_id"] not in list_soutirage:
list_soutirage.append(usage_point["usage_point_id"])
message += "<p>LISTE TOTAL DE PRMs: </br>" "PRM Injection </br>"
message += "<p>LISTE TOTAL DE PRMs: </br>PRM Injection</br>"
i = 1
for inj in list_injection:
......
......@@ -30,7 +30,8 @@ class AccOperationWizard(models.TransientModel):
relation="acc_counter_cons_rel",
column1="cons_id",
column2="op_id",
domain=[("is_delivery", "=", True)],
# TODO: rework domain ?
# domain=[("prm_type", "=", "injection")],
string="PRM de soutirage",
)
prm_prod_ids = fields.Many2many(
......@@ -38,7 +39,8 @@ class AccOperationWizard(models.TransientModel):
relation="acc_counter_prod_rel",
column1="prod_id",
column2="op_id",
domain=[("is_injection", "=", True)],
# TODO: rework domain ?
# domain=[("is_injection", "=", True)],
string="PRM d'injection",
)
......
......@@ -19,7 +19,8 @@ class AccOperationWizardConfirm(models.TransientModel):
relation="acc_counter_cons_confirm_rel",
column1="cons_id",
column2="op_id",
domain=[("is_delivery", "=", True)],
# TODO: rework domain ?
# domain=[("is_delivery", "=", True)],
string="PRM de soutirage",
)
prm_prod_ids = fields.Many2many(
......@@ -27,7 +28,8 @@ class AccOperationWizardConfirm(models.TransientModel):
relation="acc_counter_prod_confirm_rel",
column1="prod_id",
column2="op_id",
domain=[("is_injection", "=", True)],
# TODO: rework domain ?
# domain=[("is_injection", "=", True)],
string="PRM d'injection",
)
rec_ids = fields.Many2many("acc.enedis.cdc", string="Records")
......
......@@ -11,15 +11,16 @@
<field
name="prm_cons_ids"
widget="many2many_tags"
domain="[('is_delivery', '=', True), ('acc_operation_id', '=', operation_id)]"
options="{'no_create_edit': True, 'no_create': True}"
/>
<!-- TODO rework domain="[('prm_type', '=', 'delivery'), ('acc_operation_id', '=', operation_id)]" -->
<field
name="prm_prod_ids"
widget="many2many_tags"
options="{'no_create_edit': True, 'no_create': True}"
domain="[('is_injection', '=', True), ('acc_operation_id', '=', operation_id)]"
/>
<!-- TODO rework domain="[('is_injection', '=', True), ('acc_operation_id', '=', operation_id)]" -->
</group>
<group name="period" string="Période" col="2">
<field name="date_start" />
......
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