Skip to content

Commit

Permalink
implemented is_valid()
Browse files Browse the repository at this point in the history
  • Loading branch information
duskybomb committed Jun 2, 2018
1 parent 7194648 commit 6fadb84
Showing 1 changed file with 42 additions and 1 deletion.
43 changes: 42 additions & 1 deletion facturx/facturx.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,48 @@ def is_valid(self):
Returns: true/false (validation passed/failed)
"""
pass
# Check XSD
try:
self.flavor.check_xsd(self.xml)
check_pass = True
except Exception:
check_pass = False

# Check required field is present
self.__make_dict()

if self.flavor.name == 'factur-x':
flavor_dict = self.factx
ns = {'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
'udt': 'urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100',
'rsm': 'urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100',
'ram': 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100',
'qdt': 'urn:un:unece:uncefact:data:standard:QualifiedDataType:100'
}
elif self.flavor.name == 'zugferd':
flavor_dict = self.zugf
ns = {'udt': 'urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15',
'ram': 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12',
'rsm': 'urn:ferd:CrossIndustryDocument:invoice:1p0',
'xsi': 'http://www.w3.org/2001/XMLSchema-instance'
}

tree = self._xml_from_file(self.pdf)

if tree is not None:
for k, v in flavor_dict.items():
try:
r = tree.xpath(v, namespaces=ns)
if r[0].text is None:
check_pass = False
except IndexError:
logger.error("Required field %s is empty", k)
check_pass = False

if check_pass:
return True
else:
return False

def write_pdf(self, path):
pdfwriter = FacturXPDFWriter(self)
Expand Down

0 comments on commit 6fadb84

Please sign in to comment.