fix: item price not considering based on valid_upto

This commit is contained in:
Sherin KR
2025-11-17 12:41:44 +05:30
parent eed144d7c9
commit dfda8e6241

View File

@@ -5,6 +5,7 @@
import json import json
import frappe import frappe
from frappe.query_builder import DocType, Order
from frappe.utils import cint from frappe.utils import cint
from frappe.utils.nestedset import get_root_of from frappe.utils.nestedset import get_root_of
@@ -200,18 +201,24 @@ def get_items(start, page_length, price_list, item_group, pos_profile, search_te
for item in items_data: for item in items_data:
item.actual_qty, _ = get_stock_availability(item.item_code, warehouse) item.actual_qty, _ = get_stock_availability(item.item_code, warehouse)
item_prices = frappe.get_all( ItemPrice = DocType("Item Price")
"Item Price", item_prices = (
fields=["price_list_rate", "currency", "uom", "batch_no", "valid_from", "valid_upto"], frappe.qb.from_(ItemPrice)
filters={ .select(
"price_list": price_list, ItemPrice.price_list_rate,
"item_code": item.item_code, ItemPrice.currency,
"selling": True, ItemPrice.uom,
"valid_from": ["<=", current_date], ItemPrice.batch_no,
"valid_upto": ["in", [None, "", current_date]], ItemPrice.valid_from,
}, ItemPrice.valid_upto,
order_by="valid_from desc", )
) .where(ItemPrice.price_list == price_list)
.where(ItemPrice.item_code == item.item_code)
.where(ItemPrice.selling == 1)
.where((ItemPrice.valid_from <= current_date) | (ItemPrice.valid_from.isnull()))
.where((ItemPrice.valid_upto >= current_date) | (ItemPrice.valid_upto.isnull()))
.orderby(ItemPrice.valid_from, order=Order.desc)
).run(as_dict=True)
stock_uom_price = next((d for d in item_prices if d.get("uom") == item.stock_uom), {}) stock_uom_price = next((d for d in item_prices if d.get("uom") == item.stock_uom), {})
item_uom = item.stock_uom item_uom = item.stock_uom