963 lines
33 KiB
Python
963 lines
33 KiB
Python
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
from datetime import date
|
||
|
|
||
|
from odoo import Command
|
||
|
from odoo.tests import tagged
|
||
|
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
||
|
|
||
|
|
||
|
@tagged("post_install", "-at_install")
|
||
|
class SpreadsheetAccountingFunctionsTest(AccountTestInvoicingCommon):
|
||
|
@classmethod
|
||
|
def setUpClass(cls, chart_template_ref=None):
|
||
|
super().setUpClass(chart_template_ref=chart_template_ref)
|
||
|
|
||
|
cls.account_revenue_c1 = cls.env["account.account"].create(
|
||
|
{
|
||
|
"company_id": cls.company_data["company"].id,
|
||
|
"name": "spreadsheet revenue Company 1",
|
||
|
"account_type": "income",
|
||
|
"code": "sp1234566",
|
||
|
}
|
||
|
)
|
||
|
|
||
|
cls.account_expense_c1 = cls.env["account.account"].create(
|
||
|
{
|
||
|
"company_id": cls.company_data["company"].id,
|
||
|
"name": "spreadsheet expense Company 1",
|
||
|
"account_type": "expense",
|
||
|
"code": "sp1234577",
|
||
|
}
|
||
|
)
|
||
|
|
||
|
cls.account_revenue_c2 = cls.env["account.account"].create(
|
||
|
{
|
||
|
"company_id": cls.company_data_2["company"].id,
|
||
|
"name": "spreadsheet revenue Company 2",
|
||
|
"account_type": "income",
|
||
|
"code": "sp99887755",
|
||
|
}
|
||
|
)
|
||
|
|
||
|
cls.account_expense_c2 = cls.env["account.account"].create(
|
||
|
{
|
||
|
"company_id": cls.company_data_2["company"].id,
|
||
|
"name": "spreadsheet expense Company 2",
|
||
|
"account_type": "expense",
|
||
|
"code": "sp99887766",
|
||
|
}
|
||
|
)
|
||
|
|
||
|
cls.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": cls.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2022-04-02",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": cls.account_revenue_c1.id,
|
||
|
"debit": 500,
|
||
|
}
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": cls.account_expense_c1.id,
|
||
|
"credit": 500,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
|
||
|
cls.env["account.move"].with_company(cls.company_data_2["company"]).create(
|
||
|
{
|
||
|
"company_id": cls.company_data_2["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2022-02-02",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c2",
|
||
|
"account_id": cls.account_revenue_c2.id,
|
||
|
"debit": 1500,
|
||
|
"company_id": cls.company_data_2["company"].id,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c2",
|
||
|
"account_id": cls.account_expense_c2.id,
|
||
|
"credit": 1500,
|
||
|
"company_id": cls.company_data_2["company"].id,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
|
||
|
def test_empty_payload(self):
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit([]), []
|
||
|
)
|
||
|
|
||
|
def test_exact_code(self):
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[{"credit": 0.0, "debit": 500.0}],
|
||
|
)
|
||
|
|
||
|
def test_two_codes(self):
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code, self.account_expense_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[{"credit": 500, "debit": 500.0}],
|
||
|
)
|
||
|
|
||
|
def test_two_codes_mixing_balance(self):
|
||
|
self.account_revenue_c1.sudo().include_initial_balance = True
|
||
|
self.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": self.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2000-07-02",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"debit": 555,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": self.account_expense_c1.id,
|
||
|
# not taken into account because the account
|
||
|
# has include_initial_balance=False
|
||
|
"credit": 555,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code, self.account_expense_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[{"credit": 500, "debit": 1055.0}],
|
||
|
)
|
||
|
|
||
|
def test_response_order(self):
|
||
|
request_1 = {
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
request_2 = {
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2020,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
[o1_res1, o1_res2] = self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[request_1, request_2]
|
||
|
)
|
||
|
[o2_res2, o2_res1] = self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[request_2, request_1]
|
||
|
)
|
||
|
self.assertEqual(o1_res1, o2_res1)
|
||
|
self.assertEqual(o1_res2, o2_res2)
|
||
|
|
||
|
def test_prefix_code(self):
|
||
|
code = "sp1234"
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": [code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 500.0, "debit": 500.0},
|
||
|
],
|
||
|
)
|
||
|
|
||
|
def test_duplicated_prefix_code(self):
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": ["sp1234", "sp1234"],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 500.0, "debit": 500.0},
|
||
|
],
|
||
|
)
|
||
|
|
||
|
def test_do_not_count_future_years(self):
|
||
|
self.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": self.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2022-04-02",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"debit": 1000,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": self.account_expense_c1.id,
|
||
|
"credit": 1000,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2021,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 0, "debit": 0.0},
|
||
|
],
|
||
|
)
|
||
|
|
||
|
def test_year_date_period(self):
|
||
|
self.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": self.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2020-04-02",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"debit": 1000,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": self.account_expense_c1.id,
|
||
|
"credit": 1000,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2021,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 0, "debit": 0.0},
|
||
|
],
|
||
|
)
|
||
|
|
||
|
def test_shifted_fiscal_year_date_period(self):
|
||
|
self.company_data["company"].fiscalyear_last_day = 3
|
||
|
self.company_data["company"].fiscalyear_last_month = "2"
|
||
|
self.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": self.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2023-01-02",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"debit": 1000,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": self.account_expense_c1.id,
|
||
|
"credit": 1000,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[{"credit": 0, "debit": 1500.0}],
|
||
|
)
|
||
|
|
||
|
def test_quarter_date_period(self):
|
||
|
self.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": self.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2022-07-02",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"debit": 777,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"credit": 777,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "quarter",
|
||
|
"year": 2022,
|
||
|
"quarter": 3,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[{"credit": 777, "debit": 777}],
|
||
|
)
|
||
|
|
||
|
def test_month_date_period(self):
|
||
|
self.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": self.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2022-07-02",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"debit": 666,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"credit": 666,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {"range_type": "month", "year": 2022, "month": 7},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[{"credit": 666, "debit": 666}],
|
||
|
)
|
||
|
|
||
|
def test_day_date_period(self):
|
||
|
self.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": self.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2022-07-02",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"debit": 555,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"credit": 555,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "day",
|
||
|
"year": 2022,
|
||
|
"month": 7,
|
||
|
"day": 2,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[{"credit": 555, "debit": 1055}],
|
||
|
)
|
||
|
|
||
|
def test_first_fiscal_day_date_period(self):
|
||
|
self.company_data["company"].fiscalyear_last_day = 3
|
||
|
self.company_data["company"].fiscalyear_last_month = "2"
|
||
|
self.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": self.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2022-02-03",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"debit": 111,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"credit": 111,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
self.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": self.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2022-02-04",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"debit": 423,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"credit": 423,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "day",
|
||
|
"year": 2022,
|
||
|
"month": 2,
|
||
|
"day": 4,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 423, "debit": 423},
|
||
|
],
|
||
|
)
|
||
|
|
||
|
def test_balance_account_by_year(self):
|
||
|
# On balance accounts, we sum the lines from the creation up to the last dat of date_range
|
||
|
self.account_revenue_c1.sudo().include_initial_balance = True
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2025,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 0, "debit": 500},
|
||
|
],
|
||
|
)
|
||
|
|
||
|
def test_balance_quarter_date_period(self):
|
||
|
self.account_revenue_c1.sudo().include_initial_balance = True
|
||
|
self.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": self.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2022-07-02",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"debit": 777,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"credit": 777,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "quarter",
|
||
|
"year": 2022,
|
||
|
"quarter": 3,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 777, "debit": 1277},
|
||
|
],
|
||
|
)
|
||
|
|
||
|
def test_balance_month_date_period(self):
|
||
|
self.account_revenue_c1.sudo().include_initial_balance = True
|
||
|
self.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": self.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2022-07-02",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"debit": 777,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"credit": 777,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {"range_type": "month", "year": 2022, "month": 7},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 777, "debit": 1277},
|
||
|
],
|
||
|
)
|
||
|
|
||
|
def test_balance_day_date_period(self):
|
||
|
self.account_revenue_c1.sudo().include_initial_balance = True
|
||
|
self.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": self.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2022-07-02",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"debit": 777,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"credit": 777,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "day",
|
||
|
"year": 2022,
|
||
|
"month": 7,
|
||
|
"day": 2,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 777, "debit": 1277},
|
||
|
],
|
||
|
)
|
||
|
|
||
|
def test_move_state_ignore_cancel(self):
|
||
|
self.account_revenue_c1.sudo().include_initial_balance = True
|
||
|
self.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": self.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2022-04-02",
|
||
|
"state": "cancel",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"debit": 10000000,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"credit": 10000000,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": False,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 0, "debit": 0},
|
||
|
],
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 0, "debit": 500},
|
||
|
],
|
||
|
)
|
||
|
|
||
|
def test_move_state_unposted(self):
|
||
|
self.account_revenue_c1.sudo().include_initial_balance = True
|
||
|
move = self.env["account.move"].create(
|
||
|
{
|
||
|
"company_id": self.company_data["company"].id,
|
||
|
"move_type": "entry",
|
||
|
"date": "2022-04-02",
|
||
|
"line_ids": [
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_debit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"debit": 888,
|
||
|
},
|
||
|
),
|
||
|
Command.create(
|
||
|
{
|
||
|
"name": "line_credit_c1",
|
||
|
"account_id": self.account_revenue_c1.id,
|
||
|
"credit": 888,
|
||
|
},
|
||
|
),
|
||
|
],
|
||
|
}
|
||
|
)
|
||
|
move._post()
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": False,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 888, "debit": 888},
|
||
|
],
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 888, "debit": 1388},
|
||
|
],
|
||
|
)
|
||
|
|
||
|
def test_empty_code(self):
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": [""],
|
||
|
"company_id": None,
|
||
|
"include_unposted": False,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 0, "debit": 0},
|
||
|
],
|
||
|
)
|
||
|
|
||
|
def test_no_code(self):
|
||
|
self.assertEqual(
|
||
|
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||
|
[
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": [],
|
||
|
"company_id": None,
|
||
|
"include_unposted": False,
|
||
|
}
|
||
|
]
|
||
|
),
|
||
|
[
|
||
|
{"credit": 0, "debit": 0},
|
||
|
],
|
||
|
)
|
||
|
|
||
|
def test_see_records_action(self):
|
||
|
action = self.env["account.account"].spreadsheet_move_line_action(
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": [self.account_revenue_c1.code],
|
||
|
"company_id": self.account_revenue_c1.company_id.id,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
action,
|
||
|
{
|
||
|
"type": "ir.actions.act_window",
|
||
|
"res_model": "account.move.line",
|
||
|
"view_mode": "list",
|
||
|
"views": [[False, "list"]],
|
||
|
"target": "current",
|
||
|
"domain": [
|
||
|
"&",
|
||
|
"&",
|
||
|
"&",
|
||
|
("account_id", "in", [self.account_revenue_c1.id]),
|
||
|
"|",
|
||
|
"&",
|
||
|
("account_id.include_initial_balance", "=", True),
|
||
|
("date", "<=", date(2022, 12, 31)),
|
||
|
"&",
|
||
|
"&",
|
||
|
("account_id.include_initial_balance", "=", False),
|
||
|
("date", ">=", date(2022, 1, 1)),
|
||
|
("date", "<=", date(2022, 12, 31)),
|
||
|
("company_id", "=", self.account_revenue_c1.company_id.id),
|
||
|
("move_id.state", "!=", "cancel"),
|
||
|
],
|
||
|
"name": "Journal items for account prefix sp1234566",
|
||
|
},
|
||
|
)
|
||
|
|
||
|
def test_see_records_action_no_code(self):
|
||
|
action = self.env["account.account"].spreadsheet_move_line_action(
|
||
|
{
|
||
|
"date_range": {
|
||
|
"range_type": "year",
|
||
|
"year": 2022,
|
||
|
},
|
||
|
"codes": [""],
|
||
|
"company_id": None,
|
||
|
"include_unposted": True,
|
||
|
}
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
action,
|
||
|
{
|
||
|
"type": "ir.actions.act_window",
|
||
|
"res_model": "account.move.line",
|
||
|
"view_mode": "list",
|
||
|
"views": [[False, "list"]],
|
||
|
"target": "current",
|
||
|
"domain": [(0, "=", 1)],
|
||
|
"name": "Journal items for account prefix ",
|
||
|
},
|
||
|
)
|