Files
account-financial-tools/account_maturity_date_default/tests/test_account_move.py
2022-07-29 09:24:21 +02:00

106 lines
3.9 KiB
Python

# Copyright 2021-2022 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
from odoo import fields
from odoo.tests import Form, common
class TestAccountMove(common.TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.account_tax = cls.env["account.tax"].create(
{"name": "0%", "amount_type": "fixed", "type_tax_use": "sale", "amount": 0}
)
cls.partner = cls.env["res.partner"].create({"name": "Partner test"})
cls.product = cls.env["product.product"].create(
{
"name": "Product Test",
"list_price": 10,
"taxes_id": [(6, 0, [cls.account_tax.id])],
}
)
cls.account = cls.env["account.account"].create(
{
"name": "Test Account",
"code": "TEST",
"user_type_id": cls.env.ref("account.data_account_type_receivable").id,
"reconcile": True,
}
)
cls.other_account = cls.env["account.account"].create(
{
"name": "Test Account",
"code": "ACC",
"user_type_id": cls.env.ref(
"account.data_account_type_other_income"
).id,
"reconcile": True,
}
)
cls.journal_sale = cls.env["account.journal"].create(
{"name": "Test sale journal", "type": "sale", "code": "T-SALE"}
)
cls.journal_bank = cls.env["account.journal"].create(
{"name": "Test bank journal", "type": "bank", "code": "T-BANK"}
)
def _create_invoice(self):
move_form = Form(
self.env["account.move"].with_context(default_move_type="out_invoice")
)
move_form.partner_id = self.partner
move_form.invoice_date = fields.Date.from_string("2000-01-01")
with move_form.invoice_line_ids.new() as line_form:
line_form.product_id = self.product
invoice = move_form.save()
return invoice
def test_invoice_move_update(self):
invoice = self._create_invoice()
invoice.line_ids.write({"date_maturity": False})
invoice.write({"date": "1999-12-31"})
invoice_line = invoice.line_ids.filtered(
lambda x: x.account_id.internal_type == "receivable"
)
self.assertEqual(
invoice_line.date_maturity, fields.Date.from_string("1999-12-31")
)
def test_invoice_reconciliation(self):
invoice = self._create_invoice()
invoice.action_post()
invoice_line = invoice.line_ids.filtered(
lambda x: x.account_id.internal_type == "receivable"
)
statement = self.env["account.bank.statement"].create(
{
"journal_id": self.journal_bank.id,
"name": "Test",
"date": "2000-01-01",
"balance_end_real": 10.0,
"line_ids": [
(
0,
0,
{
"date": "2000-01-01",
"partner_id": self.partner.id,
"payment_ref": invoice.name,
"amount": 10.0,
},
)
],
}
)
statement.button_post()
statement_line = statement.line_ids.filtered(
lambda x: x.payment_ref == invoice.name
)
statement_line.reconcile(lines_vals_list=[{"id": invoice_line.id}])
self.assertEqual(invoice.payment_state, "paid")
line_receivable = statement_line.move_id.line_ids.filtered(
lambda x: x.account_id.internal_type == "receivable"
)
self.assertEqual(line_receivable.date_maturity, line_receivable.move_id.date)