Skip to content

Commit

Permalink
[OU-FIX] fix hr.expense account.move and lines
Browse files Browse the repository at this point in the history
fix the value of several fields on account.move and account.move.line
records linked to hr.expense records.
  • Loading branch information
huguesdk committed Oct 2, 2024
1 parent 9af4744 commit 7cb0312
Showing 1 changed file with 19 additions and 28 deletions.
47 changes: 19 additions & 28 deletions openupgrade_scripts/scripts/hr_expense/15.0.2.0/post-migration.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,36 +14,27 @@ 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,
account_account_type AS aat
WHERE
aml.account_id = aa.id AND
aa.user_type_id = aat.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"
move.payment_state = new_pmt_state
# 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()


@openupgrade.migrate()
Expand Down

0 comments on commit 7cb0312

Please sign in to comment.