Skip to content
Open
5 changes: 4 additions & 1 deletion openupgrade_scripts/apriori.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,9 @@
"pos_sale_order_load": "pos_sale",
# OCA/product-attribute
"stock_account_product_cost_security": "product_cost_security",
"product_sale_tax_price_included": "account",
# OCA/queue
"queue_job_context": "queue_job",
# OCA/server-tools
"base_jsonify": "jsonifier",
# OCA/server-ux
Expand All @@ -106,7 +109,7 @@
"stock_inventory_valuation_pivot": "stock_account",
# OCA/stock-logistics-warehouse
"stock_inventory_exclude_sublocation": "stock",
"stock_orderpoint_manual_procurement": "stock",
"stock_putaway_method": "stock_putaway_hook",
# OCA/stock-logistics-workflow
"stock_deferred_assign": "stock",
"stock_move_assign_picking_hook": "stock",
Expand Down
63 changes: 27 additions & 36 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,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()
Expand Down
Loading