From a71ace0d74983f345298341d0cfc9870daa468db Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 28 Feb 2013 16:30:53 +0530 Subject: [PATCH] fixed asynchronus issue in purchase cycle --- .../purchase_invoice/purchase_invoice.js | 25 ++++--- .../purchase_common/purchase_common.js | 15 ++--- .../doctype/purchase_order/purchase_order.js | 20 ++++-- .../supplier_quotation/supplier_quotation.js | 15 ++++- stock/doctype/item/item.txt | 65 +++---------------- .../purchase_receipt/purchase_receipt.js | 22 ++++--- 6 files changed, 70 insertions(+), 92 deletions(-) diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.js b/accounts/doctype/purchase_invoice/purchase_invoice.js index bfcf0a4bbd..b4fe62e3b6 100644 --- a/accounts/doctype/purchase_invoice/purchase_invoice.js +++ b/accounts/doctype/purchase_invoice/purchase_invoice.js @@ -33,6 +33,21 @@ erpnext.buying.PurchaseInvoiceController = erpnext.buying.BuyingController.exten } cur_frm.cscript.is_opening(doc); + }, + onload_post_render: function(doc, dt, dn) { + var me = this; + var callback1 = function(doc, dt, dn) { + var callback2 = function(doc, dt, dn) { + if(doc.__islocal && doc.supplier) cur_frm.cscript.supplier(doc, dt, dn); + } + me.update_item_details(doc, dt, dn, callback2); + } + + // TODO: improve this + if(this.frm.doc.__islocal && this.frm.fields_dict.price_list_name + && this.frm.doc.price_list_name) { + this.price_list_name(callback1); + } } }); @@ -46,16 +61,6 @@ cur_frm.cscript.onload = function(doc,dt,dn) { if(!doc.posting_date) set_multiple(dt,dn,{posting_date:get_today()}); } -cur_frm.cscript.onload_post_render = function(doc, dt, dn) { - var callback = function(doc, dt, dn) { - if(doc.__islocal && doc.supplier) cur_frm.cscript.supplier(doc,dt,dn); - } - - // defined in purchase_common.js - cur_frm.cscript.update_item_details(doc, dt, dn, callback); - -} - cur_frm.cscript.supplier = function(doc,dt,dn) { var callback = function(r,rt) { var doc = locals[cur_frm.doctype][cur_frm.docname]; diff --git a/buying/doctype/purchase_common/purchase_common.js b/buying/doctype/purchase_common/purchase_common.js index b3f62d58b9..b8346d3893 100644 --- a/buying/doctype/purchase_common/purchase_common.js +++ b/buying/doctype/purchase_common/purchase_common.js @@ -51,15 +51,9 @@ erpnext.buying.BuyingController = erpnext.utils.Controller.extend({ if(this.frm.fields_dict.currency) this.set_dynamic_labels(); - - // TODO: improve this - if(this.frm.doc.__islocal && this.frm.fields_dict.price_list_name - && this.frm.doc.price_list_name && this.frm.doc.price_list_currency) { - this.price_list_name(); - } }, - price_list_name: function() { + price_list_name: function(callback_fn) { this.frm.toggle_reqd(["price_list_currency", "plc_conversion_rate"], !!(this.frm.doc.price_list_name)); @@ -77,6 +71,8 @@ erpnext.buying.BuyingController = erpnext.utils.Controller.extend({ callback: function(r) { if(!r.exc) { me.price_list_currency(); + if (callback_fn) callback_fn(me.frm.doc, me.frm.doc.doctype, + me.frm.doc.name); } } }); @@ -89,6 +85,7 @@ erpnext.buying.BuyingController = erpnext.utils.Controller.extend({ item_code: function(doc, cdt, cdn) { var me = this; var item = locals[cdt][cdn]; + if(item.item_code) { this.frm.call({ method: "buying.utils.get_item_details", @@ -141,11 +138,11 @@ erpnext.buying.BuyingController = erpnext.utils.Controller.extend({ price_list_currency: function() { this.set_dynamic_labels(); - + if(this.frm.doc.price_list_currency === this.get_company_currency()) this.frm.set_value("plc_conversion_rate", 1.0); else if(this.frm.doc.price_list_currency === this.frm.doc.currency) - this.frm.set_value("plc_conversion_rate", this.frm.doc.conversion_rate || 1.0); + this.frm.set_value("plc_conversion_rate", this.frm.doc.conversion_rate || 1.0); }, set_dynamic_labels: function(doc, dt, dn) { diff --git a/buying/doctype/purchase_order/purchase_order.js b/buying/doctype/purchase_order/purchase_order.js index cf1db141c0..4bcd828899 100644 --- a/buying/doctype/purchase_order/purchase_order.js +++ b/buying/doctype/purchase_order/purchase_order.js @@ -40,12 +40,22 @@ erpnext.buying.PurchaseOrderController = erpnext.buying.BuyingController.extend( }, - onload_post_render: function(doc, dt, dn) { - var callback = function(doc, dt, dn) { - if(doc.__islocal) cur_frm.cscript.get_default_schedule_date(doc); + onload_post_render: function(doc, dt, dn) { + var me = this; + var callback1 = function(doc, dt, dn) { + var callback2 = function(doc, dt, dn) { + if(doc.__islocal) cur_frm.cscript.get_default_schedule_date(doc); + } + me.update_item_details(doc, dt, dn, callback2); + } + + // TODO: improve this + if(this.frm.doc.__islocal && this.frm.fields_dict.price_list_name + && this.frm.doc.price_list_name) { + this.price_list_name(callback1); } - this.update_item_details(doc, dt, dn, callback); } + }); var new_cscript = new erpnext.buying.PurchaseOrderController({frm: cur_frm}); @@ -53,7 +63,7 @@ var new_cscript = new erpnext.buying.PurchaseOrderController({frm: cur_frm}); // for backward compatibility: combine new and previous states $.extend(cur_frm.cscript, new_cscript); -cur_frm.cscript.onload = function(doc, cdt, cdn) { +cur_frm.cscript.onload = function(doc, cdt, cdn) { // set missing values in parent doc set_missing_values(doc, { fiscal_year: sys_defaults.fiscal_year, diff --git a/buying/doctype/supplier_quotation/supplier_quotation.js b/buying/doctype/supplier_quotation/supplier_quotation.js index 6cb764ef08..36f9be8dc8 100644 --- a/buying/doctype/supplier_quotation/supplier_quotation.js +++ b/buying/doctype/supplier_quotation/supplier_quotation.js @@ -27,12 +27,25 @@ erpnext.buying.SupplierQuotationController = erpnext.buying.BuyingController.ext refresh: function() { this._super(); - cur_frm.cscript.load_taxes(this.frm.doc); if (this.frm.doc.docstatus === 1) { cur_frm.add_custom_button("Make Purchase Order", cur_frm.cscript.make_purchase_order); } + }, + + onload_post_render: function(doc, dt, dn) { + var me = this; + var callback = function(doc, dt, dn) { + cur_frm.cscript.load_taxes(me.frm.doc); + } + + // TODO: improve this + if(this.frm.doc.__islocal && this.frm.fields_dict.price_list_name + && this.frm.doc.price_list_name) { + this.price_list_name(callback); + } } + }); var new_cscript = new erpnext.buying.SupplierQuotationController({frm: cur_frm}); diff --git a/stock/doctype/item/item.txt b/stock/doctype/item/item.txt index 6b1a60f580..1a48368ad2 100644 --- a/stock/doctype/item/item.txt +++ b/stock/doctype/item/item.txt @@ -1,8 +1,8 @@ [ { - "creation": "2013-02-20 13:26:14", + "creation": "2013-02-21 14:54:43", "docstatus": 0, - "modified": "2013-02-20 18:14:06", + "modified": "2013-02-28 10:43:02", "modified_by": "Administrator", "owner": "Administrator" }, @@ -28,13 +28,14 @@ "permlevel": 0 }, { - "amend": 0, "doctype": "DocPerm", "name": "__common__", "parent": "Item", "parentfield": "permissions", "parenttype": "DocType", + "permlevel": 0, "read": 1, + "report": 1, "submit": 0 }, { @@ -596,7 +597,6 @@ "label": "Price Lists and Rates" }, { - "depends_on": "eval:doc.is_sales_item==\"Yes\"", "description": "Create a price list from Price List master and enter standard ref rates against each of them. On selection of a price list in Quotation, Sales Order or Delivery Note, corresponding ref rate will be fetched for this item.", "doctype": "DocField", "fieldname": "ref_rate_details", @@ -812,76 +812,27 @@ "fieldtype": "Text Editor", "label": "Website Description" }, - { - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 1, - "report": 0, - "role": "Material Manager", - "write": 0 - }, - { - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 0, - "report": 1, - "role": "Material Manager", - "write": 0 - }, - { - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 1, - "report": 0, - "role": "Material User", - "write": 0 - }, - { - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 0, - "report": 1, - "role": "Material User", - "write": 0 - }, { "cancel": 1, "create": 1, "doctype": "DocPerm", - "permlevel": 0, - "report": 1, "role": "Material Master Manager", "write": 1 }, { + "amend": 0, "cancel": 0, "create": 0, "doctype": "DocPerm", - "permlevel": 1, - "report": 0, - "role": "Material Master Manager", + "role": "Material Manager", "write": 0 }, { - "cancel": 1, - "create": 1, - "doctype": "DocPerm", - "permlevel": 0, - "report": 1, - "role": "System Manager", - "write": 1 - }, - { + "amend": 0, "cancel": 0, "create": 0, "doctype": "DocPerm", - "permlevel": 1, - "report": 0, - "role": "System Manager", + "role": "Material User", "write": 0 } ] \ No newline at end of file diff --git a/stock/doctype/purchase_receipt/purchase_receipt.js b/stock/doctype/purchase_receipt/purchase_receipt.js index df2825b65b..c7d2e504f5 100644 --- a/stock/doctype/purchase_receipt/purchase_receipt.js +++ b/stock/doctype/purchase_receipt/purchase_receipt.js @@ -37,6 +37,18 @@ erpnext.buying.PurchaseReceiptController = erpnext.buying.BuyingController.exten if(wn.boot.control_panel.country == 'India') { unhide_field(['challan_no', 'challan_date']); } + }, + onload_post_render: function(doc, dt, dn) { + var me = this; + var callback = function(doc, dt, dn) { + me.update_item_details(doc, dt, dn, function(r,rt) { }); + } + + // TODO: improve this + if(this.frm.doc.__islocal && this.frm.fields_dict.price_list_name + && this.frm.doc.price_list_name) { + this.price_list_name(callback); + } } }); @@ -45,7 +57,6 @@ var new_cscript = new erpnext.buying.PurchaseReceiptController({frm: cur_frm}); // for backward compatibility: combine new and previous states $.extend(cur_frm.cscript, new_cscript); -//========================== On Load ================================================================ cur_frm.cscript.onload = function(doc, cdt, cdn) { if(!doc.fiscal_year && doc.__islocal){ wn.model.set_default_values(doc);} if (!doc.posting_date) doc.posting_date = dateutil.obj_to_str(new Date()); @@ -53,15 +64,6 @@ cur_frm.cscript.onload = function(doc, cdt, cdn) { if (!doc.status) doc.status = 'Draft'; } -cur_frm.cscript.onload_post_render = function(doc, dt, dn) { - var callback = function(doc, dt, dn) { - // defined in purchase_common.js - cur_frm.cscript.update_item_details(doc, dt, dn, function(r,rt) { }); - } - cur_frm.cscript.dynamic_label(doc, dt, dn, callback); -} - -//Supplier cur_frm.cscript.supplier = function(doc,dt,dn) { if (doc.supplier) { get_server_fields('get_default_supplier_address',