38 lines
1.2 KiB
Python
Executable File
38 lines
1.2 KiB
Python
Executable File
import logging
|
|
|
|
from odoo import SUPERUSER_ID, api
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
def migrate(cr, version):
|
|
env = api.Environment(cr, SUPERUSER_ID, {})
|
|
purchase_orders = env["purchase.order"].search([("state", "=", "purchase")])
|
|
for order in purchase_orders:
|
|
try:
|
|
_logger.info(f"Processing Purchase Order: {order.name} (ID: {order.id})")
|
|
valued_lines = order.order_line.invoice_lines.filtered(
|
|
lambda line: line.product_id
|
|
and line.product_id.cost_method != "standard"
|
|
and (
|
|
not line.company_id.tax_lock_date
|
|
or line.date > line.company_id.tax_lock_date
|
|
)
|
|
)
|
|
svls, _amls = valued_lines._apply_price_difference()
|
|
|
|
if svls:
|
|
svls._validate_accounting_entries()
|
|
|
|
bills = order.invoice_ids.filtered(lambda bill: bill.state == "posted")
|
|
bills._stock_account_anglo_saxon_reconcile_valuation()
|
|
|
|
except Exception as e:
|
|
_logger.error(
|
|
(
|
|
f"Error processing Purchase Order {order.name} "
|
|
f"(ID: {order.id}): {str(e)}"
|
|
),
|
|
exc_info=True,
|
|
)
|