[enhance] Displaying stock balance while creating quotation

This commit is contained in:
Saurabh 2016-02-17 15:05:05 +05:30
parent 3b06aeaffd
commit dcb72c6be7
4 changed files with 141 additions and 2 deletions

View File

@ -47,6 +47,7 @@ erpnext.selling.QuotationController = erpnext.selling.SellingController.extend({
}
this.toggle_reqd_lead_customer();
},
quotation_to: function() {
@ -162,3 +163,10 @@ cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
frappe.ui.form.on("Quotation Item", "items_on_form_rendered", function(frm, cdt, cdn) {
// enable tax_amount field if Actual
})
frappe.ui.form.on("Quotation Item", "stock_balance", function(frm, cdt, cdn) {
console.log("here")
var d = locals[cdt][cdn];
frappe.route_options = {"item_code": d.item_code};
frappe.set_route("query-report", "Stock Balance");
})

View File

@ -106,7 +106,8 @@ def _make_sales_order(source_name, target_doc=None, ignore_permissions=False):
"Quotation Item": {
"doctype": "Sales Order Item",
"field_map": {
"parent": "prevdoc_docname"
"parent": "prevdoc_docname",
"warehouse": "warehouse"
}
},
"Sales Taxes and Charges": {

View File

@ -693,6 +693,128 @@
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 1,
"collapsible_depends_on": "eval:doc.actual_qty",
"fieldname": "item_balance",
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Item Balance",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"fieldname": "warehouse",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Warehouse",
"length": 0,
"no_copy": 1,
"options": "Warehouse",
"permlevel": 0,
"precision": "",
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 1,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"fieldname": "column_break_30",
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"description": "",
"fieldname": "actual_qty",
"fieldtype": "Float",
"hidden": 0,
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Actual Qty",
"length": 0,
"no_copy": 1,
"permlevel": 0,
"precision": "",
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 1,
"report_hide": 1,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"fieldname": "stock_balance",
"fieldtype": "Button",
"hidden": 0,
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Stock Balance",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
@ -910,7 +1032,7 @@
"istable": 1,
"max_attachments": 0,
"menu_index": 0,
"modified": "2016-02-08 08:02:06.257910",
"modified": "2016-02-17 14:48:49.320786",
"modified_by": "Administrator",
"module": "Selling",
"name": "Quotation Item",

View File

@ -165,6 +165,7 @@ def get_basic_details(args, item):
"discount_percentage": 0.0,
"supplier": item.default_supplier,
"delivered_by_supplier": item.delivered_by_supplier,
"actual_qty": get_item_balance_qty_for_default_warehouse(item)
})
# if default specified in item is for another company, fetch from company
@ -463,3 +464,10 @@ def get_default_bom(item_code=None):
return bom
else:
frappe.throw(_("No default BOM exists for Item {0}").format(item_code))
def get_item_balance_qty_for_default_warehouse(item):
item = frappe.get_doc("Item", item.name)
return frappe.db.get_value("Bin", {"item_code": item.name, "warehouse": item.default_warehouse},
["actual_qty"], as_dict=True) or {"actual_qty": 0}