Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
O
oacc_overview_cdc
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse du dépôt
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté GitLab
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Ce projet est archivé. Le dépôt et les autres ressources du projet sont en lecture seule.
Afficher davantage de fils d'Ariane
Le Filament
Opération Auto-Consommation Collective
oacc_overview_cdc
Validations
9ecaf1a0
Valider
9ecaf1a0
rédigé
17 janv. 2024
par
Rémi - Le Filament
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
[UPD] name parameters and fix dates
parent
467da72b
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
1
Afficher les modifications d'espaces
En ligne
Côte à côte
Affichage de
1 fichier modifié
models/acc_operation.py
+61
-35
61 ajouts, 35 suppressions
models/acc_operation.py
avec
61 ajouts
et
35 suppressions
models/acc_operation.py
+
61
−
35
Voir le fichier @
9ecaf1a0
# Copyright 2021- Le Filament (https://le-filament.com)
# Copyright 2021- Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from
datetime
import
datetime
,
time
from
datetime
import
datetime
from
dateutil.relativedelta
import
relativedelta
from
dateutil.relativedelta
import
relativedelta
from
odoo
import
_
,
models
from
odoo
import
_
,
fields
,
models
from
odoo.exceptions
import
ValidationError
from
odoo.exceptions
import
ValidationError
from
odoo.osv
import
expression
from
odoo.osv
import
expression
from
odoo.tools
import
date_utils
from
odoo.tools
import
date_utils
...
@@ -47,14 +47,16 @@ class AccOperation(models.Model):
...
@@ -47,14 +47,16 @@ class AccOperation(models.Model):
start_date
,
end_date
=
self
.
get_interval
(
"
month
"
,
last_record
)
start_date
,
end_date
=
self
.
get_interval
(
"
month
"
,
last_record
)
end_date_month
=
end_date
+
relativedelta
(
days
=
1
)
end_date_month
=
end_date
+
relativedelta
(
days
=
1
)
query
=
(
query
=
(
self
.
_select_clause
(
"
month
"
,
[
"
cons
"
,
"
prod
"
,
"
autocons
"
])
self
.
_select_clause
(
date_slot
=
"
month
"
,
curve_types
=
[
"
cons
"
,
"
prod
"
,
"
autocons
"
]
)
+
self
.
_from_clause
()
+
self
.
_from_clause
()
+
self
.
_where_clause
(
+
self
.
_where_clause
(
self
.
id
,
operation_id
=
self
.
id
,
start_date
,
start_date
=
start_date
,
end_date_month
,
end_date
=
end_date_month
,
)
)
+
self
.
_group_clause
(
"
month
"
)
+
self
.
_group_clause
(
date_slot
=
"
month
"
)
+
self
.
_order_clause
()
+
self
.
_order_clause
()
)
)
self
.
env
.
cr
.
execute
(
query
)
self
.
env
.
cr
.
execute
(
query
)
...
@@ -103,9 +105,8 @@ class AccOperation(models.Model):
...
@@ -103,9 +105,8 @@ class AccOperation(models.Model):
"""
"""
# Convert end datetime to timezone
# Convert end datetime to timezone
last_day_start
=
datetime
.
combine
(
cdc_record
.
date_slot
,
time
.
min
)
cdc_datetime
=
fields
.
Datetime
.
context_timestamp
(
self
,
cdc_record
.
date_slot
)
last_day_end
=
datetime
.
combine
(
cdc_record
.
date_slot
,
time
.
max
)
start_month
,
end_month
=
date_utils
.
get_month
(
cdc_datetime
)
start_month
,
end_month
=
date_utils
.
get_month
(
cdc_record
.
date_slot
)
if
scale
==
"
year
"
:
if
scale
==
"
year
"
:
end_date
=
end_month
end_date
=
end_month
...
@@ -114,11 +115,11 @@ class AccOperation(models.Model):
...
@@ -114,11 +115,11 @@ class AccOperation(models.Model):
end_date
=
end_month
end_date
=
end_month
start_date
=
start_month
start_date
=
start_month
elif
scale
==
"
week
"
:
elif
scale
==
"
week
"
:
end_date
=
last_day_end
end_date
=
cdc_datetime
.
date
()
start_date
=
last_day_end
-
relativedelta
(
days
=
7
)
start_date
=
cdc_datetime
.
date
()
-
relativedelta
(
days
=
6
)
elif
scale
==
"
day
"
:
elif
scale
==
"
day
"
:
end_date
=
last_day_end
end_date
=
cdc_datetime
.
date
()
start_date
=
last_day_start
start_date
=
cdc_datetime
.
date
()
else
:
else
:
raise
ValueError
(
raise
ValueError
(
_
(
_
(
...
@@ -222,8 +223,8 @@ class AccOperation(models.Model):
...
@@ -222,8 +223,8 @@ class AccOperation(models.Model):
Function to build WHERE section of query for retrieving curves
Function to build WHERE section of query for retrieving curves
@param
@param
int operation_id : id of operation for which curves should be retrieved
int operation_id : id of operation for which curves should be retrieved
date
time
start_date : first date
time
to be retrieved
date start_date : first date to be retrieved
date
time
end_date : last date
time
to be retrieved
date end_date : last date to be retrieved
int prm_id : id of PRM to be retrieved (optional)
int prm_id : id of PRM to be retrieved (optional)
char extra_curve_type : extra curve to be retrieved (optional)
char extra_curve_type : extra curve to be retrieved (optional)
(allowed values :
'
cons
'
,
'
autocons
'
,
'
allocons
'
,
(allowed values :
'
cons
'
,
'
autocons
'
,
'
allocons
'
,
...
@@ -236,10 +237,13 @@ class AccOperation(models.Model):
...
@@ -236,10 +237,13 @@ class AccOperation(models.Model):
and
not
isinstance
(
end_date
,
datetime
)
and
not
isinstance
(
end_date
,
datetime
)
):
):
raise
ValidationError
(
_
(
"
WHERE clause parameters incorrect
"
))
raise
ValidationError
(
_
(
"
WHERE clause parameters incorrect
"
))
start_datetime
=
self
.
_convert_time
(
start_date
)
end_datetime
=
self
.
_convert_time
(
end_date
)
result
=
f
"""
result
=
f
"""
WHERE cdc.acc_operation_id =
{
operation_id
}
WHERE cdc.acc_operation_id =
{
operation_id
}
AND cdc.date_slot >=
'
{
start_date
}
'
AND cdc.date_slot >=
'
{
start_date
time
}
'
AND cdc.date_slot <
'
{
end_date
}
'
AND cdc.date_slot <
'
{
end_date
time
}
'
"""
"""
if
prm_id
and
isinstance
(
prm_id
,
int
):
if
prm_id
and
isinstance
(
prm_id
,
int
):
if
extra_curve_type
and
extra_curve_type
in
(
if
extra_curve_type
and
extra_curve_type
in
(
...
@@ -303,13 +307,15 @@ class AccOperation(models.Model):
...
@@ -303,13 +307,15 @@ class AccOperation(models.Model):
data_prod
=
[]
data_prod
=
[]
query
=
(
query
=
(
self
.
_select_clause
(
slot_type
,
[
"
cons
"
,
"
autocons
"
,
"
prod
"
])
self
.
_select_clause
(
date_slot
=
slot_type
,
curve_types
=
[
"
cons
"
,
"
autocons
"
,
"
prod
"
]
)
+
self
.
_from_clause
()
+
self
.
_from_clause
()
+
self
.
_where_clause
(
+
self
.
_where_clause
(
self
.
id
,
start_date
,
end_date
,
prm_id
,
"
prod
"
,
partner_id
self
.
id
,
start_date
,
end_date
,
prm_id
,
"
prod
"
,
partner_id
)
)
+
"
AND cdc.comp_data_type IN (
'
autocons
'
,
'
cons
'
,
'
prod
'
)
"
+
"
AND cdc.comp_data_type IN (
'
autocons
'
,
'
cons
'
,
'
prod
'
)
"
+
self
.
_group_clause
(
slot_type
)
+
self
.
_group_clause
(
date_slot
=
slot_type
)
+
self
.
_order_clause
()
+
self
.
_order_clause
()
)
)
self
.
env
.
cr
.
execute
(
query
)
self
.
env
.
cr
.
execute
(
query
)
...
@@ -348,10 +354,16 @@ class AccOperation(models.Model):
...
@@ -348,10 +354,16 @@ class AccOperation(models.Model):
data_allocons_histo
=
[]
data_allocons_histo
=
[]
query
=
(
query
=
(
self
.
_select_clause
(
"
day
"
,
[
"
autocons
"
,
"
allocons
"
])
self
.
_select_clause
(
date_slot
=
"
day
"
,
curve_types
=
[
"
autocons
"
,
"
allocons
"
])
+
self
.
_from_clause
()
+
self
.
_from_clause
()
+
self
.
_where_clause
(
self
.
id
,
start_date
,
end_date
,
prm_id
,
partner_id
)
+
self
.
_where_clause
(
+
self
.
_group_clause
(
"
day
"
)
operation_id
=
self
.
id
,
start_date
=
start_date
,
end_date
=
end_date
,
prm_id
=
prm_id
,
partner_id
=
partner_id
,
)
+
self
.
_group_clause
(
date_slot
=
"
day
"
)
+
self
.
_order_clause
()
+
self
.
_order_clause
()
)
)
...
@@ -389,10 +401,18 @@ class AccOperation(models.Model):
...
@@ -389,10 +401,18 @@ class AccOperation(models.Model):
data_surplus
=
[]
data_surplus
=
[]
query
=
(
query
=
(
self
.
_select_clause
(
slot_type
,
[
"
autoprod
"
,
"
surplus
"
])
self
.
_select_clause
(
date_slot
=
slot_type
,
curve_types
=
[
"
autoprod
"
,
"
surplus
"
]
)
+
self
.
_from_clause
()
+
self
.
_from_clause
()
+
self
.
_where_clause
(
self
.
id
,
start_date
,
end_date
,
prm_id
,
partner_id
)
+
self
.
_where_clause
(
+
self
.
_group_clause
(
slot_type
)
operation_id
=
self
.
id
,
start_date
=
start_date
,
end_date
=
end_date
,
prm_id
=
prm_id
,
partner_id
=
partner_id
,
)
+
self
.
_group_clause
(
date_slot
=
slot_type
)
+
self
.
_order_clause
()
+
self
.
_order_clause
()
)
)
...
@@ -428,10 +448,16 @@ class AccOperation(models.Model):
...
@@ -428,10 +448,16 @@ class AccOperation(models.Model):
data_surplus_histo
=
[]
data_surplus_histo
=
[]
query
=
(
query
=
(
self
.
_select_clause
(
"
day
"
,
[
"
autoprod
"
,
"
surplus
"
])
self
.
_select_clause
(
date_slot
=
"
day
"
,
curve_types
=
[
"
autoprod
"
,
"
surplus
"
])
+
self
.
_from_clause
()
+
self
.
_from_clause
()
+
self
.
_where_clause
(
self
.
id
,
start_date
,
end_date
,
prm_id
,
partner_id
)
+
self
.
_where_clause
(
+
self
.
_group_clause
(
"
day
"
)
operation_id
=
self
.
id
,
start_date
=
start_date
,
end_date
=
end_date
,
prm_id
=
prm_id
,
partner_id
=
partner_id
,
)
+
self
.
_group_clause
(
date_slot
=
"
day
"
)
+
self
.
_order_clause
()
+
self
.
_order_clause
()
)
)
self
.
env
.
cr
.
execute
(
query
)
self
.
env
.
cr
.
execute
(
query
)
...
@@ -477,12 +503,12 @@ class AccOperation(models.Model):
...
@@ -477,12 +503,12 @@ class AccOperation(models.Model):
"""
"""
Fonction appelée pour l
'
affichage des courbes globales
Fonction appelée pour l
'
affichage des courbes globales
sur le portail
sur le portail
:param: start_date: date début
:param:
date
start_date: date début
end_date: date de fin
date
end_date: date de fin
partner_id: données uniquement de ce contact
int
partner_id: données uniquement de ce contact
prm_id: données uniquement de ce PRM (mutuellement exclusif de
int
prm_id: données uniquement de ce PRM (mutuellement exclusif de
partner_id)
partner_id)
data_type: type de courbes à afficher:
char
data_type: type de courbes à afficher:
-
"
pmo
"
: vue globale (cons + prod sans filtrage)
-
"
pmo
"
: vue globale (cons + prod sans filtrage)
-
"
cons
"
: vue mon suivi conso (avec filtrage possible)
-
"
cons
"
: vue mon suivi conso (avec filtrage possible)
-
"
prod
"
: vue mon suivi production (avec filtrage possible)
-
"
prod
"
: vue mon suivi production (avec filtrage possible)
...
@@ -491,7 +517,7 @@ class AccOperation(models.Model):
...
@@ -491,7 +517,7 @@ class AccOperation(models.Model):
self
.
ensure_one
()
self
.
ensure_one
()
result_graph
=
{}
result_graph
=
{}
start_date
=
datetime
.
strptime
(
start_date
,
"
%d/%m/%Y
"
)
start_date
=
datetime
.
strptime
(
start_date
,
"
%d/%m/%Y
"
)
end_date
=
datetime
.
combine
(
datetime
.
strptime
(
end_date
,
"
%d/%m/%Y
"
)
,
time
.
max
)
end_date
=
datetime
.
strptime
(
end_date
,
"
%d/%m/%Y
"
)
+
relativedelta
(
days
=
1
)
display_hourly_curves
,
step_curve
,
step_display_curve
=
self
.
get_step_from_date
(
display_hourly_curves
,
step_curve
,
step_display_curve
=
self
.
get_step_from_date
(
start_date
=
start_date
,
end_date
=
end_date
start_date
=
start_date
,
end_date
=
end_date
)
)
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter