@@ -1681,8 +1681,17 @@ def get_lectures(self, tipus=None, force_no_transforma_no_td_a_td=False, force_n
16811681 lectures .append (integrador )
16821682 except AttributeError :
16831683 pass
1684- # Comprovem si es necessari crear alguna lectura ficticia i es modifiquen les lectures si és així
1685- self .get_fake_lectures (lectures , tipus )
1684+
1685+ if (not tipus or "S" in tipus ) and self .factura and self .factura .get_consum_facturat (tipus = 'S' , periode = None ) \
1686+ and not self .factura .has_AS_lectures ():
1687+ # Si no tenim lectures AS pero si que ens han cobrat excedents,
1688+ # creem unes lectures AS ficticies a 0 (puta ENDESA)
1689+ lectures .extend (self .factura .get_fake_AS_lectures (comptador_base = self ))
1690+ if (not tipus or "S" in tipus ) and self .factura and self .has_AS_lectures_only_p0 () \
1691+ and len (self .factura .get_consum_facturat (tipus = 'S' , periode = None )) > 1 :
1692+ # Si nomes ens envien el P0 de excedents pero ens cobren varis periodes
1693+ # creem una lectura e P2 AS ficticies a 0 (puta FENOSA)
1694+ lectures .extend (self .factura .get_fake_AS_p2_lectures (comptador_base = self ))
16861695
16871696 if not force_no_transforma_no_td_a_td and self .factura :
16881697 lectures = self .factura .transforma_no_td_a_td (
@@ -1691,79 +1700,6 @@ def get_lectures(self, tipus=None, force_no_transforma_no_td_a_td=False, force_n
16911700 lectures = sorted (lectures , key = lambda x : x .lectura_desde .fecha )
16921701 return lectures
16931702
1694- def get_fake_lectures (self , lectures , tipus = None ):
1695- """
1696- Aquest mètode contempla les diferents casuistiques que es poden donar perque l'ERP hagi de crear lectures
1697- ficticies, ja que per algun motiu no ens arriben les lectures dels periodes pertinents.
1698- Casos contemplats:
1699- - No tenim lectures AS, pero en el F1 ens cobren excedents
1700- - Lectura totalitzadora d'AS
1701- - Lectura totalitzadora d'AE i F1 no té lectures PRE TD
1702- """
1703- generacio_facturada = self .factura and self .factura .get_consum_facturat (tipus = 'S' , periode = None )
1704- if (not tipus or "S" in tipus ) and self .factura and not self .factura .has_AS_lectures ():
1705- # El mètode get_consum_facturat retorna [0.0] si no hi ha consum
1706- if generacio_facturada and len (generacio_facturada ) > 1 or generacio_facturada [0 ] != 0.0 :
1707- # Si no tenim lectures AS pero si que ens han cobrat excedents,
1708- # creem unes lectures AS ficticies a 0 (puta ENDESA)
1709- lectures .extend (self .factura .get_fake_AS_lectures (comptador_base = self ))
1710- if (not tipus or "S" in tipus ) and self .factura and self .has_AS_lectures_only_p0 () \
1711- and generacio_facturada and len (generacio_facturada ) > 1 :
1712- # Si nomes ens envien el P0 de excedents pero ens cobren varis periodes
1713- # creem una lectura e P2 AS ficticies a 0 (puta FENOSA)
1714- lectures .extend (self .factura .get_fake_AS_p2_lectures (comptador_base = self ))
1715-
1716- if (not tipus or "A" in tipus ) and self .factura and len (self .factura .get_consum_facturat (tipus = 'A' , periode = None )) > 1 :
1717- # Si ens facturen varis periodes de consum i la factura no té lectures pre td, hem de revisar si la lectura
1718- # de consum és un totalitzador, ja que si ho és hem de crear les lectures ficticies
1719- lectures_by_date = {}
1720- # Mirem cuantes lectures ens arriben al F1.
1721- # Si ens arriba totalitzador per la lectura de Gener i per la de Febrer, haurem de crear les lectures fake
1722- # per totes dues dates
1723- for l in lectures :
1724- lectures_by_date .setdefault (l .lectura_desde .fecha , []).append (l )
1725- for ldate in lectures_by_date :
1726- lectura_ae_totalitzador = self .has_lectura_AE_totalitzador_on_date (ldate )
1727- if lectura_ae_totalitzador :
1728- lectures .extend (self .get_fake_pX_lectures (lectura_ae_totalitzador , tipus = 'A' ))
1729-
1730- def get_fake_pX_lectures (self , lectura_ae_totalitzador , tipus = None ):
1731- # Si te un totalitzador amb el codi de les noves tarifes, creem les lectures fake
1732- tarifa_atr = self .factura .datos_factura .tarifa_atr_fact
1733- nperiodes_td = PERIODES_PER_TARIFA .get (tarifa_atr , {}).get (tipus , None )
1734- # Obtenim els periodes de les lectures segons la tarifa
1735- res = []
1736- if nperiodes_td :
1737- lectures_per_periode = {}
1738- for periode in range (1 , nperiodes_td + 1 ):
1739- pname = "P" + str (periode )
1740- lectures_per_periode [pname ] = []
1741-
1742- # Agafem el totalitzador com a lectura "base"
1743- base_lectura = lectura_ae_totalitzador
1744- # Marquem el totalitzador com a lectura de P1
1745- lectures_per_periode [lectura_ae_totalitzador .periode ].append (lectura_ae_totalitzador )
1746-
1747- if base_lectura :
1748- for periode in lectures_per_periode :
1749- if not lectures_per_periode .get (periode ) and base_lectura :
1750- try :
1751- aux = self .factura .get_fake_pX_lectura (tipus , periode , base_lectura )
1752- res .append (aux )
1753- except Exception :
1754- pass
1755- return res
1756-
1757- def has_lectura_AE_totalitzador_on_date (self , ldate ):
1758- # Busquem les lectures d'activa entrant per la data que ens interessa
1759- lectures_ae = [
1760- lect for lect in self .integradores
1761- if lect .tipus == 'A' and lect .lectura_desde .fecha == ldate
1762- ]
1763- if len (lectures_ae ) == 1 and lectures_ae [0 ].codigo_periodo in ('A0' , '90' ):
1764- return lectures_ae [0 ]
1765- return False
1766-
17671703 def has_AS_lectures_only_p0 (self ):
17681704 has_p0 = False
17691705 try :
@@ -1996,14 +1932,6 @@ def te_lectures_pre_td_amb_tarifa_td(self):
19961932
19971933 return False
19981934
1999- def te_lectures_amb_totalitzador (self ):
2000- for c in self .get_comptadors ():
2001- for l in c .get_lectures (force_no_transforma_no_td_a_td = True ):
2002- if l .codigo_periodo in ['10' , '20' , '80' , '90' , 'A0' ]:
2003- return True
2004-
2005- return False
2006-
20071935 def te_lectures_amb_decimals (self ):
20081936 if self .datos_factura .tarifa_atr_fact not in TARIFES_TD :
20091937 return False
@@ -2136,7 +2064,6 @@ def get_lectures_amb_periodes_td(self, lectures, tipus):
21362064 if l .tipus == tipus :
21372065 # Mandanga (Puta Fenosa) En cas que ens arribin lectures de periodes fora de la tarifa del contracte
21382066 # ignorem les lectures dels periodes que estiguin fora de la tarifa ATR del contracte
2139- # Els codis 90 i A0 corresponen al periode P1
21402067 if l .periode in lectures_per_periode .keys ():
21412068 lectures_per_periode [l .periode ].append (l )
21422069 base_lectura = l
0 commit comments