diff --git a/css/all-app.css b/css/all-app.css index c42f3706eb7..ff022b795f1 100644 --- a/css/all-app.css +++ b/css/all-app.css @@ -3349,9 +3349,6 @@ div.list-row { border-bottom: 1px solid #eee; padding: 5px 0px; } -div.list-row:hover { - background-color: #eef -} div.list-row .label { margin-right: 4px; diff --git a/css/all-web.css b/css/all-web.css index 416e9022e03..146d4782112 100644 --- a/css/all-web.css +++ b/css/all-web.css @@ -1720,9 +1720,6 @@ div.list-row { border-bottom: 1px solid #eee; padding: 5px 0px; } -div.list-row:hover { - background-color: #eef -} div.list-row .label { margin-right: 4px; diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js index a2d9f6a753d..4e7a51a261a 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js @@ -171,6 +171,7 @@ cur_frm.cscript.customer = function(doc,dt,dn,onload) { get_server_fields('get_cust_and_due_date','','',doc,dt,dn,1, function(doc, dt, dn) { cur_frm.refresh(); + cur_frm.cscript.price_list_name(doc, dt, dn); }); } diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 1878526b61f..19a8c74565e 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -126,7 +126,6 @@ class DocType(TransactionBase): if self.doc.debit_to: self.doc.customer = webnotes.conn.get_value('Account',self.doc.debit_to,'master_name') - # get_obj('Sales Common').get_customer_details(self, inv_det_reqd = 0) # Pull Details of Delivery Note or Sales Order Selected @@ -467,8 +466,6 @@ class DocType(TransactionBase): sales_com_obj.validate_max_discount(self, 'entries') #verify whether rate is not greater than tolerance sales_com_obj.get_allocated_sum(self) # this is to verify that the allocated % of sales persons is 100% sales_com_obj.validate_fiscal_year(self.doc.fiscal_year,self.doc.posting_date,'Posting Date') - if not self.doc.customer: - get_obj('Sales Common').get_customer_details(self, inv_det_reqd = 0) self.validate_customer() self.validate_debit_to_acc() self.validate_debit_acc() diff --git a/erpnext/knowledge_base/page/__init__.py b/erpnext/knowledge_base/page/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/erpnext/knowledge_base/page/question_view/__init__.py b/erpnext/knowledge_base/page/question_view/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/erpnext/knowledge_base/page/questions/__init__.py b/erpnext/knowledge_base/page/questions/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/erpnext/selling/doctype/customer/customer.txt b/erpnext/selling/doctype/customer/customer.txt index 59105b345bb..29144928097 100644 --- a/erpnext/selling/doctype/customer/customer.txt +++ b/erpnext/selling/doctype/customer/customer.txt @@ -3,9 +3,9 @@ # These values are common in all dictionaries { - 'creation': '2012-03-27 14:36:07', + 'creation': '2012-04-13 11:56:26', 'docstatus': 0, - 'modified': '2012-03-27 18:47:38', + 'modified': '2012-04-19 17:12:24', 'modified_by': u'Administrator', 'owner': u'Administrator' }, @@ -27,7 +27,7 @@ 'show_in_menu': 0, 'subject': u'eval:"%(customer_name)s"=="%(name)s" ? "" : "%(customer_name)s"', 'tag_fields': u'customer_group,customer_type', - 'version': 435 + 'version': 1 }, # These values are common for all DocField @@ -57,6 +57,46 @@ 'name': u'Customer' }, + # DocPerm + { + 'cancel': 0, + 'create': 0, + 'doctype': u'DocPerm', + 'permlevel': 1, + 'role': u'Sales Manager', + 'write': 0 + }, + + # DocPerm + { + 'cancel': 0, + 'create': 0, + 'doctype': u'DocPerm', + 'permlevel': 0, + 'role': u'Sales Manager', + 'write': 0 + }, + + # DocPerm + { + 'cancel': 0, + 'create': 0, + 'doctype': u'DocPerm', + 'permlevel': 1, + 'role': u'Sales User', + 'write': 0 + }, + + # DocPerm + { + 'cancel': 0, + 'create': 0, + 'doctype': u'DocPerm', + 'permlevel': 0, + 'role': u'Sales User', + 'write': 0 + }, + # DocPerm { 'cancel': 1, @@ -77,46 +117,6 @@ 'write': 0 }, - # DocPerm - { - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Sales Manager', - 'write': 0 - }, - - # DocPerm - { - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'Sales Manager', - 'write': 0 - }, - - # DocPerm - { - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Sales User', - 'write': 0 - }, - - # DocPerm - { - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'Sales User', - 'write': 0 - }, - # DocField { 'colour': u'White:FFF', @@ -340,6 +340,16 @@ 'search_index': 1 }, + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'default_price_list', + 'fieldtype': u'Link', + 'label': u'Default Price List', + 'options': u'Price List', + 'permlevel': 0 + }, + # DocField { 'colour': u'White:FFF', diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js index f423a840891..4be1f9a2fde 100644 --- a/erpnext/selling/doctype/quotation/quotation.js +++ b/erpnext/selling/doctype/quotation/quotation.js @@ -96,8 +96,9 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) { //customer cur_frm.cscript.customer = function(doc,dt,dn) { var callback = function(r,rt) { - var doc = locals[cur_frm.doctype][cur_frm.docname]; - cur_frm.refresh(); + var doc = locals[cur_frm.doctype][cur_frm.docname]; + cur_frm.refresh(); + cur_frm.cscript.price_list_name(doc, dt, dn); } if(doc.customer) $c_obj(make_doclist(doc.doctype, doc.name), diff --git a/erpnext/selling/doctype/sales_common/sales_common.js b/erpnext/selling/doctype/sales_common/sales_common.js index a2ff51550fc..2347d720de6 100644 --- a/erpnext/selling/doctype/sales_common/sales_common.js +++ b/erpnext/selling/doctype/sales_common/sales_common.js @@ -76,24 +76,6 @@ cur_frm.cscript.update_item_details = function(doc, dt, dn, callback) { } - -// ============== Customer and its primary contact Details ============================ -cur_frm.cscript.customer = function(doc, cdt, cdn) { - if(doc.customer){ - if (!doc.company) { - msgprint("Please select company to proceed"); - doc.customer = ''; - refresh_field('customer'); - } else { - var callback = function(r, rt){ - cur_frm.refresh(); - } - $c_obj(make_doclist(doc.doctype, doc.name), 'get_customer_details', '',callback); - } - } -} - - var set_dynamic_label_par = function(doc, cdt, cdn, base_curr) { //parent flds par_cols_base = {'net_total': 'Net Total', 'other_charges_total': 'Taxes and Charges Total', diff --git a/erpnext/selling/doctype/sales_common/sales_common.py b/erpnext/selling/doctype/sales_common/sales_common.py index b70382c575a..f9f8adbaba2 100644 --- a/erpnext/selling/doctype/sales_common/sales_common.py +++ b/erpnext/selling/doctype/sales_common/sales_common.py @@ -119,24 +119,6 @@ class DocType(TransactionBase): acc_head = webnotes.conn.sql("select name from `tabAccount` where name = '%s' and docstatus != 2" % (cstr(obj.doc.customer) + " - " + get_value('Company', obj.doc.company, 'abbr'))) obj.doc.debit_to = acc_head and acc_head[0][0] or '' - - # Get Customer Details along with its primary contact details - # ============================================================== - def get_customer_details(self, obj = '', inv_det_reqd = 1): - details = webnotes.conn.sql("select customer_name,address, territory, customer_group, default_sales_partner, default_commission_rate from `tabCustomer` where name = '%s' and docstatus != 2" %(obj.doc.customer), as_dict = 1) - obj.doc.customer_name = details and details[0]['customer_name'] or '' - obj.doc.customer_address = details and details[0]['address'] or '' - obj.doc.territory = details and details[0]['territory'] or '' - obj.doc.customer_group = details and details[0]['customer_group'] or '' - obj.doc.sales_partner = details and details[0]['default_sales_partner'] or '' - obj.doc.commission_rate = details and flt(details[0]['default_commission_rate']) or '' - if obj.doc.doctype != 'Sales Invoice': - obj.doc.delivery_address = details and details[0]['address'] or '' - self.get_contact_details(obj,primary = 1) # get primary contact details - self.get_sales_person_details(obj) # get default sales person details - - if obj.doc.doctype == 'Sales Invoice' and inv_det_reqd: - self.get_invoice_details(obj) # get invoice details # Get Item Details diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js index 91d3fd59add..8ed16a306a5 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.js +++ b/erpnext/selling/doctype/sales_order/sales_order.js @@ -99,6 +99,8 @@ cur_frm.cscript.customer = function(doc,dt,dn) { var callback2 = function(r, rt) { if(doc.customer) unhide_field(['customer_address', 'contact_person', 'customer_name', 'address_display', 'contact_display', 'contact_mobile', 'contact_email', 'territory','customer_group','shipping_address']); cur_frm.refresh(); + cur_frm.cscript.price_list_name(doc, dt, dn); + } var doc = locals[cur_frm.doctype][cur_frm.docname]; get_server_fields('get_shipping_address',doc.customer,'',doc, dt, dn, 0, callback2); diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index 6fa737c58f8..8210d10b7a8 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -74,13 +74,6 @@ class DocType(TransactionBase): get_obj('DocType Mapper', 'Project-Sales Order').dt_map('Project', 'Sales Order', self.doc.project_name, self.doc, self.doclist, "[['Project', 'Sales Order']]") - # Get Customer Details - # --------------------- - #def get_customer_details(self): - # sales_com_obj = get_obj('Sales Common') - # sales_com_obj.get_customer_details(self) - # sales_com_obj.get_shipping_details(self) - # Get contact person details based on customer selected # ------------------------------------------------------ def get_contact_details(self): diff --git a/erpnext/setup/doctype/customer_group/customer_group.txt b/erpnext/setup/doctype/customer_group/customer_group.txt index c5ee40e03b9..ceda674306a 100644 --- a/erpnext/setup/doctype/customer_group/customer_group.txt +++ b/erpnext/setup/doctype/customer_group/customer_group.txt @@ -3,9 +3,9 @@ # These values are common in all dictionaries { - 'creation': '2012-03-27 14:36:19', + 'creation': '2012-04-13 11:56:30', 'docstatus': 0, - 'modified': '2012-03-27 14:36:19', + 'modified': '2012-04-19 17:50:43', 'modified_by': u'Administrator', 'owner': u'Administrator' }, @@ -26,7 +26,7 @@ 'section_style': u'Simple', 'server_code_error': u' ', 'show_in_menu': 0, - 'version': 34 + 'version': 1 }, # These values are common for all DocField @@ -56,6 +56,56 @@ 'name': u'Customer Group' }, + # DocPerm + { + 'cancel': 0, + 'create': 0, + 'doctype': u'DocPerm', + 'permlevel': 1, + 'role': u'Sales Manager', + 'write': 0 + }, + + # DocPerm + { + 'cancel': 0, + 'create': 0, + 'doctype': u'DocPerm', + 'permlevel': 0, + 'role': u'Sales Manager', + 'write': 0 + }, + + # DocPerm + { + 'cancel': 0, + 'create': 0, + 'doctype': u'DocPerm', + 'permlevel': 1, + 'role': u'Sales Master Manager', + 'write': 0 + }, + + # DocPerm + { + 'cancel': 0, + 'create': 0, + 'doctype': u'DocPerm', + 'permlevel': 1, + 'role': u'Sales User', + 'write': 0 + }, + + # DocPerm + { + 'cancel': 0, + 'create': 0, + 'doctype': u'DocPerm', + 'permlevel': 0, + 'role': u'Sales User', + 'write': 0 + }, + # DocPerm { 'cancel': 1, @@ -66,56 +116,6 @@ 'write': 1 }, - # DocPerm - { - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Sales Manager', - 'write': 0 - }, - - # DocPerm - { - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'Sales Manager', - 'write': 0 - }, - - # DocPerm - { - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Sales Master Manager', - 'write': 0 - }, - - # DocPerm - { - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Sales User', - 'write': 0 - }, - - # DocPerm - { - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'Sales User', - 'write': 0 - }, - # DocField { 'doctype': u'DocField', @@ -182,6 +182,16 @@ 'reqd': 1 }, + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'default_price_list', + 'fieldtype': u'Link', + 'label': u'Default Price List', + 'options': u'Price List', + 'permlevel': 0 + }, + # DocField { 'doctype': u'DocField', diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js index e030fc1b000..f0fd8016130 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.js +++ b/erpnext/stock/doctype/delivery_note/delivery_note.js @@ -79,6 +79,7 @@ cur_frm.cscript.customer = function(doc,dt,dn,onload) { var doc = locals[cur_frm.doctype][cur_frm.docname]; if(doc.customer) unhide_field(['customer_address','contact_person','customer_name','address_display','contact_display','contact_mobile','contact_email','territory','customer_group','shipping_address']); cur_frm.refresh(); + cur_frm.cscript.price_list_name(doc, dt, dn); } var args = onload ? 'onload':'' if(doc.customer) $c_obj(make_doclist(doc.doctype, doc.name), 'get_default_customer_shipping_address', args, callback); @@ -257,18 +258,21 @@ cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) { //------------------------for printing without amount---------- var set_print_hide= function(doc, cdt, cdn){ + var dn_fields = wn.meta.docfield_map['Delivery Note']; + var dn_item_fields = wn.meta.docfield_map['Delivery Note Item']; + if (doc.print_without_amount) { - fields['Delivery Note']['currency'].print_hide = 1; - fields['Delivery Note Item']['export_rate'].print_hide = 1; - fields['Delivery Note Item']['adj_rate'].print_hide = 1; - fields['Delivery Note Item']['ref_rate'].print_hide = 1; - fields['Delivery Note Item']['export_amount'].print_hide = 1; + dn_fields['currency'].print_hide = 1; + dn_item_fields['export_rate'].print_hide = 1; + dn_item_fields['adj_rate'].print_hide = 1; + dn_item_fields['ref_rate'].print_hide = 1; + dn_item_fields['export_amount'].print_hide = 1; } else { - fields['Delivery Note']['currency'].print_hide = 0; - fields['Delivery Note Item']['export_rate'].print_hide = 0; - fields['Delivery Note Item']['adj_rate'].print_hide = 0; - fields['Delivery Note Item']['ref_rate'].print_hide = 0; - fields['Delivery Note Item']['export_amount'].print_hide = 0; + dn_fields['currency'].print_hide = 0; + dn_item_fields['export_rate'].print_hide = 0; + dn_item_fields['adj_rate'].print_hide = 0; + dn_item_fields['ref_rate'].print_hide = 0; + dn_item_fields['export_amount'].print_hide = 0; } } diff --git a/erpnext/knowledge_base/__init__.py b/erpnext/utilities/doctype/answer/__init__.py similarity index 100% rename from erpnext/knowledge_base/__init__.py rename to erpnext/utilities/doctype/answer/__init__.py diff --git a/erpnext/knowledge_base/doctype/answer/answer.txt b/erpnext/utilities/doctype/answer/answer.txt similarity index 98% rename from erpnext/knowledge_base/doctype/answer/answer.txt rename to erpnext/utilities/doctype/answer/answer.txt index 6d664f21022..75c3f332dac 100644 --- a/erpnext/knowledge_base/doctype/answer/answer.txt +++ b/erpnext/utilities/doctype/answer/answer.txt @@ -18,7 +18,7 @@ 'colour': u'White:FFF', 'doctype': 'DocType', 'in_create': 1, - 'module': u'Knowledge Base', + 'module': u'Utilities', 'name': '__common__', 'read_only': 1, 'section_style': u'Simple', @@ -99,4 +99,4 @@ 'label': u'Users Voted', 'print_hide': 1 } -] \ No newline at end of file +] diff --git a/erpnext/knowledge_base/doctype/__init__.py b/erpnext/utilities/doctype/question/__init__.py similarity index 100% rename from erpnext/knowledge_base/doctype/__init__.py rename to erpnext/utilities/doctype/question/__init__.py diff --git a/erpnext/knowledge_base/doctype/question/question.py b/erpnext/utilities/doctype/question/question.py similarity index 100% rename from erpnext/knowledge_base/doctype/question/question.py rename to erpnext/utilities/doctype/question/question.py diff --git a/erpnext/knowledge_base/doctype/question/question.txt b/erpnext/utilities/doctype/question/question.txt similarity index 98% rename from erpnext/knowledge_base/doctype/question/question.txt rename to erpnext/utilities/doctype/question/question.txt index 01a86ee1795..11738672a7f 100644 --- a/erpnext/knowledge_base/doctype/question/question.txt +++ b/erpnext/utilities/doctype/question/question.txt @@ -18,7 +18,7 @@ 'colour': u'White:FFF', 'doctype': 'DocType', 'in_create': 1, - 'module': u'Knowledge Base', + 'module': u'Utilities', 'name': '__common__', 'read_only': 1, 'section_style': u'Simple', @@ -155,4 +155,4 @@ 'oldfieldname': u'file_list', 'oldfieldtype': u'Text' } -] \ No newline at end of file +] diff --git a/erpnext/knowledge_base/doctype/answer/__init__.py b/erpnext/utilities/doctype/question_control/__init__.py similarity index 100% rename from erpnext/knowledge_base/doctype/answer/__init__.py rename to erpnext/utilities/doctype/question_control/__init__.py diff --git a/erpnext/knowledge_base/doctype/question_control/question_control.txt b/erpnext/utilities/doctype/question_control/question_control.txt similarity index 94% rename from erpnext/knowledge_base/doctype/question_control/question_control.txt rename to erpnext/utilities/doctype/question_control/question_control.txt index b1443363c2c..b037b67d72e 100644 --- a/erpnext/knowledge_base/doctype/question_control/question_control.txt +++ b/erpnext/utilities/doctype/question_control/question_control.txt @@ -15,7 +15,7 @@ 'colour': u'White:FFF', 'doctype': 'DocType', 'issingle': 1, - 'module': u'Knowledge Base', + 'module': u'Utilities', 'name': '__common__', 'section_style': u'Simple', 'server_code_error': u' ', @@ -27,4 +27,4 @@ 'doctype': 'DocType', 'name': u'Question Control' } -] \ No newline at end of file +] diff --git a/erpnext/knowledge_base/page/kb_common/kb_common.js b/erpnext/utilities/page/kb_common/kb_common.js similarity index 92% rename from erpnext/knowledge_base/page/kb_common/kb_common.js rename to erpnext/utilities/page/kb_common/kb_common.js index 6fb4d387418..d77a938e0ed 100644 --- a/erpnext/knowledge_base/page/kb_common/kb_common.js +++ b/erpnext/utilities/page/kb_common/kb_common.js @@ -56,7 +56,7 @@ KBItemToolbar = function(args, kb) { console.log(1); this.innerHTML = 'deleting...'; this.disabled = 1; - $c_page('knowledge_base', 'questions', 'delete', { + $c_page('utilities', 'questions', 'delete', { dt: me.doctype, dn: me.det.name}, function(r,rt) { // reload the list kb.list.run() @@ -78,9 +78,9 @@ EditableText = function(args) { me.$w = $(repl('
\
\ - [edit]\ -
\ -
Formatted as [edit]\ + \ +

Formatted as markdown
\ \ Cancel\ @@ -112,7 +112,7 @@ EditableText = function(args) { } var btn = this; $(btn).set_working(); - $c_page('knowledge_base', 'question_view', 'update_item', { + $c_page('utilities', 'question_view', 'update_item', { dt: me.dt, dn: me.dn, fn: me.fieldname, text: v }, function(r) { @@ -140,4 +140,4 @@ EditableText = function(args) { me.$w.find('.ed-text-input, .ed-text-save, .ed-text-cancel, .help').toggle(true); } -} \ No newline at end of file +} diff --git a/erpnext/knowledge_base/doctype/question/__init__.py b/erpnext/utilities/page/question_view/__init__.py similarity index 100% rename from erpnext/knowledge_base/doctype/question/__init__.py rename to erpnext/utilities/page/question_view/__init__.py diff --git a/erpnext/knowledge_base/page/question_view/question_view.css b/erpnext/utilities/page/question_view/question_view.css similarity index 100% rename from erpnext/knowledge_base/page/question_view/question_view.css rename to erpnext/utilities/page/question_view/question_view.css diff --git a/erpnext/knowledge_base/page/question_view/question_view.html b/erpnext/utilities/page/question_view/question_view.html similarity index 82% rename from erpnext/knowledge_base/page/question_view/question_view.html rename to erpnext/utilities/page/question_view/question_view.html index 521244599e4..721e48acd48 100644 --- a/erpnext/knowledge_base/page/question_view/question_view.html +++ b/erpnext/utilities/page/question_view/question_view.html @@ -1,6 +1,6 @@
-
+

diff --git a/erpnext/knowledge_base/page/question_view/question_view.js b/erpnext/utilities/page/question_view/question_view.js similarity index 93% rename from erpnext/knowledge_base/page/question_view/question_view.js rename to erpnext/utilities/page/question_view/question_view.js index 86a2b981666..14b68504041 100644 --- a/erpnext/knowledge_base/page/question_view/question_view.js +++ b/erpnext/utilities/page/question_view/question_view.js @@ -65,7 +65,7 @@ KBQuestionView = function(w, qid, qtext) { // check if users has answered // (if no) then add a box to add a new answer this.make_add_answer = function() { - $c_page('knowledge_base', 'question_view', 'has_answered', qid, function(r, rt) { + $c_page('utilities', 'question_view', 'has_answered', qid, function(r, rt) { if(r.message=='No') { me.make_answer_box_link(); } @@ -92,7 +92,7 @@ KBQuestionView = function(w, qid, qtext) { var v = wn.tinymce.get_value(me.input); if(!v) { msgprint('Write something!'); return; } me.btn.set_working(); - $c_page('knowledge_base', 'question_view', 'add_answer', {qid: qid, answer:v}, + $c_page('utilities', 'question_view', 'add_answer', {qid: qid, answer:v}, function(r, rt) { me.btn.done_working(); me.ans_list.list.run(); @@ -107,7 +107,7 @@ KBQuestionView = function(w, qid, qtext) { this.make(); } else { - $c_page('knowledge_base', 'question_view', 'get_question', qid, function(r, rt) { + $c_page('utilities', 'question_view', 'get_question', qid, function(r, rt) { qtext = r.message; me.make(); }); @@ -185,4 +185,4 @@ KBAnswer = function(body, data, ans_list) { } -wn.require('erpnext/knowledge_base/page/kb_common/kb_common.js'); \ No newline at end of file +wn.require('erpnext/utilities/page/kb_common/kb_common.js'); diff --git a/erpnext/knowledge_base/page/question_view/question_view.py b/erpnext/utilities/page/question_view/question_view.py similarity index 100% rename from erpnext/knowledge_base/page/question_view/question_view.py rename to erpnext/utilities/page/question_view/question_view.py diff --git a/erpnext/knowledge_base/page/question_view/question_view.txt b/erpnext/utilities/page/question_view/question_view.txt similarity index 93% rename from erpnext/knowledge_base/page/question_view/question_view.txt rename to erpnext/utilities/page/question_view/question_view.txt index 9a10f8f930e..719b55130fa 100644 --- a/erpnext/knowledge_base/page/question_view/question_view.txt +++ b/erpnext/utilities/page/question_view/question_view.txt @@ -13,7 +13,7 @@ # These values are common for all Page { 'doctype': 'Page', - 'module': 'Knowledge Base', + 'module': 'Utilities', 'name': '__common__', 'page_name': 'Question View', 'standard': 'Yes' @@ -24,4 +24,4 @@ 'doctype': 'Page', 'name': 'question-view' } -] \ No newline at end of file +] diff --git a/erpnext/knowledge_base/doctype/question_control/__init__.py b/erpnext/utilities/page/questions/__init__.py similarity index 100% rename from erpnext/knowledge_base/doctype/question_control/__init__.py rename to erpnext/utilities/page/questions/__init__.py diff --git a/erpnext/knowledge_base/page/questions/questions.css b/erpnext/utilities/page/questions/questions.css similarity index 100% rename from erpnext/knowledge_base/page/questions/questions.css rename to erpnext/utilities/page/questions/questions.css diff --git a/erpnext/knowledge_base/page/questions/questions.html b/erpnext/utilities/page/questions/questions.html similarity index 77% rename from erpnext/knowledge_base/page/questions/questions.html rename to erpnext/utilities/page/questions/questions.html index 1085b7555ad..bec483e09ad 100644 --- a/erpnext/knowledge_base/page/questions/questions.html +++ b/erpnext/utilities/page/questions/questions.html @@ -1,7 +1,7 @@
-
+
+
+

A wiki or Q&A for your organization

\ No newline at end of file diff --git a/erpnext/knowledge_base/page/questions/questions.js b/erpnext/utilities/page/questions/questions.js similarity index 96% rename from erpnext/knowledge_base/page/questions/questions.js rename to erpnext/utilities/page/questions/questions.js index edb8063cbcb..6992fa1455a 100644 --- a/erpnext/knowledge_base/page/questions/questions.js +++ b/erpnext/utilities/page/questions/questions.js @@ -24,7 +24,7 @@ pscript.onload_questions = function(wrapper) { var kb = new KnowledgeBase(body); // sidebar - this.sidebar = new wn.widgets.PageSidebar($(wrapper).find('.layout-side-section').get(0), { + this.sidebar = new wn.widgets.PageSidebar($(wrapper).find('.questions-tags').get(0), { sections: [ { title: 'Top Tags', @@ -88,7 +88,7 @@ function KnowledgeBase(w) { // add a new question to the database this.add_question = function(suggest_list) { - $c_page('knowledge_base', 'questions', 'add_question', { + $c_page('utilities', 'questions', 'add_question', { question: this.search.value, suggest: suggest_list }, function(r,rt) { @@ -113,6 +113,7 @@ function KnowledgeBase(w) { this.list = new wn.ui.Listing({ parent: this.list_area, no_results_message: 'No questions found. Ask a new question!', + appframe: wn.pages.questions.appframe, as_dict: 1, get_query: function() { @@ -218,4 +219,4 @@ KBQuestion = function(parent, det, kb) { this.make() } -wn.require('erpnext/knowledge_base/page/kb_common/kb_common.js'); \ No newline at end of file +wn.require('erpnext/utilities/page/kb_common/kb_common.js'); diff --git a/erpnext/knowledge_base/page/questions/questions.py b/erpnext/utilities/page/questions/questions.py similarity index 100% rename from erpnext/knowledge_base/page/questions/questions.py rename to erpnext/utilities/page/questions/questions.py diff --git a/erpnext/knowledge_base/page/questions/questions.txt b/erpnext/utilities/page/questions/questions.txt similarity index 93% rename from erpnext/knowledge_base/page/questions/questions.txt rename to erpnext/utilities/page/questions/questions.txt index 1ca11ffebb2..8231625cb3a 100644 --- a/erpnext/knowledge_base/page/questions/questions.txt +++ b/erpnext/utilities/page/questions/questions.txt @@ -13,7 +13,7 @@ # These values are common for all Page { 'doctype': 'Page', - 'module': 'Knowledge Base', + 'module': 'Utilities', 'name': '__common__', 'page_name': 'Questions', 'standard': 'Yes' diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py index 032b52faa63..eecbb068549 100644 --- a/erpnext/utilities/transaction_base.py +++ b/erpnext/utilities/transaction_base.py @@ -33,9 +33,9 @@ class TransactionBase: self.doc.contact_display = contact_text or '' self.doc.contact_email = contact_email or '' self.doc.contact_mobile = contact_mobile or '' - - self.get_customer_details(self.doc.customer) + if args != 'onload': + self.get_customer_details(self.doc.customer) self.get_sales_person(self.doc.customer) # Get Customer Default Shipping Address - first load @@ -50,8 +50,8 @@ class TransactionBase: self.doc.contact_email = contact_email or '' self.doc.contact_mobile = contact_mobile or '' - self.get_customer_details(self.doc.customer) if self.doc.doctype != 'Quotation' and args != 'onload': + self.get_customer_details(self.doc.customer) self.get_sales_person(self.doc.customer) # Get Customer Address @@ -118,13 +118,18 @@ class TransactionBase: # Get Customer Details # ----------------------- def get_customer_details(self, name): - customer_details = webnotes.conn.sql("select customer_name, customer_group, territory, default_sales_partner, default_commission_rate from tabCustomer where name = '%s' and docstatus != 2" %(name), as_dict = 1) + customer_details = webnotes.conn.sql("select customer_name, customer_group, territory, default_sales_partner, default_commission_rate, default_price_list from tabCustomer where name = '%s' and docstatus != 2" %(name), as_dict = 1) if customer_details: self.doc.customer_name = customer_details[0]['customer_name'] or '' self.doc.customer_group = customer_details[0]['customer_group'] or '' self.doc.territory = customer_details[0]['territory'] or '' self.doc.sales_partner = customer_details[0]['default_sales_partner'] or '' self.doc.commission_rate = customer_details[0]['default_commission_rate'] or '' + def_price_list = customer_details[0]['default_price_list'] or '' + if not def_price_list: + cg_price_list = webnotes.conn.sql("select default_price_list from `tabCustomer Group` where name = %s", customer_details[0]['customer_group']) + def_price_list = cg_price_list and cg_price_list[0][0] or '' + self.doc.price_list_name = def_price_list or self.doc.price_list_name # Get Customer Shipping Address # ----------------------- diff --git a/js/all-app.js b/js/all-app.js index 4a7cdfe7972..3b3451d94fb 100644 --- a/js/all-app.js +++ b/js/all-app.js @@ -193,6 +193,12 @@ $.fn.done_working=function(){var ele=this.get(0);ele.disabled=0;if(ele.loading_i * lib/js/wn/model.js */ wn.provide('wn.model');wn.model={no_value_type:['Section Break','Column Break','HTML','Table','Button','Image'],new_names:{},with_doctype:function(doctype,callback){if(locals.DocType[doctype]){callback();}else{wn.call({method:'webnotes.widgets.form.load.getdoctype',args:{doctype:doctype},callback:callback});}},with_doc:function(doctype,name,callback){if(!name)name=doctype;if(locals[doctype]&&locals[doctype][name]){callback(name);}else{wn.call({method:'webnotes.widgets.form.load.getdoc',args:{doctype:doctype,name:name},callback:function(r){callback(name,r);}});}},can_delete:function(doctype){if(!doctype)return false;return locals.DocType[doctype].allow_trash&&wn.boot.profile.can_cancel.indexOf(doctype)!=-1;}} +/* + * lib/js/wn/meta.js + */ +wn.provide('wn.meta.docfield_map');wn.provide('wn.meta.docfield_list');wn.provide('wn.meta.doctypes');$.extend(wn.meta,{add_field:function(df){wn.provide('wn.meta.docfield_map.'+df.parent);wn.meta.docfield_map[df.parent][df.fieldname||df.label]=df;if(!wn.meta.docfield_list[df.parent]) +wn.meta.docfield_list[df.parent]=[] +wn.meta.docfield_list[df.parent].push(df);}}); /* * lib/js/wn/misc/tools.js */ @@ -207,6 +213,8 @@ if(!wn.boot.user_info[uid])return def if(!wn.boot.user_info[uid].fullname) wn.boot.user_info[uid].fullname=uid;if(!wn.boot.user_info[uid].image) wn.boot.user_info[uid].image=def.image;return wn.boot.user_info[uid];} +wn.provide('wn.user');$.extend(wn.user,{name:wn.boot.profile.name,has_role:function(rl){if(typeof rl=='string')rl=[rl];for(var i in rl){if(wn.boot.profile.roles.indexOf(rl[i])!=-1) +return true;}}}) wn.session_alive=true;$(document).bind('mousemove',function(){wn.session_alive=true;if(wn.session_alive_timeout) clearTimeout(wn.session_alive_timeout);wn.session_alive_timeout=setTimeout('wn.session_alive=false;',30000);}) /* @@ -243,7 +251,7 @@ throw new SyntaxError('JSON.parse');};}}()); wn.re_route={} wn.route=function(){if(wn.re_route[window.location.hash]){window.location.hash=wn.re_route[window.location.hash];} wn._cur_route=window.location.hash;route=wn.get_route();switch(route[0]){case"List":wn.views.doclistview.show(route[1]);break;case"Form":if(route.length>3){route[2]=route.splice(2).join('/');} -wn.views.formview.show(route[1],route[2]);break;case"Report":wn.views.reportview.show(route[1],route[2]);break;default:wn.views.pageview.show(route[0]);}} +wn.views.formview.show(route[1],route[2]);break;case"Report":wn.views.reportview.show(route[1],route[2]);break;case"Report2":wn.views.reportview2.show(route[1],route[2]);break;default:wn.views.pageview.show(route[0]);}} wn.get_route=function(route){if(!route) route=window.location.hash;if(route.substr(0,1)=='#')route=route.substr(1);if(route.substr(0,1)=='!')route=route.substr(1);return $.map(route.split('/'),function(r){return decodeURIComponent(r);});} wn.set_route=function(){route=$.map(arguments,function(a){return encodeURIComponent(a)}).join('/');window.location.hash=route;wn.app.set_favicon();} @@ -282,7 +290,6 @@ this.prepare_opts();$.extend(this,this.opts);$(this.parent).html(repl('\ \
\
\ -
\
\ \
\ @@ -304,16 +311,18 @@ args.simple_query=this.query;}else{var args={limit_start:this.start,limit_page_l if(this.args) $.extend(args,this.args) if(this.get_args){$.extend(args,this.get_args(opts));} -return args;},render_results:function(r){if(this.start==0)this.clear();this.$w.find('.btn-more').toggle(false);if(r.message)r.values=r.message;if(r.values&&r.values.length){this.data=this.data.concat(r.values);this.render_list(r.values);}else{if(this.start==0){this.$w.find('.result').toggle(false);this.$w.find('.no-result').toggle(true);}} -if(this.onrun)this.onrun();if(this.callback)this.callback(r);},render_list:function(values){var m=Math.min(values.length,this.page_length);for(var i=0;i=this.page_length) -this.$w.find('.btn-more').toggle(true);},add_row:function(){return this.$w.find('.result-list').append('
').find('.list-row:last').get(0);},refresh:function(){this.run();},add_limits:function(){this.query+=' LIMIT '+this.start+','+(this.page_length+1);}});wn.ui.FilterList=Class.extend({init:function(opts){wn.require('lib/js/legacy/widgets/form/fields.js');$.extend(this,opts);this.filters=[];this.$w=this.$parent;this.set_events();},set_events:function(){var me=this;this.$w.find('.add-filter-btn').bind('click',function(){me.add_filter();});},show_filters:function(){this.$w.find('.show_filters').slideToggle();if(!this.filters.length) +return args;},render_results:function(r){if(this.start==0)this.clear();this.$w.find('.btn-more').toggle(false);if(r.message)r.values=r.message;if(r.values&&r.values.length){this.data=this.data.concat(r.values);this.render_list(r.values);this.update_paging(r.values);}else{if(this.start==0){this.$w.find('.result').toggle(false);this.$w.find('.no-result').toggle(true);}} +if(this.onrun)this.onrun();if(this.callback)this.callback(r);},render_list:function(values){var m=Math.min(values.length,this.page_length);for(var i=0;i=this.page_length){this.$w.find('.btn-more').toggle(true);this.start+=this.page_length;}},add_row:function(){return this.$w.find('.result-list').append('
').find('.list-row:last').get(0);},refresh:function(){this.run();},add_limits:function(){this.query+=' LIMIT '+this.start+','+(this.page_length+1);}}); +/* + * lib/js/wn/ui/filters.js + */ +wn.ui.FilterList=Class.extend({init:function(opts){wn.require('lib/js/legacy/widgets/form/fields.js');$.extend(this,opts);this.filters=[];this.$w=this.$parent;this.set_events();},set_events:function(){var me=this;this.$w.find('.add-filter-btn').bind('click',function(){me.add_filter();});},show_filters:function(){this.$w.find('.show_filters').slideToggle();if(!this.filters.length) this.add_filter();},add_filter:function(fieldname,condition,value){this.filters.push(new wn.ui.Filter({flist:this,fieldname:fieldname,condition:condition,value:value}));if(fieldname){this.$w.find('.show_filters').slideDown();}},get_filters:function(){var values=[];$.each(this.filters,function(i,f){if(f.field) values.push(f.get_value());}) return values;},update_filters:function(){var fl=[];$.each(this.filters,function(i,f){if(f.field)fl.push(f);}) this.filters=fl;},get_filter:function(fieldname){for(var i in this.filters){if(this.filters[i].field.df.fieldname==fieldname) -return this.filters[i];}}});wn.ui.Filter=Class.extend({init:function(opts){$.extend(this,opts);this.doctype=this.flist.doctype;this.fields_by_name={};this.make();this.make_options();this.set_events();},make:function(){this.flist.$w.find('.filter_area').append('
\ - \ +return this.filters[i];}}});wn.ui.Filter=Class.extend({init:function(opts){$.extend(this,opts);this.doctype=this.flist.doctype;this.make();this.make_select();this.set_events();},make:function(){this.flist.$w.find('.filter_area').append('
\ + \ \ \ ×\ -
');this.$w=this.flist.$w.find('.list_filter:last-child');this.$select=this.$w.find('.fieldname_select');},make_options:function(){if(this.filter_fields){for(var i in this.filter_fields) -this.add_field_option(this.filter_fields[i])}else{this.render_field_select();}},set_events:function(){var me=this;this.$w.find('.fieldname_select').bind('change',function(){me.set_field(this.value);});this.$w.find('a.close').bind('click',function(){me.$w.css('display','none');var value=me.field.get_value();me.field=null;if(!me.flist.get_filters().length){me.flist.$w.find('.set_filters').toggle(true);me.flist.$w.find('.show_filters').toggle(false);} +
');this.$w=this.flist.$w.find('.list_filter:last-child');},make_select:function(){this.fieldselect=new wn.ui.FieldSelect(this.$w.find('.fieldname_select_area'),this.doctype,this.filter_fields);},set_events:function(){var me=this;this.fieldselect.$select.bind('change',function(){me.set_field(this.value);});this.$w.find('a.close').bind('click',function(){me.$w.css('display','none');var value=me.field.get_value();me.field=null;if(!me.flist.get_filters().length){me.flist.$w.find('.set_filters').toggle(true);me.flist.$w.find('.show_filters').toggle(false);} if(value){me.flist.listobj.run();} me.flist.update_filters();return false;});me.$w.find('.condition').change(function(){if($(this).val()=='in'){me.set_field(me.field.df.fieldname,'Data');if(!me.field.desc_area) -me.field.desc_area=$a(me.field.wrapper,'span','help',null,'values separated by comma');}else{me.set_field(me.field.df.fieldname);}});if(me.fieldname){this.set_values(me.fieldname,me.condition,me.value);}else{me.set_field('name');}},set_values:function(fieldname,condition,value){this.set_field(fieldname);if(condition)this.$w.find('.condition').val(condition).change();if(value)this.field.set_input(value)},render_field_select:function(){var me=this;me.table_fields=[];var std_filters=[{fieldname:'name',fieldtype:'Data',label:'ID',parent:me.doctype},{fieldname:'modified',fieldtype:'Date',label:'Last Modified',parent:me.doctype},{fieldname:'owner',fieldtype:'Data',label:'Created By',parent:me.doctype},{fieldname:'_user_tags',fieldtype:'Data',label:'Tags',parent:me.doctype}];$.each(std_filters.concat(fields_list[me.doctype]),function(i,df){me.add_field_option(df);});$.each(me.table_fields,function(i,table_df){if(table_df.options){$.each(fields_list[table_df.options],function(i,df){me.add_field_option(df);});}})},add_field_option:function(df){var me=this;if(me.doctype&&df.parent==me.doctype){var label=df.label;var table=get_label_doctype(me.doctype);if(df.fieldtype=='Table')me.table_fields.push(df);}else{var label=df.label+' ('+df.parent+')';var table=df.parent;} -if(wn.model.no_value_type.indexOf(df.fieldtype)==-1&&!me.fields_by_name[df.fieldname]){this.$select.append($('
');this.$w=this.flist.$w.find('.list_filter:last-child');},make_select:function(){this.fieldselect=new wn.ui.FieldSelect(this.$w.find('.fieldname_select_area'),this.doctype,this.filter_fields);},set_events:function(){var me=this;this.fieldselect.$select.bind('change',function(){me.set_field(this.value);});this.$w.find('a.close').bind('click',function(){me.$w.css('display','none');var value=me.field.get_value();me.field=null;if(!me.flist.get_filters().length){me.flist.$w.find('.set_filters').toggle(true);me.flist.$w.find('.show_filters').toggle(false);} if(value){me.flist.listobj.run();} me.flist.update_filters();return false;});me.$w.find('.condition').change(function(){if($(this).val()=='in'){me.set_field(me.field.df.fieldname,'Data');if(!me.field.desc_area) -me.field.desc_area=$a(me.field.wrapper,'span','help',null,'values separated by comma');}else{me.set_field(me.field.df.fieldname);}});if(me.fieldname){this.set_values(me.fieldname,me.condition,me.value);}else{me.set_field('name');}},set_values:function(fieldname,condition,value){this.set_field(fieldname);if(condition)this.$w.find('.condition').val(condition).change();if(value)this.field.set_input(value)},render_field_select:function(){var me=this;me.table_fields=[];var std_filters=[{fieldname:'name',fieldtype:'Data',label:'ID',parent:me.doctype},{fieldname:'modified',fieldtype:'Date',label:'Last Modified',parent:me.doctype},{fieldname:'owner',fieldtype:'Data',label:'Created By',parent:me.doctype},{fieldname:'_user_tags',fieldtype:'Data',label:'Tags',parent:me.doctype}];$.each(std_filters.concat(fields_list[me.doctype]),function(i,df){me.add_field_option(df);});$.each(me.table_fields,function(i,table_df){if(table_df.options){$.each(fields_list[table_df.options],function(i,df){me.add_field_option(df);});}})},add_field_option:function(df){var me=this;if(me.doctype&&df.parent==me.doctype){var label=df.label;var table=get_label_doctype(me.doctype);if(df.fieldtype=='Table')me.table_fields.push(df);}else{var label=df.label+' ('+df.parent+')';var table=df.parent;} -if(wn.model.no_value_type.indexOf(df.fieldtype)==-1&&!me.fields_by_name[df.fieldname]){this.$select.append($('
');this.$w=this.flist.$w.find('.list_filter:last-child');this.$select=this.$w.find('.fieldname_select');},make_options:function(){if(this.filter_fields){for(var i in this.filter_fields) -this.add_field_option(this.filter_fields[i])}else{this.render_field_select();}},set_events:function(){var me=this;this.$w.find('.fieldname_select').bind('change',function(){me.set_field(this.value);});this.$w.find('a.close').bind('click',function(){me.$w.css('display','none');var value=me.field.get_value();me.field=null;if(!me.flist.get_filters().length){me.flist.$w.find('.set_filters').toggle(true);me.flist.$w.find('.show_filters').toggle(false);} -if(value){me.flist.listobj.run();} -me.flist.update_filters();return false;});me.$w.find('.condition').change(function(){if($(this).val()=='in'){me.set_field(me.field.df.fieldname,'Data');if(!me.field.desc_area) -me.field.desc_area=$a(me.field.wrapper,'span','help',null,'values separated by comma');}else{me.set_field(me.field.df.fieldname);}});if(me.fieldname){this.set_values(me.fieldname,me.condition,me.value);}else{me.set_field('name');}},set_values:function(fieldname,condition,value){this.set_field(fieldname);if(condition)this.$w.find('.condition').val(condition).change();if(value)this.field.set_input(value)},render_field_select:function(){var me=this;me.table_fields=[];var std_filters=[{fieldname:'name',fieldtype:'Data',label:'ID',parent:me.doctype},{fieldname:'modified',fieldtype:'Date',label:'Last Modified',parent:me.doctype},{fieldname:'owner',fieldtype:'Data',label:'Created By',parent:me.doctype},{fieldname:'_user_tags',fieldtype:'Data',label:'Tags',parent:me.doctype}];$.each(std_filters.concat(fields_list[me.doctype]),function(i,df){me.add_field_option(df);});$.each(me.table_fields,function(i,table_df){if(table_df.options){$.each(fields_list[table_df.options],function(i,df){me.add_field_option(df);});}})},add_field_option:function(df){var me=this;if(me.doctype&&df.parent==me.doctype){var label=df.label;var table=get_label_doctype(me.doctype);if(df.fieldtype=='Table')me.table_fields.push(df);}else{var label=df.label+' ('+df.parent+')';var table=df.parent;} -if(wn.model.no_value_type.indexOf(df.fieldtype)==-1&&!me.fields_by_name[df.fieldname]){this.$select.append($('