fache/fe/form: Quantity require UnidadesMedida.
FossilOrigin-Name: 675900c1251c0b7319dc8b395ce5d385297209197ce13b0ee5358b4ce619d9a8
This commit is contained in:
@@ -71,6 +71,7 @@ __all__ = ['TipoOrganizacion',
|
||||
'TipoAmbiente',
|
||||
'TipoDocumento',
|
||||
'TipoImpuesto',
|
||||
'UnidadesMedida',
|
||||
'CodigoPrecioReferencia',
|
||||
'MediosPago',
|
||||
'RegimenFiscal',
|
||||
@@ -98,3 +99,4 @@ Departamento = CodeList(path_for_codelist('Departamentos-2.1.gc'), 'code', 'name
|
||||
Paises = CodeList(path_for_codelist('Paises-2.1.gc'), 'code', 'name')
|
||||
TipoIdFiscal = CodeList(path_for_codelist('TipoIdFiscal-2.1.gc'), 'code', 'name')
|
||||
CodigoDescuento = CodeList(path_for_codelist('CodigoDescuento-2.1.gc'), 'code', 'name')
|
||||
UnidadesMedida = CodeList(path_for_codelist('UnidadesMedida-2.1.gc'), 'code', 'name')
|
||||
|
||||
@@ -113,8 +113,30 @@ class Amount:
|
||||
return round(self.amount, DECIMAL_PRECISION)
|
||||
|
||||
|
||||
class Quantity(Amount):
|
||||
pass
|
||||
class Quantity:
|
||||
|
||||
def __init__(self, val, code):
|
||||
if not isinstance(val, int):
|
||||
raise ValueError('val expected int')
|
||||
if code not in codelist.UnidadesMedida:
|
||||
raise ValueError("code [%s] not found" % (code))
|
||||
|
||||
self.value = val
|
||||
self.code = code
|
||||
|
||||
def __mul__(self, other):
|
||||
if isinstance(other, Amount):
|
||||
return Amount(self.value) * other
|
||||
return self.value * other
|
||||
|
||||
def __lt__(self, other):
|
||||
if isinstance(other, Amount):
|
||||
return Amount(self.value) < other
|
||||
return self.value < other
|
||||
|
||||
def __str__(self):
|
||||
return str(self.value)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Item:
|
||||
|
||||
@@ -523,7 +523,9 @@ class DIANInvoiceXML(fe.FeXML):
|
||||
|
||||
line.set_element('./cac:Price/cbc:PriceAmount', invoice_line.price.amount, currencyID="COP")
|
||||
#DIAN 1.7.-2020: FBB04
|
||||
line.set_element('./cac:Price/cbc:BaseQuantity', invoice_line.price.amount)
|
||||
line.set_element('./cac:Price/cbc:BaseQuantity',
|
||||
invoice_line.quantity,
|
||||
unitCode=invoice_line.quantity.code)
|
||||
|
||||
|
||||
def attach_invoice(fexml, invoice):
|
||||
|
||||
Reference in New Issue
Block a user