Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Permitir múltiples iteraciones de MotivoCambioATRDesdeDistribuidora #223

Merged
merged 9 commits into from
Nov 15, 2023
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<xs:complexType>
<xs:sequence>
<xs:element name="Cabecera" type="Cabecera"/>
<xs:element name="NotificacionCambiosATRDesdeDistribuidor" type="NotificacionCambiosATRDesdeDistribuidor"/>
<xs:element name="NotificacionCambiosATRDesdeDistribuidor" type="NotificacionCambiosATRDesdeDistribuidor" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Expand Down
2 changes: 1 addition & 1 deletion gestionatr/defs.py
Original file line number Diff line number Diff line change
Expand Up @@ -671,7 +671,7 @@
TABLA_9 = [('01', 'Anual'),
('02', 'Eventual medido'),
('03', 'Temporada'),
('05', 'RECORE'),
('05', 'Suministro a instalaciones RECORE'),
('07', 'Suministro de Obras'),
('08', 'Suministro de Socorro'),
('09', 'Eventual a tanto alzado'),
Expand Down
76 changes: 43 additions & 33 deletions gestionatr/input/messages/D1.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,54 +7,64 @@
class D1(C1):
"""Clase que implementa D1."""

@property
def notificacion_cambios_atr_desde_distribuidor(self):
tree = 'NotificacionCambiosATRDesdeDistribuidor'
data = []
for d in get_rec_attr(self.obj, tree, False):
data.append(NotificacionCambiosATRDesdeDistribuidor(d))
return data


class NotificacionCambiosATRDesdeDistribuidor(object):

def __init__(self, data):
self.notificacion_cambios_atr_desde_distribuidor = data

@property
def motivo_cambio_atr_desde_distribuidora(self):
tree = '{0}.MotivoCambioATRDesdeDistribuidora'.format(self._header)
data = get_rec_attr(self.obj, tree, False)
if data:
return data.text
else:
return False
data = ''
try:
data = self.notificacion_cambios_atr_desde_distribuidor.MotivoCambioATRDesdeDistribuidora.text
except AttributeError:
pass
return data

@property
def fecha_prevista_aplicacion_cambio_atr(self):
tree = '{0}.FechaPrevistaAplicacionCambioATR'.format(self._header)
data = get_rec_attr(self.obj, tree, False)
if data:
return data.text
else:
return False
data = ''
try:
data = self.notificacion_cambios_atr_desde_distribuidor.FechaPrevistaAplicacionCambioATR.text
except AttributeError:
pass
return data

@property
def periodicidad_facturacion(self):
tree = '{0}.PeriodicidadFacturacion'.format(self._header)
data = get_rec_attr(self.obj, tree, False)
if data:
return data.text
else:
return False
data = ''
try:
data = self.notificacion_cambios_atr_desde_distribuidor.PeriodicidadFacturacion.text
except AttributeError:
pass
return data

@property
def info_registro_autocons(self):
tree = '{0}.InfoRegistroAutocons'.format(self._header)
data = get_rec_attr(self.obj, tree, False)
if data not in [None, False]:
return InfoRegistroAutocons(data)
else:
tree = '{0}.InfoRegistroAutocons'.format(self._header)
data = get_rec_attr(self.obj, tree, False)
if data not in [None, False]:
return InfoRegistroAutocons(data)
return False
data = ''
try:
data = InfoRegistroAutocons(self.notificacion_cambios_atr_desde_distribuidor.InfoRegistroAutocons)
except AttributeError:
pass
return data

@property
def info_retardo_activ_autocons(self):
tree = '{0}.InfoRetardoActivAutocons'.format(self._header)
obj = get_rec_attr(self.obj, tree, False)
data = []
if obj not in [None, False]:
for i in obj:
data.append(InfoRetardoActivAutocons(i))
try:
for datos in self.notificacion_cambios_atr_desde_distribuidor.InfoRetardoActivAutocons:
data.append(InfoRetardoActivAutocons(datos))
except AttributeError:
pass
return data


Expand Down
2 changes: 1 addition & 1 deletion gestionatr/output/messages/sw_d1.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def __init__(self):
self.mensaje = XmlField('MensajeNotificacionCambiosATRDesdeDistribuidor',
attributes={'xmlns': 'http://localhost/elegibilidad'})
self.cabecera = Cabecera()
self.notificacion_cambios_atr_desde_distribuidor = NotificacionCambiosATRDesdeDistribuidor()
self.notificacion_cambios_atr_desde_distribuidor = []
super(MensajeNotificacionCambiosATRDesdeDistribuidor, self) \
.__init__('MensajeNotificacionCambiosATRDesdeDistribuidor', 'mensaje')

Expand Down
49 changes: 49 additions & 0 deletions tests/data/d101_motiu_13_14.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?xml version='1.0' encoding='UTF-8'?>
<MensajeNotificacionCambiosATRDesdeDistribuidor xmlns="http://localhost/elegibilidad">
<Cabecera>
<CodigoREEEmpresaEmisora>1234</CodigoREEEmpresaEmisora>
<CodigoREEEmpresaDestino>4321</CodigoREEEmpresaDestino>
<CodigoDelProceso>D1</CodigoDelProceso>
<CodigoDePaso>01</CodigoDePaso>
<CodigoDeSolicitud>201605219497</CodigoDeSolicitud>
<SecuencialDeSolicitud>00</SecuencialDeSolicitud>
<FechaSolicitud>2016-06-08T04:24:09</FechaSolicitud>
<CUPS>ES0116000000011531LK0F</CUPS>
</Cabecera>
<NotificacionCambiosATRDesdeDistribuidor>
<MotivoCambioATRDesdeDistribuidora>13</MotivoCambioATRDesdeDistribuidora>
<InfoRetardoActivAutocons>
<CodigoFiscalFactura>12345678</CodigoFiscalFactura>
<FechaInicioConteoActivAutocons>2022-01-01</FechaInicioConteoActivAutocons>
<FechaDesde>2022-01-01</FechaDesde>
<FechaHasta>2022-01-01</FechaHasta>
<DiasRetardoActivAutocons>15</DiasRetardoActivAutocons>
<ValorEnergiaAnualCalculada>100</ValorEnergiaAnualCalculada>
<ValorEnergiaHorariaCalculada>200</ValorEnergiaHorariaCalculada>
<PotInstaladaGen>6</PotInstaladaGen>
</InfoRetardoActivAutocons>
</NotificacionCambiosATRDesdeDistribuidor>
<NotificacionCambiosATRDesdeDistribuidor>
<MotivoCambioATRDesdeDistribuidora>14</MotivoCambioATRDesdeDistribuidora>
<InfoRetardoActivAutocons>
<CodigoFiscalFactura>12345678</CodigoFiscalFactura>
<FechaInicioConteoActivAutocons>2022-01-01</FechaInicioConteoActivAutocons>
<FechaDesde>2022-01-01</FechaDesde>
<FechaHasta>2022-01-01</FechaHasta>
<DiasRetardoActivAutocons>15</DiasRetardoActivAutocons>
<ValorEnergiaAnualCalculada>100</ValorEnergiaAnualCalculada>
<ValorEnergiaHorariaCalculada>200</ValorEnergiaHorariaCalculada>
<PotInstaladaGen>6</PotInstaladaGen>
</InfoRetardoActivAutocons>
<InfoRetardoActivAutocons>
<CodigoFiscalFactura>12345679</CodigoFiscalFactura>
<FechaInicioConteoActivAutocons>2022-01-02</FechaInicioConteoActivAutocons>
<FechaDesde>2022-01-02</FechaDesde>
<FechaHasta>2022-01-02</FechaHasta>
<DiasRetardoActivAutocons>16</DiasRetardoActivAutocons>
<ValorEnergiaAnualCalculada>101</ValorEnergiaAnualCalculada>
<ValorEnergiaHorariaCalculada>201</ValorEnergiaHorariaCalculada>
<PotInstaladaGen>6</PotInstaladaGen>
</InfoRetardoActivAutocons>
</NotificacionCambiosATRDesdeDistribuidor>
</MensajeNotificacionCambiosATRDesdeDistribuidor>
62 changes: 52 additions & 10 deletions tests/test_input.py
Original file line number Diff line number Diff line change
Expand Up @@ -1159,6 +1159,7 @@ def setUp(self):
self.xml_d102_reject = open(get_data("d102_reject.xml"), "rb")
self.xml_d101_motiu_11 = open(get_data("d101_motiu_11.xml"), "rb")
self.xml_d101_motiu_13 = open(get_data("d101_motiu_13.xml"), "rb")
self.xml_d101_motiu_13_14 = open(get_data("d101_motiu_13_14.xml"), "rb")

def tearDown(self):
self.xml_d101.close()
Expand All @@ -1168,14 +1169,15 @@ def tearDown(self):
self.xml_d102_reject.close()
self.xml_d101_motiu_11.close()
self.xml_d101_motiu_13.close()
self.xml_d101_motiu_13_14.close()

def test_d101(self):
d1 = D1(self.xml_d101)
d1.parse_xml()
self.assertEqual(d1.periodicidad_facturacion, u'01')
self.assertEqual(d1.fecha_prevista_aplicacion_cambio_atr, u'2016-06-09')
self.assertEqual(d1.motivo_cambio_atr_desde_distribuidora, u'01')
info = d1.info_registro_autocons
self.assertEqual(d1.notificacion_cambios_atr_desde_distribuidor[0].periodicidad_facturacion, u'01')
self.assertEqual(d1.notificacion_cambios_atr_desde_distribuidor[0].fecha_prevista_aplicacion_cambio_atr, u'2016-06-09')
self.assertEqual(d1.notificacion_cambios_atr_desde_distribuidor[0].motivo_cambio_atr_desde_distribuidora, u'01')
info = d1.notificacion_cambios_atr_desde_distribuidor[0].info_registro_autocons
autoconsumo = info.autoconsumo
self.assertEqual(autoconsumo.cau, u'ES1234000000000001JN0FA001')
self.assertEqual(autoconsumo.seccion_registro, u'2')
Expand Down Expand Up @@ -1242,8 +1244,8 @@ def test_d101(self):
def test_d101_min_with_info(self):
d1 = D1(self.xml_d101_min_with_info)
d1.parse_xml()
self.assertEqual(d1.motivo_cambio_atr_desde_distribuidora, u'04')
info = d1.info_registro_autocons
self.assertEqual(d1.notificacion_cambios_atr_desde_distribuidor[0].motivo_cambio_atr_desde_distribuidora, u'04')
info = d1.notificacion_cambios_atr_desde_distribuidor[0].info_registro_autocons
autoconsumo = info.autoconsumo
self.assertEqual(autoconsumo.cau, u'ES1234000000000001JN0FA001')
self.assertEqual(autoconsumo.seccion_registro, u'2')
Expand Down Expand Up @@ -1278,18 +1280,18 @@ def test_d101_min_with_info(self):
def test_d101_fully_min(self):
d1 = D1(self.xml_d101_fully_min)
d1.parse_xml()
self.assertEqual(d1.motivo_cambio_atr_desde_distribuidora, u'01')
self.assertEqual(d1.notificacion_cambios_atr_desde_distribuidor[0].motivo_cambio_atr_desde_distribuidora, u'01')

def test_d101_motiu_11(self):
d1 = D1(self.xml_d101_motiu_11)
d1.parse_xml()
self.assertEqual(d1.motivo_cambio_atr_desde_distribuidora, u'11')
self.assertEqual(d1.notificacion_cambios_atr_desde_distribuidor[0].motivo_cambio_atr_desde_distribuidora, u'11')

def test_d101_motiu_13(self):
d1 = D1(self.xml_d101_motiu_13)
d1.parse_xml()
self.assertEqual(d1.motivo_cambio_atr_desde_distribuidora, u'13')
info = d1.info_retardo_activ_autocons[0]
self.assertEqual(d1.notificacion_cambios_atr_desde_distribuidor[0].motivo_cambio_atr_desde_distribuidora, u'13')
info = d1.notificacion_cambios_atr_desde_distribuidor[0].info_retardo_activ_autocons[0]
self.assertEqual(info.codigo_fiscal_factura, u'12345678')
self.assertEqual(info.fecha_inicio_conteo_activ_autocons, u"2022-01-01")
self.assertEqual(info.fecha_desde, u"2022-01-01")
Expand All @@ -1299,6 +1301,46 @@ def test_d101_motiu_13(self):
self.assertEqual(info.valor_energia_horaria_calculada, u'200')
self.assertEqual(info.pot_instalada_gen, u'6')

def test_d101_motiu_13_14(self):
d1 = D1(self.xml_d101_motiu_13_14)
d1.parse_xml()

# Notificacio tipus 13
notificacio0 = d1.notificacion_cambios_atr_desde_distribuidor[0]
self.assertEqual(notificacio0.motivo_cambio_atr_desde_distribuidora, u'13')
info = notificacio0.info_retardo_activ_autocons[0]
self.assertEqual(info.codigo_fiscal_factura, u'12345678')
self.assertEqual(info.fecha_inicio_conteo_activ_autocons, u"2022-01-01")
self.assertEqual(info.fecha_desde, u"2022-01-01")
self.assertEqual(info.fecha_hasta, u"2022-01-01")
self.assertEqual(info.dias_retardo_activ_autocons, u'15')
self.assertEqual(info.valor_energia_anual_calculado, u'100')
self.assertEqual(info.valor_energia_horaria_calculada, u'200')
self.assertEqual(info.pot_instalada_gen, u'6')

# Notificacio tipus 14
notificacio1 = d1.notificacion_cambios_atr_desde_distribuidor[1]
self.assertEqual(notificacio1.motivo_cambio_atr_desde_distribuidora, u'14')
info10 = notificacio1.info_retardo_activ_autocons[0]
self.assertEqual(info10.codigo_fiscal_factura, u'12345678')
self.assertEqual(info10.fecha_inicio_conteo_activ_autocons, u"2022-01-01")
self.assertEqual(info10.fecha_desde, u"2022-01-01")
self.assertEqual(info10.fecha_hasta, u"2022-01-01")
self.assertEqual(info10.dias_retardo_activ_autocons, u'15')
self.assertEqual(info10.valor_energia_anual_calculado, u'100')
self.assertEqual(info10.valor_energia_horaria_calculada, u'200')
self.assertEqual(info10.pot_instalada_gen, u'6')

info11 = notificacio1.info_retardo_activ_autocons[1]
self.assertEqual(info11.codigo_fiscal_factura, u'12345679')
self.assertEqual(info11.fecha_inicio_conteo_activ_autocons, u"2022-01-02")
self.assertEqual(info11.fecha_desde, u"2022-01-02")
self.assertEqual(info11.fecha_hasta, u"2022-01-02")
self.assertEqual(info11.dias_retardo_activ_autocons, u'16')
self.assertEqual(info11.valor_energia_anual_calculado, u'101')
self.assertEqual(info11.valor_energia_horaria_calculada, u'201')
self.assertEqual(info11.pot_instalada_gen, u'6')

def test_d102_accept(self):
d1 = D1(self.xml_d102_accept)
d1.parse_xml()
Expand Down
Loading