blob: a04c6521042efd3e411f673f7e1fd792f521e9a2 [file] [log] [blame]
Anand Doshi885e0742015-03-03 14:55:30 +05301// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
Rushabh Mehtae67d1fb2013-08-05 14:59:54 +05302// License: GNU General Public License v3. See license.txt
Rushabh Mehta3966f1d2012-02-23 12:35:32 +05303
Pratik Vyasc1e6e4c2011-06-08 14:37:15 +05304
Nabin Hait613d0812015-02-23 11:58:15 +05305cur_frm.cscript.tax_table = "Sales Taxes and Charges";
Rushabh Mehta621283c2016-04-21 19:00:34 +05306{% include 'erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js' %}
Nabin Hait613d0812015-02-23 11:58:15 +05307
Rushabh Mehtab09d9da2014-01-02 11:47:23 +05308
Rushabh Mehtae10cf022014-09-12 13:09:41 +05309cur_frm.email_field = "contact_email";
10
Rushabh Mehtabe2ee182016-04-29 17:22:42 +053011frappe.provide("erpnext.selling");
Anand Doshi3543f302013-05-24 19:25:01 +053012erpnext.selling.SellingController = erpnext.TransactionController.extend({
Rushabh Mehta532eedf2016-05-19 18:22:49 +053013 setup: function() {
14 this._super();
Rushabh Mehta532eedf2016-05-19 18:22:49 +053015 },
16
Anand Doshi9b496142013-07-11 19:13:58 +053017 onload: function() {
18 this._super();
Anand Doshi9b496142013-07-11 19:13:58 +053019 this.setup_queries();
20 },
Anand Doshibd67e872014-04-11 16:51:27 +053021
Anand Doshi9b496142013-07-11 19:13:58 +053022 setup_queries: function() {
Rushabh Mehta532eedf2016-05-19 18:22:49 +053023
24
Anand Doshi99100a42013-07-04 17:13:53 +053025 var me = this;
Anand Doshibd67e872014-04-11 16:51:27 +053026
Anand Doshif3096132013-05-21 19:35:06 +053027 this.frm.add_fetch("sales_partner", "commission_rate", "commission_rate");
Anand Doshibd67e872014-04-11 16:51:27 +053028
29 $.each([["customer_address", "customer_filter"],
Anand Doshid5d39ac2013-07-29 13:28:37 +053030 ["shipping_address_name", "customer_filter"],
Anand Doshibd67e872014-04-11 16:51:27 +053031 ["contact_person", "customer_filter"],
32 ["customer", "customer"],
33 ["lead", "lead"]],
Anand Doshid5d39ac2013-07-29 13:28:37 +053034 function(i, opts) {
Anand Doshibd67e872014-04-11 16:51:27 +053035 if(me.frm.fields_dict[opts[0]])
Anand Doshid5d39ac2013-07-29 13:28:37 +053036 me.frm.set_query(opts[0], erpnext.queries[opts[1]]);
37 });
Anand Doshibd67e872014-04-11 16:51:27 +053038
Akhilesh Darjee4f721562014-01-29 16:31:38 +053039 if(this.frm.fields_dict.taxes_and_charges) {
40 this.frm.set_query("taxes_and_charges", function() {
Saurabhf52dc072013-07-10 13:07:49 +053041 return {
42 filters: [
Rushabh Mehtaab1ed012015-05-08 11:08:48 +053043 ['Sales Taxes and Charges Template', 'company', '=', me.frm.doc.company],
44 ['Sales Taxes and Charges Template', 'docstatus', '!=', 2]
Saurabhf52dc072013-07-10 13:07:49 +053045 ]
46 }
Anand Doshi99100a42013-07-04 17:13:53 +053047 });
48 }
Anand Doshi99100a42013-07-04 17:13:53 +053049
Rushabh Mehta4a404e92013-08-09 18:11:35 +053050 if(this.frm.fields_dict.selling_price_list) {
51 this.frm.set_query("selling_price_list", function() {
Nabin Haitdc15b4f2014-01-20 16:48:49 +053052 return { filters: { selling: 1 } };
Anand Doshi720a01a2013-07-26 11:32:02 +053053 });
Anand Doshi720a01a2013-07-26 11:32:02 +053054 }
Anand Doshibd67e872014-04-11 16:51:27 +053055
Nabin Haitdd38a262014-12-26 13:15:21 +053056 if(!this.frm.fields_dict["items"]) {
Anand Doshi99100a42013-07-04 17:13:53 +053057 return;
58 }
Anand Doshibd67e872014-04-11 16:51:27 +053059
Nabin Haitdd38a262014-12-26 13:15:21 +053060 if(this.frm.fields_dict["items"].grid.get_field('item_code')) {
61 this.frm.set_query("item_code", "items", function() {
Anand Doshi9b496142013-07-11 19:13:58 +053062 return {
Rushabh Mehtad973c162016-08-16 11:32:08 +053063 query: "erpnext.controllers.queries.item_query",
64 filters: {'is_sales_item': 1}
Anand Doshi9b496142013-07-11 19:13:58 +053065 }
Anand Doshi99100a42013-07-04 17:13:53 +053066 });
67 }
Anand Doshibd67e872014-04-11 16:51:27 +053068
Nabin Haitdd38a262014-12-26 13:15:21 +053069 if(this.frm.fields_dict["items"].grid.get_field('batch_no')) {
70 this.frm.set_query("batch_no", "items", function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +053071 var item = frappe.get_doc(cdt, cdn);
Anand Doshi99100a42013-07-04 17:13:53 +053072 if(!item.item_code) {
Pratik Vyasb52618c2014-04-14 16:25:30 +053073 frappe.throw(__("Please enter Item Code to get batch no"));
Anand Doshi99100a42013-07-04 17:13:53 +053074 } else {
Nabin Haitd1fd1e22013-10-18 12:29:11 +053075 filters = {
76 'item_code': item.item_code,
Rushabh Mehtab969c2c2016-08-18 12:35:58 +053077 'posting_date': me.frm.doc.posting_date || frappe.datetime.nowdate(),
Nabin Haitd1fd1e22013-10-18 12:29:11 +053078 }
79 if(item.warehouse) filters["warehouse"] = item.warehouse
Anand Doshibd67e872014-04-11 16:51:27 +053080
Nabin Haitd1fd1e22013-10-18 12:29:11 +053081 return {
Akhilesh Darjee4f721562014-01-29 16:31:38 +053082 query : "erpnext.controllers.queries.get_batch_no",
Nabin Haitd1fd1e22013-10-18 12:29:11 +053083 filters: filters
Anand Doshi99100a42013-07-04 17:13:53 +053084 }
85 }
86 });
87 }
Anand Doshi1dde46a2013-05-15 21:15:57 +053088 },
Anand Doshibd67e872014-04-11 16:51:27 +053089
Anand Doshic4a54fe2013-08-01 18:19:51 +053090 refresh: function() {
91 this._super();
Anand Doshibd67e872014-04-11 16:51:27 +053092 this.frm.toggle_display("customer_name",
Akhilesh Darjee5ce1b8b2013-12-09 16:29:04 +053093 (this.frm.doc.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer));
Nabin Haite7d15362014-12-25 16:01:55 +053094 if(this.frm.fields_dict.packed_items) {
95 var packing_list_exists = (this.frm.doc.packed_items || []).length;
Anand Doshic4a54fe2013-08-01 18:19:51 +053096 this.frm.toggle_display("packing_list", packing_list_exists ? true : false);
97 }
Nabin Hait2029ea92015-04-16 17:55:35 +053098 this.toggle_editable_price_list_rate();
Rushabh Mehta8aded132013-07-04 12:50:52 +053099 },
Anand Doshibd67e872014-04-11 16:51:27 +0530100
Anand Doshi3543f302013-05-24 19:25:01 +0530101 customer: function() {
Nabin Haita3dd72a2014-05-28 12:49:20 +0530102 var me = this;
103 erpnext.utils.get_party_details(this.frm, null, null, function(){me.apply_pricing_rule()});
Anand Doshi3543f302013-05-24 19:25:01 +0530104 },
Anand Doshibd67e872014-04-11 16:51:27 +0530105
Nabin Haita279d782013-07-15 13:04:33 +0530106 customer_address: function() {
Rushabh Mehtab09d9da2014-01-02 11:47:23 +0530107 erpnext.utils.get_address_display(this.frm, "customer_address");
Nabin Haita279d782013-07-15 13:04:33 +0530108 },
Anand Doshibd67e872014-04-11 16:51:27 +0530109
Nabin Hait9d1f0772014-02-19 17:43:24 +0530110 shipping_address_name: function() {
111 erpnext.utils.get_address_display(this.frm, "shipping_address_name", "shipping_address");
112 },
Anand Doshibd67e872014-04-11 16:51:27 +0530113
Nabin Haita3dd72a2014-05-28 12:49:20 +0530114 sales_partner: function() {
115 this.apply_pricing_rule();
116 },
117
118 campaign: function() {
119 this.apply_pricing_rule();
120 },
121
Rushabh Mehta4a404e92013-08-09 18:11:35 +0530122 selling_price_list: function() {
Anand Doshidffec8f2014-07-01 17:45:15 +0530123 this.apply_price_list();
Anand Doshif3096132013-05-21 19:35:06 +0530124 },
Anand Doshibd67e872014-04-11 16:51:27 +0530125
Nabin Haita7f757a2014-02-10 17:54:04 +0530126 price_list_rate: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530127 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530128 frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530129
mbauskara52472c2016-03-05 15:10:25 +0530130 // check if child doctype is Sales Order Item/Qutation Item and calculate the rate
131 if(in_list(["Quotation Item", "Sales Order Item", "Delivery Note Item", "Sales Invoice Item"]), cdt)
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530132 this.apply_pricing_rule_on_item(item);
mbauskara52472c2016-03-05 15:10:25 +0530133 else
134 item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0),
135 precision("rate", item));
136
Anand Doshif3096132013-05-21 19:35:06 +0530137 this.calculate_taxes_and_totals();
138 },
Anand Doshibd67e872014-04-11 16:51:27 +0530139
Nabin Haita7f757a2014-02-10 17:54:04 +0530140 discount_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530141 var item = frappe.get_doc(cdt, cdn);
Nabin Haita7f757a2014-02-10 17:54:04 +0530142 if(!item.price_list_rate) {
143 item.discount_percentage = 0.0;
Anand Doshi923d41d2013-05-28 17:23:36 +0530144 } else {
Nabin Haita7f757a2014-02-10 17:54:04 +0530145 this.price_list_rate(doc, cdt, cdn);
Anand Doshi923d41d2013-05-28 17:23:36 +0530146 }
Saurabh5ada14b2016-02-26 18:02:55 +0530147 this.set_gross_profit(item);
Anand Doshif3096132013-05-21 19:35:06 +0530148 },
Anand Doshibd67e872014-04-11 16:51:27 +0530149
Anand Doshif3096132013-05-21 19:35:06 +0530150 commission_rate: function() {
151 this.calculate_commission();
152 refresh_field("total_commission");
153 },
Anand Doshibd67e872014-04-11 16:51:27 +0530154
Anand Doshif3096132013-05-21 19:35:06 +0530155 total_commission: function() {
Nabin Hait5690be12015-02-12 16:09:11 +0530156 if(this.frm.doc.base_net_total) {
157 frappe.model.round_floats_in(this.frm.doc, ["base_net_total", "total_commission"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530158
Nabin Hait5690be12015-02-12 16:09:11 +0530159 if(this.frm.doc.base_net_total < this.frm.doc.total_commission) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530160 var msg = (__("[Error]") + " " +
161 __(frappe.meta.get_label(this.frm.doc.doctype, "total_commission",
Anand Doshibd67e872014-04-11 16:51:27 +0530162 this.frm.doc.name)) + " > " +
Nabin Hait5690be12015-02-12 16:09:11 +0530163 __(frappe.meta.get_label(this.frm.doc.doctype, "base_net_total", this.frm.doc.name)));
Anand Doshif3096132013-05-21 19:35:06 +0530164 msgprint(msg);
165 throw msg;
166 }
Anand Doshibd67e872014-04-11 16:51:27 +0530167
168 this.frm.set_value("commission_rate",
Nabin Hait5690be12015-02-12 16:09:11 +0530169 flt(this.frm.doc.total_commission * 100.0 / this.frm.doc.base_net_total));
Anand Doshif3096132013-05-21 19:35:06 +0530170 }
171 },
Anand Doshibd67e872014-04-11 16:51:27 +0530172
Anand Doshif3096132013-05-21 19:35:06 +0530173 allocated_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530174 var sales_person = frappe.get_doc(cdt, cdn);
Anand Doshibd67e872014-04-11 16:51:27 +0530175
Anand Doshif3096132013-05-21 19:35:06 +0530176 if(sales_person.allocated_percentage) {
177 sales_person.allocated_percentage = flt(sales_person.allocated_percentage,
178 precision("allocated_percentage", sales_person));
Nabin Hait5690be12015-02-12 16:09:11 +0530179 sales_person.allocated_amount = flt(this.frm.doc.base_net_total *
Anand Doshibd67e872014-04-11 16:51:27 +0530180 sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530181 precision("allocated_amount", sales_person));
182
183 refresh_field(["allocated_percentage", "allocated_amount"], sales_person.name,
184 sales_person.parentfield);
185 }
186 },
Anand Doshibd67e872014-04-11 16:51:27 +0530187
Anand Doshifc777182013-05-27 19:29:07 +0530188 warehouse: function(doc, cdt, cdn) {
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530189 var me = this;
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530190 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehtabe2ee182016-04-29 17:22:42 +0530191
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530192 if(item.item_code && item.warehouse) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530193 return this.frm.call({
Saurabhd3135532016-02-25 18:59:20 +0530194 method: "erpnext.stock.get_item_details.get_bin_details",
Anand Doshifc777182013-05-27 19:29:07 +0530195 child: item,
196 args: {
197 item_code: item.item_code,
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530198 warehouse: item.warehouse,
Anand Doshifc777182013-05-27 19:29:07 +0530199 },
Saurabhd3135532016-02-25 18:59:20 +0530200 callback:function(r){
201 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
202 me.batch_no(doc, cdt, cdn);
203 }
204 }
Anand Doshifc777182013-05-27 19:29:07 +0530205 });
206 }
207 },
Anand Doshibd67e872014-04-11 16:51:27 +0530208
Anand Doshi33fe8672013-08-02 12:39:10 +0530209 toggle_editable_price_list_rate: function() {
Nabin Haitdd38a262014-12-26 13:15:21 +0530210 var df = frappe.meta.get_docfield(this.frm.doc.doctype + " Item", "price_list_rate", this.frm.doc.name);
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530211 var editable_price_list_rate = cint(frappe.defaults.get_default("editable_price_list_rate"));
Anand Doshibd67e872014-04-11 16:51:27 +0530212
Anand Doshi33fe8672013-08-02 12:39:10 +0530213 if(df && editable_price_list_rate) {
214 df.read_only = 0;
215 }
216 },
Anand Doshibd67e872014-04-11 16:51:27 +0530217
Anand Doshif3096132013-05-21 19:35:06 +0530218 calculate_commission: function() {
Anand Doshi923d41d2013-05-28 17:23:36 +0530219 if(this.frm.fields_dict.commission_rate) {
220 if(this.frm.doc.commission_rate > 100) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530221 var msg = __(frappe.meta.get_label(this.frm.doc.doctype, "commission_rate", this.frm.doc.name)) +
222 " " + __("cannot be greater than 100");
Anand Doshi923d41d2013-05-28 17:23:36 +0530223 msgprint(msg);
224 throw msg;
225 }
Anand Doshibd67e872014-04-11 16:51:27 +0530226
Nabin Hait5690be12015-02-12 16:09:11 +0530227 this.frm.doc.total_commission = flt(this.frm.doc.base_net_total * this.frm.doc.commission_rate / 100.0,
Anand Doshi923d41d2013-05-28 17:23:36 +0530228 precision("total_commission"));
229 }
Anand Doshif3096132013-05-21 19:35:06 +0530230 },
Anand Doshibd67e872014-04-11 16:51:27 +0530231
Anand Doshif3096132013-05-21 19:35:06 +0530232 calculate_contribution: function() {
Anand Doshi2168e392013-05-23 19:25:08 +0530233 var me = this;
Rushabh Mehtaaa355af2014-03-26 18:24:30 +0530234 $.each(this.frm.doc.doctype.sales_team || [], function(i, sales_person) {
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530235 frappe.model.round_floats_in(sales_person);
Anand Doshif3096132013-05-21 19:35:06 +0530236 if(sales_person.allocated_percentage) {
237 sales_person.allocated_amount = flt(
Nabin Hait5690be12015-02-12 16:09:11 +0530238 me.frm.doc.base_net_total * sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530239 precision("allocated_amount", sales_person));
240 }
241 });
242 },
Anand Doshibd67e872014-04-11 16:51:27 +0530243
Anand Doshicefccb92013-07-15 18:28:14 +0530244 shipping_rule: function() {
245 var me = this;
246 if(this.frm.doc.shipping_rule) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530247 return this.frm.call({
Anand Doshicefccb92013-07-15 18:28:14 +0530248 doc: this.frm.doc,
249 method: "apply_shipping_rule",
250 callback: function(r) {
251 if(!r.exc) {
252 me.calculate_taxes_and_totals();
253 }
254 }
255 })
256 }
257 },
Anand Doshibd67e872014-04-11 16:51:27 +0530258
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530259 batch_no: function(doc, cdt, cdn) {
260 var me = this;
261 var item = frappe.get_doc(cdt, cdn);
Nabin Hait2ed71ba2015-03-20 15:06:30 +0530262
Sambhaji Kolatea4fa96c2015-03-30 16:04:55 +0530263 if(item.warehouse && item.item_code && item.batch_no) {
Sambhaji Kolatefeff40a2015-03-11 11:50:28 +0530264 return this.frm.call({
265 method: "erpnext.stock.get_item_details.get_batch_qty",
266 child: item,
267 args: {
268 "batch_no": item.batch_no,
269 "warehouse": item.warehouse,
270 "item_code": item.item_code
271 },
272 "fieldname": "actual_batch_qty"
273 });
274 }
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530275 },
276
Anand Doshi2168e392013-05-23 19:25:08 +0530277 set_dynamic_labels: function() {
Anand Doshi61a2f682013-06-21 17:55:31 +0530278 this._super();
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530279 this.set_product_bundle_help(this.frm.doc);
Nabin Hait0b157552014-06-24 17:02:45 +0530280 },
281
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530282 set_product_bundle_help: function(doc) {
Nabin Hait0b157552014-06-24 17:02:45 +0530283 if(!cur_frm.fields_dict.packing_list) return;
Nabin Haite7d15362014-12-25 16:01:55 +0530284 if ((doc.packed_items || []).length) {
Nabin Hait0b157552014-06-24 17:02:45 +0530285 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true);
286
287 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
288 help_msg = "<div class='alert alert-warning'>" +
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530289 __("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 Hait0b157552014-06-24 17:02:45 +0530290 "</div>";
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530291 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = help_msg;
Nabin Hait0b157552014-06-24 17:02:45 +0530292 }
293 } else {
294 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false);
295 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530296 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = '';
Nabin Hait0b157552014-06-24 17:02:45 +0530297 }
298 }
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530299 refresh_field('product_bundle_help');
Saurabheba7aa42015-12-16 09:57:59 +0530300 },
Anand Doshi01de9452016-01-26 16:22:50 +0530301
Saurabheba7aa42015-12-16 09:57:59 +0530302 make_payment_request: function() {
Saurabheba7aa42015-12-16 09:57:59 +0530303 frappe.call({
304 method:"erpnext.accounts.doctype.payment_request.payment_request.make_payment_request",
305 args: {
306 "dt": cur_frm.doc.doctype,
307 "dn": cur_frm.doc.name,
Saurabhb109ee92015-12-16 20:48:40 +0530308 "recipient_id": cur_frm.doc.contact_email
Saurabheba7aa42015-12-16 09:57:59 +0530309 },
310 callback: function(r) {
Saurabhcb98d9e2015-12-17 09:48:44 +0530311 if(!r.exc){
Saurabh3ba22672015-12-21 18:24:49 +0530312 var doc = frappe.model.sync(r.message);
Saurabh3ba22672015-12-21 18:24:49 +0530313 frappe.set_route("Form", r.message.doctype, r.message.name);
Saurabhcb98d9e2015-12-17 09:48:44 +0530314 }
Saurabheba7aa42015-12-16 09:57:59 +0530315 }
316 })
mbauskar1e9c1642016-01-18 16:21:25 +0530317 },
mbauskar1e428ae2016-01-19 19:52:22 +0530318
319 rate: function(doc, cdt, cdn){
320 // if user changes the rate then set margin Rate or amount to 0
321 item = locals[cdt][cdn];
mbauskara52472c2016-03-05 15:10:25 +0530322 item.margin_type = "";
323 item.margin_rate_or_amount = 0.0;
mbauskar1e428ae2016-01-19 19:52:22 +0530324 cur_frm.refresh_fields();
325 },
326
mbauskara52472c2016-03-05 15:10:25 +0530327 margin_rate_or_amount: function(doc, cdt, cdn) {
mbauskar1e9c1642016-01-18 16:21:25 +0530328 // calculated the revised total margin and rate on margin rate changes
329 item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530330 this.apply_pricing_rule_on_item(item)
mbauskara52472c2016-03-05 15:10:25 +0530331 this.calculate_taxes_and_totals();
mbauskar1e9c1642016-01-18 16:21:25 +0530332 cur_frm.refresh_fields();
333 },
mbauskar1e428ae2016-01-19 19:52:22 +0530334
mbauskara52472c2016-03-05 15:10:25 +0530335 margin_type: function(doc, cdt, cdn){
mbauskar1e9c1642016-01-18 16:21:25 +0530336 // calculate the revised total margin and rate on margin type changes
337 item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530338 this.apply_pricing_rule_on_item(item, doc,cdt, cdn)
mbauskara52472c2016-03-05 15:10:25 +0530339 this.calculate_taxes_and_totals();
mbauskar1e428ae2016-01-19 19:52:22 +0530340 cur_frm.refresh_fields();
Nabin Haitcfc6bb12012-07-11 13:14:52 +0530341 }
Nabin Hait0b157552014-06-24 17:02:45 +0530342});
Anand Doshi43f087c2014-08-26 14:25:53 +0530343
Neil Trini Lasrado6e343e22016-03-09 17:02:59 +0530344frappe.ui.form.on(cur_frm.doctype,"project", function(frm) {
Nabin Hait10b155a2014-10-23 13:18:59 +0530345 if(in_list(["Delivery Note", "Sales Invoice"], frm.doc.doctype)) {
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530346 if(frm.doc.project) {
347 frappe.call({
348 method:'erpnext.projects.doctype.project.project.get_cost_center_name' ,
349 args: { project: frm.doc.project },
350 callback: function(r, rt) {
351 if(!r.exc) {
352 $.each(frm.doc["items"] || [], function(i, row) {
353 if(r.message) {
354 frappe.model.set_value(row.doctype, row.name, "cost_center", r.message);
355 msgprint(__("Cost Center For Item with Item Code '"+row.item_name+"' has been Changed to "+ r.message));
356 }
357 })
358 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530359 }
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530360 })
361 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530362 }
Anand Doshi43f087c2014-08-26 14:25:53 +0530363})