@@ -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