Skip to content

Commit

Permalink
Merge pull request #40 from initios/ens-modification-errors
Browse files Browse the repository at this point in the history
Handle ens modification errors
  • Loading branch information
carlosgoce committed May 25, 2018
2 parents 1659815 + 9472ba3 commit 5ea499a
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 2 deletions.
11 changes: 11 additions & 0 deletions src/aeat/rest_framework/serializers.py
Expand Up @@ -61,6 +61,16 @@ class ENSFunctionalErrorSerializer(DequeToDictMixin, rf.Serializer):
reason = rf.CharField(source='FUNERRER1.OriAttValER14', default='No error message supplied')


class ENSModificationFunctionalErrorSerializer(DequeToDictMixin, rf.Serializer):
is_error = True

code = rf.CharField(source='FUNERRER1.ErrReaER13', default='')
type = rf.CharField(source='FUNERRER1.ErrTypER11')
pointer = rf.CharField(source='FUNERRER1.ErrPoiER12')
value = rf.CharField(source='FUNERRER1.OriAttValER14', default='')
reason = rf.CharField(source='HEAHEA.AmeRejMotTexHEA605', default='No error message supplied')


def parse_xsd(data):
try:
body = data.find('.//soapenv:Body', namespaces=data.nsmap)
Expand Down Expand Up @@ -96,5 +106,6 @@ def get_class_for_aeat_response(data):
f'{ens}IE328V5Sal.xsd': ENSSerializer,
f'{ens}IE304V5Sal.xsd': ENSSerializer,
f'{ens}IE316V5Sal.xsd': ENSFunctionalErrorSerializer,
f'{ens}IE305V5Sal.xsd': ENSModificationFunctionalErrorSerializer,
f'{exs}IE628V2Sal.xsd': EXSSerializer,
}.get(xsd, UnknownResponseSerializer)
36 changes: 36 additions & 0 deletions tests/resources/xml/response/ens_modification_error_IE305V5Sal.xml
@@ -0,0 +1,36 @@
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body Id="Body">
<ie:CC305A
xmlns:ie="https://www2.agenciatributaria.gob.es/ADUA/internet/es/aeat/dit/adu/aden/enswsv5/IE305V5Sal.xsd">
<MesSenMES3>NICA.ES</MesSenMES3>
<MesRecMES6>B123456789</MesRecMES6>
<DatOfPreMES9>180524</DatOfPreMES9>
<TimOfPreMES10>1604</TimOfPreMES10>
<TesIndMES18>0</TesIndMES18>
<MesIdeMES19>00000001234567</MesIdeMES19>
<MesTypMES20>CC305A</MesTypMES20>
<CorIdeMES25>TEST000001</CorIdeMES25>
<HEAHEA>
<DocNumHEA5>18ES009999990000652</DocNumHEA5>
<AmeRejMotCodHEA604>1</AmeRejMotCodHEA604>
<AmeRejMotTexHEA605>Trader not allowed to amend</AmeRejMotTexHEA605>
<DatTimAmeHEA113>201805241404</DatTimAmeHEA113>
<AmeRejDatTimHEA112>201805241604</AmeRejDatTimHEA112>
</HEAHEA>
<FUNERRER1>
<ErrTypER11>15</ErrTypER11>
<ErrPoiER12>NTF.NOTPAR670</ErrPoiER12>
<ErrReaER13>C583</ErrReaER13>
<OriAttValER14>Example Trader Name</OriAttValER14>
</FUNERRER1>
<PERLODSUMDEC>
<TINPLD1>ESB12345678</TINPLD1>
</PERLODSUMDEC>
<CUSOFFFENT730>
<RefNumCUSOFFFENT731>ES009999</RefNumCUSOFFFENT731>
</CUSOFFFENT730>
</ie:CC305A>
</soapenv:Body>
</soapenv:Envelope>
Expand Up @@ -27,10 +27,10 @@
</PRODOCDC2>
</GOOITEGDS>
<PERLODSUMDEC xmlns:ie="https://www2.agenciatributaria.gob.es/ADUA/internet/es/aeat/dit/adu/aden/enswsv5/IE304V5Sal.xsd">
<TINPLD1>ESB27716000</TINPLD1>
<TINPLD1>ESB12345678</TINPLD1>
</PERLODSUMDEC>
<CUSOFFFENT730 xmlns:ie="https://www2.agenciatributaria.gob.es/ADUA/internet/es/aeat/dit/adu/aden/enswsv5/IE304V5Sal.xsd">
<RefNumCUSOFFFENT731>ES001111</RefNumCUSOFFFENT731>
<RefNumCUSOFFFENT731>ES001112</RefNumCUSOFFFENT731>
<ExpDatOfArrFIRENT733>201801262300</ExpDatOfArrFIRENT733>
</CUSOFFFENT730>
</ie:CC304A>
Expand Down
9 changes: 9 additions & 0 deletions tests/test_serializers.py
Expand Up @@ -48,6 +48,12 @@ def test_exs_serializer(zeep_response):
{'type': '12', 'pointer': 'ITI.ITI', 'code': 'R879',
'reason': 'No error message supplied'}),
# ENS Modification
('enswsv5', 'ens_modification_IE313V5.wsdl', 'ens_modification_error_IE305V5Sal.xml',
'IE313V5', serializers.ENSModificationFunctionalErrorSerializer, True,
{'type': '15', 'pointer': 'NTF.NOTPAR670', 'code': 'C583',
'value': 'Example Trader Name', 'reason': 'Trader not allowed to amend'}),
# EXS
('exswsv2', 'exs_presentation_IE615V2.wsdl', 'exs_presentation_success_IE628V2Sal.xml',
'IE615V2', serializers.EXSSerializer, False,
Expand Down Expand Up @@ -93,6 +99,9 @@ def test_get_serializer_for_unmapped_response():
('ens_presentation_error_IE917V5Sal.xml',
'https://www2.agenciatributaria.gob.es/ADUA/internet/es/aeat/dit/adu/aden/enswsv5/IE917V5Sal.xsd'), # NOQA
('ens_modification_error_IE305V5Sal.xml',
'https://www2.agenciatributaria.gob.es/ADUA/internet/es/aeat/dit/adu/aden/enswsv5/IE305V5Sal.xsd'), # NOQA
])
def test_parse_xsd(response_etree_element, filename, expected):
xml = response_etree_element(filename)
Expand Down

0 comments on commit 5ea499a

Please sign in to comment.