コード例 #1
0
 def test_out_refund_cancel(self):
     invoice = self.create_draft_invoice(self.account_billing.id,
                                         self.fiscal_position_national,
                                         self.partner.id)
     invoice.onchange_fiscal_position_id_tbai_vat_regime_key()
     invoice.action_post()
     self.assertEqual(invoice.state, "posted")
     self.assertEqual(1, len(invoice.tbai_invoice_ids))
     (
         root,
         signature_value,
     ) = invoice.sudo(
     ).tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
     res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc, root)
     self.assertTrue(res)
     # Create an invoice refund by substitution
     account_move_reversal = (
         self.env["account.move.reversal"].with_context(
             active_model="account.move", active_ids=[invoice.id]).create(
                 dict(
                     reason="Credit Note for Binovo",
                     date=date.today(),
                     refund_method="cancel",
                 )))
     account_move_reversal.with_context(
         refund_method="cancel").reverse_moves()
     self.assertEqual(1, len(invoice.reversal_move_id))
     refund = invoice.reversal_move_id
     self.assertEqual("I", refund.tbai_refund_type)
     self.assertEqual("R1", refund.tbai_refund_key)
     self.assertEqual(refund.payment_state, "paid")
     self.assertEqual(1, len(refund.tbai_invoice_ids))
     (
         r_root,
         r_signature_value,
     ) = refund.sudo(
     ).tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
     r_res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc,
                                    r_root)
     self.assertTrue(r_res)
コード例 #2
0
 def test_out_invoice_cancel(self):
     invoice = self.create_draft_invoice(
         self.account_billing.id, self.fiscal_position_national)
     invoice.onchange_fiscal_position_id_tbai_vat_regime_key()
     invoice.compute_taxes()
     invoice.action_invoice_open()
     self.assertEqual(invoice.state, 'open')
     self.assertEqual(1, len(invoice.tbai_invoice_ids))
     root, signature_value = \
         invoice.sudo().tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
     res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc, root)
     self.assertTrue(res)
     invoice.sudo().tbai_invoice_ids.state = 'sent'
     invoice.sudo().journal_id.update_posted = True
     invoice.action_invoice_cancel()
     self.assertEqual(invoice.state, 'cancel')
     self.assertEqual(1, len(invoice.tbai_cancellation_ids))
     invs = invoice.sudo().tbai_cancellation_ids
     root, signature_value = invs.get_tbai_xml_signed_and_signature_value()
     res = XMLSchema.xml_is_valid(
         self.test_xml_cancellation_schema_doc, root)
     self.assertTrue(res)
コード例 #3
0
 def test_invoice_equivalence_surcharge_taxes(self):
     invoice = self.create_draft_invoice(
         self.account_billing.id, self.fiscal_position_surcharge, self.partner.id
     )
     invoice.onchange_fiscal_position_id_tbai_vat_regime_key()
     invoice.action_post()
     self.assertEqual(invoice.state, "posted")
     self.assertEqual(1, len(invoice.tbai_invoice_ids))
     (
         root,
         signature_value,
     ) = invoice.sudo().tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
     res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc, root)
     self.assertTrue(res)
コード例 #4
0
 def test_out_refund_refund(self):
     invoice = self.create_draft_invoice(self.account_billing.id,
                                         self.fiscal_position_national)
     invoice.onchange_fiscal_position_id_tbai_vat_regime_key()
     invoice.compute_taxes()
     invoice.action_invoice_open()
     self.assertEqual(invoice.state, 'open')
     self.assertEqual(1, len(invoice.tbai_invoice_ids))
     root, signature_value = \
         invoice.sudo().tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
     res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc, root)
     self.assertTrue(res)
     # Create an invoice refund by differences
     account_invoice_refund = \
         self.env['account.invoice.refund'].with_context(
             active_id=invoice.id,
             active_ids=invoice.ids
         ).create(dict(
             description='Credit Note for Binovo',
             date=date.today(),
             filter_refund='refund'
         ))
     account_invoice_refund.invoice_refund()
     self.assertEqual(1, len(invoice.refund_invoice_ids))
     refund = invoice.refund_invoice_ids
     self.assertEqual('I', refund.tbai_refund_type)
     self.assertEqual('R1', refund.tbai_refund_key)
     refund.compute_taxes()
     refund.action_invoice_open()
     self.assertEqual(refund.state, 'open')
     self.assertEqual(1, len(refund.tbai_invoice_ids))
     r_root, r_signature_value = \
         refund.sudo().tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
     r_res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc,
                                    r_root)
     self.assertTrue(r_res)
コード例 #5
0
 def test_out_invoice_cancel(self):
     invoice = self.create_draft_invoice(self.account_billing.id,
                                         self.fiscal_position_national,
                                         self.partner.id)
     invoice.onchange_fiscal_position_id_tbai_vat_regime_key()
     invoice.action_post()
     self.assertEqual(invoice.state, "posted")
     self.assertEqual(1, len(invoice.tbai_invoice_ids))
     (
         root,
         signature_value,
     ) = invoice.sudo(
     ).tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
     res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc, root)
     self.assertTrue(res)
     invoice.sudo().tbai_invoice_ids.state = "sent"
     invoice.button_cancel()
     self.assertEqual(invoice.state, "cancel")
     self.assertEqual(1, len(invoice.tbai_cancellation_ids))
     invs = invoice.sudo().tbai_cancellation_ids
     root, signature_value = invs.get_tbai_xml_signed_and_signature_value()
     res = XMLSchema.xml_is_valid(self.test_xml_cancellation_schema_doc,
                                  root)
     self.assertTrue(res)
コード例 #6
0
    def test_invoice_foreign_customer_extracommunity(self):
        invoice = self.create_draft_invoice(
            self.account_billing.id,
            self.fiscal_position_e,
            self.partner_extracommunity.id,
        )
        invoice.onchange_fiscal_position_id_tbai_vat_regime_key()
        # Artículo 21.- Exenciones en las exportaciones de bienes
        tax = invoice.invoice_line_ids.filtered(lambda line: any(
            [t.id == self.tax_iva0_e.id for t in line.tax_ids])).mapped(
                "tax_ids")

        fp_tbai_tax = self.env["account.fp.tbai.tax"].search(
            [("tax_id", "=", tax.id),
             ("position_id", "=", self.fiscal_position_e.id)],
            limit=1,
        )

        self.assertEqual(
            fp_tbai_tax.tbai_vat_exemption_key,
            self.vat_exemption_E2,
        )
        # Otros
        tax = invoice.invoice_line_ids.filtered(lambda line: any(
            [t.id == self.tax_iva0_sp_e.id for t in line.tax_ids])).mapped(
                "tax_ids")

        fp_tbai_tax = self.env["account.fp.tbai.tax"].search(
            [("tax_id", "=", tax.id),
             ("position_id", "=", self.fiscal_position_e.id)],
            limit=1,
        )

        self.assertEqual(
            fp_tbai_tax.tbai_vat_exemption_key,
            self.vat_exemption_E6,
        )

        invoice.action_post()
        self.assertEqual(invoice.state, "posted")
        self.assertEqual(1, len(invoice.tbai_invoice_ids))
        (
            root,
            signature_value,
        ) = invoice.sudo(
        ).tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
        res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc, root)
        self.assertTrue(res)
コード例 #7
0
 def test_invoice_foreign_currency(self):
     invoice = self.create_draft_invoice(self.account_billing.id,
                                         self.fiscal_position_national,
                                         self.partner)
     invoice.currency_id = self.env.ref("base.USD")
     invoice.onchange_fiscal_position_id_tbai_vat_regime_key()
     invoice.action_post()
     self.assertEqual(invoice.state, "posted")
     self.assertEqual(1, len(invoice.tbai_invoice_ids))
     (
         root,
         signature_value,
     ) = invoice.sudo(
     ).tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
     res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc, root)
     self.assertTrue(res)
コード例 #8
0
 def test_invoice_ipsi_igic(self):
     invoice = self.create_draft_invoice(self.account_billing.id,
                                         self.fiscal_position_ipsi_igic)
     for line in invoice.invoice_line_ids:
         if line.product_id != self.product_service:
             line.unlink()
     invoice.onchange_fiscal_position_id_tbai_vat_regime_key()
     invoice.compute_taxes()
     self.assertEqual(1, len(invoice.invoice_line_ids))
     self.assertEqual('RL', invoice.tax_line_ids.tbai_get_value_causa())
     invoice.action_invoice_open()
     self.assertEqual(invoice.state, 'open')
     self.assertEqual(1, len(invoice.tbai_invoice_ids))
     root, signature_value = \
         invoice.sudo().tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
     res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc, root)
     self.assertTrue(res)
コード例 #9
0
 def test_invoice_foreign_customer_intracommunity(self):
     invoice = self.create_draft_invoice(self.account_billing.id,
                                         self.fiscal_position_ic)
     invoice.partner_id = self.partner_intracommunity.id
     invoice.onchange_fiscal_position_id_tbai_vat_regime_key()
     invoice.compute_taxes()
     # Artículo 25.- Exenciones en las entregas de bienes destinados a otro Estado
     # miembro
     self.assertTrue(
         all(tax.tbai_vat_exemption_key == self.vat_exemption_E5
             for tax in invoice.tax_line_ids))
     invoice.action_invoice_open()
     self.assertEqual(invoice.state, 'open')
     self.assertEqual(1, len(invoice.tbai_invoice_ids))
     root, signature_value = \
         invoice.sudo().tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
     res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc, root)
     self.assertTrue(res)
コード例 #10
0
 def test_invoice_lines_protected_data(self):
     invoice = self.create_draft_invoice(self.account_billing.id,
                                         self.fiscal_position_national)
     invoice.onchange_fiscal_position_id_tbai_vat_regime_key()
     invoice.compute_taxes()
     self.main_company.tbai_protected_data = True
     invoice.action_invoice_open()
     root, signature_value = \
         invoice.sudo().tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
     res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc, root)
     self.assertTrue(res)
     invoice_line_details = root\
         .findall('Factura')[0]\
         .findall('DatosFactura')[0]\
         .findall('DetallesFactura')[0]\
         .findall('IDDetalleFactura')
     for invoice_line_detail in invoice_line_details:
         invoice_line_description = invoice_line_detail\
             .findall('DescripcionDetalle')[0]
         self.assertEqual(invoice_line_description.text,
                          self.main_company.tbai_protected_data_txt)
コード例 #11
0
 def test_invoice_lines_protected_data(self):
     invoice = self.create_draft_invoice(self.account_billing.id,
                                         self.fiscal_position_national,
                                         self.partner.id)
     invoice.onchange_fiscal_position_id_tbai_vat_regime_key()
     self.main_company.tbai_protected_data = True
     invoice.action_post()
     (
         root,
         signature_value,
     ) = invoice.sudo(
     ).tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
     res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc, root)
     self.assertTrue(res)
     invoice_line_details = (
         root.findall("Factura")[0].findall("DatosFactura")[0].findall(
             "DetallesFactura")[0].findall("IDDetalleFactura"))
     for invoice_line_detail in invoice_line_details:
         invoice_line_description = invoice_line_detail.findall(
             "DescripcionDetalle")[0]
         self.assertEqual(invoice_line_description.text,
                          self.main_company.tbai_protected_data_txt)
コード例 #12
0
 def test_invoice_foreign_customer_extracommunity(self):
     invoice = self.create_draft_invoice(self.account_billing.id,
                                         self.fiscal_position_e)
     invoice.partner_id = self.partner_extracommunity.id
     invoice.onchange_fiscal_position_id_tbai_vat_regime_key()
     invoice.compute_taxes()
     # Artículo 21.- Exenciones en las exportaciones de bienes
     self.assertEqual(
         invoice.tax_line_ids.filtered(
             lambda tax: tax.tax_id.id == self.tax_iva0_e.id).
         tbai_vat_exemption_key, self.vat_exemption_E2)
     # Otros
     self.assertEqual(
         invoice.tax_line_ids.filtered(
             lambda tax: tax.tax_id.id == self.tax_iva0_sp_e.id).
         tbai_vat_exemption_key, self.vat_exemption_E6)
     invoice.action_invoice_open()
     self.assertEqual(invoice.state, 'open')
     self.assertEqual(1, len(invoice.tbai_invoice_ids))
     root, signature_value = \
         invoice.sudo().tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
     res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc, root)
     self.assertTrue(res)
コード例 #13
0
 def test_invoice_line_iva_exento(self):
     invoice = self.create_draft_invoice(
         self.account_billing.id, self.fiscal_position_national, self.partner.id
     )
     product_iva_exento = self.create_product(
         product_name="Servicio Exento",
         product_type="service",
         product_taxes=[self.tax_iva0_exento_sujeto.id],
     )
     invoice.write(
         {
             "invoice_line_ids": [
                 (
                     0,
                     0,
                     {
                         "move_id": invoice.id,
                         "product_id": product_iva_exento.id,
                         "quantity": 1,
                         "price_unit": 100.0,
                         "name": "TBAI Invoice Line Test - service IVA Exento",
                         "account_id": self.account_revenue.id,
                     },
                 )
             ]
         }
     )
     invoice.onchange_fiscal_position_id_tbai_vat_regime_key()
     invoice.action_post()
     self.assertEqual(invoice.state, "posted")
     self.assertEqual(1, len(invoice.tbai_invoice_ids))
     (
         root,
         signature_value,
     ) = invoice.sudo().tbai_invoice_ids.get_tbai_xml_signed_and_signature_value()
     res = XMLSchema.xml_is_valid(self.test_xml_invoice_schema_doc, root)
     self.assertTrue(res)