diff --git a/gestionatr/data/NotificacionCambiosATRDesdeDistribuidor.xsd b/gestionatr/data/NotificacionCambiosATRDesdeDistribuidor.xsd
index 941f7044..0fbeea90 100644
--- a/gestionatr/data/NotificacionCambiosATRDesdeDistribuidor.xsd
+++ b/gestionatr/data/NotificacionCambiosATRDesdeDistribuidor.xsd
@@ -6,7 +6,7 @@
-
+
diff --git a/gestionatr/input/messages/D1.py b/gestionatr/input/messages/D1.py
index 2c809440..6d8dbe05 100644
--- a/gestionatr/input/messages/D1.py
+++ b/gestionatr/input/messages/D1.py
@@ -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
diff --git a/gestionatr/output/messages/sw_d1.py b/gestionatr/output/messages/sw_d1.py
index 5a7a14d7..e790cd87 100644
--- a/gestionatr/output/messages/sw_d1.py
+++ b/gestionatr/output/messages/sw_d1.py
@@ -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')
diff --git a/tests/data/d101_motiu_13_14.xml b/tests/data/d101_motiu_13_14.xml
new file mode 100644
index 00000000..27c4b6b0
--- /dev/null
+++ b/tests/data/d101_motiu_13_14.xml
@@ -0,0 +1,49 @@
+
+
+
+ 1234
+ 4321
+ D1
+ 01
+ 201605219497
+ 00
+ 2016-06-08T04:24:09
+ ES0116000000011531LK0F
+
+
+ 13
+
+ 12345678
+ 2022-01-01
+ 2022-01-01
+ 2022-01-01
+ 15
+ 100
+ 200
+ 6
+
+
+
+ 14
+
+ 12345678
+ 2022-01-01
+ 2022-01-01
+ 2022-01-01
+ 15
+ 100
+ 200
+ 6
+
+
+ 12345679
+ 2022-01-02
+ 2022-01-02
+ 2022-01-02
+ 16
+ 101
+ 201
+ 6
+
+
+
diff --git a/tests/test_input.py b/tests/test_input.py
index 821d060a..b2a9ae33 100644
--- a/tests/test_input.py
+++ b/tests/test_input.py
@@ -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()
@@ -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')
@@ -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')
@@ -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")
@@ -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()
diff --git a/tests/test_output.py b/tests/test_output.py
index eb51f69d..b34a075a 100644
--- a/tests/test_output.py
+++ b/tests/test_output.py
@@ -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()
@@ -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()
@@ -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())
\ No newline at end of file
+ assertXmlEqual(xml, self.xml_a143.read())