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
cac9b091
Valider
cac9b091
rédigé
Il y a 1 an
par
Rémi - Le Filament
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
[ADD] check dates depending on partner
parent
aaf608ff
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
+50
-28
50 ajouts, 28 suppressions
models/acc_operation.py
avec
50 ajouts
et
28 suppressions
models/acc_operation.py
+
50
−
28
Voir le fichier @
cac9b091
...
...
@@ -9,8 +9,6 @@ from odoo.exceptions import ValidationError
from
odoo.osv
import
expression
from
odoo.tools
import
date_utils
DEFAULT_MONTH_RANGE
=
3
class
AccOperation
(
models
.
Model
):
_inherit
=
"
acc.operation
"
...
...
@@ -49,7 +47,9 @@ class AccOperation(models.Model):
start_date
,
end_date
=
self
.
get_interval
(
"
month
"
,
last_record
)
query
=
"""
SELECT
date_trunc(
'
month
'
, cdc.date_slot) AS date_slot,
date_trunc(
'
month
'
,
cdc.date_slot AT TIME ZONE
'
UTC
'
AT TIME ZONE
'
Europe/Paris
'
) AS date_slot,
(SUM( (CASE
WHEN cdc.comp_data_type =
'
cons
'
THEN cdc.power
ELSE 0 END) )/2) / 1000 as conso_tot,
...
...
@@ -67,7 +67,8 @@ class AccOperation(models.Model):
cdc.acc_operation_id = %s
AND cdc.date_slot >= %s
AND cdc.date_slot <= %s
GROUP BY date_trunc(
'
month
'
, cdc.date_slot);
GROUP BY date_trunc(
'
month
'
,
cdc.date_slot AT TIME ZONE
'
UTC
'
AT TIME ZONE
'
Europe/Paris
'
);
"""
query_params
=
(
self
.
id
,
...
...
@@ -78,18 +79,19 @@ class AccOperation(models.Model):
raw_data
=
self
.
env
.
cr
.
fetchone
()
return
raw_data
[
1
],
raw_data
[
2
],
raw_data
[
3
],
start_date
def
get_last_cdc_record
(
self
):
def
get_last_cdc_record
(
self
,
partner_id
=
None
):
"""
@returns: last acc.enedis.cdc record in operations
"""
domain
=
[(
"
acc_operation_id
"
,
"
in
"
,
self
.
ids
)]
if
partner_id
:
domain
=
expression
.
AND
([
domain
,
[(
"
partner_id
"
,
"
=
"
,
partner_id
)]])
# Get last date slot recorded
last_record
=
(
self
.
env
[
"
acc.enedis.cdc
"
]
.
sudo
()
.
search
(
[
(
"
acc_operation_id
"
,
"
in
"
,
self
.
ids
),
],
domain
,
limit
=
1
,
order
=
"
date_slot DESC
"
,
)
...
...
@@ -100,7 +102,7 @@ class AccOperation(models.Model):
return
last_record
def
get_interval
(
self
,
scale
,
last
_record
):
def
get_interval
(
self
,
scale
,
cdc
_record
):
"""
Fonction retournant une date de début et une date de fin.
Ces dates sont calculées en fonction de l
'
échelle choisie et du dernier
...
...
@@ -114,14 +116,14 @@ class AccOperation(models.Model):
date de début = début de l
'
année du dernier jour de données
:param str scale: type d
'
affichage des graphes
(day/week/month/year)
:param object
last
_record:
Dernier enregistrement dans la base
:param object
cdc
_record:
courbe de charge (table acc.enedis.cdc)
@returns: une date de début et une date de fin
"""
# Convert end datetime to timezone
last_day_start
=
datetime
.
combine
(
last
_record
.
date_slot
,
time
.
min
)
last_day_end
=
datetime
.
combine
(
last
_record
.
date_slot
,
time
.
max
)
start_month
,
end_month
=
date_utils
.
get_month
(
last
_record
.
date_slot
)
last_day_start
=
datetime
.
combine
(
cdc
_record
.
date_slot
,
time
.
min
)
last_day_end
=
datetime
.
combine
(
cdc
_record
.
date_slot
,
time
.
max
)
start_month
,
end_month
=
date_utils
.
get_month
(
cdc
_record
.
date_slot
)
if
scale
==
"
year
"
:
end_date
=
end_month
...
...
@@ -160,13 +162,13 @@ class AccOperation(models.Model):
step_display_curve
=
"
hour
"
# Calculate delta between 2 dates
delta
=
(
end_date
-
start_date
).
days
if
delta
>
1
and
delta
<
3
2
:
if
delta
>
0
and
delta
<
3
1
:
step_display_curve
=
"
day
"
display_hourly_curves
=
True
elif
delta
>=
3
2
and
delta
<=
36
6
:
elif
delta
>=
3
1
and
delta
<=
36
5
:
step
=
"
month
"
step_display_curve
=
"
month
"
elif
delta
>
36
6
:
elif
delta
>
36
5
:
step
=
"
year
"
step_display_curve
=
"
year
"
...
...
@@ -194,7 +196,9 @@ class AccOperation(models.Model):
query
=
"""
SELECT
date_trunc(%s, cdc.date_slot) AS date_slot,
date_trunc(%s,
cdc.date_slot AT TIME ZONE
'
UTC
'
AT TIME ZONE
'
Europe/Paris
'
) AS date_slot,
(SUM( (CASE
WHEN cdc.comp_data_type =
'
cons
'
THEN cdc.power ELSE 0 END) )/2) / 1000 as cons,
...
...
@@ -213,7 +217,8 @@ class AccOperation(models.Model):
AND ( cdc.acc_counter_id IN %s OR cdc.comp_data_type =
'
prod
'
)
AND cdc.date_slot >= %s
AND cdc.date_slot <= %s
GROUP BY date_trunc(%s, cdc.date_slot)
GROUP BY date_trunc(%s,
cdc.date_slot AT TIME ZONE
'
UTC
'
AT TIME ZONE
'
Europe/Paris
'
)
ORDER BY date_slot ASC;
"""
query_params
=
(
...
...
@@ -258,7 +263,9 @@ class AccOperation(models.Model):
query
=
"""
SELECT
date_trunc(
'
day
'
, cdc.date_slot) AS date_slot,
date_trunc(
'
day
'
,
cdc.date_slot AT TIME ZONE
'
UTC
'
AT TIME ZONE
'
Europe/Paris
'
) AS date_slot,
(SUM( (CASE
WHEN cdc.comp_data_type =
'
autocons
'
THEN cdc.power ELSE 0 END) )/2) / 1000 as autocons,
...
...
@@ -275,7 +282,8 @@ class AccOperation(models.Model):
AND cdc.acc_counter_id IN %s
AND cdc.date_slot >= %s
AND cdc.date_slot <= %s
GROUP BY date_trunc(
'
day
'
, cdc.date_slot)
GROUP BY date_trunc(
'
day
'
,
cdc.date_slot AT TIME ZONE
'
UTC
'
AT TIME ZONE
'
Europe/Paris
'
)
ORDER BY date_slot ASC;
"""
query_params
=
(
...
...
@@ -316,7 +324,9 @@ class AccOperation(models.Model):
query
=
"""
SELECT
date_trunc(%s, cdc.date_slot) AS date_slot,
date_trunc(%s,
cdc.date_slot AT TIME ZONE
'
UTC
'
AT TIME ZONE
'
Europe/Paris
'
) AS date_slot,
((SUM((CASE
WHEN cdc.comp_data_type =
'
prod
'
THEN cdc.power
ELSE 0 END))
...
...
@@ -334,7 +344,8 @@ class AccOperation(models.Model):
AND cdc.acc_operation_id IN %s
AND cdc.date_slot >= %s
AND cdc.date_slot <= %s
GROUP BY date_trunc(%s, cdc.date_slot)
GROUP BY date_trunc(%s,
cdc.date_slot AT TIME ZONE
'
UTC
'
AT TIME ZONE
'
Europe/Paris
'
)
ORDER BY date_slot ASC;
"""
query_params
=
(
...
...
@@ -375,7 +386,9 @@ class AccOperation(models.Model):
query
=
"""
SELECT
date_trunc(
'
day
'
, cdc.date_slot) AS date_slot,
date_trunc(
'
day
'
,
cdc.date_slot AT TIME ZONE
'
UTC
'
AT TIME ZONE
'
Europe/Paris
'
) AS date_slot,
((SUM((CASE
WHEN cdc.comp_data_type =
'
prod
'
THEN cdc.power
ELSE 0 END))
...
...
@@ -393,7 +406,8 @@ class AccOperation(models.Model):
AND cdc.acc_operation_id IN %s
AND cdc.date_slot >= %s
AND cdc.date_slot <= %s
GROUP BY date_trunc(
'
day
'
, cdc.date_slot)
GROUP BY date_trunc(
'
day
'
,
cdc.date_slot AT TIME ZONE
'
UTC
'
AT TIME ZONE
'
Europe/Paris
'
)
ORDER BY date_slot ASC;
"""
query_params
=
(
...
...
@@ -416,10 +430,18 @@ class AccOperation(models.Model):
}
return
cdc_jour
def
get_date_min_max
(
self
):
def
get_date_min_max
(
self
,
partner_id
=
None
):
self
.
ensure_one
()
last_record
=
self
.
get_last_cdc_record
()
last_record
=
self
.
get_last_cdc_record
(
partner_id
)
date_max
=
last_record
.
date_slot
.
strftime
(
"
%d/%m/%Y
"
)
if
partner_id
:
first_date
=
self
.
env
[
"
acc.counter.period
"
].
search
(
[(
"
acc_operation_id
"
,
"
=
"
,
self
.
id
),
(
"
partner_id
"
,
"
=
"
,
partner_id
)],
order
=
"
start_date ASC
"
,
limit
=
1
,
)
date_min
=
first_date
.
start_date
.
strftime
(
"
%d/%m/%Y
"
)
else
:
date_min
=
self
.
date_start_contract
.
strftime
(
"
%d/%m/%Y
"
)
return
{
"
date_min
"
:
date_min
,
"
date_max
"
:
date_max
}
...
...
@@ -495,7 +517,7 @@ class AccOperation(models.Model):
chart_data
.
update
(
chart_data_prod
)
result_graph
[
"
chart_data
"
]
=
chart_data
result_graph
.
update
(
self
.
get_date_min_max
())
result_graph
.
update
(
self
.
get_date_min_max
(
partner_id
))
result_graph
.
update
(
{
"
start_date
"
:
start_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