Rushabh Mehta | ad45e31 | 2013-11-20 12:59:58 +0530 | [diff] [blame] | 1 | // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors |
Rushabh Mehta | e67d1fb | 2013-08-05 14:59:54 +0530 | [diff] [blame] | 2 | // License: GNU General Public License v3. See license.txt |
Rushabh Mehta | 3966f1d | 2012-02-23 12:35:32 +0530 | [diff] [blame] | 3 | |
Pratik Vyas | c1e6e4c | 2011-06-08 14:37:15 +0530 | [diff] [blame] | 4 | // Preset |
| 5 | // ------ |
| 6 | // cur_frm.cscript.tname - Details table name |
| 7 | // cur_frm.cscript.fname - Details fieldname |
Rushabh Mehta | 6de403f | 2013-12-13 14:10:14 +0530 | [diff] [blame] | 8 | // cur_frm.cscript.other_fname - fieldname |
Pratik Vyas | c1e6e4c | 2011-06-08 14:37:15 +0530 | [diff] [blame] | 9 | // cur_frm.cscript.sales_team_fname - Sales Team fieldname |
| 10 | |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 11 | frappe.provide("erpnext.selling"); |
| 12 | frappe.require("assets/erpnext/js/transaction.js"); |
Rushabh Mehta | b09d9da | 2014-01-02 11:47:23 +0530 | [diff] [blame] | 13 | |
Rushabh Mehta | 6de403f | 2013-12-13 14:10:14 +0530 | [diff] [blame] | 14 | {% include "public/js/controllers/accounts.js" %} |
Anand Doshi | 1dde46a | 2013-05-15 21:15:57 +0530 | [diff] [blame] | 15 | |
Anand Doshi | 3543f30 | 2013-05-24 19:25:01 +0530 | [diff] [blame] | 16 | erpnext.selling.SellingController = erpnext.TransactionController.extend({ |
Anand Doshi | 9b49614 | 2013-07-11 19:13:58 +0530 | [diff] [blame] | 17 | onload: function() { |
| 18 | this._super(); |
| 19 | this.toggle_rounded_total(); |
| 20 | this.setup_queries(); |
Anand Doshi | 33fe867 | 2013-08-02 12:39:10 +0530 | [diff] [blame] | 21 | this.toggle_editable_price_list_rate(); |
Anand Doshi | 9b49614 | 2013-07-11 19:13:58 +0530 | [diff] [blame] | 22 | }, |
| 23 | |
| 24 | setup_queries: function() { |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 25 | var me = this; |
| 26 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 27 | this.frm.add_fetch("sales_partner", "commission_rate", "commission_rate"); |
Anand Doshi | 8f9f8a4 | 2013-06-28 19:18:33 +0530 | [diff] [blame] | 28 | |
Anand Doshi | d5d39ac | 2013-07-29 13:28:37 +0530 | [diff] [blame] | 29 | $.each([["customer_address", "customer_filter"], |
| 30 | ["shipping_address_name", "customer_filter"], |
| 31 | ["contact_person", "customer_filter"], |
| 32 | ["customer", "customer"], |
| 33 | ["lead", "lead"]], |
| 34 | function(i, opts) { |
| 35 | if(me.frm.fields_dict[opts[0]]) |
| 36 | me.frm.set_query(opts[0], erpnext.queries[opts[1]]); |
| 37 | }); |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 38 | |
Akhilesh Darjee | 4f72156 | 2014-01-29 16:31:38 +0530 | [diff] [blame] | 39 | if(this.frm.fields_dict.taxes_and_charges) { |
| 40 | this.frm.set_query("taxes_and_charges", function() { |
Saurabh | f52dc07 | 2013-07-10 13:07:49 +0530 | [diff] [blame] | 41 | return { |
| 42 | filters: [ |
| 43 | ['Sales Taxes and Charges Master', 'company', '=', me.frm.doc.company], |
Saurabh | f52dc07 | 2013-07-10 13:07:49 +0530 | [diff] [blame] | 44 | ['Sales Taxes and Charges Master', 'docstatus', '!=', 2] |
| 45 | ] |
| 46 | } |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 47 | }); |
| 48 | } |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 49 | |
Rushabh Mehta | 4a404e9 | 2013-08-09 18:11:35 +0530 | [diff] [blame] | 50 | if(this.frm.fields_dict.selling_price_list) { |
| 51 | this.frm.set_query("selling_price_list", function() { |
Nabin Hait | dc15b4f | 2014-01-20 16:48:49 +0530 | [diff] [blame] | 52 | return { filters: { selling: 1 } }; |
Anand Doshi | 720a01a | 2013-07-26 11:32:02 +0530 | [diff] [blame] | 53 | }); |
Anand Doshi | 720a01a | 2013-07-26 11:32:02 +0530 | [diff] [blame] | 54 | } |
| 55 | |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 56 | if(!this.fname) { |
| 57 | return; |
| 58 | } |
| 59 | |
| 60 | if(this.frm.fields_dict[this.fname].grid.get_field('item_code')) { |
| 61 | this.frm.set_query("item_code", this.fname, function() { |
Anand Doshi | 9b49614 | 2013-07-11 19:13:58 +0530 | [diff] [blame] | 62 | return { |
Rushabh Mehta | 6de403f | 2013-12-13 14:10:14 +0530 | [diff] [blame] | 63 | query: "erpnext.controllers.queries.item_query", |
Anand Doshi | 9b49614 | 2013-07-11 19:13:58 +0530 | [diff] [blame] | 64 | filters: (me.frm.doc.order_type === "Maintenance" ? |
| 65 | {'is_service_item': 'Yes'}: |
| 66 | {'is_sales_item': 'Yes' }) |
| 67 | } |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 68 | }); |
| 69 | } |
| 70 | |
| 71 | if(this.frm.fields_dict[this.fname].grid.get_field('batch_no')) { |
| 72 | this.frm.set_query("batch_no", this.fname, function(doc, cdt, cdn) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 73 | var item = frappe.model.get_doc(cdt, cdn); |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 74 | if(!item.item_code) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 75 | frappe.throw(frappe._("Please enter Item Code to get batch no")); |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 76 | } else { |
Nabin Hait | d1fd1e2 | 2013-10-18 12:29:11 +0530 | [diff] [blame] | 77 | filters = { |
| 78 | 'item_code': item.item_code, |
| 79 | 'posting_date': me.frm.doc.posting_date, |
| 80 | } |
| 81 | if(item.warehouse) filters["warehouse"] = item.warehouse |
| 82 | |
| 83 | return { |
Akhilesh Darjee | 4f72156 | 2014-01-29 16:31:38 +0530 | [diff] [blame] | 84 | query : "erpnext.controllers.queries.get_batch_no", |
Nabin Hait | d1fd1e2 | 2013-10-18 12:29:11 +0530 | [diff] [blame] | 85 | filters: filters |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 86 | } |
| 87 | } |
| 88 | }); |
| 89 | } |
Anand Doshi | ed69892 | 2013-07-23 15:16:50 +0530 | [diff] [blame] | 90 | |
| 91 | if(this.frm.fields_dict.sales_team && this.frm.fields_dict.sales_team.grid.get_field("sales_person")) { |
Anand Doshi | d5d39ac | 2013-07-29 13:28:37 +0530 | [diff] [blame] | 92 | this.frm.set_query("sales_person", "sales_team", erpnext.queries.not_a_group_filter); |
Anand Doshi | ed69892 | 2013-07-23 15:16:50 +0530 | [diff] [blame] | 93 | } |
Anand Doshi | 1dde46a | 2013-05-15 21:15:57 +0530 | [diff] [blame] | 94 | }, |
| 95 | |
Anand Doshi | c4a54fe | 2013-08-01 18:19:51 +0530 | [diff] [blame] | 96 | refresh: function() { |
| 97 | this._super(); |
Rushabh Mehta | 8aded13 | 2013-07-04 12:50:52 +0530 | [diff] [blame] | 98 | this.frm.toggle_display("customer_name", |
Akhilesh Darjee | 5ce1b8b | 2013-12-09 16:29:04 +0530 | [diff] [blame] | 99 | (this.frm.doc.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer)); |
Anand Doshi | c4a54fe | 2013-08-01 18:19:51 +0530 | [diff] [blame] | 100 | if(this.frm.fields_dict.packing_details) { |
| 101 | var packing_list_exists = this.frm.get_doclist({parentfield: "packing_details"}).length; |
| 102 | this.frm.toggle_display("packing_list", packing_list_exists ? true : false); |
| 103 | } |
Rushabh Mehta | 8aded13 | 2013-07-04 12:50:52 +0530 | [diff] [blame] | 104 | }, |
| 105 | |
Anand Doshi | 3543f30 | 2013-05-24 19:25:01 +0530 | [diff] [blame] | 106 | customer: function() { |
Rushabh Mehta | 49dd7be | 2014-01-28 17:43:10 +0530 | [diff] [blame] | 107 | erpnext.utils.get_party_details(this.frm); |
Anand Doshi | 3543f30 | 2013-05-24 19:25:01 +0530 | [diff] [blame] | 108 | }, |
| 109 | |
Nabin Hait | a279d78 | 2013-07-15 13:04:33 +0530 | [diff] [blame] | 110 | customer_address: function() { |
Rushabh Mehta | b09d9da | 2014-01-02 11:47:23 +0530 | [diff] [blame] | 111 | erpnext.utils.get_address_display(this.frm, "customer_address"); |
Nabin Hait | a279d78 | 2013-07-15 13:04:33 +0530 | [diff] [blame] | 112 | }, |
| 113 | |
Nabin Hait | 9d1f077 | 2014-02-19 17:43:24 +0530 | [diff] [blame] | 114 | shipping_address_name: function() { |
| 115 | erpnext.utils.get_address_display(this.frm, "shipping_address_name", "shipping_address"); |
| 116 | }, |
| 117 | |
Nabin Hait | a279d78 | 2013-07-15 13:04:33 +0530 | [diff] [blame] | 118 | contact_person: function() { |
Rushabh Mehta | b09d9da | 2014-01-02 11:47:23 +0530 | [diff] [blame] | 119 | erpnext.utils.get_contact_details(this.frm); |
Nabin Hait | a279d78 | 2013-07-15 13:04:33 +0530 | [diff] [blame] | 120 | }, |
| 121 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 122 | barcode: function(doc, cdt, cdn) { |
| 123 | this.item_code(doc, cdt, cdn); |
Anand Doshi | 1dde46a | 2013-05-15 21:15:57 +0530 | [diff] [blame] | 124 | }, |
| 125 | |
Rushabh Mehta | 4a404e9 | 2013-08-09 18:11:35 +0530 | [diff] [blame] | 126 | selling_price_list: function() { |
| 127 | this.get_price_list_currency("Selling"); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 128 | }, |
| 129 | |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 130 | price_list_rate: function(doc, cdt, cdn) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 131 | var item = frappe.model.get_doc(cdt, cdn); |
| 132 | frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 133 | |
Nabin Hait | 7979f7e | 2014-02-10 18:26:49 +0530 | [diff] [blame] | 134 | item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0), |
| 135 | precision("rate", item)); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 136 | |
| 137 | this.calculate_taxes_and_totals(); |
| 138 | }, |
| 139 | |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 140 | discount_percentage: function(doc, cdt, cdn) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 141 | var item = frappe.model.get_doc(cdt, cdn); |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 142 | if(!item.price_list_rate) { |
| 143 | item.discount_percentage = 0.0; |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 144 | } else { |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 145 | this.price_list_rate(doc, cdt, cdn); |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 146 | } |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 147 | }, |
| 148 | |
Nabin Hait | 7979f7e | 2014-02-10 18:26:49 +0530 | [diff] [blame] | 149 | rate: function(doc, cdt, cdn) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 150 | var item = frappe.model.get_doc(cdt, cdn); |
| 151 | frappe.model.round_floats_in(item, ["rate", "price_list_rate"]); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 152 | |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 153 | if(item.price_list_rate) { |
Nabin Hait | 7979f7e | 2014-02-10 18:26:49 +0530 | [diff] [blame] | 154 | item.discount_percentage = flt((1 - item.rate / item.price_list_rate) * 100.0, |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 155 | precision("discount_percentage", item)); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 156 | } else { |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 157 | item.discount_percentage = 0.0; |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 158 | } |
| 159 | |
| 160 | this.calculate_taxes_and_totals(); |
| 161 | }, |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 162 | |
Akhilesh Darjee | 57738a0 | 2014-01-03 18:15:07 +0530 | [diff] [blame] | 163 | discount_amount: function() { |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 164 | this.calculate_taxes_and_totals(); |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 165 | }, |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 166 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 167 | commission_rate: function() { |
| 168 | this.calculate_commission(); |
| 169 | refresh_field("total_commission"); |
| 170 | }, |
| 171 | |
| 172 | total_commission: function() { |
| 173 | if(this.frm.doc.net_total) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 174 | frappe.model.round_floats_in(this.frm.doc, ["net_total", "total_commission"]); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 175 | |
| 176 | if(this.frm.doc.net_total < this.frm.doc.total_commission) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 177 | var msg = (frappe._("[Error]") + " " + |
| 178 | frappe._(frappe.meta.get_label(this.frm.doc.doctype, "total_commission", |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 179 | this.frm.doc.name)) + " > " + |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 180 | frappe._(frappe.meta.get_label(this.frm.doc.doctype, "net_total", this.frm.doc.name))); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 181 | msgprint(msg); |
| 182 | throw msg; |
| 183 | } |
| 184 | |
| 185 | this.frm.set_value("commission_rate", |
| 186 | flt(this.frm.doc.total_commission * 100.0 / this.frm.doc.net_total)); |
| 187 | } |
| 188 | }, |
| 189 | |
| 190 | allocated_percentage: function(doc, cdt, cdn) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 191 | var sales_person = frappe.model.get_doc(cdt, cdn); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 192 | |
| 193 | if(sales_person.allocated_percentage) { |
| 194 | sales_person.allocated_percentage = flt(sales_person.allocated_percentage, |
| 195 | precision("allocated_percentage", sales_person)); |
| 196 | sales_person.allocated_amount = flt(this.frm.doc.net_total * |
| 197 | sales_person.allocated_percentage / 100.0, |
| 198 | precision("allocated_amount", sales_person)); |
| 199 | |
| 200 | refresh_field(["allocated_percentage", "allocated_amount"], sales_person.name, |
| 201 | sales_person.parentfield); |
| 202 | } |
| 203 | }, |
| 204 | |
Anand Doshi | fc77718 | 2013-05-27 19:29:07 +0530 | [diff] [blame] | 205 | warehouse: function(doc, cdt, cdn) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 206 | var item = frappe.model.get_doc(cdt, cdn); |
Anand Doshi | 1dc95ed | 2013-07-23 13:36:38 +0530 | [diff] [blame] | 207 | if(item.item_code && item.warehouse) { |
Anand Doshi | 1fac2a9 | 2013-07-29 19:30:39 +0530 | [diff] [blame] | 208 | return this.frm.call({ |
Rushabh Mehta | 1f84799 | 2013-12-12 19:12:19 +0530 | [diff] [blame] | 209 | method: "erpnext.selling.utils.get_available_qty", |
Anand Doshi | fc77718 | 2013-05-27 19:29:07 +0530 | [diff] [blame] | 210 | child: item, |
| 211 | args: { |
| 212 | item_code: item.item_code, |
Anand Doshi | 1dc95ed | 2013-07-23 13:36:38 +0530 | [diff] [blame] | 213 | warehouse: item.warehouse, |
Anand Doshi | fc77718 | 2013-05-27 19:29:07 +0530 | [diff] [blame] | 214 | }, |
| 215 | }); |
| 216 | } |
| 217 | }, |
| 218 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 219 | toggle_rounded_total: function() { |
| 220 | var me = this; |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 221 | if(cint(frappe.defaults.get_global_default("disable_rounded_total"))) { |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 222 | $.each(["rounded_total", "rounded_total_export"], function(i, fieldname) { |
| 223 | me.frm.set_df_property(fieldname, "print_hide", 1); |
| 224 | me.frm.toggle_display(fieldname, false); |
| 225 | }); |
| 226 | } |
| 227 | }, |
| 228 | |
Anand Doshi | 33fe867 | 2013-08-02 12:39:10 +0530 | [diff] [blame] | 229 | toggle_editable_price_list_rate: function() { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 230 | var df = frappe.meta.get_docfield(this.tname, "price_list_rate", this.frm.doc.name); |
| 231 | var editable_price_list_rate = cint(frappe.defaults.get_default("editable_price_list_rate")); |
Anand Doshi | 33fe867 | 2013-08-02 12:39:10 +0530 | [diff] [blame] | 232 | |
| 233 | if(df && editable_price_list_rate) { |
| 234 | df.read_only = 0; |
| 235 | } |
| 236 | }, |
| 237 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 238 | calculate_taxes_and_totals: function() { |
Anand Doshi | 3543f30 | 2013-05-24 19:25:01 +0530 | [diff] [blame] | 239 | this._super(); |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 240 | this.calculate_total_advance("Sales Invoice", "advance_adjustment_details"); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 241 | this.calculate_commission(); |
| 242 | this.calculate_contribution(); |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 243 | |
| 244 | // TODO check for custom_recalc in custom scripts of server |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 245 | |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 246 | this.frm.refresh_fields(); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 247 | }, |
| 248 | |
| 249 | calculate_item_values: function() { |
| 250 | var me = this; |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 251 | |
Akhilesh Darjee | 57738a0 | 2014-01-03 18:15:07 +0530 | [diff] [blame] | 252 | if (!this.discount_amount_applied) { |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 253 | $.each(this.frm.item_doclist, function(i, item) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 254 | frappe.model.round_floats_in(item); |
Nabin Hait | 1eb5601 | 2014-02-10 19:20:15 +0530 | [diff] [blame] | 255 | item.amount = flt(item.rate * item.qty, precision("amount", item)); |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 256 | |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 257 | me._set_in_company_currency(item, "price_list_rate", "base_price_list_rate"); |
Nabin Hait | 7979f7e | 2014-02-10 18:26:49 +0530 | [diff] [blame] | 258 | me._set_in_company_currency(item, "rate", "base_rate"); |
Nabin Hait | 1eb5601 | 2014-02-10 19:20:15 +0530 | [diff] [blame] | 259 | me._set_in_company_currency(item, "amount", "base_amount"); |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 260 | }); |
| 261 | } |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 262 | }, |
| 263 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 264 | determine_exclusive_rate: function() { |
| 265 | var me = this; |
| 266 | $.each(me.frm.item_doclist, function(n, item) { |
| 267 | var item_tax_map = me._load_item_tax_rate(item.item_tax_rate); |
| 268 | var cumulated_tax_fraction = 0.0; |
| 269 | |
| 270 | $.each(me.frm.tax_doclist, function(i, tax) { |
| 271 | tax.tax_fraction_for_current_item = me.get_current_tax_fraction(tax, item_tax_map); |
| 272 | |
| 273 | if(i==0) { |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 274 | tax.grand_total_fraction_for_current_item = 1 + tax.tax_fraction_for_current_item; |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 275 | } else { |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 276 | tax.grand_total_fraction_for_current_item = |
| 277 | me.frm.tax_doclist[i-1].grand_total_fraction_for_current_item + |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 278 | tax.tax_fraction_for_current_item; |
| 279 | } |
| 280 | |
| 281 | cumulated_tax_fraction += tax.tax_fraction_for_current_item; |
| 282 | }); |
| 283 | |
Akhilesh Darjee | 57738a0 | 2014-01-03 18:15:07 +0530 | [diff] [blame] | 284 | if(cumulated_tax_fraction && !me.discount_amount_applied) { |
Nabin Hait | 1eb5601 | 2014-02-10 19:20:15 +0530 | [diff] [blame] | 285 | item.base_amount = flt( |
| 286 | (item.amount * me.frm.doc.conversion_rate) / (1 + cumulated_tax_fraction), |
| 287 | precision("base_amount", item)); |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 288 | |
Nabin Hait | 1eb5601 | 2014-02-10 19:20:15 +0530 | [diff] [blame] | 289 | item.base_rate = flt(item.base_amount / item.qty, precision("base_rate", item)); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 290 | |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 291 | if(item.discount_percentage == 100) { |
Nabin Hait | 7979f7e | 2014-02-10 18:26:49 +0530 | [diff] [blame] | 292 | item.base_price_list_rate = item.base_rate; |
| 293 | item.base_rate = 0.0; |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 294 | } else { |
Nabin Hait | 7979f7e | 2014-02-10 18:26:49 +0530 | [diff] [blame] | 295 | item.base_price_list_rate = flt(item.base_rate / (1 - item.discount_percentage / 100.0), |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 296 | precision("base_price_list_rate", item)); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 297 | } |
| 298 | } |
| 299 | }); |
| 300 | }, |
| 301 | |
| 302 | get_current_tax_fraction: function(tax, item_tax_map) { |
| 303 | // Get tax fraction for calculating tax exclusive amount |
| 304 | // from tax inclusive amount |
| 305 | var current_tax_fraction = 0.0; |
| 306 | |
| 307 | if(cint(tax.included_in_print_rate)) { |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 308 | var tax_rate = this._get_tax_rate(tax, item_tax_map); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 309 | |
| 310 | if(tax.charge_type == "On Net Total") { |
| 311 | current_tax_fraction = (tax_rate / 100.0); |
| 312 | |
| 313 | } else if(tax.charge_type == "On Previous Row Amount") { |
| 314 | current_tax_fraction = (tax_rate / 100.0) * |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 315 | this.frm.tax_doclist[cint(tax.row_id) - 1].tax_fraction_for_current_item; |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 316 | |
| 317 | } else if(tax.charge_type == "On Previous Row Total") { |
| 318 | current_tax_fraction = (tax_rate / 100.0) * |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 319 | this.frm.tax_doclist[cint(tax.row_id) - 1].grand_total_fraction_for_current_item; |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 320 | } |
| 321 | } |
| 322 | |
| 323 | return current_tax_fraction; |
| 324 | }, |
| 325 | |
| 326 | calculate_net_total: function() { |
| 327 | var me = this; |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 328 | this.frm.doc.net_total = this.frm.doc.net_total_export = 0.0; |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 329 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 330 | $.each(this.frm.item_doclist, function(i, item) { |
Nabin Hait | 1eb5601 | 2014-02-10 19:20:15 +0530 | [diff] [blame] | 331 | me.frm.doc.net_total += item.base_amount; |
| 332 | me.frm.doc.net_total_export += item.amount; |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 333 | }); |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 334 | |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 335 | frappe.model.round_floats_in(this.frm.doc, ["net_total", "net_total_export"]); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 336 | }, |
| 337 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 338 | calculate_totals: function() { |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 339 | var me = this; |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 340 | var tax_count = this.frm.tax_doclist.length; |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 341 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 342 | this.frm.doc.grand_total = flt( |
| 343 | tax_count ? this.frm.tax_doclist[tax_count - 1].total : this.frm.doc.net_total, |
| 344 | precision("grand_total")); |
| 345 | this.frm.doc.grand_total_export = flt(this.frm.doc.grand_total / this.frm.doc.conversion_rate, |
| 346 | precision("grand_total_export")); |
| 347 | |
| 348 | this.frm.doc.other_charges_total = flt(this.frm.doc.grand_total - this.frm.doc.net_total, |
| 349 | precision("other_charges_total")); |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 350 | this.frm.doc.other_charges_total_export = flt(this.frm.doc.grand_total_export - |
Akhilesh Darjee | 57738a0 | 2014-01-03 18:15:07 +0530 | [diff] [blame] | 351 | this.frm.doc.net_total_export + flt(this.frm.doc.discount_amount), |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 352 | precision("other_charges_total_export")); |
| 353 | |
| 354 | this.frm.doc.rounded_total = Math.round(this.frm.doc.grand_total); |
| 355 | this.frm.doc.rounded_total_export = Math.round(this.frm.doc.grand_total_export); |
| 356 | }, |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 357 | |
Akhilesh Darjee | 57738a0 | 2014-01-03 18:15:07 +0530 | [diff] [blame] | 358 | apply_discount_amount: function() { |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 359 | var me = this; |
| 360 | var distributed_amount = 0.0; |
| 361 | |
Akhilesh Darjee | 57738a0 | 2014-01-03 18:15:07 +0530 | [diff] [blame] | 362 | if (this.frm.doc.discount_amount) { |
| 363 | var grand_total_for_discount_amount = this.get_grand_total_for_discount_amount(); |
| 364 | // calculate item amount after Discount Amount |
| 365 | if (grand_total_for_discount_amount) { |
| 366 | $.each(this.frm.item_doclist, function(i, item) { |
Nabin Hait | 1eb5601 | 2014-02-10 19:20:15 +0530 | [diff] [blame] | 367 | distributed_amount = flt(me.frm.doc.discount_amount) * item.base_amount / grand_total_for_discount_amount; |
| 368 | item.base_amount = flt(item.base_amount - distributed_amount, precision("base_amount", item)); |
Akhilesh Darjee | 57738a0 | 2014-01-03 18:15:07 +0530 | [diff] [blame] | 369 | }); |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 370 | |
Akhilesh Darjee | 57738a0 | 2014-01-03 18:15:07 +0530 | [diff] [blame] | 371 | this.discount_amount_applied = true; |
| 372 | this._calculate_taxes_and_totals(); |
| 373 | } |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 374 | } |
| 375 | }, |
| 376 | |
Akhilesh Darjee | 57738a0 | 2014-01-03 18:15:07 +0530 | [diff] [blame] | 377 | get_grand_total_for_discount_amount: function() { |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 378 | var me = this; |
| 379 | var total_actual_tax = 0.0; |
| 380 | var actual_taxes_dict = {}; |
| 381 | |
| 382 | $.each(this.frm.tax_doclist, function(i, tax) { |
| 383 | if (tax.charge_type == "Actual") |
| 384 | actual_taxes_dict[tax.idx] = tax.tax_amount; |
| 385 | else if (actual_taxes_dict[tax.row_id] !== null) { |
| 386 | actual_tax_amount = flt(actual_taxes_dict[tax.row_id]) * flt(tax.rate) / 100; |
| 387 | actual_taxes_dict[tax.idx] = actual_tax_amount; |
| 388 | } |
| 389 | }); |
| 390 | |
| 391 | $.each(actual_taxes_dict, function(key, value) { |
| 392 | if (value) |
| 393 | total_actual_tax += value; |
| 394 | }); |
| 395 | |
Akhilesh Darjee | 57738a0 | 2014-01-03 18:15:07 +0530 | [diff] [blame] | 396 | grand_total_for_discount_amount = flt(this.frm.doc.grand_total - total_actual_tax, |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 397 | precision("grand_total")); |
Akhilesh Darjee | 57738a0 | 2014-01-03 18:15:07 +0530 | [diff] [blame] | 398 | return grand_total_for_discount_amount; |
Akhilesh Darjee | d203aea | 2013-12-27 17:49:57 +0530 | [diff] [blame] | 399 | }, |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 400 | |
Anand Doshi | fc77718 | 2013-05-27 19:29:07 +0530 | [diff] [blame] | 401 | calculate_outstanding_amount: function() { |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 402 | // NOTE: |
Akhilesh Darjee | 38e8f98 | 2013-09-05 12:59:33 +0530 | [diff] [blame] | 403 | // paid_amount and write_off_amount is only for POS Invoice |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 404 | // total_advance is only for non POS Invoice |
Anand Doshi | 29ea5d0 | 2013-07-05 17:23:14 +0530 | [diff] [blame] | 405 | if(this.frm.doc.doctype == "Sales Invoice" && this.frm.doc.docstatus==0) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 406 | frappe.model.round_floats_in(this.frm.doc, ["grand_total", "total_advance", "write_off_amount", |
Anand Doshi | fc77718 | 2013-05-27 19:29:07 +0530 | [diff] [blame] | 407 | "paid_amount"]); |
Akhilesh Darjee | 38e8f98 | 2013-09-05 12:59:33 +0530 | [diff] [blame] | 408 | var total_amount_to_pay = this.frm.doc.grand_total - this.frm.doc.write_off_amount - this.frm.doc.total_advance; |
| 409 | this.frm.doc.paid_amount = this.frm.doc.is_pos? flt(total_amount_to_pay): 0.0; |
| 410 | |
| 411 | this.frm.doc.outstanding_amount = flt(total_amount_to_pay - this.frm.doc.paid_amount, |
| 412 | precision("outstanding_amount")); |
Anand Doshi | fc77718 | 2013-05-27 19:29:07 +0530 | [diff] [blame] | 413 | } |
| 414 | }, |
| 415 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 416 | calculate_commission: function() { |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 417 | if(this.frm.fields_dict.commission_rate) { |
| 418 | if(this.frm.doc.commission_rate > 100) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 419 | var msg = frappe._(frappe.meta.get_label(this.frm.doc.doctype, "commission_rate", this.frm.doc.name)) + |
| 420 | " " + frappe._("cannot be greater than 100"); |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 421 | msgprint(msg); |
| 422 | throw msg; |
| 423 | } |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 424 | |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 425 | this.frm.doc.total_commission = flt(this.frm.doc.net_total * this.frm.doc.commission_rate / 100.0, |
| 426 | precision("total_commission")); |
| 427 | } |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 428 | }, |
| 429 | |
| 430 | calculate_contribution: function() { |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 431 | var me = this; |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 432 | $.each(frappe.model.get_doclist(this.frm.doc.doctype, this.frm.doc.name, |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 433 | {parentfield: "sales_team"}), function(i, sales_person) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 434 | frappe.model.round_floats_in(sales_person); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 435 | if(sales_person.allocated_percentage) { |
| 436 | sales_person.allocated_amount = flt( |
| 437 | me.frm.doc.net_total * sales_person.allocated_percentage / 100.0, |
| 438 | precision("allocated_amount", sales_person)); |
| 439 | } |
| 440 | }); |
| 441 | }, |
| 442 | |
| 443 | _cleanup: function() { |
Anand Doshi | 3543f30 | 2013-05-24 19:25:01 +0530 | [diff] [blame] | 444 | this._super(); |
| 445 | this.frm.doc.in_words = this.frm.doc.in_words_export = ""; |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 446 | }, |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 447 | |
Anand Doshi | cefccb9 | 2013-07-15 18:28:14 +0530 | [diff] [blame] | 448 | shipping_rule: function() { |
| 449 | var me = this; |
| 450 | if(this.frm.doc.shipping_rule) { |
Anand Doshi | 1fac2a9 | 2013-07-29 19:30:39 +0530 | [diff] [blame] | 451 | return this.frm.call({ |
Anand Doshi | cefccb9 | 2013-07-15 18:28:14 +0530 | [diff] [blame] | 452 | doc: this.frm.doc, |
| 453 | method: "apply_shipping_rule", |
| 454 | callback: function(r) { |
| 455 | if(!r.exc) { |
| 456 | me.calculate_taxes_and_totals(); |
| 457 | } |
| 458 | } |
| 459 | }) |
| 460 | } |
| 461 | }, |
| 462 | |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 463 | set_dynamic_labels: function() { |
Anand Doshi | 61a2f68 | 2013-06-21 17:55:31 +0530 | [diff] [blame] | 464 | this._super(); |
Anand Doshi | 9d04924 | 2013-06-05 20:46:56 +0530 | [diff] [blame] | 465 | set_sales_bom_help(this.frm.doc); |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 466 | }, |
| 467 | |
| 468 | change_form_labels: function(company_currency) { |
| 469 | var me = this; |
| 470 | var field_label_map = {}; |
| 471 | |
| 472 | var setup_field_label_map = function(fields_list, currency) { |
| 473 | $.each(fields_list, function(i, fname) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 474 | var docfield = frappe.meta.docfield_map[me.frm.doc.doctype][fname]; |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 475 | if(docfield) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 476 | var label = frappe._(docfield.label || "").replace(/\([^\)]*\)/g, ""); |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 477 | field_label_map[fname] = label.trim() + " (" + currency + ")"; |
| 478 | } |
| 479 | }); |
| 480 | }; |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 481 | setup_field_label_map(["net_total", "other_charges_total", "grand_total", |
| 482 | "rounded_total", "in_words", |
| 483 | "outstanding_amount", "total_advance", "paid_amount", "write_off_amount"], |
| 484 | company_currency); |
| 485 | |
| 486 | setup_field_label_map(["net_total_export", "other_charges_total_export", "grand_total_export", |
| 487 | "rounded_total_export", "in_words_export"], this.frm.doc.currency); |
| 488 | |
Rushabh Mehta | ef58455 | 2013-11-02 14:47:11 +0530 | [diff] [blame] | 489 | cur_frm.set_df_property("conversion_rate", "description", "1 " + this.frm.doc.currency |
| 490 | + " = [?] " + company_currency) |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 491 | |
| 492 | if(this.frm.doc.price_list_currency && this.frm.doc.price_list_currency!=company_currency) { |
Rushabh Mehta | ef58455 | 2013-11-02 14:47:11 +0530 | [diff] [blame] | 493 | cur_frm.set_df_property("plc_conversion_rate", "description", "1 " + this.frm.doc.price_list_currency |
| 494 | + " = [?] " + company_currency) |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 495 | } |
| 496 | |
| 497 | // toggle fields |
| 498 | this.frm.toggle_display(["conversion_rate", "net_total", "other_charges_total", |
| 499 | "grand_total", "rounded_total", "in_words"], |
| 500 | this.frm.doc.currency != company_currency); |
| 501 | |
Rushabh Mehta | a063b4d | 2013-11-06 11:29:47 +0530 | [diff] [blame] | 502 | this.frm.toggle_display(["plc_conversion_rate", "price_list_currency"], |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 503 | this.frm.doc.price_list_currency != company_currency); |
| 504 | |
| 505 | // set labels |
| 506 | $.each(field_label_map, function(fname, label) { |
| 507 | me.frm.fields_dict[fname].set_label(label); |
| 508 | }); |
| 509 | }, |
| 510 | |
| 511 | change_grid_labels: function(company_currency) { |
| 512 | var me = this; |
| 513 | var field_label_map = {}; |
| 514 | |
| 515 | var setup_field_label_map = function(fields_list, currency, parentfield) { |
| 516 | var grid_doctype = me.frm.fields_dict[parentfield].grid.doctype; |
| 517 | $.each(fields_list, function(i, fname) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 518 | var docfield = frappe.meta.docfield_map[grid_doctype][fname]; |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 519 | if(docfield) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 520 | var label = frappe._(docfield.label || "").replace(/\([^\)]*\)/g, ""); |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 521 | field_label_map[grid_doctype + "-" + fname] = |
| 522 | label.trim() + " (" + currency + ")"; |
| 523 | } |
| 524 | }); |
| 525 | } |
| 526 | |
Nabin Hait | 1eb5601 | 2014-02-10 19:20:15 +0530 | [diff] [blame] | 527 | setup_field_label_map(["base_rate", "base_price_list_rate", "base_amount"], |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 528 | company_currency, this.fname); |
| 529 | |
Nabin Hait | 1eb5601 | 2014-02-10 19:20:15 +0530 | [diff] [blame] | 530 | setup_field_label_map(["rate", "price_list_rate", "amount"], |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 531 | this.frm.doc.currency, this.fname); |
| 532 | |
| 533 | setup_field_label_map(["tax_amount", "total"], company_currency, "other_charges"); |
| 534 | |
| 535 | if(this.frm.fields_dict["advance_allocation_details"]) { |
| 536 | setup_field_label_map(["advance_amount", "allocated_amount"], company_currency, |
| 537 | "advance_allocation_details"); |
| 538 | } |
| 539 | |
| 540 | // toggle columns |
| 541 | var item_grid = this.frm.fields_dict[this.fname].grid; |
Anand Doshi | edfba96 | 2013-08-05 11:56:54 +0530 | [diff] [blame] | 542 | var show = (this.frm.doc.currency != company_currency) || |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 543 | (frappe.model.get_doclist(cur_frm.doctype, cur_frm.docname, |
Anand Doshi | edfba96 | 2013-08-05 11:56:54 +0530 | [diff] [blame] | 544 | {parentfield: "other_charges", included_in_print_rate: 1}).length); |
| 545 | |
Nabin Hait | 1eb5601 | 2014-02-10 19:20:15 +0530 | [diff] [blame] | 546 | $.each(["base_rate", "base_price_list_rate", "base_amount"], function(i, fname) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 547 | if(frappe.meta.get_docfield(item_grid.doctype, fname)) |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 548 | item_grid.set_column_disp(fname, show); |
| 549 | }); |
| 550 | |
| 551 | // set labels |
| 552 | var $wrapper = $(this.frm.wrapper); |
| 553 | $.each(field_label_map, function(fname, label) { |
Anand Doshi | 5013dcb | 2013-08-05 12:16:04 +0530 | [diff] [blame] | 554 | fname = fname.split("-"); |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 555 | var df = frappe.meta.get_docfield(fname[0], fname[1], me.frm.doc.name); |
Anand Doshi | 5013dcb | 2013-08-05 12:16:04 +0530 | [diff] [blame] | 556 | if(df) df.label = label; |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 557 | }); |
| 558 | }, |
Anand Doshi | 1dde46a | 2013-05-15 21:15:57 +0530 | [diff] [blame] | 559 | }); |
| 560 | |
Nabin Hait | cfc6bb1 | 2012-07-11 13:14:52 +0530 | [diff] [blame] | 561 | // Help for Sales BOM items |
| 562 | var set_sales_bom_help = function(doc) { |
Rushabh Mehta | 2eef40b | 2012-07-16 14:16:57 +0530 | [diff] [blame] | 563 | if(!cur_frm.fields_dict.packing_list) return; |
Nabin Hait | d1fd1e2 | 2013-10-18 12:29:11 +0530 | [diff] [blame] | 564 | if (getchildren('Packed Item', doc.name, 'packing_details').length) { |
Nabin Hait | cfc6bb1 | 2012-07-11 13:14:52 +0530 | [diff] [blame] | 565 | $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true); |
| 566 | |
| 567 | if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) { |
Bárbara Perretti | 4098c26 | 2013-09-27 17:05:17 -0300 | [diff] [blame] | 568 | help_msg = "<div class='alert alert-warning'>" + |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 569 | frappe._("For 'Sales BOM' items, warehouse, serial no and batch no \ |
Nabin Hait | cfc6bb1 | 2012-07-11 13:14:52 +0530 | [diff] [blame] | 570 | will be considered from the 'Packing List' table. \ |
| 571 | If warehouse and batch no are same for all packing items for any 'Sales BOM' item, \ |
Bárbara Perretti | 4098c26 | 2013-09-27 17:05:17 -0300 | [diff] [blame] | 572 | those values can be entered in the main item table, values will be copied to 'Packing List' table.")+ |
| 573 | "</div>"; |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 574 | frappe.meta.get_docfield(doc.doctype, 'sales_bom_help', doc.name).options = help_msg; |
Nabin Hait | cfc6bb1 | 2012-07-11 13:14:52 +0530 | [diff] [blame] | 575 | } |
| 576 | } else { |
| 577 | $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false); |
| 578 | if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 579 | frappe.meta.get_docfield(doc.doctype, 'sales_bom_help', doc.name).options = ''; |
Nabin Hait | cfc6bb1 | 2012-07-11 13:14:52 +0530 | [diff] [blame] | 580 | } |
| 581 | } |
| 582 | refresh_field('sales_bom_help'); |
| 583 | } |