facho/fe/form: nuevo tipo UNSPSCItem.

FossilOrigin-Name: e5c3ad234c2757c56e942b27fa28de3105b59509a258214018be566d33319df9
This commit is contained in:
bit4bit@riseup.net 2020-11-02 23:51:36 +00:00
parent f4c2282e3d
commit a655dfd2c9
5 changed files with 33 additions and 12 deletions

View File

@ -100,15 +100,31 @@ class Amount:
@dataclass
class Item:
scheme_name: str
scheme_agency_id: str
scheme_id: str
description: str
id: str
@dataclass
class StandardItem(Item):
pass
def __init__(self, id_: str, description: str = ''):
super().__init__(id=id_,
description=description,
scheme_name='',
scheme_id='999',
scheme_agency_id='')
class UNSPSCItem(Item):
def __init__(self, id_: str, description: str = ''):
super().__init__(id=id_,
description=description,
scheme_name='UNSPSC',
scheme_id='001',
scheme_agency_id='10')
@dataclass
class Country:
code: str

View File

@ -514,8 +514,13 @@ class DIANInvoiceXML(fe.FeXML):
line.set_element('./cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cac:TaxScheme/cbc:ID', subtotal.tax_scheme_ident)
line.set_element('./cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cac:TaxScheme/cbc:Name', subtotal.tax_scheme_name)
line.set_element('./cac:Item/cbc:Description', invoice_line.item.description)
# TODO
line.set_element('./cac:Item/cac:StandardItemIdentification/cbc:ID', invoice_line.item.id)
line.set_element('./cac:Item/cac:StandardItemIdentification/cbc:ID',
invoice_line.item.id,
schemeID=invoice_line.item.scheme_id,
schemeName=invoice_line.item.scheme_name,
schemeAgencyID=invoice_line.item.scheme_agency_id)
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)

View File

@ -131,7 +131,7 @@ def simple_invoice():
inv.add_invoice_line(form.InvoiceLine(
quantity = 1,
description = 'producto facho',
item = form.StandardItem('test', 9999),
item = form.StandardItem( 9999),
price = form.Price(form.Amount(100.0), '01', ''),
tax = form.TaxTotal(
tax_amount = form.Amount(0.0),

View File

@ -91,7 +91,7 @@ def test_invoice_totals(simple_invoice_without_lines):
simple_invoice.add_invoice_line(form.InvoiceLine(
quantity = 1,
description = 'producto',
item = form.StandardItem('test', 9999),
item = form.StandardItem(9999),
price = form.Price(form.Amount(1_500_000), '01', ''),
tax = form.TaxTotal(
subtotals = [
@ -114,7 +114,7 @@ def test_invoice_cufe(simple_invoice_without_lines):
simple_invoice.add_invoice_line(form.InvoiceLine(
quantity = 1,
description = 'producto',
item = form.StandardItem('test', 111),
item = form.StandardItem(111),
price = form.Price(form.Amount(1_500_000), '01', ''),
tax = form.TaxTotal(
subtotals = [
@ -179,7 +179,7 @@ def test_credit_note_cude(simple_credit_note_without_lines):
simple_invoice.add_invoice_line(form.InvoiceLine(
quantity = 1,
description = 'producto',
item = form.StandardItem('test', 111),
item = form.StandardItem(111),
price = form.Price(form.Amount(5_000), '01', ''),
tax = form.TaxTotal(
subtotals = [
@ -214,7 +214,7 @@ def test_debit_note_cude(simple_debit_note_without_lines):
simple_invoice.add_invoice_line(form.InvoiceLine(
quantity = 1,
description = 'producto',
item = form.StandardItem('test', 111),
item = form.StandardItem(111),
price = form.Price(form.Amount(30_000), '01', ''),
tax = form.TaxTotal(
subtotals = [

View File

@ -18,7 +18,7 @@ def test_invoice_legalmonetary():
inv.add_invoice_line(form.InvoiceLine(
quantity = 1,
description = 'producto facho',
item = form.StandardItem('test', 9999),
item = form.StandardItem(9999),
price = form.Price(
amount = form.Amount(100.0),
type_code = '01',
@ -44,7 +44,7 @@ def test_FAU10():
inv.add_invoice_line(form.InvoiceLine(
quantity = 1,
description = 'producto facho',
item = form.StandardItem('test', 9999),
item = form.StandardItem(9999),
price = form.Price(
amount = form.Amount(100.0),
type_code = '01',
@ -72,7 +72,7 @@ def test_FAU14():
inv.add_invoice_line(form.InvoiceLine(
quantity = 1,
description = 'producto facho',
item = form.StandardItem('test', 9999),
item = form.StandardItem(9999),
price = form.Price(
amount = form.Amount(100.0),
type_code = '01',