From 8fb260504a03c254ba2ea5c7fff4dd0e7a3cac54 Mon Sep 17 00:00:00 2001 From: Nijil Y Date: Tue, 13 Dec 2011 18:14:15 +0530 Subject: [PATCH] purchase discount --- .../payable_voucher/payable_voucher.js | 113 ++-------- .../accounts/doctype/pv_detail/pv_detail.txt | 16 +- .../buying/doctype/po_detail/po_detail.txt | 8 +- .../purchase_common/purchase_common.js | 198 ++++++------------ .../purchase_common/purchase_common.py | 15 +- .../purchase_receipt_detail.txt | 7 +- 6 files changed, 104 insertions(+), 253 deletions(-) diff --git a/erpnext/accounts/doctype/payable_voucher/payable_voucher.js b/erpnext/accounts/doctype/payable_voucher/payable_voucher.js index 5b950b0d53..ca79387e3d 100644 --- a/erpnext/accounts/doctype/payable_voucher/payable_voucher.js +++ b/erpnext/accounts/doctype/payable_voucher/payable_voucher.js @@ -77,13 +77,6 @@ cur_frm.cscript.supplier_address = cur_frm.cscript.contact_person = function(doc if(doc.supplier) get_server_fields('get_supplier_address', JSON.stringify({supplier: doc.supplier, address: doc.supplier_address, contact: doc.contact_person}),'', doc, dt, dn, 1); } -cur_frm.fields_dict['supplier_address'].get_query = function(doc, cdt, cdn) { - return 'SELECT name,address_line1,city FROM tabAddress WHERE supplier = "'+ doc.supplier +'" AND docstatus != 2 AND name LIKE "%s" ORDER BY name ASC LIMIT 50'; -} - -cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) { - return 'SELECT name,CONCAT(first_name," ",ifnull(last_name,"")) As FullName,department,designation FROM tabContact WHERE supplier = "'+ doc.supplier +'" AND docstatus != 2 AND name LIKE "%s" ORDER BY name ASC LIMIT 50'; -} cur_frm.fields_dict.supplier_address.on_new = function(dn) { @@ -111,12 +104,6 @@ cur_frm.cscript.credit_to = function(doc,dt,dn) { -// Get Print Heading -cur_frm.fields_dict['select_print_heading'].get_query = function(doc, cdt, cdn) { - return 'SELECT `tabPrint Heading`.name FROM `tabPrint Heading` WHERE `tabPrint Heading`.docstatus !=2 AND `tabPrint Heading`.name LIKE "%s" ORDER BY `tabPrint Heading`.name ASC LIMIT 50'; -} - - //Set expense_head and cost center on adding new row //---------------------------------------------- cur_frm.fields_dict['entries'].grid.onrowadd = function(doc, cdt, cdn){ @@ -142,18 +129,10 @@ cur_frm.cscript.is_opening = function(doc, dt, dn) { if (doc.is_opening == 'Yes') unhide_field('aging_date'); } -/* ******************************** TRIGGERS **************************************** */ - -// Conversion Rate -// ---------------- -cur_frm.cscript.conversion_rate = function(doc,cdt,cdn) { - cur_frm.cscript.calc_total(doc,cdt,cdn); -} - // Recalculate Button // ------------------- cur_frm.cscript['Recalculate'] = function(doc, dt, dn) { - cur_frm.cscript.calc_total(doc, cdt, cdn); + cur_frm.cscript['Calculate Tax'](doc,cdt,cdn); calc_total_advance(doc,cdt,cdn); } @@ -179,31 +158,16 @@ cur_frm.cscript.item_code = function(doc,cdt,cdn){ } } -// Quantity -// --------- -cur_frm.cscript.qty = function(doc,dt,dn) { cur_frm.cscript.calc_exp_row(doc,dt,dn); } - -// Import Rate -// ------------ -cur_frm.cscript.import_rate = function(doc,dt,dn) { - var d = locals[dt][dn]; - set_multiple('PV Detail', d.name, {'purchase_rate': flt(d.import_rate) * flt(doc.conversion_rate) }, 'entries'); - cur_frm.cscript.calc_exp_row(doc,dt,dn) -} - - -// ============== TDS =============== - // Rate in Deduct Taxes (TDS) // -------------------------- cur_frm.cscript.rate = function(doc,dt,dn) { //This is done as Purchase tax detail and PV detail both contain the same fieldname 'rate' - if(dt != 'Purchase Tax Detail') cur_frm.cscript.calc_exp_row(doc,dt,dn); + if(dt != 'Purchase Tax Detail') cur_frm.cscript.calc_amount(doc, 2); } // Amount // ------- -cur_frm.cscript.ded_amount = function(doc,dt,dn) { cur_frm.cscript.calc_total(doc); } +cur_frm.cscript.ded_amount = function(doc,dt,dn) {calculate_outstanding(doc);} // Get TDS Button // --------------- @@ -211,7 +175,7 @@ cur_frm.cscript['Get TDS'] = function(doc, dt, dn) { var callback = function(r,rt) { cur_frm.refresh(); refresh_field('ded_amount'); - cur_frm.cscript.calc_total(locals[dt][dn]); + //cur_frm.cscript.calc_total(locals[dt][dn]); } $c_obj(make_doclist(dt,dn), 'get_tds', '', callback); } @@ -244,6 +208,15 @@ cur_frm.cscript['Make Bank Voucher'] = function(doc, dt, dn) { /* ***************************** GET QUERY Functions *************************** */ + +cur_frm.fields_dict['supplier_address'].get_query = function(doc, cdt, cdn) { + return 'SELECT name,address_line1,city FROM tabAddress WHERE supplier = "'+ doc.supplier +'" AND docstatus != 2 AND name LIKE "%s" ORDER BY name ASC LIMIT 50'; +} + +cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) { + return 'SELECT name,CONCAT(first_name," ",ifnull(last_name,"")) As FullName,department,designation FROM tabContact WHERE supplier = "'+ doc.supplier +'" AND docstatus != 2 AND name LIKE "%s" ORDER BY name ASC LIMIT 50'; +} + // Item Code // ---------- cur_frm.fields_dict['entries'].grid.get_field("item_code").get_query = function(doc, cdt, cdn) { @@ -277,6 +250,12 @@ cur_frm.fields_dict['purchase_receipt_main'].get_query = function(doc) { } } +// Get Print Heading +cur_frm.fields_dict['select_print_heading'].get_query = function(doc, cdt, cdn) { + return 'SELECT `tabPrint Heading`.name FROM `tabPrint Heading` WHERE `tabPrint Heading`.docstatus !=2 AND `tabPrint Heading`.name LIKE "%s" ORDER BY `tabPrint Heading`.name ASC LIMIT 50'; +} + + // ================== PV Details Table =================== // Expense Head // ------------- @@ -324,28 +303,6 @@ cur_frm.cscript.tax_code = function(doc, dt, dn) { /* ***************************** UTILITY FUNCTIONS ************************ */ -// Calculate -// --------- -cur_frm.cscript.calc_total = function(doc) { - - // expense - var t_exp = 0.0; - var el = getchildren('PV Detail',doc.name,'entries'); - for(var i in el) { - if (flt(el[i].import_rate) > 0){ - set_multiple('PV Detail', el[i].name, {'purchase_ref_rate':flt(el[i].import_ref_rate)*flt(doc.conversion_rate)}, 'entries'); - set_multiple('PV Detail', el[i].name, {'purchase_rate': flt(doc.conversion_rate) * flt(el[i].import_rate) }, 'entries'); - set_multiple('PV Detail', el[i].name, {'import_amount': flt(el[i].qty) * flt(el[i].import_rate) }, 'entries'); - } - set_multiple('PV Detail', el[i].name, {'amount': flt(el[i].qty) * flt(el[i].purchase_rate) }, 'entries') - t_exp += flt(el[i].amount); - } - doc.net_total = flt(t_exp); - refresh_field('net_total'); - cur_frm.cscript.val_cal_charges(doc, cdt, cdn, cur_frm.cscript.tname, cur_frm.cscript.fname, cur_frm.cscript.other_fname); -} - - // Calculate Advance // ------------------ var calc_total_advance = function(doc,cdt,cdn) { @@ -366,30 +323,12 @@ var calc_total_advance = function(doc,cdt,cdn) { refresh_many(['total_advance','outstanding_amount','tds_amount_on_advance', 'total_amount_to_pay']); } - -cur_frm.cscript.calc_exp_row = function(doc,dt,dn) { - var d = locals[dt][dn]; - d.amount = flt(d.qty * d.purchase_rate); - refresh_field('amount',dn,'entries'); - - if (!doc.conversion_rate){ doc.conversion_rate = 1; refresh_field('conversion_rate'); } - - set_multiple('PV Detail', dn, {'import_rate': flt(d.purchase_rate) / flt(doc.conversion_rate) }, 'entries'); - set_multiple('PV Detail', dn, {'import_amount': flt(d.qty) * flt(d.purchase_rate) / flt(doc.conversion_rate) }, 'entries'); - - cur_frm.cscript.calc_total(doc) -} - - // Make JV // -------- cur_frm.cscript.make_jv = function(doc, dt, dn, det) { var jv = LocalDB.create('Journal Voucher'); jv = locals['Journal Voucher'][jv]; jv.voucher_type = 'Bank Voucher'; - //jv.voucher_series = det.def_bv_series; - //jv.voucher_date = doc.voucher_date; - //jv.posting_date = doc.posting_date; jv.remark = repl('Payment against voucher %(vn)s for %(rem)s', {vn:doc.name, rem:doc.remarks}); jv.total_debit = doc.outstanding_amount; jv.total_credit = doc.outstanding_amount; @@ -400,20 +339,17 @@ cur_frm.cscript.make_jv = function(doc, dt, dn, det) { var d1 = LocalDB.add_child(jv, 'Journal Voucher Detail', 'entries'); d1.account = doc.credit_to; d1.debit = doc.outstanding_amount; - //d1.balance = det.acc_balance; d1.against_voucher = doc.name; // credit to bank var d1 = LocalDB.add_child(jv, 'Journal Voucher Detail', 'entries'); - //d1.account = det.def_bank_account; - //d1.balance = det.bank_balance; d1.credit = doc.outstanding_amount; loaddoc('Journal Voucher', jv.name); } // ***************** Get project name ***************** -cur_frm.fields_dict['pv_details'].grid.get_field('project_name').get_query = function(doc, cdt, cdn) { +cur_frm.fields_dict['entries'].grid.get_field('project_name').get_query = function(doc, cdt, cdn) { return 'SELECT `tabProject`.name FROM `tabProject` WHERE `tabProject`.status = "Open" AND `tabProject`.name LIKE "%s" ORDER BY `tabProject`.name ASC LIMIT 50'; } @@ -427,15 +363,6 @@ cur_frm.cscript.select_print_heading = function(doc,cdt,cdn){ cur_frm.pformat.print_heading = "Purchase Invoice"; } -/* *********************** Client Side Validation **************************** */ -// Validate -// --------- -cur_frm.cscript.validate = function(doc, cdt, cdn) { - is_item_table(doc,cdt,cdn); - cur_frm.cscript.calc_total(doc, cdt, cdn); - calc_total_advance(doc, cdt, cdn); -} - /****************** Get Accounting Entry *****************/ cur_frm.cscript['View Ledger Entry'] = function(){ var callback = function(report){ diff --git a/erpnext/accounts/doctype/pv_detail/pv_detail.txt b/erpnext/accounts/doctype/pv_detail/pv_detail.txt index f789f1262a..f14b44b01e 100755 --- a/erpnext/accounts/doctype/pv_detail/pv_detail.txt +++ b/erpnext/accounts/doctype/pv_detail/pv_detail.txt @@ -5,7 +5,7 @@ { 'creation': '2010-08-08 17:09:17', 'docstatus': 0, - 'modified': '2011-12-09 18:46:35', + 'modified': '2011-12-13 12:06:35', 'modified_by': 'Administrator', 'owner': 'Administrator' }, @@ -21,7 +21,7 @@ 'section_style': 'Tray', 'server_code_error': ' ', 'show_in_menu': 0, - 'version': 36 + 'version': 39 }, # These values are common for all DocField @@ -129,13 +129,14 @@ 'fieldname': 'purchase_ref_rate', 'fieldtype': 'Currency', 'label': 'Ref Rate *', - 'permlevel': 0 + 'permlevel': 0, + 'trigger': 'Client' }, # DocField { 'doctype': 'DocField', - 'fieldname': 'purchase_rate', + 'fieldname': 'rate', 'fieldtype': 'Currency', 'label': 'Rate *(Default Curr.)', 'oldfieldname': 'rate', @@ -161,12 +162,12 @@ # DocField { - 'default': '0.00', 'doctype': 'DocField', 'fieldname': 'discount_rate', 'fieldtype': 'Currency', 'label': 'Discount %', - 'permlevel': 0 + 'permlevel': 0, + 'trigger': 'Client' }, # DocField @@ -175,7 +176,8 @@ 'fieldname': 'import_ref_rate', 'fieldtype': 'Currency', 'label': 'Ref Rate ', - 'permlevel': 0 + 'permlevel': 0, + 'trigger': 'Client' }, # DocField diff --git a/erpnext/buying/doctype/po_detail/po_detail.txt b/erpnext/buying/doctype/po_detail/po_detail.txt index 6a275e607a..c8d831b8dc 100755 --- a/erpnext/buying/doctype/po_detail/po_detail.txt +++ b/erpnext/buying/doctype/po_detail/po_detail.txt @@ -5,7 +5,7 @@ { 'creation': '2010-08-08 17:09:12', 'docstatus': 0, - 'modified': '2011-12-08 18:30:54', + 'modified': '2011-12-13 13:02:05', 'modified_by': 'Administrator', 'owner': 'Administrator' }, @@ -21,7 +21,7 @@ 'section_style': 'Tray', 'server_code_error': ' ', 'show_in_menu': 0, - 'version': 58 + 'version': 59 }, # These values are common for all DocField @@ -104,7 +104,6 @@ # DocField { - 'default': '0.00', 'doctype': 'DocField', 'fieldname': 'qty', 'fieldtype': 'Currency', @@ -119,7 +118,6 @@ # DocField { - 'default': '0.00', 'doctype': 'DocField', 'fieldname': 'purchase_rate', 'fieldtype': 'Currency', @@ -144,7 +142,6 @@ # DocField { - 'default': '0.00', 'doctype': 'DocField', 'fieldname': 'amount', 'fieldtype': 'Currency', @@ -392,7 +389,6 @@ # DocField { - 'default': '0.00', 'doctype': 'DocField', 'fieldname': 'billed_qty', 'fieldtype': 'Currency', diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.js b/erpnext/buying/doctype/purchase_common/purchase_common.js index 029a413ccc..a429b6894c 100644 --- a/erpnext/buying/doctype/purchase_common/purchase_common.js +++ b/erpnext/buying/doctype/purchase_common/purchase_common.js @@ -13,14 +13,6 @@ cur_frm.cscript.get_default_schedule_date = function(doc) { } } -/* -// ======================== Supplier ================================================= -cur_frm.cscript.supplier = function(doc, cdt, cdn) { - if(doc.supplier) get_server_fields('get_supplier_details', doc.supplier,'', doc, cdt, cdn, 1); -} - -*/ - // ======================== Conversion Rate ========================================== cur_frm.cscript.conversion_rate = function(doc,cdt,cdn) { @@ -54,22 +46,11 @@ cur_frm.cscript.update_stock_qty = function(doc,cdt,cdn){ } } -//==================== Purchase UOM Get Query ======================================================= -//cur_frm.fields_dict[fname].grid.get_field("uom").get_query = function(doc, cdt, cdn) { -// var d = locals[this.doctype][this.docname]; -// return 'SELECT `tabUOM Conversion Detail`.`uom` FROM `tabUOM Conversion Detail` WHERE `tabUOM Conversion Detail`.`parent` = "' + d.item_code + '" AND `tabUOM Conversion Detail`.uom LIKE "%s"' -//} - - //==================== UOM ====================================================================== cur_frm.cscript.uom = function(doc, cdt, cdn) { var d = locals[cdt][cdn]; if (d.item_code && d.uom) { call_back = function(doc, cdt, cdn){ - //refresh_field('purchase_rate', d.name, fname); - //refresh_field('qty' , d.name, fname); - //refresh_field('conversion_factor' , d.name, fname); - //var doc = locals[cdt][cdn]; cur_frm.cscript.calc_amount(doc, 2); } str_arg = {'item_code':d.item_code, 'uom':d.uom, 'stock_qty':flt(d.stock_qty), 'qty': flt(d.qty)} @@ -115,64 +96,27 @@ cur_frm.cscript.qty = function(doc, cdt, cdn) { //=================== Purchase Rate ============================================================== cur_frm.cscript.purchase_rate = function(doc, cdt, cdn) { - // Calculate Amount cur_frm.cscript.calc_amount(doc, 2); } //==================== Import Rate ================================================================ cur_frm.cscript.import_rate = function(doc, cdt, cdn) { - // Calculate Amount cur_frm.cscript.calc_amount(doc, 1); } //==================== Discount Rate ================================================================ cur_frm.cscript.discount_rate = function(doc, cdt, cdn) { - // Calculate Amount cur_frm.cscript.calc_amount(doc, 4); } //==================== Purchase Ref Rate ================================================================ cur_frm.cscript.purchase_ref_rate = function(doc, cdt, cdn) { - // Calculate Amount cur_frm.cscript.calc_amount(doc, 4); } //==================== Import Ref Rate ================================================================ cur_frm.cscript.import_ref_rate = function(doc, cdt, cdn) { - // Calculate Amount cur_frm.cscript.calc_amount(doc, 5); } - -//====================== Calculate Amount ============================================================ -/*cur_frm.cscript.calc_amount = function(doc, n) { - // Set defaults - doc = locals[doc.doctype][doc.name] - if (! doc.conversion_rate) doc.conversion_rate = 1; - if(!n) n=0; - var net_total = 0; - var net_total_import = 0; - - var cl = getchildren(tname, doc.name, fname); - - for(var i=0;iGet all childrens/ rows from Detail Table @@ -189,18 +133,11 @@ cur_frm.cscript.validate = function(doc, cdt, cdn) { is_item_table(doc,cdt,cdn); // Step 2:=> Calculate Amount cur_frm.cscript.calc_amount(doc, 1); + + // calculate advances if pv + if(doc.doctype == 'Payable Voucher') calc_total_advance(doc, cdt, cdn); } - - -/*cur_frm.cscript.other_fname = "purchase_tax_details"; -other_charges ===> purchase_tax_details -RV Tax Detail ===> Purchase Tax Detail -cur_frm.cscript.recalc ===> cur_frm.cscript.calc_amount -export ===> import -other_charges_total ===> total_tax -Other Charges Calculation ===> Tax Calculation*/ - // **************** RE-CALCULATE VALUES *************************** cur_frm.cscript['Re-Calculate Values'] = function(doc, cdt, cdn) { @@ -221,8 +158,7 @@ cur_frm.cscript['Calculate Tax'] = function(doc, cdt, cdn) { validated = false; } } - if(doc.doctype != 'Payable Voucher') cur_frm.cscript.calc_amount(doc, 1); - else if(doc.doctype == 'Payable Voucher') cur_frm.cscript.calc_total(doc); + cur_frm.cscript.calc_amount(doc, 1); } @@ -234,10 +170,6 @@ cur_frm.cscript.get_item_wise_tax_detail = function( doc, rate, cl, i, tax, t) { return detail; } - //if(cur_frm.cscript.custom_recalc)cur_frm.cscript.custom_recalc(doc); - - - cur_frm.cscript.amount = function(doc, cdt, cdn) { cur_frm.cscript.calc_amount(doc, 3); } @@ -257,70 +189,56 @@ cur_frm.cscript.calc_amount = function(doc, n) { for(var i=0;i now())"% cstr(d.item_code), as_dict = 1 ) - d.purchase_rate = rate and flt(rate[0]['last_purchase_rate']) * flt(d.conversion_factor) or 0 - + d.purchase_rate = rate and flt(rate[0]['last_purchase_rate']) * flt(d.conversion_factor) or 0 if not rate[0]['last_purchase_rate']: msgprint("%s has no Last Purchase Rate."% d.item_code) diff --git a/erpnext/stock/doctype/purchase_receipt_detail/purchase_receipt_detail.txt b/erpnext/stock/doctype/purchase_receipt_detail/purchase_receipt_detail.txt index e1bc597f6f..afe8d997c8 100755 --- a/erpnext/stock/doctype/purchase_receipt_detail/purchase_receipt_detail.txt +++ b/erpnext/stock/doctype/purchase_receipt_detail/purchase_receipt_detail.txt @@ -5,7 +5,7 @@ { 'creation': '2010-08-08 17:09:16', 'docstatus': 0, - 'modified': '2011-12-08 18:32:23', + 'modified': '2011-12-13 13:03:11', 'modified_by': 'Administrator', 'owner': 'Administrator' }, @@ -21,7 +21,7 @@ 'section_style': 'Tray', 'server_code_error': ' ', 'show_in_menu': 0, - 'version': 70 + 'version': 71 }, # These values are common for all DocField @@ -141,7 +141,6 @@ # DocField { 'colour': 'White:FFF', - 'default': '0.00', 'doctype': 'DocField', 'fieldname': 'purchase_rate', 'fieldtype': 'Currency', @@ -157,7 +156,6 @@ # DocField { - 'default': '0.00', 'doctype': 'DocField', 'fieldname': 'amount', 'fieldtype': 'Currency', @@ -199,7 +197,6 @@ # DocField { 'colour': 'White:FFF', - 'default': '0.00', 'doctype': 'DocField', 'fieldname': 'import_rate', 'fieldtype': 'Currency',