default warehouse / remove validation / change sql
This commit is contained in:
parent
e4aaff6686
commit
2ff844e740
@ -257,7 +257,8 @@ class PurchaseOrder(BuyingController):
|
|||||||
def update_reserved_qty_for_subcontract(self):
|
def update_reserved_qty_for_subcontract(self):
|
||||||
for d in self.supplied_items:
|
for d in self.supplied_items:
|
||||||
if d.rm_item_code:
|
if d.rm_item_code:
|
||||||
stock_bin = get_bin(d.rm_item_code, d.reserve_warehouse)
|
warehouse = d.reserve_warehouse or bom_item_wh.get(d.rm_item_code) or item_wh.get(d.rm_item_code)
|
||||||
|
stock_bin = get_bin(d.rm_item_code, warehouse)
|
||||||
stock_bin.update_reserved_qty_for_sub_contracting()
|
stock_bin.update_reserved_qty_for_sub_contracting()
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
|
|||||||
@ -193,6 +193,9 @@ class BuyingController(StockController):
|
|||||||
def update_raw_materials_supplied(self, item, raw_material_table):
|
def update_raw_materials_supplied(self, item, raw_material_table):
|
||||||
bom_items = self.get_items_from_bom(item.item_code, item.bom)
|
bom_items = self.get_items_from_bom(item.item_code, item.bom)
|
||||||
raw_materials_cost = 0
|
raw_materials_cost = 0
|
||||||
|
items = list(set([d.item_code for d in bom_items]))
|
||||||
|
item_wh = frappe._dict(frappe.db.sql("""select item_code, default_warehouse
|
||||||
|
from `tabItem` where name in ({0})""".format(", ".join(["%s"] * len(items))), items))
|
||||||
|
|
||||||
for bom_item in bom_items:
|
for bom_item in bom_items:
|
||||||
# check if exists
|
# check if exists
|
||||||
@ -213,6 +216,7 @@ class BuyingController(StockController):
|
|||||||
rm.rm_item_code = bom_item.item_code
|
rm.rm_item_code = bom_item.item_code
|
||||||
rm.stock_uom = bom_item.stock_uom
|
rm.stock_uom = bom_item.stock_uom
|
||||||
rm.required_qty = required_qty
|
rm.required_qty = required_qty
|
||||||
|
rm.reserve_warehouse = bom_item.source_warehouse or item_wh.get(bom_item.item_code)
|
||||||
|
|
||||||
rm.conversion_factor = item.conversion_factor
|
rm.conversion_factor = item.conversion_factor
|
||||||
|
|
||||||
|
|||||||
@ -104,38 +104,20 @@ class Bin(Document):
|
|||||||
and po.docstatus = 1
|
and po.docstatus = 1
|
||||||
and po.is_subcontracted = 'Yes'
|
and po.is_subcontracted = 'Yes'
|
||||||
and itemsup.reserve_warehouse = %s''', (self.item_code, self.warehouse))[0][0]
|
and itemsup.reserve_warehouse = %s''', (self.item_code, self.warehouse))[0][0]
|
||||||
#cancelled qty
|
|
||||||
reserved_qty_cancelled = frappe.db.sql('''select ifnull(sum(itemsup.required_qty),0)
|
|
||||||
from `tabPurchase Order` po, `tabPurchase Order Item Supplied` itemsup
|
|
||||||
where
|
|
||||||
itemsup.rm_item_code = %s
|
|
||||||
and itemsup.parent = po.name
|
|
||||||
and po.docstatus = 2
|
|
||||||
and po.is_subcontracted = 'Yes'
|
|
||||||
and itemsup.reserve_warehouse = %s''', (self.item_code, self.warehouse))[0][0]
|
|
||||||
#Get Transferred Entries
|
#Get Transferred Entries
|
||||||
materials_transferred = frappe.db.sql("""
|
materials_transferred = frappe.db.sql("""
|
||||||
select
|
select
|
||||||
ifnull(sum(qty),0)
|
ifnull(sum(qty),0)
|
||||||
from
|
from
|
||||||
`tabStock Entry` se, `tabStock Entry Detail` sed
|
`tabStock Entry` se, `tabStock Entry Detail` sed, `tabPurchase Order` po
|
||||||
where
|
where
|
||||||
sed.item_code = %s and sed.s_warehouse = %s
|
sed.item_code = %s
|
||||||
and se.name = sed.parent and se.docstatus=1 and se.purpose='Subcontract'
|
and se.name = sed.parent and se.docstatus=1 and se.purpose='Subcontract'
|
||||||
and ifnull(se.purchase_order, '') !=''""", (self.item_code, self.warehouse))[0][0]
|
and se.purchase_order = po.name
|
||||||
#Material Transfer Cancelled
|
and ifnull(se.purchase_order, '') !=''""", (self.item_code))[0][0]
|
||||||
materials_transfer_cancelled = frappe.db.sql("""
|
|
||||||
select
|
|
||||||
ifnull(sum(qty),0)
|
|
||||||
from
|
|
||||||
`tabStock Entry` se, `tabStock Entry Detail` sed
|
|
||||||
where
|
|
||||||
sed.item_code = %s and sed.s_warehouse = %s
|
|
||||||
and se.name = sed.parent and se.docstatus=2 and se.purpose='Subcontract'
|
|
||||||
and ifnull(se.purchase_order, '') !=''""", (self.item_code, self.warehouse))[0][0]
|
|
||||||
|
|
||||||
self.set_projected_qty()
|
self.set_projected_qty()
|
||||||
self.db_set('reserved_qty_for_sub_contract', (reserved_qty_for_sub_contract - reserved_qty_cancelled - materials_transferred + materials_transfer_cancelled))
|
self.db_set('reserved_qty_for_sub_contract', (reserved_qty_for_sub_contract - materials_transferred))
|
||||||
self.db_set('projected_qty', self.projected_qty)
|
self.db_set('projected_qty', self.projected_qty)
|
||||||
|
|
||||||
def update_item_projected_qty(item_code):
|
def update_item_projected_qty(item_code):
|
||||||
|
|||||||
@ -822,14 +822,10 @@ class StockEntry(StockController):
|
|||||||
from `tabPurchase Order` po, `tabPurchase Order Item Supplied` poitemsup
|
from `tabPurchase Order` po, `tabPurchase Order Item Supplied` poitemsup
|
||||||
where po.name = poitemsup.parent
|
where po.name = poitemsup.parent
|
||||||
and po.name = %s""",self.purchase_order))
|
and po.name = %s""",self.purchase_order))
|
||||||
#Validate source warehouse is same as reserved warehouse
|
|
||||||
for item in self.get("items"):
|
|
||||||
reserve_warehouse = item_wh.get(item.item_code)
|
|
||||||
if item.s_warehouse != reserve_warehouse:
|
|
||||||
frappe.throw(_("In case of Sub Contract Stock Entry, Source Warehouse: {0} should match with Reserved Warehouse: {1} entered on Purchase Order {2}").format(frappe.bold(item.s_warehouse),frappe.bold(reserve_warehouse),frappe.bold(self.purchase_order)))
|
|
||||||
#Update reserved sub contracted quantity in bin based on Supplied Item Details
|
#Update reserved sub contracted quantity in bin based on Supplied Item Details
|
||||||
for d in self.get("items"):
|
for d in self.get("items"):
|
||||||
stock_bin = get_bin(d.item_code, d.s_warehouse)
|
reserve_warehouse = item_wh.get(item.item_code)
|
||||||
|
stock_bin = get_bin(d.item_code, reserve_warehouse)
|
||||||
stock_bin.update_reserved_qty_for_sub_contracting()
|
stock_bin.update_reserved_qty_for_sub_contracting()
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user