diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index e31076e12f..c3c43e0429 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -312,18 +312,14 @@ class DocType(TransactionBase): supplier = '' if d.purchase_order and not d.purchase_order in self.po_list: supplier = sql("select supplier from `tabPurchase Order` where name = '%s'" % d.purchase_order)[0][0] - doctype = 'purchase order' - doctype_no = cstr(d.purchase_order) if supplier and not cstr(self.doc.supplier) == cstr(supplier): - msgprint("Supplier name %s do not match with supplier name of %s %s." %(self.doc.supplier,doctype,doctype_no)) + msgprint("Supplier name %s do not match with supplier name of purhase order: %s." %(self.doc.supplier,cstr(d.purchase_order))) raise Exception , " Validation Error " if d.purchase_receipt and not d.purchase_receipt in self.pr_list: supplier = sql("select supplier from `tabPurchase Receipt` where name = '%s'" % d.purchase_receipt)[0][0] - doctype = 'purchase receipt' - doctype_no = cstr(d.purchase_receipt) if supplier and not cstr(self.doc.supplier) == cstr(supplier): - msgprint("Supplier name %s do not match with supplier name of %s %s." %(self.doc.supplier,doctype,doctype_no)) + msgprint("Supplier name %s do not match with supplier name of %s %s." %(self.doc.supplier,cstr(d.purchase_receipt))) raise Exception , " Validation Error " # Validate values with reference document @@ -337,7 +333,7 @@ class DocType(TransactionBase): def validate_po_pr(self, d): # check po / pr for qty and rates and currency and conversion rate - # always import_rate must be equal to import_rate of purchase order + # currency, import_rate must be equal to currency, import_rate of purchase order if d.purchase_order and not d.purchase_order in self.po_list: # currency currency = cstr(sql("select currency from `tabPurchase Order` where name = '%s'" % d.purchase_order)[0][0]) @@ -346,7 +342,7 @@ class DocType(TransactionBase): raise Exception # import_rate rate = flt(sql('select import_rate from `tabPurchase Order Item` where item_code=%s and parent=%s and name = %s', (d.item_code, d.purchase_order, d.po_detail))[0][0]) - if abs(rate - flt(d.import_rate)) > 1: + if abs(rate - flt(d.import_rate)) > 1 and cint(get_defaults('maintain_same_rate')): msgprint("Import Rate for %s in the Purchase Order is %s. Rate must be same as Purchase Order Rate" % (d.item_code,rate)) raise Exception diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.css b/erpnext/accounts/page/accounts_browser/accounts_browser.css index bbbbb6b8aa..718da365da 100644 --- a/erpnext/accounts/page/accounts_browser/accounts_browser.css +++ b/erpnext/accounts/page/accounts_browser/accounts_browser.css @@ -18,3 +18,12 @@ span.tree-node-toolbar { font-weight: bold; text-decoration: underline; } + +span.balance-area { + float: right; + height: 13px; +} + +span.balance-bold { + font-weight: bold; +} \ No newline at end of file diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.js b/erpnext/accounts/page/accounts_browser/accounts_browser.js index 580fd336a9..667a37eb97 100644 --- a/erpnext/accounts/page/accounts_browser/accounts_browser.js +++ b/erpnext/accounts/page/accounts_browser/accounts_browser.js @@ -23,7 +23,7 @@ pscript['onload_Accounts Browser'] = function(wrapper){ wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area')); wrapper.appframe.add_button('New Company', function() { newdoc('Company'); }, 'icon-plus'); - wrapper.appframe.add_button('Refresh', function() { + wrapper.appframe.add_button('Refresh', function() { wrapper.$company_select.change(); }, 'icon-refresh'); @@ -79,7 +79,7 @@ erpnext.AccountsChart = Class.extend({ this.tree = new wn.ui.Tree({ parent: $(wrapper).find('.tree-area'), label: company, - args: {ctype: ctype}, + args: {ctype: ctype, comp: company}, method: 'accounts.page.accounts_browser.accounts_browser.get_children', click: function(link) { if(me.cur_toolbar) @@ -92,17 +92,25 @@ erpnext.AccountsChart = Class.extend({ me.cur_toolbar = link.toolbar; $(me.cur_toolbar).toggle(true); } + + // bold + $('.balance-bold').removeClass('balance-bold'); // deselect + $(link).parent().find('.balance-area:first').addClass('balance-bold'); // select + }, + onrender: function(treenode) { + var bal = treenode.data && treenode.data.balance.split(' ') || ['','']; + treenode.parent.append(''+ bal[0] + ' ' + + bal[1] + ''); } }); - this.tree.rootnode.$a.click(); + this.tree.rootnode.$a.click(); }, make_link_toolbar: function(link) { var data = $(link).data('node-data'); if(!data) return; link.toolbar = $('').insertAfter(link); - // edit $('Edit').appendTo(link.toolbar); @@ -235,386 +243,4 @@ erpnext.AccountsChart = Class.extend({ }); d.show(); } -}); - -/* -pscript.make_chart = function(b, wrapper) { - pscript.ctype = b; - $(wrapper).find('.tree-area').empty() - $(wrapper).find('.layout-sidesection').empty() - - //================== table body====================================== - var ac_main_grid = make_table($i('ab_body'),1,2,'100%',['60%','40%'],{border:"0px", padding:"4px",tableLayout: "fixed", borderCollapse: "collapse"}); - $y($td(ac_main_grid,0,0),{border: "1px solid #dddddd", padding: "8px"}); - pscript.account_tree = $a($td(ac_main_grid,0,0),'div', '',{minHeight:'400px'}); - $y($td(ac_main_grid,0,1),{border: "1px solid #DDD"}); - pscript.la = $a($td(ac_main_grid,0,1),'div'); - pscript.acc_period_bal = $a($td(ac_main_grid,0,1),'div'); - - //=====================footer area ================================== - if (pscript.ctype == 'Account') { - var footer = $a($i('ab_body'),'div','',{backgroundColor: "#FFD", padding: "8px", color: "#444", fontSize: "12px", marginTop: "14px"}); - - var help1 = $a(footer,'span'); - help1.innerHTML = "Note: To create accounts for Customers and Suppliers, please create Customer and Supplier" - + " Masters. This will ensure that the accounts are linked to your Selling and Buying Processes. The Account Heads for Customer and Supplier will automatically be created." - } - - // header and toolbar - // ------------------ - wrapper.appframe.$titlebar.find('.appframe-title').html('Chart of '+pscript.ctype+'s'); - - // select company - // -------------- - var tab = make_table(select_area, 1, 2, null, [], {verticalAlign:'middle', padding: '2px'}); - $td(tab,0,0).innerHTML = 'Select Company'.bold(); - var sel = $a($td(tab,0,1),'select','',{width:'160px'}); - - // set tree - var set_tree = function() { - if(pscript.ac_tree) { - pscript.ac_tree.body.innerHTML = ''; - } - pscript.make_ac_tree(); - var cn = sel_val(sel); - var n = pscript.ac_tree.addNode(null, cn, null,pscript.ac_tree.std_onclick, pscript.ac_tree.std_onexp); - n.rec = {}; - n.rec.name = 'Root Node'; - n.rec.account_name = cn; - n.rec.cost_center_name = cn; - pscript.set_ac_head('',n.rec); - $ds(pscript.ac_head_area); - } - - // select company - add_sel_options(sel, ['Loading...']); - var callback = function(r,rt) { - empty_select(sel); - add_sel_options(sel,r.message.cl,sys_defaults.company); - set_tree(); - sel.onchange = function() { set_tree(); } - } - $c_obj('GL Control', 'get_companies', '', callback); - - pscript.ab_company_sel = sel; - - pscript.make_ac_head(); - pscript.make_group_area(); - pscript.make_ledger_area(); - pscript.make_new_acc_dialog(); - pscript.make_new_cost_center_dialog(); - -} - -pscript.make_ac_tree = function() { - //var type= sel_val($i('ctype')) - var type= pscript.ctype; - var tree = new Tree(pscript.account_tree, '90%'); - pscript.ac_tree = tree; - - // on click - tree.std_onclick = function(node) { - - - pscript.cur_node = node; - - // show ledger - pscript.set_ac_head(node.parent_account, node.rec,type); - } - - // on expand - tree.std_onexp = function(node) { - if(node.expanded_once)return; - $ds(node.loading_div); - //set_ac_head - var callback = function(r,rt) { - - $dh(node.loading_div); - var n = tree.allnodes[r.message.parent_acc_name]; - - var cl = r.message.cl; - - if(type=='Account'){ - for(var i=0;iCampaign + + SMS Center + @@ -93,7 +98,7 @@ title = "Analyze Sales and Purchase trends and slice them based on item, customer, groups etc" href="#!Report/Profile/Trend Analyzer">Trend Analyzer - +