se crea parcialmente Address, Country

FossilOrigin-Name: 9db11d9b88e2e0065960ac07efe88e8dd8d87706bda88074845f6bfcfecc737b
This commit is contained in:
bit4bit 2021-08-09 00:29:37 +00:00
parent efe93ecc3c
commit 3a349a746e
3 changed files with 32 additions and 6 deletions

View File

@ -258,7 +258,7 @@ class FachoXML:
xpath = self.fragment_prefix + self._path_xpath_for(xpath)
elem = self.builder.xpath(self.root, xpath)
if elem is None:
raise ValueError('xpath %s invalid' % (xpath))
raise AttributeError('xpath %s invalid' % (xpath))
text = self.builder.get_text(elem)
return format_(text)

View File

@ -11,6 +11,12 @@ from copy import copy
import hashlib
class PhysicalLocation(model.Model):
__name__ = 'PhysicalLocation'
address = fields.Many2One(Address, namespace='cac')
class PartyTaxScheme(model.Model):
__name__ = 'PartyTaxScheme'
@ -20,11 +26,12 @@ class PartyTaxScheme(model.Model):
class Party(model.Model):
__name__ = 'Party'
id = fields.Virtual(setter='set_id')
id = fields.Virtual(setter='_on_set_id')
tax_scheme = fields.Many2One(PartyTaxScheme, namespace='cac')
def set_id(self, name, value):
location = fields.Many2One(PhysicalLocation, namespace='cac')
def _on_set_id(self, name, value):
self.tax_scheme.company_id = value
return value
@ -256,6 +263,7 @@ class Invoice(model.Model):
__namespace__ = fe.NAMESPACES
_ubl_extensions = fields.Many2One(UBLExtensions, namespace='ext')
# nos interesa el acceso solo los atributos de la DIAN
dian = fields.Virtual(getter='get_dian_extension')
profile_id = fields.Many2One(Element, name='ProfileID', namespace='cbc', default='DIAN 2.1')

View File

@ -3,14 +3,14 @@ import facho.model.fields as fields
from datetime import date, datetime
__all__ = ['Element', 'Name', 'Date', 'Time', 'Period', 'ID']
__all__ = ['Element', 'Name', 'Date', 'Time', 'Period', 'ID', 'Address', 'Country']
class Element(model.Model):
"""
Lo usuamos para elementos que solo manejan contenido
"""
__name__ = 'Element'
class Name(model.Model):
__name__ = 'Name'
@ -53,3 +53,21 @@ class ID(model.Model):
def __str__(self):
return str(self._value)
class Country(model.Model):
__name__ = 'Country'
name = fields.Many2One(Element, name='Name', namespace='cbc')
class Address(model.Model):
__name__ = 'Address'
#DIAN 1.7.-2020: FAJ08
#DIAN 1.7.-2020: CAJ09
id = fields.Many2One(Element, name='ID', namespace='cbc')
#DIAN 1.7.-2020: FAJ09
#DIAN 1.7.-2020: CAJ10
city = fields.Many2One(Element, name='CityName', namespace='cbc')