mirror of
https://github.com/OCA/account-financial-tools.git
synced 2025-02-02 12:47:26 +02:00
116 lines
4.2 KiB
Python
116 lines
4.2 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.env = cls.env(
|
|
context=dict(
|
|
cls.env.context,
|
|
mail_create_nolog=True,
|
|
mail_create_nosubscribe=True,
|
|
mail_notrack=True,
|
|
no_reset_password=True,
|
|
tracking_disable=True,
|
|
)
|
|
)
|
|
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)
|