blob: 59fdf703a36e7feafed6bf83b69e0c51a9995cd0 [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
Rohit Waghchauree887e922016-11-18 12:16:22 +053069 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 Haitdd38a262014-12-26 13:15:21 +053075 if(this.frm.fields_dict["items"].grid.get_field('batch_no')) {
76 this.frm.set_query("batch_no", "items", function(doc, cdt, cdn) {
Rohit Waghchauree887e922016-11-18 12:16:22 +053077 return me.set_query_for_batch(doc, cdt, cdn)
Anand Doshi99100a42013-07-04 17:13:53 +053078 });
79 }
Anand Doshi1dde46a2013-05-15 21:15:57 +053080 },
Anand Doshibd67e872014-04-11 16:51:27 +053081
Rohit Waghchauree887e922016-11-18 12:16:22 +053082 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 Doshic4a54fe2013-08-01 18:19:51 +0530104 refresh: function() {
105 this._super();
Anand Doshibd67e872014-04-11 16:51:27 +0530106 this.frm.toggle_display("customer_name",
Akhilesh Darjee5ce1b8b2013-12-09 16:29:04 +0530107 (this.frm.doc.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer));
Nabin Haite7d15362014-12-25 16:01:55 +0530108 if(this.frm.fields_dict.packed_items) {
109 var packing_list_exists = (this.frm.doc.packed_items || []).length;
Anand Doshic4a54fe2013-08-01 18:19:51 +0530110 this.frm.toggle_display("packing_list", packing_list_exists ? true : false);
111 }
Nabin Hait2029ea92015-04-16 17:55:35 +0530112 this.toggle_editable_price_list_rate();
Rushabh Mehta8aded132013-07-04 12:50:52 +0530113 },
Anand Doshibd67e872014-04-11 16:51:27 +0530114
Anand Doshi3543f302013-05-24 19:25:01 +0530115 customer: function() {
Nabin Haita3dd72a2014-05-28 12:49:20 +0530116 var me = this;
117 erpnext.utils.get_party_details(this.frm, null, null, function(){me.apply_pricing_rule()});
Anand Doshi3543f302013-05-24 19:25:01 +0530118 },
Anand Doshibd67e872014-04-11 16:51:27 +0530119
Nabin Haita279d782013-07-15 13:04:33 +0530120 customer_address: function() {
Rushabh Mehtab09d9da2014-01-02 11:47:23 +0530121 erpnext.utils.get_address_display(this.frm, "customer_address");
Nabin Haita279d782013-07-15 13:04:33 +0530122 },
Anand Doshibd67e872014-04-11 16:51:27 +0530123
Nabin Hait9d1f0772014-02-19 17:43:24 +0530124 shipping_address_name: function() {
125 erpnext.utils.get_address_display(this.frm, "shipping_address_name", "shipping_address");
126 },
Anand Doshibd67e872014-04-11 16:51:27 +0530127
Nabin Haita3dd72a2014-05-28 12:49:20 +0530128 sales_partner: function() {
129 this.apply_pricing_rule();
130 },
131
132 campaign: function() {
133 this.apply_pricing_rule();
134 },
135
Rushabh Mehta4a404e92013-08-09 18:11:35 +0530136 selling_price_list: function() {
Anand Doshidffec8f2014-07-01 17:45:15 +0530137 this.apply_price_list();
Anand Doshif3096132013-05-21 19:35:06 +0530138 },
Anand Doshibd67e872014-04-11 16:51:27 +0530139
Nabin Haita7f757a2014-02-10 17:54:04 +0530140 price_list_rate: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530141 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530142 frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530143
mbauskara52472c2016-03-05 15:10:25 +0530144 // 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 Waghchaure6087fe12016-04-09 14:31:09 +0530146 this.apply_pricing_rule_on_item(item);
mbauskara52472c2016-03-05 15:10:25 +0530147 else
148 item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0),
149 precision("rate", item));
150
Anand Doshif3096132013-05-21 19:35:06 +0530151 this.calculate_taxes_and_totals();
152 },
Anand Doshibd67e872014-04-11 16:51:27 +0530153
Nabin Haita7f757a2014-02-10 17:54:04 +0530154 discount_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530155 var item = frappe.get_doc(cdt, cdn);
Nabin Haita7f757a2014-02-10 17:54:04 +0530156 if(!item.price_list_rate) {
157 item.discount_percentage = 0.0;
Anand Doshi923d41d2013-05-28 17:23:36 +0530158 } else {
Nabin Haita7f757a2014-02-10 17:54:04 +0530159 this.price_list_rate(doc, cdt, cdn);
Anand Doshi923d41d2013-05-28 17:23:36 +0530160 }
Saurabh5ada14b2016-02-26 18:02:55 +0530161 this.set_gross_profit(item);
Anand Doshif3096132013-05-21 19:35:06 +0530162 },
Anand Doshibd67e872014-04-11 16:51:27 +0530163
Anand Doshif3096132013-05-21 19:35:06 +0530164 commission_rate: function() {
165 this.calculate_commission();
166 refresh_field("total_commission");
167 },
Anand Doshibd67e872014-04-11 16:51:27 +0530168
Anand Doshif3096132013-05-21 19:35:06 +0530169 total_commission: function() {
Nabin Hait5690be12015-02-12 16:09:11 +0530170 if(this.frm.doc.base_net_total) {
171 frappe.model.round_floats_in(this.frm.doc, ["base_net_total", "total_commission"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530172
Nabin Hait5690be12015-02-12 16:09:11 +0530173 if(this.frm.doc.base_net_total < this.frm.doc.total_commission) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530174 var msg = (__("[Error]") + " " +
175 __(frappe.meta.get_label(this.frm.doc.doctype, "total_commission",
Anand Doshibd67e872014-04-11 16:51:27 +0530176 this.frm.doc.name)) + " > " +
Nabin Hait5690be12015-02-12 16:09:11 +0530177 __(frappe.meta.get_label(this.frm.doc.doctype, "base_net_total", this.frm.doc.name)));
Anand Doshif3096132013-05-21 19:35:06 +0530178 msgprint(msg);
179 throw msg;
180 }
Anand Doshibd67e872014-04-11 16:51:27 +0530181
182 this.frm.set_value("commission_rate",
Nabin Hait5690be12015-02-12 16:09:11 +0530183 flt(this.frm.doc.total_commission * 100.0 / this.frm.doc.base_net_total));
Anand Doshif3096132013-05-21 19:35:06 +0530184 }
185 },
Anand Doshibd67e872014-04-11 16:51:27 +0530186
Anand Doshif3096132013-05-21 19:35:06 +0530187 allocated_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530188 var sales_person = frappe.get_doc(cdt, cdn);
Anand Doshibd67e872014-04-11 16:51:27 +0530189
Anand Doshif3096132013-05-21 19:35:06 +0530190 if(sales_person.allocated_percentage) {
191 sales_person.allocated_percentage = flt(sales_person.allocated_percentage,
192 precision("allocated_percentage", sales_person));
Nabin Hait5690be12015-02-12 16:09:11 +0530193 sales_person.allocated_amount = flt(this.frm.doc.base_net_total *
Anand Doshibd67e872014-04-11 16:51:27 +0530194 sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530195 precision("allocated_amount", sales_person));
196
197 refresh_field(["allocated_percentage", "allocated_amount"], sales_person.name,
198 sales_person.parentfield);
199 }
200 },
Anand Doshibd67e872014-04-11 16:51:27 +0530201
Anand Doshifc777182013-05-27 19:29:07 +0530202 warehouse: function(doc, cdt, cdn) {
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530203 var me = this;
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530204 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehtabe2ee182016-04-29 17:22:42 +0530205
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530206 if(item.item_code && item.warehouse) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530207 return this.frm.call({
Saurabhd3135532016-02-25 18:59:20 +0530208 method: "erpnext.stock.get_item_details.get_bin_details",
Anand Doshifc777182013-05-27 19:29:07 +0530209 child: item,
210 args: {
211 item_code: item.item_code,
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530212 warehouse: item.warehouse,
Anand Doshifc777182013-05-27 19:29:07 +0530213 },
Saurabhd3135532016-02-25 18:59:20 +0530214 callback:function(r){
215 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
216 me.batch_no(doc, cdt, cdn);
217 }
218 }
Anand Doshifc777182013-05-27 19:29:07 +0530219 });
220 }
221 },
Anand Doshibd67e872014-04-11 16:51:27 +0530222
Anand Doshi33fe8672013-08-02 12:39:10 +0530223 toggle_editable_price_list_rate: function() {
Nabin Haitdd38a262014-12-26 13:15:21 +0530224 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 +0530225 var editable_price_list_rate = cint(frappe.defaults.get_default("editable_price_list_rate"));
Anand Doshibd67e872014-04-11 16:51:27 +0530226
Anand Doshi33fe8672013-08-02 12:39:10 +0530227 if(df && editable_price_list_rate) {
228 df.read_only = 0;
229 }
230 },
Anand Doshibd67e872014-04-11 16:51:27 +0530231
Anand Doshif3096132013-05-21 19:35:06 +0530232 calculate_commission: function() {
Anand Doshi923d41d2013-05-28 17:23:36 +0530233 if(this.frm.fields_dict.commission_rate) {
234 if(this.frm.doc.commission_rate > 100) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530235 var msg = __(frappe.meta.get_label(this.frm.doc.doctype, "commission_rate", this.frm.doc.name)) +
236 " " + __("cannot be greater than 100");
Anand Doshi923d41d2013-05-28 17:23:36 +0530237 msgprint(msg);
238 throw msg;
239 }
Anand Doshibd67e872014-04-11 16:51:27 +0530240
Nabin Hait5690be12015-02-12 16:09:11 +0530241 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 +0530242 precision("total_commission"));
243 }
Anand Doshif3096132013-05-21 19:35:06 +0530244 },
Anand Doshibd67e872014-04-11 16:51:27 +0530245
Anand Doshif3096132013-05-21 19:35:06 +0530246 calculate_contribution: function() {
Anand Doshi2168e392013-05-23 19:25:08 +0530247 var me = this;
Rushabh Mehtaaa355af2014-03-26 18:24:30 +0530248 $.each(this.frm.doc.doctype.sales_team || [], function(i, sales_person) {
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530249 frappe.model.round_floats_in(sales_person);
Anand Doshif3096132013-05-21 19:35:06 +0530250 if(sales_person.allocated_percentage) {
251 sales_person.allocated_amount = flt(
Nabin Hait5690be12015-02-12 16:09:11 +0530252 me.frm.doc.base_net_total * sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530253 precision("allocated_amount", sales_person));
254 }
255 });
256 },
Anand Doshibd67e872014-04-11 16:51:27 +0530257
Anand Doshicefccb92013-07-15 18:28:14 +0530258 shipping_rule: function() {
259 var me = this;
260 if(this.frm.doc.shipping_rule) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530261 return this.frm.call({
Anand Doshicefccb92013-07-15 18:28:14 +0530262 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 Doshibd67e872014-04-11 16:51:27 +0530272
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530273 batch_no: function(doc, cdt, cdn) {
274 var me = this;
275 var item = frappe.get_doc(cdt, cdn);
Nabin Hait2ed71ba2015-03-20 15:06:30 +0530276
Sambhaji Kolatea4fa96c2015-03-30 16:04:55 +0530277 if(item.warehouse && item.item_code && item.batch_no) {
Sambhaji Kolatefeff40a2015-03-11 11:50:28 +0530278 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 Kolate98dbccd2015-03-10 15:04:28 +0530289 },
290
Anand Doshi2168e392013-05-23 19:25:08 +0530291 set_dynamic_labels: function() {
Anand Doshi61a2f682013-06-21 17:55:31 +0530292 this._super();
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530293 this.set_product_bundle_help(this.frm.doc);
Nabin Hait0b157552014-06-24 17:02:45 +0530294 },
295
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530296 set_product_bundle_help: function(doc) {
Nabin Hait0b157552014-06-24 17:02:45 +0530297 if(!cur_frm.fields_dict.packing_list) return;
Nabin Haite7d15362014-12-25 16:01:55 +0530298 if ((doc.packed_items || []).length) {
Nabin Hait0b157552014-06-24 17:02:45 +0530299 $(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 Lasradoed8cecb2015-07-07 13:59:23 +0530303 __("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 +0530304 "</div>";
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530305 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = help_msg;
Nabin Hait0b157552014-06-24 17:02:45 +0530306 }
307 } else {
308 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false);
309 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530310 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = '';
Nabin Hait0b157552014-06-24 17:02:45 +0530311 }
312 }
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530313 refresh_field('product_bundle_help');
Saurabheba7aa42015-12-16 09:57:59 +0530314 },
Anand Doshi01de9452016-01-26 16:22:50 +0530315
Saurabheba7aa42015-12-16 09:57:59 +0530316 make_payment_request: function() {
Saurabheba7aa42015-12-16 09:57:59 +0530317 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,
Saurabhb109ee92015-12-16 20:48:40 +0530322 "recipient_id": cur_frm.doc.contact_email
Saurabheba7aa42015-12-16 09:57:59 +0530323 },
324 callback: function(r) {
Saurabhcb98d9e2015-12-17 09:48:44 +0530325 if(!r.exc){
Saurabh3ba22672015-12-21 18:24:49 +0530326 var doc = frappe.model.sync(r.message);
Saurabh3ba22672015-12-21 18:24:49 +0530327 frappe.set_route("Form", r.message.doctype, r.message.name);
Saurabhcb98d9e2015-12-17 09:48:44 +0530328 }
Saurabheba7aa42015-12-16 09:57:59 +0530329 }
330 })
mbauskar1e9c1642016-01-18 16:21:25 +0530331 },
mbauskar1e428ae2016-01-19 19:52:22 +0530332
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];
mbauskara52472c2016-03-05 15:10:25 +0530336 item.margin_type = "";
337 item.margin_rate_or_amount = 0.0;
mbauskar1e428ae2016-01-19 19:52:22 +0530338 cur_frm.refresh_fields();
339 },
340
mbauskara52472c2016-03-05 15:10:25 +0530341 margin_rate_or_amount: function(doc, cdt, cdn) {
mbauskar1e9c1642016-01-18 16:21:25 +0530342 // calculated the revised total margin and rate on margin rate changes
343 item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530344 this.apply_pricing_rule_on_item(item)
mbauskara52472c2016-03-05 15:10:25 +0530345 this.calculate_taxes_and_totals();
mbauskar1e9c1642016-01-18 16:21:25 +0530346 cur_frm.refresh_fields();
347 },
mbauskar1e428ae2016-01-19 19:52:22 +0530348
mbauskara52472c2016-03-05 15:10:25 +0530349 margin_type: function(doc, cdt, cdn){
mbauskar1e9c1642016-01-18 16:21:25 +0530350 // calculate the revised total margin and rate on margin type changes
351 item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530352 this.apply_pricing_rule_on_item(item, doc,cdt, cdn)
mbauskara52472c2016-03-05 15:10:25 +0530353 this.calculate_taxes_and_totals();
mbauskar1e428ae2016-01-19 19:52:22 +0530354 cur_frm.refresh_fields();
Nabin Haitcfc6bb12012-07-11 13:14:52 +0530355 }
Nabin Hait0b157552014-06-24 17:02:45 +0530356});
Anand Doshi43f087c2014-08-26 14:25:53 +0530357
Neil Trini Lasrado6e343e22016-03-09 17:02:59 +0530358frappe.ui.form.on(cur_frm.doctype,"project", function(frm) {
Nabin Hait10b155a2014-10-23 13:18:59 +0530359 if(in_list(["Delivery Note", "Sales Invoice"], frm.doc.doctype)) {
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530360 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 Hait10b155a2014-10-23 13:18:59 +0530373 }
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530374 })
375 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530376 }
Anand Doshi43f087c2014-08-26 14:25:53 +0530377})