Skip to content
Extraits de code Groupes Projets

Comparer les révisions

Les modifications sont affichées comme si la révision source était fusionnée avec la révision cible. En savoir plus sur la comparaison des révisions.

Source

Sélectionner le projet cible
No results found
Sélectionner une révision Git
  • 16.0
1 résultat

Cible

Sélectionner le projet cible
  • lefilament/oacc/oacc_portal_overview_cdc
  • arthur-enercoop/oacc_portal_overview_cdc
2 résultats
Sélectionner une révision Git
  • 16.0
1 résultat
Afficher les modifications
Validations sur la source (2)
......@@ -3,13 +3,15 @@
from datetime import datetime
from dateutil.relativedelta import relativedelta
from ..tools.export_cdc import get_divider_from_row
from odoo import _, api, models
from odoo.exceptions import ValidationError
from odoo.osv import expression
from odoo.addons.api_connector.tools.date_utils import local_to_utc
from ..tools.export_cdc import get_divider_from_row
class AccEnedisCdc(models.Model):
_inherit = "acc.enedis.cdc"
......@@ -358,6 +360,7 @@ class AccEnedisCdc(models.Model):
slot_type,
start_date,
end_date,
display_hourly_curves,
prm_id=None,
partner_id=None,
):
......@@ -370,6 +373,8 @@ class AccEnedisCdc(models.Model):
"year")
datetime start_date: date début
datetime end_date: date de fin
bool display_hourly_curves: si step différent de day alors on calcule le
total sinon il est calculé dans _get_cdc_by_query_daily_histo_cons
int prm_id : PRM de soutirage à récupérer
int partner_id: contact associé à la courbe
@returns: resultat de la requête
......@@ -385,18 +390,25 @@ class AccEnedisCdc(models.Model):
operation_id, slot_type, start_date, end_date, prm_id, partner_id
)
if not display_hourly_curves:
total_autocons = 0
total_allocons = 0
for row in raw_data:
# use KW here, divider depend of the timestep
# only use 30 or 15 minutes, by default its 30 minutes
divider = get_divider_from_row(row)
label.append(row[0])
data_cons.append({"x": row[0], "y": row[1] / divider})
data_autocons.append({"x": row[0], "y": row[2] / divider})
data_cons.append({"x": row[0], "y": round(row[1] / divider, 2)})
data_autocons.append({"x": row[0], "y": round(row[2] / divider, 2)})
data_allocons.append(
{"x": row[0], "y": (row[1] - row[2]) / divider}
{"x": row[0], "y": round((row[1] - row[2]) / divider, 2)}
)
data_prod.append({"x": row[0], "y": row[3] / divider})
data_prod.append({"x": row[0], "y": round(row[3] / divider, 2)})
if not display_hourly_curves:
total_autocons += row[2] / divider
total_allocons += (row[1] - row[2]) / divider
cdc_cons = {
"label": label,
......@@ -405,6 +417,11 @@ class AccEnedisCdc(models.Model):
"cons": data_cons,
"prod": data_prod,
}
if not display_hourly_curves:
cdc_cons["total_autocons"] = round(total_autocons, 2)
cdc_cons["total_allocons"] = round(total_allocons, 2)
return cdc_cons
@api.model
......@@ -444,19 +461,26 @@ class AccEnedisCdc(models.Model):
+ self._group_clause(date_slot="day")
+ self._order_clause()
)
self.env.cr.execute(query)
raw_data = self.env.cr.fetchall()
total_autocons = 0
total_allocons = 0
for row in raw_data:
divider = get_divider_from_row(row)
data_autocons_histo.append(row[1]/divider)
data_allocons_histo.append(row[2]/divider)
data_autocons_histo.append(round(row[1] / divider, 2))
data_allocons_histo.append(round(row[2] / divider, 2))
label_histo.append(row[0])
total_autocons += row[1] / divider
total_allocons += row[2] / divider
cdc_cons = {
"autocons_histo": data_autocons_histo,
"allocons_histo": data_allocons_histo,
"label_histo": label_histo,
"total_autocons": round(total_autocons, 2),
"total_allocons": round(total_allocons, 2),
}
return cdc_cons
......@@ -511,6 +535,7 @@ class AccEnedisCdc(models.Model):
slot_type,
start_date,
end_date,
display_hourly_curves,
prm_id=None,
partner_id=None,
):
......@@ -522,6 +547,8 @@ class AccEnedisCdc(models.Model):
"year")
datetime start_date: date début
datetime end_date: date de fin
bool display_hourly_curves: si step différent de day alors on calcule le
total sinon il est calculé dans _get_cdc_by_query_daily_histo_prod
int prm_id : PRM d'injection à récupérer
int partner_id: contact associé à la courbe
:return: un dictionnaire de données
......@@ -535,17 +562,27 @@ class AccEnedisCdc(models.Model):
operation_id, slot_type, start_date, end_date, prm_id, partner_id
)
if not display_hourly_curves:
total_autocons_prod = 0
total_surplus = 0
for row in raw_data:
divider = get_divider_from_row(row)
label.append(row[0])
data_autocons.append({"x": row[0], "y": round(row[1] / divider, 2)})
data_surplus.append({"x": row[0], "y": round(row[2] / divider, 2)})
if not display_hourly_curves:
total_autocons_prod += row[1] / divider
total_surplus += row[2] / divider
cdc_prod = {
"label": label,
"autocons_prod": data_autocons,
"surplus": data_surplus,
}
if not display_hourly_curves:
cdc_prod["total_autocons_prod"] = round(total_autocons_prod, 2)
cdc_prod["total_surplus"] = round(total_surplus, 2)
return cdc_prod
@api.model
......@@ -582,16 +619,24 @@ class AccEnedisCdc(models.Model):
)
self.env.cr.execute(query)
raw_data = self.env.cr.fetchall()
total_autocons_prod = 0
total_surplus = 0
for row in raw_data:
divider = get_divider_from_row(row)
label_histo.append(row[0])
data_autocons_prod_histo.append(round(row[1] / divider, 2))
data_surplus_histo.append(round(row[2] / divider, 2))
total_autocons_prod += row[1] / divider
total_surplus += row[2] / divider
cdc_jour = {
"label_histo": label_histo,
"autocons_prod_histo": data_autocons_prod_histo,
"surplus_histo": data_surplus_histo,
"total_autocons_prod": round(total_autocons_prod, 2),
"total_surplus": round(total_surplus, 2),
}
return cdc_jour
......
......@@ -89,7 +89,13 @@ class AccOperation(models.Model):
chart_data = {}
if data_type == "cons" or data_type == "pmo":
chart_data_cons = Cdc_model._get_cdc_by_query_cons(
self.id, step_curve, start_date, end_date, prm_id, partner_id
self.id,
step_curve,
start_date,
end_date,
display_hourly_curves,
prm_id,
partner_id,
)
if display_hourly_curves:
chart_data_histo = Cdc_model._get_cdc_by_query_daily_histo_cons(
......@@ -99,7 +105,13 @@ class AccOperation(models.Model):
chart_data.update(chart_data_cons)
if data_type == "prod" or data_type == "pmo":
chart_data_prod = Cdc_model._get_cdc_by_query_prod(
self.id, step_curve, start_date, end_date, prm_id, partner_id
self.id,
step_curve,
start_date,
end_date,
display_hourly_curves,
prm_id,
partner_id,
)
if display_hourly_curves:
chart_data_histo = Cdc_model._get_cdc_by_query_daily_histo_prod(
......
......@@ -346,36 +346,11 @@ odoo.define("oacc_portal_overview_cdc.operation_chart", function (require) {
_getPieChartData: function (typeData) {
var data = {};
var res = [];
var sum_res1 = 0;
var sum_res2 = 0;
if (typeData === "cons") {
this.chartData.autocons.forEach((item) => {
if ("y" in item) {
sum_res1 += item.y;
} else {
sum_res1 += item;
}
});
this.chartData.allocons.forEach((item) => {
if ("y" in item) {
sum_res2 += item.y;
} else {
sum_res2 += item;
}
});
/*
autocons, allocons, cons, prod
- sert à construire bar et pie
- sur 2 mois on a 2 éléments donc regroupé par mois
- sert à construire la courbe
- par 7 jours on a regroupé par heure 7x24
- par mois on a regroupé par heure 30x24
autocons_histo, allocons_histo
- sert à construire bar et pie
- par 7 jours, regroupé par jour
- par mois, regroupé par jour
*/
res = [Math.floor(sum_res1), Math.floor(sum_res2)];
res = [
Math.round(this.chartData.total_autocons),
Math.round(this.chartData.total_allocons),
];
data = {
labels: ["AutoConso", "AlloConso"],
datasets: [
......@@ -395,21 +370,10 @@ odoo.define("oacc_portal_overview_cdc.operation_chart", function (require) {
],
};
} else {
this.chartData.autocons_prod.forEach((item) => {
if ("y" in item) {
sum_res1 += item.y;
} else {
sum_res1 += item;
}
});
this.chartData.surplus.forEach((item) => {
if ("y" in item) {
sum_res2 += item.y;
} else {
sum_res2 += item;
}
});
res = [Math.floor(sum_res1), Math.floor(sum_res2)];
res = [
Math.round(this.chartData.total_autocons_prod),
Math.round(this.chartData.total_surplus),
];
data = {
labels: ["AutoConso", "Surplus"],
datasets: [
......
......@@ -55,14 +55,15 @@ def make_filename(
operation, start_date, end_date, partner_id, prm_id, data_type, file_type="csv"
):
"""
Genere le nom du fichier exporte sous la forme
Elocoop_[nom opé]_[date_debut]_[date_fin]_[production ou consommation]_[contact ou PRM].csv
Génère le nom du fichier exporté sous la forme
Elocoop_[nom opé]_[date_debut]_[date_fin]_[production ou consommation]\
_[contact ou PRM].csv
:param operation: id de l operation
:param start_date: date de debut
:param start_date: date de début
:param end_date: date de fin
:param partner_id: id du partner
:param prm_id: id du prm
:param data_type: type de données (consomation ou production)
:param data_type: type de données (consommation ou production)
:param file_type: type de fichier par defaut csv
:return:
"""
......