Skip to content

Commit aec43c4

Browse files
authored
Revert "Crear lecturas ficticias de consumo al recibir únicamente totalizador con codigo de tarifas nuevas"
1 parent 20ec4c1 commit aec43c4

File tree

1 file changed

+11
-84
lines changed
  • gestionatr/input/messages

1 file changed

+11
-84
lines changed

gestionatr/input/messages/F1.py

Lines changed: 11 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)