diff --git a/openupgrade_scripts/scripts/hr_expense/15.0.2.0/post-migration.py b/openupgrade_scripts/scripts/hr_expense/15.0.2.0/post-migration.py index c9b5b354fe41..35f1c12ace23 100644 --- a/openupgrade_scripts/scripts/hr_expense/15.0.2.0/post-migration.py +++ b/openupgrade_scripts/scripts/hr_expense/15.0.2.0/post-migration.py @@ -14,44 +14,35 @@ def _fill_payment_state(env): openupgrade.logged_query( env.cr, """ - UPDATE account_move_line - SET exclude_from_invoice_tab=(coalesce(quantity, 0) = 0) - WHERE expense_id IS NOT NULL + UPDATE account_move_line AS aml + SET exclude_from_invoice_tab = true + FROM account_account AS aa + INNER JOIN account_account_type AS aat ON + aa.user_type_id = aat.id + WHERE + aml.account_id = aa.id AND + aml.expense_id IS NOT NULL AND + aat.type = 'payable' """, ) - # Recompute payment_state for the moves associated to the expenses, as on - # v14 these ones were not computed being of type `entry`, which changes now - # on v15 if the method `_payment_state_matters` returns True, which is the - # case for the expense moves - for move in env["hr.expense.sheet"].search([]).account_move_id: - # Extracted and adapted from _compute_amount() in account.move - new_pmt_state = "not_paid" if move.move_type != "entry" else False - total_to_pay = total_residual = 0.0 - for line in move.line_ids: - if line.account_id.user_type_id.type in ("receivable", "payable"): - total_to_pay += line.balance - total_residual += line.amount_residual - currencies = move._get_lines_onchange_currency().currency_id - currency = currencies if len(currencies) == 1 else move.company_id.currency_id - if currency.is_zero(move.amount_residual): - reconciled_payments = move._get_reconciled_payments() - if not reconciled_payments or all( - payment.is_matched for payment in reconciled_payments - ): - new_pmt_state = "paid" - else: - new_pmt_state = move._get_invoice_in_payment_state() - elif currency.compare_amounts(total_to_pay, total_residual) != 0: - new_pmt_state = "partial" - openupgrade.logged_query( - env.cr, - """ - UPDATE account_move - SET payment_state = %s - WHERE id = %s - """, - (new_pmt_state, move.id), - ) + # Disable fiscalyear_lock_date check + _check_fiscalyear_lock_date = env[ + "account.move" + ].__class__._check_fiscalyear_lock_date + env["account.move"].__class__._check_fiscalyear_lock_date = lambda self: None + # Recompute several fields (always_tax_exigible, amount_residual, + # amount_residual_signed, amount_untaxed, amount_untaxed_signed, + # payment_state) for the moves associated to the expenses, as on v14 these + # ones were not computed being of type `entry`, which changes now on v15 + # if the method `_payment_state_matters` returns True, which is the case + # for the expense moves + env["account.move"].with_context(active_test=False, tracking_disable=True).search( + [("line_ids.expense_id", "!=", False)] + )._compute_amount() + # Enable fiscalyear_lock_date check + env["account.move"].__class__._check_fiscalyear_lock_date = ( + _check_fiscalyear_lock_date + ) @openupgrade.migrate()