Merge pull request #21127 from marination/pos-display-stock-item-develop

fix(pos): fix pos not display only in-stock item
This commit is contained in:
Marica 2020-03-31 18:25:26 +05:30 committed by GitHub
commit 28bad8749c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -64,30 +64,40 @@ def get_items(start, page_length, price_list, item_group, search_value="", pos_p
for d in item_prices_data: for d in item_prices_data:
item_prices[d.item_code] = d item_prices[d.item_code] = d
# prepare filter for bin query
bin_filters = {'item_code': ['in', items]}
if warehouse:
bin_filters['warehouse'] = warehouse
if display_items_in_stock: if display_items_in_stock:
filters = {'actual_qty': [">", 0], 'item_code': ['in', items]} bin_filters['actual_qty'] = [">", 0]
if warehouse: # query item bin
filters['warehouse'] = warehouse bin_data = frappe.get_all(
'Bin', fields=['item_code', 'sum(actual_qty) as actual_qty'],
filters=bin_filters, group_by='item_code'
)
bin_data = frappe._dict( # convert list of dict into dict as {item_code: actual_qty}
frappe.get_all("Bin", fields = ["item_code", "sum(actual_qty) as actual_qty"], bin_dict = {}
filters = filters, group_by = "item_code") for b in bin_data:
) bin_dict[b.get('item_code')] = b.get('actual_qty')
for item in items_data: for item in items_data:
row = {} item_code = item.item_code
item_price = item_prices.get(item_code) or {}
item_stock_qty = bin_dict.get(item_code)
row.update(item) if display_items_in_stock and not item_stock_qty:
item_price = item_prices.get(item.item_code) or {} pass
row.update({ else:
'price_list_rate': item_price.get('price_list_rate'), row = {}
'currency': item_price.get('currency'), row.update(item)
'actual_qty': bin_data.get('actual_qty') row.update({
}) 'price_list_rate': item_price.get('price_list_rate'),
'currency': item_price.get('currency'),
result.append(row) 'actual_qty': item_stock_qty,
})
result.append(row)
res = { res = {
'items': result 'items': result