Skip to content

Commit 3bd0e3e

Browse files
authored
Merge pull request #296 from gisce/fix_get_lectures_fake_comptador_base
fix: Utilitzar primer el comptador actual si té lectures per crear la info base de les lectures fake
2 parents 239f1af + 58b397d commit 3bd0e3e

File tree

1 file changed

+49
-16
lines changed
  • gestionatr/input/messages

1 file changed

+49
-16
lines changed

gestionatr/input/messages/F1.py

Lines changed: 49 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1654,7 +1654,7 @@ def gir_comptador(self):
16541654
def get_dates_inici_i_final(self):
16551655
data_inici = ''
16561656
data_final = ''
1657-
for lect in self.get_lectures(force_no_transforma_no_td_a_td=True):
1657+
for lect in self.get_lectures_base():
16581658
data_in_compt = datetime.strptime(
16591659
lect.lectura_desde.fecha, '%Y-%m-%d'
16601660
)
@@ -1691,6 +1691,22 @@ def get_lectures(self, tipus=None, force_no_transforma_no_td_a_td=False, force_n
16911691
lectures = sorted(lectures, key=lambda x: x.lectura_desde.fecha)
16921692
return lectures
16931693

1694+
def get_lectures_base(self, tipus=None):
1695+
"""Retorna totes les lectures tal com venen informades al F1, sense manipular"""
1696+
lectures = []
1697+
try:
1698+
for integrador in self.integradores:
1699+
# If we don't have any type requirements or the current
1700+
# reading is in them
1701+
if not tipus or (integrador.tipus and integrador.tipus in tipus):
1702+
integrador.comptador = self
1703+
lectures.append(integrador)
1704+
except AttributeError:
1705+
pass
1706+
1707+
lectures = sorted(lectures, key=lambda x: x.lectura_desde.fecha)
1708+
return lectures
1709+
16941710
def get_fake_lectures(self, lectures, tipus=None):
16951711
"""
16961712
Aquest mètode contempla les diferents casuistiques que es poden donar perque l'ERP hagi de crear lectures
@@ -2369,26 +2385,44 @@ def get_fake_pX_lectura(self, tipus, periode, base_info, lectura_desde=0, lectur
23692385

23702386
return new_integrador
23712387

2372-
def get_comptador_amb_lectures(self, tipus=None):
2388+
def get_lectura_base(self, comptador=None, tipus=None):
23732389
"""
2374-
Retorna el primer comptador que tingui les lectures del tipus inidcat
2375-
Si cap comptador té lectures del primer tipus, es repeteix el procés amb el seguent tipus
2390+
Retorna la primera lectura disponible segons l’ordre de prioritat dels tipus indicats.
2391+
2392+
- Si es proporciona un comptador, es comprova primer i es retorna la seva primera
2393+
lectura disponible.
2394+
- Si aquest comptador no té lectures, es busca entre els comptadors de les mesures
2395+
associades, respectant l’ordre de tipus i mesures.
2396+
2397+
Si no es troba cap lectura, es retorna `(None, None)`.
2398+
2399+
:param comptador: Comptador a comprovar primer (opcional)
2400+
:param tipus: Tipus de lectura per ordre de prioritat. Per defecte ['S', 'A']
2401+
:return: La primera lectura disponible o `(None, None)` si no n'hi ha cap
23762402
"""
2403+
23772404
if tipus is None:
23782405
tipus = ['S', 'A']
2379-
comptador_amb_lectures = None
2406+
2407+
# Comprova primer el comptador passat
2408+
if comptador:
2409+
for t in tipus:
2410+
lectures_base = comptador.get_lectures_base(tipus=t)
2411+
if lectures_base:
2412+
return lectures_base[0]
2413+
2414+
# Comprova la resta de comptadors
23802415
for medida in self.medidas:
23812416
for t in tipus:
23822417
for c in medida.modelos_aparatos:
2383-
if c.get_lectures(tipus=t):
2384-
comptador_amb_lectures = c
2385-
break
2386-
if comptador_amb_lectures:
2387-
break
2388-
if comptador_amb_lectures:
2389-
break
2418+
# Evita tornar a comprovar el comptador passat
2419+
if comptador and c is comptador:
2420+
continue
2421+
lectures_base = c.get_lectures_base(tipus=t)
2422+
if lectures_base:
2423+
return lectures_base[0]
23902424

2391-
return comptador_amb_lectures
2425+
return None, None
23922426

23932427
def get_fake_AS_lectures(self, period_start=1, comptador_base=None):
23942428
res = []
@@ -2397,9 +2431,8 @@ def get_fake_AS_lectures(self, period_start=1, comptador_base=None):
23972431
te_autoconsum = (self.autoconsumo and self.autoconsumo.energia_excedentaria) or conceptes_repercutibles_excedents
23982432
if not te_autoconsum:
23992433
return res
2400-
comptador_amb_lectures = self.get_comptador_amb_lectures()
2401-
if comptador_amb_lectures:
2402-
base_info = comptador_amb_lectures.get_lectures_activa_entrant()[0]
2434+
base_info = self.get_lectura_base(comptador=comptador_base)
2435+
if base_info:
24032436
num_periodes = self.get_num_periodes_from_tarifa_and_tipus(tipus='S')
24042437
# Mandanga per les tarifes antigues. Els excedents s'informaven com a conceptes repercutibles.
24052438
# Si no hem pogut obtenir el num periodes perque son tarifes antigues, i posem tants periodes com

0 commit comments

Comments
 (0)