brotherton-erpnext/erpnext/stock/dashboard/item_dashboard.py
Nabin Hait 2c7a6e6b43
Reserve for subcontracting (#13195)
* [fix] #8427

* review comments changes

* Validation for reserved warhouse

* code improvements

* alignment

* test case

* message changes

* default warehouse / remove validation / change sql

* fix

* patch

* Fixed merge conflict

* Fixes and cleanups of reserve qty for subcontracting

* set from_warehouse only if purchase_order and purpose found (#12398)

* [HotFix] Validation issue for subcontract stock entry (#12127)

* [Fix] Validation issue for subcontract stock entry

* Update stock_entry.py

* Fixes and cleanups of reserve qty for subcontracting

* patch fixed

* Reload bin in patch

* [fix] set source warehouse in stock entry for manufacture

* [fix] #8540

* code alignment

* code alignment

* Move target warehouse validation to submit

* validation code improvement

* code changes for single stock entry

* validation fix

* call make_rm_stock_entry

* remove old stock entry method/rewrite test case

* Don't set bom_no against raw materials while trasferring items for sub-contracting

* minor fix
2018-03-12 14:12:12 +05:30

44 lines
1.2 KiB
Python

from __future__ import unicode_literals
import frappe
@frappe.whitelist()
def get_data(item_code=None, warehouse=None, item_group=None,
start=0, sort_by='actual_qty', sort_order='desc'):
'''Return data to render the item dashboard'''
conditions = []
values = []
if item_code:
conditions.append('b.item_code=%s')
values.append(item_code)
if warehouse:
conditions.append('b.warehouse=%s')
values.append(warehouse)
if item_group:
conditions.append('i.item_group=%s')
values.append(item_group)
if conditions:
conditions = ' and ' + ' and '.join(conditions)
else:
conditions = ''
return frappe.db.sql('''
select
b.item_code, b.warehouse, b.projected_qty, b.reserved_qty,
b.reserved_qty_for_production, b.reserved_qty_for_sub_contract, b.actual_qty, b.valuation_rate, i.item_name
from
tabBin b, tabItem i
where
b.item_code = i.name
and
(b.projected_qty != 0 or b.reserved_qty != 0 or b.reserved_qty_for_production != 0
or b.reserved_qty_for_sub_contract != 0 or b.actual_qty != 0)
{conditions}
order by
{sort_by} {sort_order}
limit
{start}, 21
'''.format(conditions=conditions, sort_by=sort_by, sort_order=sort_order,
start=start), values, as_dict=True)