facho/fe/form.py: visit pattern para validador

FossilOrigin-Name: fd853b5eeeee9ef353c5d0098c1a271488fec229e3fc4b537ce9bcb44f799f6b
This commit is contained in:
bit4bit@riseup.net 2020-05-30 02:53:26 +00:00
parent dc6d9076f1
commit 6aebada2d6
2 changed files with 14 additions and 13 deletions

View File

@ -116,11 +116,11 @@ class Invoice:
def add_invoice_line(self, line: InvoiceLine):
self.invoice_lines.append(line)
def validate(self, validator):
validator.validate_customer(self.invoice_customer)
validator.validate_supplier(self.invoice_supplier)
def accept(self, visitor):
visitor.visit_customer(self.invoice_customer)
visitor.visit_supplier(self.invoice_supplier)
for invline in self.invoice_lines:
validator.validate_invoice_line(self, invline)
visitor.visit_invoice_line(invline)
def _calculate_legal_monetary_total(self):
for invline in self.invoice_lines:
@ -155,13 +155,17 @@ class DianResolucion0001Validator:
except KeyError:
self.errors.append(('organization_code', 'not found'))
def validate_customer(self, customer):
def validate(self, invoice):
invoice.accept(self)
return not self.errors
def visit_customer(self, customer):
self._validate_party(customer)
def validate_supplier(self, supplier):
def visit_supplier(self, supplier):
self._validate_party(supplier)
def validate_invoice_line(self, invoice, line):
def visit_invoice_line(self, line):
pass
def valid(self):

View File

@ -72,8 +72,7 @@ def simple_invoice():
def test_invoicesimple_build(simple_invoice):
invoice_validator = form.DianResolucion0001Validator()
simple_invoice.validate(invoice_validator)
assert invoice_validator.valid() == True
assert invoice_validator.validate(simple_invoice) == True
xml = form.DIANInvoiceXML(simple_invoice)
supplier_name = xml.get_element_text('/fe:Invoice/fe:AccountingSupplierParty/fe:Party/cac:PartyName/cbc:Name')
@ -91,8 +90,7 @@ def test_invoicesimple_build(simple_invoice):
def test_invoicesimple_build_with_cufe(simple_invoice):
invoice_validator = form.DianResolucion0001Validator()
simple_invoice.validate(invoice_validator)
assert invoice_validator.valid() == True
assert invoice_validator.validate(simple_invoice) == True
xml = form.DIANInvoiceXML(simple_invoice)
cufe_extension = fe.DianXMLExtensionCUFE(simple_invoice)
xml.add_extension(cufe_extension)
@ -102,8 +100,7 @@ def test_invoicesimple_build_with_cufe(simple_invoice):
def test_invoicesimple_xml_signed(monkeypatch, simple_invoice):
invoice_validator = form.DianResolucion0001Validator()
simple_invoice.validate(invoice_validator)
assert invoice_validator.valid() == True
assert invoice_validator.validate(simple_invoice) == True
xml = form.DIANInvoiceXML(simple_invoice)
signer = fe.DianXMLExtensionSigner('./tests/example.p12')