Skip to content

Commit

Permalink
Merge pull request #223 from gisce/multiple_iterations_for_d1
Browse files Browse the repository at this point in the history
Permitir múltiples iteraciones de MotivoCambioATRDesdeDistribuidora
  • Loading branch information
eberloso authored Nov 15, 2023
2 parents 348bbe2 + 604aa6a commit 927625f
Show file tree
Hide file tree
Showing 6 changed files with 237 additions and 46 deletions.
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
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
92 changes: 91 additions & 1 deletion tests/test_output.py
Original file line number Diff line number Diff line change
Expand Up @@ -1583,12 +1583,14 @@ class test_D1(unittest.TestCase):
def setUp(self):
self.xml_d101 = open(get_data("d101.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")
self.xml_d102_accept = open(get_data("d102_accept.xml"), "rb")
self.xml_d102_reject = open(get_data("d102_reject.xml"), "rb")

def tearDown(self):
self.xml_d101.close()
self.xml_d101_motiu_13.close()
self.xml_d101_motiu_13_14.close()
self.xml_d102_accept.close()
self.xml_d102_reject.close()

Expand Down Expand Up @@ -1831,6 +1833,94 @@ def test_create_pas01_motiu_13(self):
xml = str(mensaje)
assertXmlEqual(xml, self.xml_d101_motiu_13.read())

def test_create_pas01_motiu_13_14(self):
# MensajeNotificacionCambiosATRDesdeDistribuidor
mensaje = d1.MensajeNotificacionCambiosATRDesdeDistribuidor()

# Cabecera
cabecera = d1.Cabecera()
cabecera_fields = {
'codigo_ree_empresa_emisora': '1234',
'codigo_ree_empresa_destino': '4321',
'codigo_del_proceso': 'D1',
'codigo_del_paso': '01',
'codigo_de_solicitud': '201605219497',
'secuencial_de_solicitud': '00',
'fecha': '2016-06-08T04:24:09',
'cups': 'ES0116000000011531LK0F',
}
cabecera.feed(cabecera_fields)

# InfoRegistroAutocons
info_list0 = []
info0 = d1.InfoRetardoActivAutocons()
info_retardo_activ_autocons_fields0 = {
'codigo_fiscal_factura': '12345678',
'fecha_inicio_conteo_activ_autocons': '2022-01-01',
'fecha_desde': '2022-01-01',
'fecha_hasta': '2022-01-01',
'dias_retardo_activ_autocons': 15,
'valor_energia_anual_calculada': 100,
'valor_energia_horaria_calculada': 200,
'pot_instalada_gen': 6,
}
info0.feed(info_retardo_activ_autocons_fields0)
info_list0.append(info0)
# NotificacionCambiosATRDesdeDistribuidor
notificacion0 = d1.NotificacionCambiosATRDesdeDistribuidor()
notificacion_cambios_atr_desde_distribuidor_fields0 = {
'motivo_cambio_atr_desde_distribuidora': '13',
'info_retardo_activ_autocons_list': info_list0,
}
notificacion0.feed(notificacion_cambios_atr_desde_distribuidor_fields0)

# InfoRegistroAutocons
info_list1 = []
info10 = d1.InfoRetardoActivAutocons()
info_retardo_activ_autocons_fields10 = {
'codigo_fiscal_factura': '12345678',
'fecha_inicio_conteo_activ_autocons': '2022-01-01',
'fecha_desde': '2022-01-01',
'fecha_hasta': '2022-01-01',
'dias_retardo_activ_autocons': 15,
'valor_energia_anual_calculada': 100,
'valor_energia_horaria_calculada': 200,
'pot_instalada_gen': 6,
}
info10.feed(info_retardo_activ_autocons_fields10)
info_list1.append(info10)

info11 = d1.InfoRetardoActivAutocons()
info_retardo_activ_autocons_fields11 = {
'codigo_fiscal_factura': '12345679',
'fecha_inicio_conteo_activ_autocons': '2022-01-02',
'fecha_desde': '2022-01-02',
'fecha_hasta': '2022-01-02',
'dias_retardo_activ_autocons': 16,
'valor_energia_anual_calculada': 101,
'valor_energia_horaria_calculada': 201,
'pot_instalada_gen': 6,
}
info11.feed(info_retardo_activ_autocons_fields11)
info_list1.append(info11)

# NotificacionCambiosATRDesdeDistribuidor
notificacion1 = d1.NotificacionCambiosATRDesdeDistribuidor()
notificacion_cambios_atr_desde_distribuidor_fields1 = {
'motivo_cambio_atr_desde_distribuidora': '14',
'info_retardo_activ_autocons_list': info_list1,
}
notificacion1.feed(notificacion_cambios_atr_desde_distribuidor_fields1)

mensaje_notificacion_cambios_atr_desde_distribuidor_fields = {
'cabecera': cabecera,
'notificacion_cambios_atr_desde_distribuidor': [notificacion0, notificacion1],
}
mensaje.feed(mensaje_notificacion_cambios_atr_desde_distribuidor_fields)
mensaje.build_tree()
xml = str(mensaje)
assertXmlEqual(xml, self.xml_d101_motiu_13_14.read())

def test_create_pas02_accept(self):
# Cabecera
cabecera = d1.Cabecera()
Expand Down Expand Up @@ -7060,4 +7150,4 @@ def test_create_a143(self):
mensaje_a143.feed(mensaje_a143_fields)
mensaje_a143.build_tree()
xml = str(mensaje_a143)
assertXmlEqual(xml, self.xml_a143.read())
assertXmlEqual(xml, self.xml_a143.read())

0 comments on commit 927625f

Please sign in to comment.