mas pruebas y algunos pequenos cambios
FossilOrigin-Name: 02bc90719bb17216a749568086887a7d27878fdbd81febfb88a9fb1e68aa8205
This commit is contained in:
		| @@ -13,7 +13,9 @@ import facho.fe.model as model | ||||
| import facho.fe.form as form | ||||
| from facho import fe | ||||
|  | ||||
| def test_simple_invoice(): | ||||
| import helpers | ||||
|  | ||||
| def simple_invoice(): | ||||
|     invoice = model.Invoice() | ||||
|     invoice.dian.software_security_code = '12345' | ||||
|     invoice.dian.software_provider.provider_id = 'provider-id' | ||||
| @@ -21,25 +23,6 @@ def test_simple_invoice(): | ||||
|     invoice.dian.control.prefix = 'SETP' | ||||
|     invoice.dian.control.from_range =  '1000' | ||||
|     invoice.dian.control.to_range = '1000' | ||||
|  | ||||
|     invoice.id = '323200000129' | ||||
|     invoice.issue = datetime.strptime('2019-01-16 10:53:10-05:00', '%Y-%m-%d %H:%M:%S%z') | ||||
|     invoice.supplier.party.id = '700085371' | ||||
|     invoice.customer.party.id = '800199436' | ||||
|  | ||||
|     line = invoice.lines.create() | ||||
|     line.quantity = 1 | ||||
|     line.price = form.Amount(5_000) | ||||
|     subtotal = line.taxtotal.subtotals.create() | ||||
|     subtotal.percent = 19.0 | ||||
|     assert '<Invoice><ID>323200000129</ID><IssueDate>2019-01-16T10:53:10-05:00</IssueDate><IssueTime>10:5310-05:00</IssueTime><AccountingSupplierParty><Party><ID>700085371</ID></Party></AccountingSupplierParty><AccountingCustomerParty><Party><ID>800199436</ID></Party></AccountingCustomerParty><InvoiceLine><InvoicedQuantity unitCode="NAR">1</InvoicedQuantity><TaxTotal><TaxAmount currencyID="COP">0.0</TaxAmount><TaxSubTotal><TaxableAmount currencyID="COP">0.0</TaxableAmount><TaxAmount currencyID="COP">0.0</TaxAmount><Percent>19.0</Percent><TaxCategory><Percent>19.0</Percent></TaxCategory></TaxSubTotal></TaxTotal><Price><PriceAmount currencyID="COP">5000.0</PriceAmount>5000.0</Price><LineExtensionAmount currencyID="COP">5000.0</LineExtensionAmount></InvoiceLine><LegalMonetaryTotal><LineExtensionAmount currencyID="COP">0.0</LineExtensionAmount></LegalMonetaryTotal><TaxTotal><TaxAmount currencyID="COP">0.0</TaxAmount><TaxSubTotal><TaxableAmount currencyID="COP">0.0</TaxableAmount><TaxAmount currencyID="COP">0.0</TaxAmount><Percent>19.0</Percent><TaxCategory><Percent>19.0</Percent><TaxScheme><ID>01</ID></TaxScheme></TaxCategory></TaxSubTotal></TaxTotal><TaxTotal><TaxAmount currencyID="COP">0.0</TaxAmount><TaxSubTotal><TaxableAmount currencyID="COP">0.0</TaxableAmount><TaxAmount currencyID="COP">0.0</TaxAmount><TaxCategory><TaxScheme><ID>04</ID></TaxScheme></TaxCategory></TaxSubTotal></TaxTotal><TaxTotal><TaxAmount currencyID="COP">0.0</TaxAmount><TaxSubTotal><TaxableAmount currencyID="COP">0.0</TaxableAmount><TaxAmount currencyID="COP">0.0</TaxAmount><TaxCategory><TaxScheme><ID>03</ID></TaxScheme></TaxCategory></TaxSubTotal></TaxTotal></Invoice>' == invoice.to_xml() | ||||
|  | ||||
|  | ||||
| def test_simple_invoice_cufe(): | ||||
|     token = '693ff6f2a553c3646a063436fd4dd9ded0311471' | ||||
|     environment = fe.AMBIENTE_PRODUCCION | ||||
|  | ||||
|     invoice = model.Invoice() | ||||
|     invoice.id = '323200000129' | ||||
|     invoice.issue = datetime.strptime('2019-01-16 10:53:10-05:00', '%Y-%m-%d %H:%M:%S%z') | ||||
|     invoice.supplier.party.id = '700085371' | ||||
| @@ -54,4 +37,34 @@ def test_simple_invoice_cufe(): | ||||
|     line.quantity = 1 | ||||
|     line.price = 1_500_000 | ||||
|  | ||||
|     return invoice | ||||
|  | ||||
| def test_simple_invoice_cufe(): | ||||
|     token = '693ff6f2a553c3646a063436fd4dd9ded0311471' | ||||
|     environment = fe.AMBIENTE_PRODUCCION | ||||
|     invoice = simple_invoice() | ||||
|     assert invoice.cufe(token, environment) == '8bb918b19ba22a694f1da11c643b5e9de39adf60311cf179179e9b33381030bcd4c3c3f156c506ed5908f9276f5bd9b4' | ||||
|  | ||||
| def test_simple_invoice_sign_dian(monkeypatch): | ||||
|     invoice = simple_invoice() | ||||
|  | ||||
|     xmlstring = invoice.to_xml() | ||||
|     p12_data = open('./tests/example.p12', 'rb').read() | ||||
|     signer = fe.DianXMLExtensionSigner.from_bytes(p12_data) | ||||
|  | ||||
|     with monkeypatch.context() as m: | ||||
|         helpers.mock_urlopen(m) | ||||
|         xmlsigned = signer.sign_xml_string(xmlstring) | ||||
|     assert "Signature" in xmlsigned | ||||
|  | ||||
|  | ||||
| def test_dian_extension_authorization_provider(): | ||||
|     invoice = simple_invoice() | ||||
|     xml = fe.FeXML.from_string(invoice.to_xml()) | ||||
|     provider_id = xml.get_element('/fe:Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:AuthorizationProvider/sts:AuthorizationProviderID') | ||||
|  | ||||
|     assert provider_id.attrib['schemeID'] == '4' | ||||
|     assert provider_id.attrib['schemeName'] == '31' | ||||
|     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' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user