[FIX] spreadsheet_account: fix no account match

Steps to reproduce:
- create an empty spreadsheet
- type in a cell '=ODOO.BALANCE("qsdfqsf", "02/2024")'
=> #ERROR

There's no account that match the given code.
The account.move.line domain ends up having a clause
`('account_id', 'in', [])`
The ORM detects the domain won't match anything and
early returns an empty list []

Our code expects a query object and not a list => boom

opw-3872445

closes odoo/odoo#163444

X-original-commit: 95de1332196fde7bfa5d178c6c0b7995cd892acb
Signed-off-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
Signed-off-by: Lucas Lefèvre (lul) <lul@odoo.com>
This commit is contained in:
Lucas Lefèvre (lul)
2024-04-26 06:49:58 +00:00
parent 4939846774
commit 93e28ea102
2 changed files with 22 additions and 1 deletions
+1 -1
View File
@@ -113,7 +113,7 @@ class AccountMove(models.Model):
company_id = args["company_id"] or self.env.company.id
domain = self._build_spreadsheet_formula_domain(args)
# remove this when _search always returns a Query object
if domain == expression.FALSE_DOMAIN:
if expression.is_false(self.env["account.move.line"], domain):
results.append({"credit": 0, "debit": 0})
continue
MoveLines = self.env["account.move.line"].with_company(company_id)
@@ -875,6 +875,27 @@ class SpreadsheetAccountingFunctionsTest(AccountTestInvoicingCommon):
],
)
def test_code_no_account(self):
"""code that doesn't match any account"""
self.assertEqual(
self.env["account.account"].spreadsheet_fetch_debit_credit(
[
{
"date_range": {
"range_type": "year",
"year": 2022,
},
"codes": ["10000000000"],
"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(