facho/fe/form: nuevo tipo UNSPSCItem.
FossilOrigin-Name: e5c3ad234c2757c56e942b27fa28de3105b59509a258214018be566d33319df9
This commit is contained in:
		@@ -100,13 +100,29 @@ class Amount:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@dataclass
 | 
					@dataclass
 | 
				
			||||||
class Item:
 | 
					class Item:
 | 
				
			||||||
 | 
					    scheme_name: str
 | 
				
			||||||
 | 
					    scheme_agency_id: str
 | 
				
			||||||
 | 
					    scheme_id: str
 | 
				
			||||||
    description: str
 | 
					    description: str
 | 
				
			||||||
    id: str
 | 
					    id: str
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@dataclass
 | 
					 | 
				
			||||||
class StandardItem(Item):
 | 
					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
 | 
					@dataclass
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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: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:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cac:TaxScheme/cbc:Name', subtotal.tax_scheme_name)
 | 
				
			||||||
            line.set_element('./cac:Item/cbc:Description', invoice_line.item.description)
 | 
					            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")
 | 
					            line.set_element('./cac:Price/cbc:PriceAmount', invoice_line.price.amount, currencyID="COP")
 | 
				
			||||||
            #DIAN 1.7.-2020: FBB04
 | 
					            #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.price.amount)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -131,7 +131,7 @@ def simple_invoice():
 | 
				
			|||||||
    inv.add_invoice_line(form.InvoiceLine(
 | 
					    inv.add_invoice_line(form.InvoiceLine(
 | 
				
			||||||
        quantity = 1,
 | 
					        quantity = 1,
 | 
				
			||||||
        description = 'producto facho',
 | 
					        description = 'producto facho',
 | 
				
			||||||
        item = form.StandardItem('test', 9999),
 | 
					        item = form.StandardItem( 9999),
 | 
				
			||||||
        price = form.Price(form.Amount(100.0), '01', ''),
 | 
					        price = form.Price(form.Amount(100.0), '01', ''),
 | 
				
			||||||
        tax = form.TaxTotal(
 | 
					        tax = form.TaxTotal(
 | 
				
			||||||
            tax_amount = form.Amount(0.0),
 | 
					            tax_amount = form.Amount(0.0),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -91,7 +91,7 @@ def test_invoice_totals(simple_invoice_without_lines):
 | 
				
			|||||||
    simple_invoice.add_invoice_line(form.InvoiceLine(
 | 
					    simple_invoice.add_invoice_line(form.InvoiceLine(
 | 
				
			||||||
        quantity = 1,
 | 
					        quantity = 1,
 | 
				
			||||||
        description = 'producto',
 | 
					        description = 'producto',
 | 
				
			||||||
        item = form.StandardItem('test', 9999),
 | 
					        item = form.StandardItem(9999),
 | 
				
			||||||
        price = form.Price(form.Amount(1_500_000), '01', ''),
 | 
					        price = form.Price(form.Amount(1_500_000), '01', ''),
 | 
				
			||||||
        tax = form.TaxTotal(
 | 
					        tax = form.TaxTotal(
 | 
				
			||||||
            subtotals = [
 | 
					            subtotals = [
 | 
				
			||||||
@@ -114,7 +114,7 @@ def test_invoice_cufe(simple_invoice_without_lines):
 | 
				
			|||||||
    simple_invoice.add_invoice_line(form.InvoiceLine(
 | 
					    simple_invoice.add_invoice_line(form.InvoiceLine(
 | 
				
			||||||
        quantity = 1,
 | 
					        quantity = 1,
 | 
				
			||||||
        description = 'producto',
 | 
					        description = 'producto',
 | 
				
			||||||
        item = form.StandardItem('test', 111),
 | 
					        item = form.StandardItem(111),
 | 
				
			||||||
        price = form.Price(form.Amount(1_500_000), '01', ''),
 | 
					        price = form.Price(form.Amount(1_500_000), '01', ''),
 | 
				
			||||||
        tax = form.TaxTotal(
 | 
					        tax = form.TaxTotal(
 | 
				
			||||||
            subtotals = [
 | 
					            subtotals = [
 | 
				
			||||||
@@ -179,7 +179,7 @@ def test_credit_note_cude(simple_credit_note_without_lines):
 | 
				
			|||||||
    simple_invoice.add_invoice_line(form.InvoiceLine(
 | 
					    simple_invoice.add_invoice_line(form.InvoiceLine(
 | 
				
			||||||
        quantity = 1,
 | 
					        quantity = 1,
 | 
				
			||||||
        description = 'producto',
 | 
					        description = 'producto',
 | 
				
			||||||
        item = form.StandardItem('test', 111),
 | 
					        item = form.StandardItem(111),
 | 
				
			||||||
        price = form.Price(form.Amount(5_000), '01', ''),
 | 
					        price = form.Price(form.Amount(5_000), '01', ''),
 | 
				
			||||||
        tax = form.TaxTotal(
 | 
					        tax = form.TaxTotal(
 | 
				
			||||||
            subtotals = [
 | 
					            subtotals = [
 | 
				
			||||||
@@ -214,7 +214,7 @@ def test_debit_note_cude(simple_debit_note_without_lines):
 | 
				
			|||||||
    simple_invoice.add_invoice_line(form.InvoiceLine(
 | 
					    simple_invoice.add_invoice_line(form.InvoiceLine(
 | 
				
			||||||
        quantity = 1,
 | 
					        quantity = 1,
 | 
				
			||||||
        description = 'producto',
 | 
					        description = 'producto',
 | 
				
			||||||
        item = form.StandardItem('test', 111),
 | 
					        item = form.StandardItem(111),
 | 
				
			||||||
        price = form.Price(form.Amount(30_000), '01', ''),
 | 
					        price = form.Price(form.Amount(30_000), '01', ''),
 | 
				
			||||||
        tax = form.TaxTotal(
 | 
					        tax = form.TaxTotal(
 | 
				
			||||||
            subtotals = [
 | 
					            subtotals = [
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ def test_invoice_legalmonetary():
 | 
				
			|||||||
    inv.add_invoice_line(form.InvoiceLine(
 | 
					    inv.add_invoice_line(form.InvoiceLine(
 | 
				
			||||||
        quantity = 1,
 | 
					        quantity = 1,
 | 
				
			||||||
        description = 'producto facho',
 | 
					        description = 'producto facho',
 | 
				
			||||||
        item = form.StandardItem('test', 9999),
 | 
					        item = form.StandardItem(9999),
 | 
				
			||||||
        price = form.Price(
 | 
					        price = form.Price(
 | 
				
			||||||
            amount = form.Amount(100.0),
 | 
					            amount = form.Amount(100.0),
 | 
				
			||||||
            type_code = '01',
 | 
					            type_code = '01',
 | 
				
			||||||
@@ -44,7 +44,7 @@ def test_FAU10():
 | 
				
			|||||||
    inv.add_invoice_line(form.InvoiceLine(
 | 
					    inv.add_invoice_line(form.InvoiceLine(
 | 
				
			||||||
        quantity = 1,
 | 
					        quantity = 1,
 | 
				
			||||||
        description = 'producto facho',
 | 
					        description = 'producto facho',
 | 
				
			||||||
        item = form.StandardItem('test', 9999),
 | 
					        item = form.StandardItem(9999),
 | 
				
			||||||
        price = form.Price(
 | 
					        price = form.Price(
 | 
				
			||||||
            amount = form.Amount(100.0),
 | 
					            amount = form.Amount(100.0),
 | 
				
			||||||
            type_code = '01',
 | 
					            type_code = '01',
 | 
				
			||||||
@@ -72,7 +72,7 @@ def test_FAU14():
 | 
				
			|||||||
    inv.add_invoice_line(form.InvoiceLine(
 | 
					    inv.add_invoice_line(form.InvoiceLine(
 | 
				
			||||||
        quantity = 1,
 | 
					        quantity = 1,
 | 
				
			||||||
        description = 'producto facho',
 | 
					        description = 'producto facho',
 | 
				
			||||||
        item = form.StandardItem('test', 9999),
 | 
					        item = form.StandardItem(9999),
 | 
				
			||||||
        price = form.Price(
 | 
					        price = form.Price(
 | 
				
			||||||
            amount = form.Amount(100.0),
 | 
					            amount = form.Amount(100.0),
 | 
				
			||||||
            type_code = '01',
 | 
					            type_code = '01',
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user