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):
|
def add_invoice_line(self, line: InvoiceLine):
|
||||||
self.invoice_lines.append(line)
|
self.invoice_lines.append(line)
|
||||||
|
|
||||||
def validate(self, validator):
|
def accept(self, visitor):
|
||||||
validator.validate_customer(self.invoice_customer)
|
visitor.visit_customer(self.invoice_customer)
|
||||||
validator.validate_supplier(self.invoice_supplier)
|
visitor.visit_supplier(self.invoice_supplier)
|
||||||
for invline in self.invoice_lines:
|
for invline in self.invoice_lines:
|
||||||
validator.validate_invoice_line(self, invline)
|
visitor.visit_invoice_line(invline)
|
||||||
|
|
||||||
def _calculate_legal_monetary_total(self):
|
def _calculate_legal_monetary_total(self):
|
||||||
for invline in self.invoice_lines:
|
for invline in self.invoice_lines:
|
||||||
@ -155,13 +155,17 @@ class DianResolucion0001Validator:
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
self.errors.append(('organization_code', 'not found'))
|
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)
|
self._validate_party(customer)
|
||||||
|
|
||||||
def validate_supplier(self, supplier):
|
def visit_supplier(self, supplier):
|
||||||
self._validate_party(supplier)
|
self._validate_party(supplier)
|
||||||
|
|
||||||
def validate_invoice_line(self, invoice, line):
|
def visit_invoice_line(self, line):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def valid(self):
|
def valid(self):
|
||||||
|
@ -72,8 +72,7 @@ def simple_invoice():
|
|||||||
|
|
||||||
def test_invoicesimple_build(simple_invoice):
|
def test_invoicesimple_build(simple_invoice):
|
||||||
invoice_validator = form.DianResolucion0001Validator()
|
invoice_validator = form.DianResolucion0001Validator()
|
||||||
simple_invoice.validate(invoice_validator)
|
assert invoice_validator.validate(simple_invoice) == True
|
||||||
assert invoice_validator.valid() == True
|
|
||||||
xml = form.DIANInvoiceXML(simple_invoice)
|
xml = form.DIANInvoiceXML(simple_invoice)
|
||||||
|
|
||||||
supplier_name = xml.get_element_text('/fe:Invoice/fe:AccountingSupplierParty/fe:Party/cac:PartyName/cbc:Name')
|
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):
|
def test_invoicesimple_build_with_cufe(simple_invoice):
|
||||||
invoice_validator = form.DianResolucion0001Validator()
|
invoice_validator = form.DianResolucion0001Validator()
|
||||||
simple_invoice.validate(invoice_validator)
|
assert invoice_validator.validate(simple_invoice) == True
|
||||||
assert invoice_validator.valid() == True
|
|
||||||
xml = form.DIANInvoiceXML(simple_invoice)
|
xml = form.DIANInvoiceXML(simple_invoice)
|
||||||
cufe_extension = fe.DianXMLExtensionCUFE(simple_invoice)
|
cufe_extension = fe.DianXMLExtensionCUFE(simple_invoice)
|
||||||
xml.add_extension(cufe_extension)
|
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):
|
def test_invoicesimple_xml_signed(monkeypatch, simple_invoice):
|
||||||
invoice_validator = form.DianResolucion0001Validator()
|
invoice_validator = form.DianResolucion0001Validator()
|
||||||
simple_invoice.validate(invoice_validator)
|
assert invoice_validator.validate(simple_invoice) == True
|
||||||
assert invoice_validator.valid() == True
|
|
||||||
xml = form.DIANInvoiceXML(simple_invoice)
|
xml = form.DIANInvoiceXML(simple_invoice)
|
||||||
|
|
||||||
signer = fe.DianXMLExtensionSigner('./tests/example.p12')
|
signer = fe.DianXMLExtensionSigner('./tests/example.p12')
|
||||||
|
Loading…
Reference in New Issue
Block a user