Anand Doshi | 885e074 | 2015-03-03 14:55:30 +0530 | [diff] [blame] | 1 | // Copyright (c) 2015, Frappe 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 | |
Nabin Hait | 613d081 | 2015-02-23 11:58:15 +0530 | [diff] [blame] | 5 | cur_frm.cscript.tax_table = "Sales Taxes and Charges"; |
Rushabh Mehta | 621283c | 2016-04-21 19:00:34 +0530 | [diff] [blame] | 6 | {% include 'erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js' %} |
Nabin Hait | 613d081 | 2015-02-23 11:58:15 +0530 | [diff] [blame] | 7 | |
Rushabh Mehta | b09d9da | 2014-01-02 11:47:23 +0530 | [diff] [blame] | 8 | |
Rushabh Mehta | e10cf02 | 2014-09-12 13:09:41 +0530 | [diff] [blame] | 9 | cur_frm.email_field = "contact_email"; |
| 10 | |
Rushabh Mehta | be2ee18 | 2016-04-29 17:22:42 +0530 | [diff] [blame] | 11 | frappe.provide("erpnext.selling"); |
Anand Doshi | 3543f30 | 2013-05-24 19:25:01 +0530 | [diff] [blame] | 12 | erpnext.selling.SellingController = erpnext.TransactionController.extend({ |
Rushabh Mehta | 532eedf | 2016-05-19 18:22:49 +0530 | [diff] [blame] | 13 | setup: function() { |
| 14 | this._super(); |
Rushabh Mehta | 532eedf | 2016-05-19 18:22:49 +0530 | [diff] [blame] | 15 | }, |
| 16 | |
Anand Doshi | 9b49614 | 2013-07-11 19:13:58 +0530 | [diff] [blame] | 17 | onload: function() { |
| 18 | this._super(); |
Anand Doshi | 9b49614 | 2013-07-11 19:13:58 +0530 | [diff] [blame] | 19 | this.setup_queries(); |
| 20 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 21 | |
Anand Doshi | 9b49614 | 2013-07-11 19:13:58 +0530 | [diff] [blame] | 22 | setup_queries: function() { |
Rushabh Mehta | 532eedf | 2016-05-19 18:22:49 +0530 | [diff] [blame] | 23 | |
| 24 | |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 25 | var me = this; |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 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 | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 28 | |
| 29 | $.each([["customer_address", "customer_filter"], |
Anand Doshi | d5d39ac | 2013-07-29 13:28:37 +0530 | [diff] [blame] | 30 | ["shipping_address_name", "customer_filter"], |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 31 | ["contact_person", "customer_filter"], |
| 32 | ["customer", "customer"], |
| 33 | ["lead", "lead"]], |
Anand Doshi | d5d39ac | 2013-07-29 13:28:37 +0530 | [diff] [blame] | 34 | function(i, opts) { |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 35 | if(me.frm.fields_dict[opts[0]]) |
Anand Doshi | d5d39ac | 2013-07-29 13:28:37 +0530 | [diff] [blame] | 36 | me.frm.set_query(opts[0], erpnext.queries[opts[1]]); |
| 37 | }); |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +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: [ |
Rushabh Mehta | ab1ed01 | 2015-05-08 11:08:48 +0530 | [diff] [blame] | 43 | ['Sales Taxes and Charges Template', 'company', '=', me.frm.doc.company], |
| 44 | ['Sales Taxes and Charges Template', 'docstatus', '!=', 2] |
Saurabh | f52dc07 | 2013-07-10 13:07:49 +0530 | [diff] [blame] | 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 | } |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 55 | |
Nabin Hait | dd38a26 | 2014-12-26 13:15:21 +0530 | [diff] [blame] | 56 | if(!this.frm.fields_dict["items"]) { |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 57 | return; |
| 58 | } |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 59 | |
Nabin Hait | dd38a26 | 2014-12-26 13:15:21 +0530 | [diff] [blame] | 60 | if(this.frm.fields_dict["items"].grid.get_field('item_code')) { |
| 61 | this.frm.set_query("item_code", "items", function() { |
Anand Doshi | 9b49614 | 2013-07-11 19:13:58 +0530 | [diff] [blame] | 62 | return { |
Rushabh Mehta | d973c16 | 2016-08-16 11:32:08 +0530 | [diff] [blame] | 63 | query: "erpnext.controllers.queries.item_query", |
| 64 | filters: {'is_sales_item': 1} |
Anand Doshi | 9b49614 | 2013-07-11 19:13:58 +0530 | [diff] [blame] | 65 | } |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 66 | }); |
| 67 | } |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 68 | |
Rohit Waghchaure | e887e92 | 2016-11-18 12:16:22 +0530 | [diff] [blame] | 69 | if(this.frm.fields_dict["packed_items"].grid.get_field('batch_no')) { |
| 70 | this.frm.set_query("batch_no", "packed_items", function(doc, cdt, cdn) { |
| 71 | return me.set_query_for_batch(doc, cdt, cdn) |
| 72 | }); |
| 73 | } |
| 74 | |
Nabin Hait | dd38a26 | 2014-12-26 13:15:21 +0530 | [diff] [blame] | 75 | if(this.frm.fields_dict["items"].grid.get_field('batch_no')) { |
| 76 | this.frm.set_query("batch_no", "items", function(doc, cdt, cdn) { |
Rohit Waghchaure | e887e92 | 2016-11-18 12:16:22 +0530 | [diff] [blame] | 77 | return me.set_query_for_batch(doc, cdt, cdn) |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 78 | }); |
| 79 | } |
Anand Doshi | 1dde46a | 2013-05-15 21:15:57 +0530 | [diff] [blame] | 80 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 81 | |
Rohit Waghchaure | e887e92 | 2016-11-18 12:16:22 +0530 | [diff] [blame] | 82 | set_query_for_batch: function(doc, cdt, cdn) { |
| 83 | // Show item's batches in the dropdown of batch no |
| 84 | |
| 85 | var me = this; |
| 86 | var item = frappe.get_doc(cdt, cdn); |
| 87 | |
| 88 | if(!item.item_code) { |
| 89 | frappe.throw(__("Please enter Item Code to get batch no")); |
| 90 | } else { |
| 91 | filters = { |
| 92 | 'item_code': item.item_code, |
| 93 | 'posting_date': me.frm.doc.posting_date || frappe.datetime.nowdate(), |
| 94 | } |
| 95 | if(item.warehouse) filters["warehouse"] = item.warehouse |
| 96 | |
| 97 | return { |
| 98 | query : "erpnext.controllers.queries.get_batch_no", |
| 99 | filters: filters |
| 100 | } |
| 101 | } |
| 102 | }, |
| 103 | |
Anand Doshi | c4a54fe | 2013-08-01 18:19:51 +0530 | [diff] [blame] | 104 | refresh: function() { |
| 105 | this._super(); |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 106 | this.frm.toggle_display("customer_name", |
Akhilesh Darjee | 5ce1b8b | 2013-12-09 16:29:04 +0530 | [diff] [blame] | 107 | (this.frm.doc.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer)); |
Nabin Hait | e7d1536 | 2014-12-25 16:01:55 +0530 | [diff] [blame] | 108 | if(this.frm.fields_dict.packed_items) { |
| 109 | var packing_list_exists = (this.frm.doc.packed_items || []).length; |
Anand Doshi | c4a54fe | 2013-08-01 18:19:51 +0530 | [diff] [blame] | 110 | this.frm.toggle_display("packing_list", packing_list_exists ? true : false); |
| 111 | } |
Nabin Hait | 2029ea9 | 2015-04-16 17:55:35 +0530 | [diff] [blame] | 112 | this.toggle_editable_price_list_rate(); |
Rushabh Mehta | 8aded13 | 2013-07-04 12:50:52 +0530 | [diff] [blame] | 113 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 114 | |
Anand Doshi | 3543f30 | 2013-05-24 19:25:01 +0530 | [diff] [blame] | 115 | customer: function() { |
Nabin Hait | a3dd72a | 2014-05-28 12:49:20 +0530 | [diff] [blame] | 116 | var me = this; |
| 117 | erpnext.utils.get_party_details(this.frm, null, null, function(){me.apply_pricing_rule()}); |
Anand Doshi | 3543f30 | 2013-05-24 19:25:01 +0530 | [diff] [blame] | 118 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 119 | |
Nabin Hait | a279d78 | 2013-07-15 13:04:33 +0530 | [diff] [blame] | 120 | customer_address: function() { |
Rushabh Mehta | b09d9da | 2014-01-02 11:47:23 +0530 | [diff] [blame] | 121 | erpnext.utils.get_address_display(this.frm, "customer_address"); |
Nabin Hait | a279d78 | 2013-07-15 13:04:33 +0530 | [diff] [blame] | 122 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 123 | |
Nabin Hait | 9d1f077 | 2014-02-19 17:43:24 +0530 | [diff] [blame] | 124 | shipping_address_name: function() { |
| 125 | erpnext.utils.get_address_display(this.frm, "shipping_address_name", "shipping_address"); |
| 126 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 127 | |
Nabin Hait | a3dd72a | 2014-05-28 12:49:20 +0530 | [diff] [blame] | 128 | sales_partner: function() { |
| 129 | this.apply_pricing_rule(); |
| 130 | }, |
| 131 | |
| 132 | campaign: function() { |
| 133 | this.apply_pricing_rule(); |
| 134 | }, |
| 135 | |
Rushabh Mehta | 4a404e9 | 2013-08-09 18:11:35 +0530 | [diff] [blame] | 136 | selling_price_list: function() { |
Anand Doshi | dffec8f | 2014-07-01 17:45:15 +0530 | [diff] [blame] | 137 | this.apply_price_list(); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 138 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 139 | |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 140 | price_list_rate: function(doc, cdt, cdn) { |
Rushabh Mehta | 66d52b5 | 2014-03-27 14:17:33 +0530 | [diff] [blame] | 141 | var item = frappe.get_doc(cdt, cdn); |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 142 | frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]); |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 143 | |
mbauskar | a52472c | 2016-03-05 15:10:25 +0530 | [diff] [blame] | 144 | // check if child doctype is Sales Order Item/Qutation Item and calculate the rate |
| 145 | if(in_list(["Quotation Item", "Sales Order Item", "Delivery Note Item", "Sales Invoice Item"]), cdt) |
Rohit Waghchaure | 6087fe1 | 2016-04-09 14:31:09 +0530 | [diff] [blame] | 146 | this.apply_pricing_rule_on_item(item); |
mbauskar | a52472c | 2016-03-05 15:10:25 +0530 | [diff] [blame] | 147 | else |
| 148 | item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0), |
| 149 | precision("rate", item)); |
| 150 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 151 | this.calculate_taxes_and_totals(); |
| 152 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 153 | |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 154 | discount_percentage: function(doc, cdt, cdn) { |
Rushabh Mehta | 66d52b5 | 2014-03-27 14:17:33 +0530 | [diff] [blame] | 155 | var item = frappe.get_doc(cdt, cdn); |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 156 | if(!item.price_list_rate) { |
| 157 | item.discount_percentage = 0.0; |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 158 | } else { |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 159 | this.price_list_rate(doc, cdt, cdn); |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 160 | } |
Saurabh | 5ada14b | 2016-02-26 18:02:55 +0530 | [diff] [blame] | 161 | this.set_gross_profit(item); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 162 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 163 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 164 | commission_rate: function() { |
| 165 | this.calculate_commission(); |
| 166 | refresh_field("total_commission"); |
| 167 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 168 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 169 | total_commission: function() { |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 170 | if(this.frm.doc.base_net_total) { |
| 171 | frappe.model.round_floats_in(this.frm.doc, ["base_net_total", "total_commission"]); |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 172 | |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 173 | if(this.frm.doc.base_net_total < this.frm.doc.total_commission) { |
Pratik Vyas | b52618c | 2014-04-14 16:25:30 +0530 | [diff] [blame] | 174 | var msg = (__("[Error]") + " " + |
| 175 | __(frappe.meta.get_label(this.frm.doc.doctype, "total_commission", |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 176 | this.frm.doc.name)) + " > " + |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 177 | __(frappe.meta.get_label(this.frm.doc.doctype, "base_net_total", this.frm.doc.name))); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 178 | msgprint(msg); |
| 179 | throw msg; |
| 180 | } |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 181 | |
| 182 | this.frm.set_value("commission_rate", |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 183 | flt(this.frm.doc.total_commission * 100.0 / this.frm.doc.base_net_total)); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 184 | } |
| 185 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 186 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 187 | allocated_percentage: function(doc, cdt, cdn) { |
Rushabh Mehta | 66d52b5 | 2014-03-27 14:17:33 +0530 | [diff] [blame] | 188 | var sales_person = frappe.get_doc(cdt, cdn); |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 189 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 190 | if(sales_person.allocated_percentage) { |
| 191 | sales_person.allocated_percentage = flt(sales_person.allocated_percentage, |
| 192 | precision("allocated_percentage", sales_person)); |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 193 | sales_person.allocated_amount = flt(this.frm.doc.base_net_total * |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 194 | sales_person.allocated_percentage / 100.0, |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 195 | precision("allocated_amount", sales_person)); |
| 196 | |
| 197 | refresh_field(["allocated_percentage", "allocated_amount"], sales_person.name, |
| 198 | sales_person.parentfield); |
| 199 | } |
| 200 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 201 | |
Anand Doshi | fc77718 | 2013-05-27 19:29:07 +0530 | [diff] [blame] | 202 | warehouse: function(doc, cdt, cdn) { |
Sambhaji Kolate | 98dbccd | 2015-03-10 15:04:28 +0530 | [diff] [blame] | 203 | var me = this; |
Rushabh Mehta | 66d52b5 | 2014-03-27 14:17:33 +0530 | [diff] [blame] | 204 | var item = frappe.get_doc(cdt, cdn); |
Rushabh Mehta | be2ee18 | 2016-04-29 17:22:42 +0530 | [diff] [blame] | 205 | |
Anand Doshi | 1dc95ed | 2013-07-23 13:36:38 +0530 | [diff] [blame] | 206 | if(item.item_code && item.warehouse) { |
Anand Doshi | 1fac2a9 | 2013-07-29 19:30:39 +0530 | [diff] [blame] | 207 | return this.frm.call({ |
Saurabh | d313553 | 2016-02-25 18:59:20 +0530 | [diff] [blame] | 208 | method: "erpnext.stock.get_item_details.get_bin_details", |
Anand Doshi | fc77718 | 2013-05-27 19:29:07 +0530 | [diff] [blame] | 209 | child: item, |
| 210 | args: { |
| 211 | item_code: item.item_code, |
Anand Doshi | 1dc95ed | 2013-07-23 13:36:38 +0530 | [diff] [blame] | 212 | warehouse: item.warehouse, |
Anand Doshi | fc77718 | 2013-05-27 19:29:07 +0530 | [diff] [blame] | 213 | }, |
Saurabh | d313553 | 2016-02-25 18:59:20 +0530 | [diff] [blame] | 214 | callback:function(r){ |
| 215 | if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) { |
| 216 | me.batch_no(doc, cdt, cdn); |
| 217 | } |
| 218 | } |
Anand Doshi | fc77718 | 2013-05-27 19:29:07 +0530 | [diff] [blame] | 219 | }); |
| 220 | } |
| 221 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 222 | |
Anand Doshi | 33fe867 | 2013-08-02 12:39:10 +0530 | [diff] [blame] | 223 | toggle_editable_price_list_rate: function() { |
Nabin Hait | dd38a26 | 2014-12-26 13:15:21 +0530 | [diff] [blame] | 224 | var df = frappe.meta.get_docfield(this.frm.doc.doctype + " Item", "price_list_rate", this.frm.doc.name); |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 225 | var editable_price_list_rate = cint(frappe.defaults.get_default("editable_price_list_rate")); |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 226 | |
Anand Doshi | 33fe867 | 2013-08-02 12:39:10 +0530 | [diff] [blame] | 227 | if(df && editable_price_list_rate) { |
| 228 | df.read_only = 0; |
| 229 | } |
| 230 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 231 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 232 | calculate_commission: function() { |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 233 | if(this.frm.fields_dict.commission_rate) { |
| 234 | if(this.frm.doc.commission_rate > 100) { |
Pratik Vyas | b52618c | 2014-04-14 16:25:30 +0530 | [diff] [blame] | 235 | var msg = __(frappe.meta.get_label(this.frm.doc.doctype, "commission_rate", this.frm.doc.name)) + |
| 236 | " " + __("cannot be greater than 100"); |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 237 | msgprint(msg); |
| 238 | throw msg; |
| 239 | } |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 240 | |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 241 | this.frm.doc.total_commission = flt(this.frm.doc.base_net_total * this.frm.doc.commission_rate / 100.0, |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 242 | precision("total_commission")); |
| 243 | } |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 244 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 245 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 246 | calculate_contribution: function() { |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 247 | var me = this; |
Rushabh Mehta | aa355af | 2014-03-26 18:24:30 +0530 | [diff] [blame] | 248 | $.each(this.frm.doc.doctype.sales_team || [], function(i, sales_person) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 249 | frappe.model.round_floats_in(sales_person); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 250 | if(sales_person.allocated_percentage) { |
| 251 | sales_person.allocated_amount = flt( |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 252 | me.frm.doc.base_net_total * sales_person.allocated_percentage / 100.0, |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 253 | precision("allocated_amount", sales_person)); |
| 254 | } |
| 255 | }); |
| 256 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 257 | |
Anand Doshi | cefccb9 | 2013-07-15 18:28:14 +0530 | [diff] [blame] | 258 | shipping_rule: function() { |
| 259 | var me = this; |
| 260 | if(this.frm.doc.shipping_rule) { |
Anand Doshi | 1fac2a9 | 2013-07-29 19:30:39 +0530 | [diff] [blame] | 261 | return this.frm.call({ |
Anand Doshi | cefccb9 | 2013-07-15 18:28:14 +0530 | [diff] [blame] | 262 | doc: this.frm.doc, |
| 263 | method: "apply_shipping_rule", |
| 264 | callback: function(r) { |
| 265 | if(!r.exc) { |
| 266 | me.calculate_taxes_and_totals(); |
| 267 | } |
| 268 | } |
| 269 | }) |
| 270 | } |
| 271 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 272 | |
Sambhaji Kolate | 98dbccd | 2015-03-10 15:04:28 +0530 | [diff] [blame] | 273 | batch_no: function(doc, cdt, cdn) { |
| 274 | var me = this; |
| 275 | var item = frappe.get_doc(cdt, cdn); |
Nabin Hait | 2ed71ba | 2015-03-20 15:06:30 +0530 | [diff] [blame] | 276 | |
Sambhaji Kolate | a4fa96c | 2015-03-30 16:04:55 +0530 | [diff] [blame] | 277 | if(item.warehouse && item.item_code && item.batch_no) { |
Sambhaji Kolate | feff40a | 2015-03-11 11:50:28 +0530 | [diff] [blame] | 278 | return this.frm.call({ |
| 279 | method: "erpnext.stock.get_item_details.get_batch_qty", |
| 280 | child: item, |
| 281 | args: { |
| 282 | "batch_no": item.batch_no, |
| 283 | "warehouse": item.warehouse, |
| 284 | "item_code": item.item_code |
| 285 | }, |
| 286 | "fieldname": "actual_batch_qty" |
| 287 | }); |
| 288 | } |
Sambhaji Kolate | 98dbccd | 2015-03-10 15:04:28 +0530 | [diff] [blame] | 289 | }, |
| 290 | |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 291 | set_dynamic_labels: function() { |
Anand Doshi | 61a2f68 | 2013-06-21 17:55:31 +0530 | [diff] [blame] | 292 | this._super(); |
Neil Trini Lasrado | ed8cecb | 2015-07-07 13:59:23 +0530 | [diff] [blame] | 293 | this.set_product_bundle_help(this.frm.doc); |
Nabin Hait | 0b15755 | 2014-06-24 17:02:45 +0530 | [diff] [blame] | 294 | }, |
| 295 | |
Neil Trini Lasrado | ed8cecb | 2015-07-07 13:59:23 +0530 | [diff] [blame] | 296 | set_product_bundle_help: function(doc) { |
Nabin Hait | 0b15755 | 2014-06-24 17:02:45 +0530 | [diff] [blame] | 297 | if(!cur_frm.fields_dict.packing_list) return; |
Nabin Hait | e7d1536 | 2014-12-25 16:01:55 +0530 | [diff] [blame] | 298 | if ((doc.packed_items || []).length) { |
Nabin Hait | 0b15755 | 2014-06-24 17:02:45 +0530 | [diff] [blame] | 299 | $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true); |
| 300 | |
| 301 | if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) { |
| 302 | help_msg = "<div class='alert alert-warning'>" + |
Neil Trini Lasrado | ed8cecb | 2015-07-07 13:59:23 +0530 | [diff] [blame] | 303 | __("For 'Product Bundle' items, Warehouse, Serial No and Batch No will be considered from the 'Packing List' table. If Warehouse and Batch No are same for all packing items for any 'Product Bundle' item, those values can be entered in the main Item table, values will be copied to 'Packing List' table.")+ |
Nabin Hait | 0b15755 | 2014-06-24 17:02:45 +0530 | [diff] [blame] | 304 | "</div>"; |
Neil Trini Lasrado | ed8cecb | 2015-07-07 13:59:23 +0530 | [diff] [blame] | 305 | frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = help_msg; |
Nabin Hait | 0b15755 | 2014-06-24 17:02:45 +0530 | [diff] [blame] | 306 | } |
| 307 | } else { |
| 308 | $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false); |
| 309 | if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) { |
Neil Trini Lasrado | ed8cecb | 2015-07-07 13:59:23 +0530 | [diff] [blame] | 310 | frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = ''; |
Nabin Hait | 0b15755 | 2014-06-24 17:02:45 +0530 | [diff] [blame] | 311 | } |
| 312 | } |
Neil Trini Lasrado | ed8cecb | 2015-07-07 13:59:23 +0530 | [diff] [blame] | 313 | refresh_field('product_bundle_help'); |
Saurabh | eba7aa4 | 2015-12-16 09:57:59 +0530 | [diff] [blame] | 314 | }, |
Anand Doshi | 01de945 | 2016-01-26 16:22:50 +0530 | [diff] [blame] | 315 | |
Saurabh | eba7aa4 | 2015-12-16 09:57:59 +0530 | [diff] [blame] | 316 | make_payment_request: function() { |
Saurabh | eba7aa4 | 2015-12-16 09:57:59 +0530 | [diff] [blame] | 317 | frappe.call({ |
| 318 | method:"erpnext.accounts.doctype.payment_request.payment_request.make_payment_request", |
| 319 | args: { |
| 320 | "dt": cur_frm.doc.doctype, |
| 321 | "dn": cur_frm.doc.name, |
Saurabh | b109ee9 | 2015-12-16 20:48:40 +0530 | [diff] [blame] | 322 | "recipient_id": cur_frm.doc.contact_email |
Saurabh | eba7aa4 | 2015-12-16 09:57:59 +0530 | [diff] [blame] | 323 | }, |
| 324 | callback: function(r) { |
Saurabh | cb98d9e | 2015-12-17 09:48:44 +0530 | [diff] [blame] | 325 | if(!r.exc){ |
Saurabh | 3ba2267 | 2015-12-21 18:24:49 +0530 | [diff] [blame] | 326 | var doc = frappe.model.sync(r.message); |
Saurabh | 3ba2267 | 2015-12-21 18:24:49 +0530 | [diff] [blame] | 327 | frappe.set_route("Form", r.message.doctype, r.message.name); |
Saurabh | cb98d9e | 2015-12-17 09:48:44 +0530 | [diff] [blame] | 328 | } |
Saurabh | eba7aa4 | 2015-12-16 09:57:59 +0530 | [diff] [blame] | 329 | } |
| 330 | }) |
mbauskar | 1e9c164 | 2016-01-18 16:21:25 +0530 | [diff] [blame] | 331 | }, |
mbauskar | 1e428ae | 2016-01-19 19:52:22 +0530 | [diff] [blame] | 332 | |
| 333 | rate: function(doc, cdt, cdn){ |
| 334 | // if user changes the rate then set margin Rate or amount to 0 |
| 335 | item = locals[cdt][cdn]; |
mbauskar | a52472c | 2016-03-05 15:10:25 +0530 | [diff] [blame] | 336 | item.margin_type = ""; |
| 337 | item.margin_rate_or_amount = 0.0; |
mbauskar | 1e428ae | 2016-01-19 19:52:22 +0530 | [diff] [blame] | 338 | cur_frm.refresh_fields(); |
| 339 | }, |
| 340 | |
mbauskar | a52472c | 2016-03-05 15:10:25 +0530 | [diff] [blame] | 341 | margin_rate_or_amount: function(doc, cdt, cdn) { |
mbauskar | 1e9c164 | 2016-01-18 16:21:25 +0530 | [diff] [blame] | 342 | // calculated the revised total margin and rate on margin rate changes |
| 343 | item = locals[cdt][cdn]; |
Rohit Waghchaure | 6087fe1 | 2016-04-09 14:31:09 +0530 | [diff] [blame] | 344 | this.apply_pricing_rule_on_item(item) |
mbauskar | a52472c | 2016-03-05 15:10:25 +0530 | [diff] [blame] | 345 | this.calculate_taxes_and_totals(); |
mbauskar | 1e9c164 | 2016-01-18 16:21:25 +0530 | [diff] [blame] | 346 | cur_frm.refresh_fields(); |
| 347 | }, |
mbauskar | 1e428ae | 2016-01-19 19:52:22 +0530 | [diff] [blame] | 348 | |
mbauskar | a52472c | 2016-03-05 15:10:25 +0530 | [diff] [blame] | 349 | margin_type: function(doc, cdt, cdn){ |
mbauskar | 1e9c164 | 2016-01-18 16:21:25 +0530 | [diff] [blame] | 350 | // calculate the revised total margin and rate on margin type changes |
| 351 | item = locals[cdt][cdn]; |
Rohit Waghchaure | 6087fe1 | 2016-04-09 14:31:09 +0530 | [diff] [blame] | 352 | this.apply_pricing_rule_on_item(item, doc,cdt, cdn) |
mbauskar | a52472c | 2016-03-05 15:10:25 +0530 | [diff] [blame] | 353 | this.calculate_taxes_and_totals(); |
mbauskar | 1e428ae | 2016-01-19 19:52:22 +0530 | [diff] [blame] | 354 | cur_frm.refresh_fields(); |
Nabin Hait | cfc6bb1 | 2012-07-11 13:14:52 +0530 | [diff] [blame] | 355 | } |
Nabin Hait | 0b15755 | 2014-06-24 17:02:45 +0530 | [diff] [blame] | 356 | }); |
Anand Doshi | 43f087c | 2014-08-26 14:25:53 +0530 | [diff] [blame] | 357 | |
Neil Trini Lasrado | 6e343e2 | 2016-03-09 17:02:59 +0530 | [diff] [blame] | 358 | frappe.ui.form.on(cur_frm.doctype,"project", function(frm) { |
Nabin Hait | 10b155a | 2014-10-23 13:18:59 +0530 | [diff] [blame] | 359 | if(in_list(["Delivery Note", "Sales Invoice"], frm.doc.doctype)) { |
Rushabh Mehta | 532eedf | 2016-05-19 18:22:49 +0530 | [diff] [blame] | 360 | if(frm.doc.project) { |
| 361 | frappe.call({ |
| 362 | method:'erpnext.projects.doctype.project.project.get_cost_center_name' , |
| 363 | args: { project: frm.doc.project }, |
| 364 | callback: function(r, rt) { |
| 365 | if(!r.exc) { |
| 366 | $.each(frm.doc["items"] || [], function(i, row) { |
| 367 | if(r.message) { |
| 368 | frappe.model.set_value(row.doctype, row.name, "cost_center", r.message); |
| 369 | msgprint(__("Cost Center For Item with Item Code '"+row.item_name+"' has been Changed to "+ r.message)); |
| 370 | } |
| 371 | }) |
| 372 | } |
Nabin Hait | 10b155a | 2014-10-23 13:18:59 +0530 | [diff] [blame] | 373 | } |
Rushabh Mehta | 532eedf | 2016-05-19 18:22:49 +0530 | [diff] [blame] | 374 | }) |
| 375 | } |
Nabin Hait | 10b155a | 2014-10-23 13:18:59 +0530 | [diff] [blame] | 376 | } |
Anand Doshi | 43f087c | 2014-08-26 14:25:53 +0530 | [diff] [blame] | 377 | }) |