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