#!/usr/bin/env python # -*- coding: utf-8 -*- # This file is part of facho. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. """Tests for `facho` package.""" import pytest # from datetime import datetime import copy from facho.fe import form from facho.fe import form_xml # from fixtures import * from fixtures import ( simple_invoice, simple_invoice_without_lines, simple_credit_note_without_lines, simple_debit_note_without_lines) simple_invoice = simple_invoice simple_invoice_without_lines = simple_invoice_without_lines simple_credit_note_without_lines = simple_credit_note_without_lines simple_debit_note_without_lines = simple_debit_note_without_lines def test_import_DIANInvoiceXML(): try: form_xml.DIANInvoiceXML except AttributeError: pytest.fail("unexpected not found") def test_import_DIANDebitNoteXML(): try: form_xml.DIANDebitNoteXML except AttributeError: pytest.fail("unexpected not found") def test_import_DIANCreditNoteXML(): try: form_xml.DIANCreditNoteXML except AttributeError: pytest.fail("unexpected not found") def test_allowance_charge_in_invoice(simple_invoice_without_lines): inv = copy.copy(simple_invoice_without_lines) inv.add_invoice_line(form.InvoiceLine( quantity=form.Quantity(1, '94'), description='productofacho', item=form.StandardItem(9999), price=form.Price( amount=form.Amount(100.0), type_code='01', type='x' ), tax=form.TaxTotal( subtotals=[ form.TaxSubTotal( percent=19.0, )]), )) inv.add_allowance_charge(form.AllowanceCharge(amount=form.Amount(19.0))) inv.calculate() xml = form_xml.DIANInvoiceXML(inv) assert xml.get_element_text('./cac:AllowanceCharge/cbc:ID') == '1' assert xml.get_element_text( './cac:AllowanceCharge/cbc:ChargeIndicator') == 'true' assert xml.get_element_text( './cac:AllowanceCharge/cbc:Amount') == '19.0' assert xml.get_element_text( './cac:AllowanceCharge/cbc:BaseAmount') == '100.0' def test_allowance_charge_in_invoice_line(simple_invoice_without_lines): inv = copy.copy(simple_invoice_without_lines) inv.add_invoice_line(form.InvoiceLine( quantity=form.Quantity(1, '94'), description='producto facho', item=form.StandardItem(9999), price=form.Price( amount=form.Amount(100.0), type_code='01', type='x' ), tax=form.TaxTotal( subtotals=[ form.TaxSubTotal( percent=19.0, )] ), allowance_charge=[ form.AllowanceChargeAsDiscount(amount=form.Amount(10.0)) ] )) inv.calculate() # se aplico descuento assert inv.invoice_legal_monetary_total.line_extension_amount == ( form.Amount(90.0)) xml = form_xml.DIANInvoiceXML(inv) with pytest.raises(AttributeError): assert xml.get_element_text( '/fe:Invoice/cac:AllowanceCharge/cbc:ID') == '1' xml.get_element_text( '/fe:Invoice/cac:InvoiceLine/cac:AllowanceCharge/cbc:ID') == '1' xml.get_element_text( '/fe:Invoice/cac:InvoiceLine/cac:AllowanceCharge/cbc:BaseAmount' ) == '100.0'