se adicionan mas campos a Invoice.Party
FossilOrigin-Name: 033c6a3c0297c83c1d0bf2bb246f55fa7ce0d8aaa752f2ae3ec9515c763d61bf
This commit is contained in:
parent
6716efd121
commit
2e130d39e6
@ -20,16 +20,20 @@ class PhysicalLocation(model.Model):
|
||||
class PartyTaxScheme(model.Model):
|
||||
__name__ = 'PartyTaxScheme'
|
||||
|
||||
registration_name = fields.Many2One(Name, name='RegistrationName', namespace='cbc')
|
||||
company_id = fields.Many2One(ID, name='CompanyID', namespace='cbc')
|
||||
tax_level_code = fields.Many2One(ID, name='TaxLevelCode', namespace='cbc', default='ZZ')
|
||||
|
||||
|
||||
|
||||
class Party(model.Model):
|
||||
__name__ = 'Party'
|
||||
|
||||
id = fields.Virtual(setter='_on_set_id')
|
||||
name = fields.Many2One(PartyName, namespace='cac')
|
||||
|
||||
tax_scheme = fields.Many2One(PartyTaxScheme, namespace='cac')
|
||||
location = fields.Many2One(PhysicalLocation, namespace='cac')
|
||||
contact = fields.Many2One(Contact, namespace='cac')
|
||||
|
||||
def _on_set_id(self, name, value):
|
||||
self.tax_scheme.company_id = value
|
||||
@ -43,7 +47,7 @@ class AccountingCustomerParty(model.Model):
|
||||
class AccountingSupplierParty(model.Model):
|
||||
__name__ = 'AccountingSupplierParty'
|
||||
|
||||
party = fields.Many2One(Party)
|
||||
party = fields.Many2One(Party, namespace='cac')
|
||||
|
||||
class Quantity(model.Model):
|
||||
__name__ = 'Quantity'
|
||||
|
@ -3,7 +3,7 @@ import facho.model.fields as fields
|
||||
|
||||
from datetime import date, datetime
|
||||
|
||||
__all__ = ['Element', 'Name', 'Date', 'Time', 'Period', 'ID', 'Address', 'Country']
|
||||
__all__ = ['Element', 'PartyName', 'Name', 'Date', 'Time', 'Period', 'ID', 'Address', 'Country', 'Contact']
|
||||
|
||||
class Element(model.Model):
|
||||
"""
|
||||
@ -71,3 +71,20 @@ class Address(model.Model):
|
||||
#DIAN 1.7.-2020: CAJ10
|
||||
city = fields.Many2One(Element, name='CityName', namespace='cbc')
|
||||
|
||||
|
||||
class PartyName(model.Model):
|
||||
__name__ = 'PartyName'
|
||||
|
||||
name = fields.Many2One(Name, namespace='cbc')
|
||||
|
||||
def __default_set__(self, value):
|
||||
self.name = value
|
||||
return value
|
||||
|
||||
def __default_get__(self, name, value):
|
||||
return self.name
|
||||
|
||||
class Contact(model.Model):
|
||||
__name__ = 'Contact'
|
||||
|
||||
email = fields.Many2One(Name, name='ElectronicEmail', namespace='cbc')
|
||||
|
@ -8,11 +8,10 @@
|
||||
from datetime import datetime
|
||||
|
||||
import pytest
|
||||
|
||||
from lxml import etree
|
||||
import facho.fe.model as model
|
||||
import facho.fe.form as form
|
||||
from facho import fe
|
||||
|
||||
import helpers
|
||||
|
||||
def simple_invoice():
|
||||
@ -68,3 +67,53 @@ def test_dian_extension_authorization_provider():
|
||||
assert provider_id.attrib['schemeAgencyName'] == 'CO, DIAN (Dirección de Impuestos y Aduanas Nacionales)'
|
||||
assert provider_id.attrib['schemeAgencyID'] == '195'
|
||||
assert provider_id.text == '800197268'
|
||||
|
||||
def test_invoicesimple_xml_signed_using_fexml(monkeypatch):
|
||||
invoice = simple_invoice()
|
||||
|
||||
xml = fe.FeXML.from_string(invoice.to_xml())
|
||||
|
||||
signer = fe.DianXMLExtensionSigner('./tests/example.p12')
|
||||
|
||||
print(xml.tostring())
|
||||
with monkeypatch.context() as m:
|
||||
import helpers
|
||||
helpers.mock_urlopen(m)
|
||||
xml.add_extension(signer)
|
||||
|
||||
elem = xml.get_element('/fe:Invoice/ext:UBLExtensions/ext:UBLExtension[2]/ext:ExtensionContent/ds:Signature')
|
||||
assert elem.text is not None
|
||||
|
||||
def test_invoice_supplier_party():
|
||||
invoice = simple_invoice()
|
||||
invoice.supplier.party.name = 'superfacho'
|
||||
invoice.supplier.party.tax_scheme.registration_name = 'legal-superfacho'
|
||||
invoice.supplier.party.contact.email = 'superfacho@etrivial.net'
|
||||
|
||||
xml = fe.FeXML.from_string(invoice.to_xml())
|
||||
|
||||
name = xml.get_element('/fe:Invoice/cac:AccountingSupplierParty/cac:Party/cac:PartyName/cbc:Name')
|
||||
assert name.text == 'superfacho'
|
||||
|
||||
name = xml.get_element('/fe:Invoice/cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:RegistrationName')
|
||||
assert name.text == 'legal-superfacho'
|
||||
|
||||
name = xml.get_element('/fe:Invoice/cac:AccountingSupplierParty/cac:Party/cac:Contact/cbc:ElectronicEmail')
|
||||
assert name.text == 'superfacho@etrivial.net'
|
||||
|
||||
def test_invoice_customer_party():
|
||||
invoice = simple_invoice()
|
||||
invoice.customer.party.name = 'superfacho-customer'
|
||||
invoice.customer.party.tax_scheme.registration_name = 'legal-superfacho-customer'
|
||||
invoice.customer.party.contact.email = 'superfacho@etrivial.net'
|
||||
|
||||
xml = fe.FeXML.from_string(invoice.to_xml())
|
||||
|
||||
name = xml.get_element('/fe:Invoice/cac:AccountingCustomerParty/cac:Party/cac:PartyName/cbc:Name')
|
||||
assert name.text == 'superfacho-customer'
|
||||
|
||||
name = xml.get_element('/fe:Invoice/cac:AccountingCustomerParty/cac:Party/cac:PartyTaxScheme/cbc:RegistrationName')
|
||||
assert name.text == 'legal-superfacho-customer'
|
||||
|
||||
name = xml.get_element('/fe:Invoice/cac:AccountingCustomerParty/cac:Party/cac:Contact/cbc:ElectronicEmail')
|
||||
assert name.text == 'superfacho@etrivial.net'
|
||||
|
Loading…
Reference in New Issue
Block a user