code changes for single stock entry
This commit is contained in:
parent
9b7093e4d6
commit
2b885beaee
@ -284,7 +284,8 @@ erpnext.buying.PurchaseOrderController = erpnext.buying.BuyingController.extend(
|
|||||||
}
|
}
|
||||||
,
|
,
|
||||||
callback: function(r) {
|
callback: function(r) {
|
||||||
frappe.set_route("List", "Stock Entry", "List",{"purchase_order":r.message,"doc_status":0})
|
var doclist = frappe.model.sync(r.message);
|
||||||
|
frappe.set_route("Form", doclist[0].doctype, doclist[0].name);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -435,30 +435,29 @@ def make_rm_stock_entry(purchase_order, rm_items):
|
|||||||
item_wh = frappe._dict(frappe.db.sql("""select item_code, description
|
item_wh = frappe._dict(frappe.db.sql("""select item_code, description
|
||||||
from `tabItem` where name in ({0})""".
|
from `tabItem` where name in ({0})""".
|
||||||
format(", ".join(["%s"] * len(item_code_list))), item_code_list))
|
format(", ".join(["%s"] * len(item_code_list))), item_code_list))
|
||||||
|
stock_entry = frappe.new_doc("Stock Entry")
|
||||||
|
stock_entry.purpose = "Subcontract"
|
||||||
|
stock_entry.purchase_order = purchase_order.name
|
||||||
|
stock_entry.supplier = purchase_order.supplier
|
||||||
|
stock_entry.supplier_name = purchase_order.supplier_name
|
||||||
|
stock_entry.supplier_address = purchase_order.supplier_address
|
||||||
|
stock_entry.address_display = purchase_order.address_display
|
||||||
|
stock_entry.company = purchase_order.company
|
||||||
|
stock_entry.from_bom = 1
|
||||||
for item_code in item_code_list:
|
for item_code in item_code_list:
|
||||||
stock_entry = frappe.new_doc("Stock Entry")
|
|
||||||
stock_entry.purpose = "Subcontract"
|
|
||||||
stock_entry.purchase_order = purchase_order.name
|
|
||||||
stock_entry.supplier = purchase_order.supplier
|
|
||||||
stock_entry.supplier_name = purchase_order.supplier_name
|
|
||||||
stock_entry.supplier_address = purchase_order.supplier_address
|
|
||||||
stock_entry.address_display = purchase_order.address_display
|
|
||||||
stock_entry.company = purchase_order.company
|
|
||||||
stock_entry.docstatus = 0
|
|
||||||
stock_entry.from_bom = 1
|
|
||||||
po_item = [d for d in purchase_order.items if d.item_code == item_code][0]
|
po_item = [d for d in purchase_order.items if d.item_code == item_code][0]
|
||||||
stock_entry.fg_completed_qty = po_item.qty
|
bom_no = po_item.bom
|
||||||
stock_entry.bom_no = po_item.bom
|
|
||||||
for rm_item_data in rm_items_list:
|
for rm_item_data in rm_items_list:
|
||||||
if rm_item_data["item_code"] == item_code:
|
if rm_item_data["item_code"] == item_code:
|
||||||
items_dict = {rm_item_data["rm_item_code"]:
|
items_dict = {rm_item_data["rm_item_code"]:
|
||||||
{"item_name":rm_item_data["item_name"],
|
{"item_name":rm_item_data["item_name"],
|
||||||
"description":item_wh.get(rm_item_data["rm_item_code"]),
|
"description":item_wh.get(rm_item_data["rm_item_code"]),
|
||||||
'qty':rm_item_data["qty"],
|
'qty':rm_item_data["qty"],
|
||||||
'from_warehouse':rm_item_data["warehouse"],
|
'from_warehouse':rm_item_data["warehouse"],
|
||||||
'stock_uom':rm_item_data["stock_uom"]}}
|
'stock_uom':rm_item_data["stock_uom"],
|
||||||
stock_entry.add_to_stock_entry_detail(items_dict)
|
'bom_no':bom_no}}
|
||||||
stock_entry.save()
|
stock_entry.add_to_stock_entry_detail(items_dict, bom_no)
|
||||||
|
return stock_entry.as_dict()
|
||||||
else:
|
else:
|
||||||
frappe.throw(_("No Items selected for transfer"))
|
frappe.throw(_("No Items selected for transfer"))
|
||||||
return purchase_order.name
|
return purchase_order.name
|
||||||
|
@ -586,9 +586,14 @@ def validate_bom_no(item, bom_no):
|
|||||||
if bom.docstatus != 1:
|
if bom.docstatus != 1:
|
||||||
if not getattr(frappe.flags, "in_test", False):
|
if not getattr(frappe.flags, "in_test", False):
|
||||||
frappe.throw(_("BOM {0} must be submitted").format(bom_no))
|
frappe.throw(_("BOM {0} must be submitted").format(bom_no))
|
||||||
if item and not (bom.item.lower() == item.lower() or \
|
if item:
|
||||||
bom.item.lower() == cstr(frappe.db.get_value("Item", item, "variant_of")).lower()):
|
rm_item_exists = False
|
||||||
frappe.throw(_("BOM {0} does not belong to Item {1}").format(bom_no, item))
|
for d in bom.items:
|
||||||
|
if (d.item_code.lower() == item.lower() or \
|
||||||
|
d.item_code.lower() == cstr(frappe.db.get_value("Item", item, "variant_of")).lower()):
|
||||||
|
rm_item_exists = True
|
||||||
|
if not rm_item_exists:
|
||||||
|
frappe.throw(_("BOM {0} does not belong to Item {1}").format(bom_no, item))
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_children(doctype, parent=None, is_root=False, **filters):
|
def get_children(doctype, parent=None, is_root=False, **filters):
|
||||||
|
@ -64,13 +64,6 @@ class StockEntry(StockController):
|
|||||||
self.calculate_rate_and_amount(update_finished_item_rate=False)
|
self.calculate_rate_and_amount(update_finished_item_rate=False)
|
||||||
|
|
||||||
def on_submit(self):
|
def on_submit(self):
|
||||||
if self.purpose == "Subcontract":
|
|
||||||
for d in self.items:
|
|
||||||
if not d.t_warehouse:
|
|
||||||
if self.to_warehouse:
|
|
||||||
d.t_warehouse = self.to_warehouse
|
|
||||||
else:
|
|
||||||
frappe.throw(_("Target warehouse is mandatory for row {0}").format(d.idx))
|
|
||||||
|
|
||||||
self.update_stock_ledger()
|
self.update_stock_ledger()
|
||||||
|
|
||||||
@ -165,9 +158,7 @@ class StockEntry(StockController):
|
|||||||
if self.to_warehouse:
|
if self.to_warehouse:
|
||||||
d.t_warehouse = self.to_warehouse
|
d.t_warehouse = self.to_warehouse
|
||||||
else:
|
else:
|
||||||
#move validation for sub contract to submit
|
frappe.throw(_("Target warehouse is mandatory for row {0}").format(d.idx))
|
||||||
if self.purpose != "Subcontract":
|
|
||||||
frappe.throw(_("Target warehouse is mandatory for row {0}").format(d.idx))
|
|
||||||
|
|
||||||
if self.purpose in ["Manufacture", "Repack"]:
|
if self.purpose in ["Manufacture", "Repack"]:
|
||||||
if validate_for_manufacture_repack:
|
if validate_for_manufacture_repack:
|
||||||
@ -417,7 +408,7 @@ class StockEntry(StockController):
|
|||||||
"""validation: finished good quantity should be same as manufacturing quantity"""
|
"""validation: finished good quantity should be same as manufacturing quantity"""
|
||||||
items_with_target_warehouse = []
|
items_with_target_warehouse = []
|
||||||
for d in self.get('items'):
|
for d in self.get('items'):
|
||||||
if d.bom_no and flt(d.transfer_qty) != flt(self.fg_completed_qty) and (d.t_warehouse != getattr(self, "pro_doc", frappe._dict()).scrap_warehouse):
|
if self.purpose != "Subcontract" and d.bom_no and flt(d.transfer_qty) != flt(self.fg_completed_qty) and (d.t_warehouse != getattr(self, "pro_doc", frappe._dict()).scrap_warehouse):
|
||||||
frappe.throw(_("Quantity in row {0} ({1}) must be same as manufactured quantity {2}"). \
|
frappe.throw(_("Quantity in row {0} ({1}) must be same as manufactured quantity {2}"). \
|
||||||
format(d.idx, d.transfer_qty, self.fg_completed_qty))
|
format(d.idx, d.transfer_qty, self.fg_completed_qty))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user