blob: d58adce06fa05ab5c8909db6f89c5b096cd027c8 [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();
15 this.frm.get_field('items').grid.editable_fields = [
16 {fieldname: 'item_code', columns: 4},
17 {fieldname: 'qty', columns: 2},
Rushabh Mehta76b13412016-07-18 14:30:18 +053018 {fieldname: 'rate', columns: 2},
Rushabh Mehta532eedf2016-05-19 18:22:49 +053019 {fieldname: 'amount', columns: 2}
20 ];
21 },
22
Anand Doshi9b496142013-07-11 19:13:58 +053023 onload: function() {
24 this._super();
Anand Doshi9b496142013-07-11 19:13:58 +053025 this.setup_queries();
26 },
Anand Doshibd67e872014-04-11 16:51:27 +053027
Anand Doshi9b496142013-07-11 19:13:58 +053028 setup_queries: function() {
Rushabh Mehta532eedf2016-05-19 18:22:49 +053029
30
Anand Doshi99100a42013-07-04 17:13:53 +053031 var me = this;
Anand Doshibd67e872014-04-11 16:51:27 +053032
Anand Doshif3096132013-05-21 19:35:06 +053033 this.frm.add_fetch("sales_partner", "commission_rate", "commission_rate");
Anand Doshibd67e872014-04-11 16:51:27 +053034
35 $.each([["customer_address", "customer_filter"],
Anand Doshid5d39ac2013-07-29 13:28:37 +053036 ["shipping_address_name", "customer_filter"],
Anand Doshibd67e872014-04-11 16:51:27 +053037 ["contact_person", "customer_filter"],
38 ["customer", "customer"],
39 ["lead", "lead"]],
Anand Doshid5d39ac2013-07-29 13:28:37 +053040 function(i, opts) {
Anand Doshibd67e872014-04-11 16:51:27 +053041 if(me.frm.fields_dict[opts[0]])
Anand Doshid5d39ac2013-07-29 13:28:37 +053042 me.frm.set_query(opts[0], erpnext.queries[opts[1]]);
43 });
Anand Doshibd67e872014-04-11 16:51:27 +053044
Akhilesh Darjee4f721562014-01-29 16:31:38 +053045 if(this.frm.fields_dict.taxes_and_charges) {
46 this.frm.set_query("taxes_and_charges", function() {
Saurabhf52dc072013-07-10 13:07:49 +053047 return {
48 filters: [
Rushabh Mehtaab1ed012015-05-08 11:08:48 +053049 ['Sales Taxes and Charges Template', 'company', '=', me.frm.doc.company],
50 ['Sales Taxes and Charges Template', 'docstatus', '!=', 2]
Saurabhf52dc072013-07-10 13:07:49 +053051 ]
52 }
Anand Doshi99100a42013-07-04 17:13:53 +053053 });
54 }
Anand Doshi99100a42013-07-04 17:13:53 +053055
Rushabh Mehta4a404e92013-08-09 18:11:35 +053056 if(this.frm.fields_dict.selling_price_list) {
57 this.frm.set_query("selling_price_list", function() {
Nabin Haitdc15b4f2014-01-20 16:48:49 +053058 return { filters: { selling: 1 } };
Anand Doshi720a01a2013-07-26 11:32:02 +053059 });
Anand Doshi720a01a2013-07-26 11:32:02 +053060 }
Anand Doshibd67e872014-04-11 16:51:27 +053061
Nabin Haitdd38a262014-12-26 13:15:21 +053062 if(!this.frm.fields_dict["items"]) {
Anand Doshi99100a42013-07-04 17:13:53 +053063 return;
64 }
Anand Doshibd67e872014-04-11 16:51:27 +053065
Nabin Haitdd38a262014-12-26 13:15:21 +053066 if(this.frm.fields_dict["items"].grid.get_field('item_code')) {
67 this.frm.set_query("item_code", "items", function() {
Anand Doshi9b496142013-07-11 19:13:58 +053068 return {
Umair Sayyed72534de2016-04-15 12:52:12 +053069 query: "erpnext.controllers.queries.item_query"
Anand Doshi9b496142013-07-11 19:13:58 +053070 }
Anand Doshi99100a42013-07-04 17:13:53 +053071 });
72 }
Anand Doshibd67e872014-04-11 16:51:27 +053073
Nabin Haitdd38a262014-12-26 13:15:21 +053074 if(this.frm.fields_dict["items"].grid.get_field('batch_no')) {
75 this.frm.set_query("batch_no", "items", function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +053076 var item = frappe.get_doc(cdt, cdn);
Anand Doshi99100a42013-07-04 17:13:53 +053077 if(!item.item_code) {
Pratik Vyasb52618c2014-04-14 16:25:30 +053078 frappe.throw(__("Please enter Item Code to get batch no"));
Anand Doshi99100a42013-07-04 17:13:53 +053079 } else {
Nabin Haitd1fd1e22013-10-18 12:29:11 +053080 filters = {
81 'item_code': item.item_code,
Neil Trini Lasradoebb60f52015-07-08 14:36:09 +053082 'posting_date': me.frm.doc.posting_date || nowdate(),
Nabin Haitd1fd1e22013-10-18 12:29:11 +053083 }
84 if(item.warehouse) filters["warehouse"] = item.warehouse
Anand Doshibd67e872014-04-11 16:51:27 +053085
Nabin Haitd1fd1e22013-10-18 12:29:11 +053086 return {
Akhilesh Darjee4f721562014-01-29 16:31:38 +053087 query : "erpnext.controllers.queries.get_batch_no",
Nabin Haitd1fd1e22013-10-18 12:29:11 +053088 filters: filters
Anand Doshi99100a42013-07-04 17:13:53 +053089 }
90 }
91 });
92 }
Anand Doshi1dde46a2013-05-15 21:15:57 +053093 },
Anand Doshibd67e872014-04-11 16:51:27 +053094
Anand Doshic4a54fe2013-08-01 18:19:51 +053095 refresh: function() {
96 this._super();
Anand Doshibd67e872014-04-11 16:51:27 +053097 this.frm.toggle_display("customer_name",
Akhilesh Darjee5ce1b8b2013-12-09 16:29:04 +053098 (this.frm.doc.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer));
Nabin Haite7d15362014-12-25 16:01:55 +053099 if(this.frm.fields_dict.packed_items) {
100 var packing_list_exists = (this.frm.doc.packed_items || []).length;
Anand Doshic4a54fe2013-08-01 18:19:51 +0530101 this.frm.toggle_display("packing_list", packing_list_exists ? true : false);
102 }
Nabin Hait2029ea92015-04-16 17:55:35 +0530103 this.toggle_editable_price_list_rate();
Rushabh Mehta8aded132013-07-04 12:50:52 +0530104 },
Anand Doshibd67e872014-04-11 16:51:27 +0530105
Anand Doshi3543f302013-05-24 19:25:01 +0530106 customer: function() {
Nabin Haita3dd72a2014-05-28 12:49:20 +0530107 var me = this;
108 erpnext.utils.get_party_details(this.frm, null, null, function(){me.apply_pricing_rule()});
Anand Doshi3543f302013-05-24 19:25:01 +0530109 },
Anand Doshibd67e872014-04-11 16:51:27 +0530110
Nabin Haita279d782013-07-15 13:04:33 +0530111 customer_address: function() {
Rushabh Mehtab09d9da2014-01-02 11:47:23 +0530112 erpnext.utils.get_address_display(this.frm, "customer_address");
Nabin Haita279d782013-07-15 13:04:33 +0530113 },
Anand Doshibd67e872014-04-11 16:51:27 +0530114
Nabin Hait9d1f0772014-02-19 17:43:24 +0530115 shipping_address_name: function() {
116 erpnext.utils.get_address_display(this.frm, "shipping_address_name", "shipping_address");
117 },
Anand Doshibd67e872014-04-11 16:51:27 +0530118
Nabin Haita3dd72a2014-05-28 12:49:20 +0530119 sales_partner: function() {
120 this.apply_pricing_rule();
121 },
122
123 campaign: function() {
124 this.apply_pricing_rule();
125 },
126
Rushabh Mehta4a404e92013-08-09 18:11:35 +0530127 selling_price_list: function() {
Anand Doshidffec8f2014-07-01 17:45:15 +0530128 this.apply_price_list();
Anand Doshif3096132013-05-21 19:35:06 +0530129 },
Anand Doshibd67e872014-04-11 16:51:27 +0530130
Nabin Haita7f757a2014-02-10 17:54:04 +0530131 price_list_rate: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530132 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530133 frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530134
mbauskara52472c2016-03-05 15:10:25 +0530135 // check if child doctype is Sales Order Item/Qutation Item and calculate the rate
136 if(in_list(["Quotation Item", "Sales Order Item", "Delivery Note Item", "Sales Invoice Item"]), cdt)
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530137 this.apply_pricing_rule_on_item(item);
mbauskara52472c2016-03-05 15:10:25 +0530138 else
139 item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0),
140 precision("rate", item));
141
Anand Doshif3096132013-05-21 19:35:06 +0530142 this.calculate_taxes_and_totals();
143 },
Anand Doshibd67e872014-04-11 16:51:27 +0530144
Nabin Haita7f757a2014-02-10 17:54:04 +0530145 discount_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530146 var item = frappe.get_doc(cdt, cdn);
Nabin Haita7f757a2014-02-10 17:54:04 +0530147 if(!item.price_list_rate) {
148 item.discount_percentage = 0.0;
Anand Doshi923d41d2013-05-28 17:23:36 +0530149 } else {
Nabin Haita7f757a2014-02-10 17:54:04 +0530150 this.price_list_rate(doc, cdt, cdn);
Anand Doshi923d41d2013-05-28 17:23:36 +0530151 }
Saurabh5ada14b2016-02-26 18:02:55 +0530152 this.set_gross_profit(item);
Anand Doshif3096132013-05-21 19:35:06 +0530153 },
Anand Doshibd67e872014-04-11 16:51:27 +0530154
Anand Doshif3096132013-05-21 19:35:06 +0530155 commission_rate: function() {
156 this.calculate_commission();
157 refresh_field("total_commission");
158 },
Anand Doshibd67e872014-04-11 16:51:27 +0530159
Anand Doshif3096132013-05-21 19:35:06 +0530160 total_commission: function() {
Nabin Hait5690be12015-02-12 16:09:11 +0530161 if(this.frm.doc.base_net_total) {
162 frappe.model.round_floats_in(this.frm.doc, ["base_net_total", "total_commission"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530163
Nabin Hait5690be12015-02-12 16:09:11 +0530164 if(this.frm.doc.base_net_total < this.frm.doc.total_commission) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530165 var msg = (__("[Error]") + " " +
166 __(frappe.meta.get_label(this.frm.doc.doctype, "total_commission",
Anand Doshibd67e872014-04-11 16:51:27 +0530167 this.frm.doc.name)) + " > " +
Nabin Hait5690be12015-02-12 16:09:11 +0530168 __(frappe.meta.get_label(this.frm.doc.doctype, "base_net_total", this.frm.doc.name)));
Anand Doshif3096132013-05-21 19:35:06 +0530169 msgprint(msg);
170 throw msg;
171 }
Anand Doshibd67e872014-04-11 16:51:27 +0530172
173 this.frm.set_value("commission_rate",
Nabin Hait5690be12015-02-12 16:09:11 +0530174 flt(this.frm.doc.total_commission * 100.0 / this.frm.doc.base_net_total));
Anand Doshif3096132013-05-21 19:35:06 +0530175 }
176 },
Anand Doshibd67e872014-04-11 16:51:27 +0530177
Anand Doshif3096132013-05-21 19:35:06 +0530178 allocated_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530179 var sales_person = frappe.get_doc(cdt, cdn);
Anand Doshibd67e872014-04-11 16:51:27 +0530180
Anand Doshif3096132013-05-21 19:35:06 +0530181 if(sales_person.allocated_percentage) {
182 sales_person.allocated_percentage = flt(sales_person.allocated_percentage,
183 precision("allocated_percentage", sales_person));
Nabin Hait5690be12015-02-12 16:09:11 +0530184 sales_person.allocated_amount = flt(this.frm.doc.base_net_total *
Anand Doshibd67e872014-04-11 16:51:27 +0530185 sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530186 precision("allocated_amount", sales_person));
187
188 refresh_field(["allocated_percentage", "allocated_amount"], sales_person.name,
189 sales_person.parentfield);
190 }
191 },
Anand Doshibd67e872014-04-11 16:51:27 +0530192
Anand Doshifc777182013-05-27 19:29:07 +0530193 warehouse: function(doc, cdt, cdn) {
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530194 var me = this;
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530195 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehtabe2ee182016-04-29 17:22:42 +0530196
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530197 if(item.item_code && item.warehouse) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530198 return this.frm.call({
Saurabhd3135532016-02-25 18:59:20 +0530199 method: "erpnext.stock.get_item_details.get_bin_details",
Anand Doshifc777182013-05-27 19:29:07 +0530200 child: item,
201 args: {
202 item_code: item.item_code,
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530203 warehouse: item.warehouse,
Anand Doshifc777182013-05-27 19:29:07 +0530204 },
Saurabhd3135532016-02-25 18:59:20 +0530205 callback:function(r){
206 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
207 me.batch_no(doc, cdt, cdn);
208 }
209 }
Anand Doshifc777182013-05-27 19:29:07 +0530210 });
211 }
212 },
Anand Doshibd67e872014-04-11 16:51:27 +0530213
Anand Doshi33fe8672013-08-02 12:39:10 +0530214 toggle_editable_price_list_rate: function() {
Nabin Haitdd38a262014-12-26 13:15:21 +0530215 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 +0530216 var editable_price_list_rate = cint(frappe.defaults.get_default("editable_price_list_rate"));
Anand Doshibd67e872014-04-11 16:51:27 +0530217
Anand Doshi33fe8672013-08-02 12:39:10 +0530218 if(df && editable_price_list_rate) {
219 df.read_only = 0;
220 }
221 },
Anand Doshibd67e872014-04-11 16:51:27 +0530222
Anand Doshif3096132013-05-21 19:35:06 +0530223 calculate_commission: function() {
Anand Doshi923d41d2013-05-28 17:23:36 +0530224 if(this.frm.fields_dict.commission_rate) {
225 if(this.frm.doc.commission_rate > 100) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530226 var msg = __(frappe.meta.get_label(this.frm.doc.doctype, "commission_rate", this.frm.doc.name)) +
227 " " + __("cannot be greater than 100");
Anand Doshi923d41d2013-05-28 17:23:36 +0530228 msgprint(msg);
229 throw msg;
230 }
Anand Doshibd67e872014-04-11 16:51:27 +0530231
Nabin Hait5690be12015-02-12 16:09:11 +0530232 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 +0530233 precision("total_commission"));
234 }
Anand Doshif3096132013-05-21 19:35:06 +0530235 },
Anand Doshibd67e872014-04-11 16:51:27 +0530236
Anand Doshif3096132013-05-21 19:35:06 +0530237 calculate_contribution: function() {
Anand Doshi2168e392013-05-23 19:25:08 +0530238 var me = this;
Rushabh Mehtaaa355af2014-03-26 18:24:30 +0530239 $.each(this.frm.doc.doctype.sales_team || [], function(i, sales_person) {
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530240 frappe.model.round_floats_in(sales_person);
Anand Doshif3096132013-05-21 19:35:06 +0530241 if(sales_person.allocated_percentage) {
242 sales_person.allocated_amount = flt(
Nabin Hait5690be12015-02-12 16:09:11 +0530243 me.frm.doc.base_net_total * sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530244 precision("allocated_amount", sales_person));
245 }
246 });
247 },
Anand Doshibd67e872014-04-11 16:51:27 +0530248
Anand Doshicefccb92013-07-15 18:28:14 +0530249 shipping_rule: function() {
250 var me = this;
251 if(this.frm.doc.shipping_rule) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530252 return this.frm.call({
Anand Doshicefccb92013-07-15 18:28:14 +0530253 doc: this.frm.doc,
254 method: "apply_shipping_rule",
255 callback: function(r) {
256 if(!r.exc) {
257 me.calculate_taxes_and_totals();
258 }
259 }
260 })
261 }
262 },
Anand Doshibd67e872014-04-11 16:51:27 +0530263
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530264 batch_no: function(doc, cdt, cdn) {
265 var me = this;
266 var item = frappe.get_doc(cdt, cdn);
Nabin Hait2ed71ba2015-03-20 15:06:30 +0530267
Sambhaji Kolatea4fa96c2015-03-30 16:04:55 +0530268 if(item.warehouse && item.item_code && item.batch_no) {
Sambhaji Kolatefeff40a2015-03-11 11:50:28 +0530269 return this.frm.call({
270 method: "erpnext.stock.get_item_details.get_batch_qty",
271 child: item,
272 args: {
273 "batch_no": item.batch_no,
274 "warehouse": item.warehouse,
275 "item_code": item.item_code
276 },
277 "fieldname": "actual_batch_qty"
278 });
279 }
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530280 },
281
Anand Doshi2168e392013-05-23 19:25:08 +0530282 set_dynamic_labels: function() {
Anand Doshi61a2f682013-06-21 17:55:31 +0530283 this._super();
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530284 this.set_product_bundle_help(this.frm.doc);
Nabin Hait0b157552014-06-24 17:02:45 +0530285 },
286
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530287 set_product_bundle_help: function(doc) {
Nabin Hait0b157552014-06-24 17:02:45 +0530288 if(!cur_frm.fields_dict.packing_list) return;
Nabin Haite7d15362014-12-25 16:01:55 +0530289 if ((doc.packed_items || []).length) {
Nabin Hait0b157552014-06-24 17:02:45 +0530290 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true);
291
292 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
293 help_msg = "<div class='alert alert-warning'>" +
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530294 __("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 +0530295 "</div>";
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530296 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = help_msg;
Nabin Hait0b157552014-06-24 17:02:45 +0530297 }
298 } else {
299 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false);
300 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530301 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = '';
Nabin Hait0b157552014-06-24 17:02:45 +0530302 }
303 }
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530304 refresh_field('product_bundle_help');
Saurabheba7aa42015-12-16 09:57:59 +0530305 },
Anand Doshi01de9452016-01-26 16:22:50 +0530306
Saurabheba7aa42015-12-16 09:57:59 +0530307 make_payment_request: function() {
Saurabheba7aa42015-12-16 09:57:59 +0530308 frappe.call({
309 method:"erpnext.accounts.doctype.payment_request.payment_request.make_payment_request",
310 args: {
311 "dt": cur_frm.doc.doctype,
312 "dn": cur_frm.doc.name,
Saurabhb109ee92015-12-16 20:48:40 +0530313 "recipient_id": cur_frm.doc.contact_email
Saurabheba7aa42015-12-16 09:57:59 +0530314 },
315 callback: function(r) {
Saurabhcb98d9e2015-12-17 09:48:44 +0530316 if(!r.exc){
Saurabh3ba22672015-12-21 18:24:49 +0530317 var doc = frappe.model.sync(r.message);
Saurabh3ba22672015-12-21 18:24:49 +0530318 frappe.set_route("Form", r.message.doctype, r.message.name);
Saurabhcb98d9e2015-12-17 09:48:44 +0530319 }
Saurabheba7aa42015-12-16 09:57:59 +0530320 }
321 })
mbauskar1e9c1642016-01-18 16:21:25 +0530322 },
mbauskar1e428ae2016-01-19 19:52:22 +0530323
324 rate: function(doc, cdt, cdn){
325 // if user changes the rate then set margin Rate or amount to 0
326 item = locals[cdt][cdn];
mbauskara52472c2016-03-05 15:10:25 +0530327 item.margin_type = "";
328 item.margin_rate_or_amount = 0.0;
mbauskar1e428ae2016-01-19 19:52:22 +0530329 cur_frm.refresh_fields();
330 },
331
mbauskara52472c2016-03-05 15:10:25 +0530332 margin_rate_or_amount: function(doc, cdt, cdn) {
mbauskar1e9c1642016-01-18 16:21:25 +0530333 // calculated the revised total margin and rate on margin rate changes
334 item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530335 this.apply_pricing_rule_on_item(item)
mbauskara52472c2016-03-05 15:10:25 +0530336 this.calculate_taxes_and_totals();
mbauskar1e9c1642016-01-18 16:21:25 +0530337 cur_frm.refresh_fields();
338 },
mbauskar1e428ae2016-01-19 19:52:22 +0530339
mbauskara52472c2016-03-05 15:10:25 +0530340 margin_type: function(doc, cdt, cdn){
mbauskar1e9c1642016-01-18 16:21:25 +0530341 // calculate the revised total margin and rate on margin type changes
342 item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530343 this.apply_pricing_rule_on_item(item, doc,cdt, cdn)
mbauskara52472c2016-03-05 15:10:25 +0530344 this.calculate_taxes_and_totals();
mbauskar1e428ae2016-01-19 19:52:22 +0530345 cur_frm.refresh_fields();
Nabin Haitcfc6bb12012-07-11 13:14:52 +0530346 }
Nabin Hait0b157552014-06-24 17:02:45 +0530347});
Anand Doshi43f087c2014-08-26 14:25:53 +0530348
Neil Trini Lasrado6e343e22016-03-09 17:02:59 +0530349frappe.ui.form.on(cur_frm.doctype,"project", function(frm) {
Nabin Hait10b155a2014-10-23 13:18:59 +0530350 if(in_list(["Delivery Note", "Sales Invoice"], frm.doc.doctype)) {
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530351 if(frm.doc.project) {
352 frappe.call({
353 method:'erpnext.projects.doctype.project.project.get_cost_center_name' ,
354 args: { project: frm.doc.project },
355 callback: function(r, rt) {
356 if(!r.exc) {
357 $.each(frm.doc["items"] || [], function(i, row) {
358 if(r.message) {
359 frappe.model.set_value(row.doctype, row.name, "cost_center", r.message);
360 msgprint(__("Cost Center For Item with Item Code '"+row.item_name+"' has been Changed to "+ r.message));
361 }
362 })
363 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530364 }
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530365 })
366 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530367 }
Anand Doshi43f087c2014-08-26 14:25:53 +0530368})