facho/fe/form.py: visit pattern para validador
FossilOrigin-Name: fd853b5eeeee9ef353c5d0098c1a271488fec229e3fc4b537ce9bcb44f799f6b
This commit is contained in:
parent
dc6d9076f1
commit
6aebada2d6
@ -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):
|
||||
|
@ -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')
|
||||
|
Loading…
Reference in New Issue
Block a user