blob: 7ddf45d529622834d451c2d069decc9feec30d5c [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
Rushabh Mehta698c0402016-11-22 23:16:40 +053069 if(this.frm.fields_dict["packed_items"] &&
70 this.frm.fields_dict["packed_items"].grid.get_field('batch_no')) {
Rohit Waghchauree887e922016-11-18 12:16:22 +053071 this.frm.set_query("batch_no", "packed_items", function(doc, cdt, cdn) {
72 return me.set_query_for_batch(doc, cdt, cdn)
73 });
74 }
75
Nabin Haitdd38a262014-12-26 13:15:21 +053076 if(this.frm.fields_dict["items"].grid.get_field('batch_no')) {
77 this.frm.set_query("batch_no", "items", function(doc, cdt, cdn) {
Rohit Waghchauree887e922016-11-18 12:16:22 +053078 return me.set_query_for_batch(doc, cdt, cdn)
Anand Doshi99100a42013-07-04 17:13:53 +053079 });
80 }
Anand Doshi1dde46a2013-05-15 21:15:57 +053081 },
Anand Doshibd67e872014-04-11 16:51:27 +053082
Rohit Waghchauree887e922016-11-18 12:16:22 +053083 set_query_for_batch: function(doc, cdt, cdn) {
84 // Show item's batches in the dropdown of batch no
85
86 var me = this;
87 var item = frappe.get_doc(cdt, cdn);
88
89 if(!item.item_code) {
90 frappe.throw(__("Please enter Item Code to get batch no"));
91 } else {
92 filters = {
93 'item_code': item.item_code,
94 'posting_date': me.frm.doc.posting_date || frappe.datetime.nowdate(),
95 }
96 if(item.warehouse) filters["warehouse"] = item.warehouse
97
98 return {
99 query : "erpnext.controllers.queries.get_batch_no",
100 filters: filters
101 }
102 }
103 },
104
Anand Doshic4a54fe2013-08-01 18:19:51 +0530105 refresh: function() {
106 this._super();
Anand Doshibd67e872014-04-11 16:51:27 +0530107 this.frm.toggle_display("customer_name",
Akhilesh Darjee5ce1b8b2013-12-09 16:29:04 +0530108 (this.frm.doc.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer));
Nabin Haite7d15362014-12-25 16:01:55 +0530109 if(this.frm.fields_dict.packed_items) {
110 var packing_list_exists = (this.frm.doc.packed_items || []).length;
Anand Doshic4a54fe2013-08-01 18:19:51 +0530111 this.frm.toggle_display("packing_list", packing_list_exists ? true : false);
112 }
Nabin Hait2029ea92015-04-16 17:55:35 +0530113 this.toggle_editable_price_list_rate();
Rushabh Mehta8aded132013-07-04 12:50:52 +0530114 },
Anand Doshibd67e872014-04-11 16:51:27 +0530115
Anand Doshi3543f302013-05-24 19:25:01 +0530116 customer: function() {
Nabin Haita3dd72a2014-05-28 12:49:20 +0530117 var me = this;
118 erpnext.utils.get_party_details(this.frm, null, null, function(){me.apply_pricing_rule()});
Anand Doshi3543f302013-05-24 19:25:01 +0530119 },
Anand Doshibd67e872014-04-11 16:51:27 +0530120
Nabin Haita279d782013-07-15 13:04:33 +0530121 customer_address: function() {
Rushabh Mehtab09d9da2014-01-02 11:47:23 +0530122 erpnext.utils.get_address_display(this.frm, "customer_address");
Nabin Haita279d782013-07-15 13:04:33 +0530123 },
Anand Doshibd67e872014-04-11 16:51:27 +0530124
Nabin Hait9d1f0772014-02-19 17:43:24 +0530125 shipping_address_name: function() {
126 erpnext.utils.get_address_display(this.frm, "shipping_address_name", "shipping_address");
127 },
Anand Doshibd67e872014-04-11 16:51:27 +0530128
Nabin Haita3dd72a2014-05-28 12:49:20 +0530129 sales_partner: function() {
130 this.apply_pricing_rule();
131 },
132
133 campaign: function() {
134 this.apply_pricing_rule();
135 },
136
Rushabh Mehta4a404e92013-08-09 18:11:35 +0530137 selling_price_list: function() {
Anand Doshidffec8f2014-07-01 17:45:15 +0530138 this.apply_price_list();
Anand Doshif3096132013-05-21 19:35:06 +0530139 },
Anand Doshibd67e872014-04-11 16:51:27 +0530140
Nabin Haita7f757a2014-02-10 17:54:04 +0530141 price_list_rate: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530142 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530143 frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530144
mbauskara52472c2016-03-05 15:10:25 +0530145 // check if child doctype is Sales Order Item/Qutation Item and calculate the rate
146 if(in_list(["Quotation Item", "Sales Order Item", "Delivery Note Item", "Sales Invoice Item"]), cdt)
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530147 this.apply_pricing_rule_on_item(item);
mbauskara52472c2016-03-05 15:10:25 +0530148 else
149 item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0),
150 precision("rate", item));
151
Anand Doshif3096132013-05-21 19:35:06 +0530152 this.calculate_taxes_and_totals();
153 },
Anand Doshibd67e872014-04-11 16:51:27 +0530154
Nabin Haita7f757a2014-02-10 17:54:04 +0530155 discount_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530156 var item = frappe.get_doc(cdt, cdn);
Nabin Haita7f757a2014-02-10 17:54:04 +0530157 if(!item.price_list_rate) {
158 item.discount_percentage = 0.0;
Anand Doshi923d41d2013-05-28 17:23:36 +0530159 } else {
Nabin Haita7f757a2014-02-10 17:54:04 +0530160 this.price_list_rate(doc, cdt, cdn);
Anand Doshi923d41d2013-05-28 17:23:36 +0530161 }
Saurabh5ada14b2016-02-26 18:02:55 +0530162 this.set_gross_profit(item);
Anand Doshif3096132013-05-21 19:35:06 +0530163 },
Anand Doshibd67e872014-04-11 16:51:27 +0530164
Anand Doshif3096132013-05-21 19:35:06 +0530165 commission_rate: function() {
166 this.calculate_commission();
167 refresh_field("total_commission");
168 },
Anand Doshibd67e872014-04-11 16:51:27 +0530169
Anand Doshif3096132013-05-21 19:35:06 +0530170 total_commission: function() {
Nabin Hait5690be12015-02-12 16:09:11 +0530171 if(this.frm.doc.base_net_total) {
172 frappe.model.round_floats_in(this.frm.doc, ["base_net_total", "total_commission"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530173
Nabin Hait5690be12015-02-12 16:09:11 +0530174 if(this.frm.doc.base_net_total < this.frm.doc.total_commission) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530175 var msg = (__("[Error]") + " " +
176 __(frappe.meta.get_label(this.frm.doc.doctype, "total_commission",
Anand Doshibd67e872014-04-11 16:51:27 +0530177 this.frm.doc.name)) + " > " +
Nabin Hait5690be12015-02-12 16:09:11 +0530178 __(frappe.meta.get_label(this.frm.doc.doctype, "base_net_total", this.frm.doc.name)));
Anand Doshif3096132013-05-21 19:35:06 +0530179 msgprint(msg);
180 throw msg;
181 }
Anand Doshibd67e872014-04-11 16:51:27 +0530182
183 this.frm.set_value("commission_rate",
Nabin Hait5690be12015-02-12 16:09:11 +0530184 flt(this.frm.doc.total_commission * 100.0 / this.frm.doc.base_net_total));
Anand Doshif3096132013-05-21 19:35:06 +0530185 }
186 },
Anand Doshibd67e872014-04-11 16:51:27 +0530187
Anand Doshif3096132013-05-21 19:35:06 +0530188 allocated_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530189 var sales_person = frappe.get_doc(cdt, cdn);
Anand Doshibd67e872014-04-11 16:51:27 +0530190
Anand Doshif3096132013-05-21 19:35:06 +0530191 if(sales_person.allocated_percentage) {
192 sales_person.allocated_percentage = flt(sales_person.allocated_percentage,
193 precision("allocated_percentage", sales_person));
Nabin Hait5690be12015-02-12 16:09:11 +0530194 sales_person.allocated_amount = flt(this.frm.doc.base_net_total *
Anand Doshibd67e872014-04-11 16:51:27 +0530195 sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530196 precision("allocated_amount", sales_person));
197
198 refresh_field(["allocated_percentage", "allocated_amount"], sales_person.name,
199 sales_person.parentfield);
200 }
201 },
Anand Doshibd67e872014-04-11 16:51:27 +0530202
Anand Doshifc777182013-05-27 19:29:07 +0530203 warehouse: function(doc, cdt, cdn) {
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530204 var me = this;
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530205 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehtabe2ee182016-04-29 17:22:42 +0530206
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530207 if(item.item_code && item.warehouse) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530208 return this.frm.call({
Kanchan Chauhanaf0d6372016-11-13 21:19:09 +0530209 method: "erpnext.stock.get_item_details.get_bin_details_and_serial_nos",
Anand Doshifc777182013-05-27 19:29:07 +0530210 child: item,
211 args: {
212 item_code: item.item_code,
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530213 warehouse: item.warehouse,
Kanchan Chauhanaf0d6372016-11-13 21:19:09 +0530214 qty: item.qty,
Nabin Hait1d90b412016-12-24 10:42:23 +0530215 serial_no: item.serial_no || ""
Anand Doshifc777182013-05-27 19:29:07 +0530216 },
Saurabhd3135532016-02-25 18:59:20 +0530217 callback:function(r){
218 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
219 me.batch_no(doc, cdt, cdn);
220 }
221 }
Anand Doshifc777182013-05-27 19:29:07 +0530222 });
223 }
224 },
Anand Doshibd67e872014-04-11 16:51:27 +0530225
Anand Doshi33fe8672013-08-02 12:39:10 +0530226 toggle_editable_price_list_rate: function() {
Nabin Haitdd38a262014-12-26 13:15:21 +0530227 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 +0530228 var editable_price_list_rate = cint(frappe.defaults.get_default("editable_price_list_rate"));
Anand Doshibd67e872014-04-11 16:51:27 +0530229
Anand Doshi33fe8672013-08-02 12:39:10 +0530230 if(df && editable_price_list_rate) {
231 df.read_only = 0;
232 }
233 },
Anand Doshibd67e872014-04-11 16:51:27 +0530234
Anand Doshif3096132013-05-21 19:35:06 +0530235 calculate_commission: function() {
Anand Doshi923d41d2013-05-28 17:23:36 +0530236 if(this.frm.fields_dict.commission_rate) {
237 if(this.frm.doc.commission_rate > 100) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530238 var msg = __(frappe.meta.get_label(this.frm.doc.doctype, "commission_rate", this.frm.doc.name)) +
239 " " + __("cannot be greater than 100");
Anand Doshi923d41d2013-05-28 17:23:36 +0530240 msgprint(msg);
241 throw msg;
242 }
Anand Doshibd67e872014-04-11 16:51:27 +0530243
Nabin Hait5690be12015-02-12 16:09:11 +0530244 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 +0530245 precision("total_commission"));
246 }
Anand Doshif3096132013-05-21 19:35:06 +0530247 },
Anand Doshibd67e872014-04-11 16:51:27 +0530248
Anand Doshif3096132013-05-21 19:35:06 +0530249 calculate_contribution: function() {
Anand Doshi2168e392013-05-23 19:25:08 +0530250 var me = this;
Rushabh Mehtaaa355af2014-03-26 18:24:30 +0530251 $.each(this.frm.doc.doctype.sales_team || [], function(i, sales_person) {
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530252 frappe.model.round_floats_in(sales_person);
Anand Doshif3096132013-05-21 19:35:06 +0530253 if(sales_person.allocated_percentage) {
254 sales_person.allocated_amount = flt(
Nabin Hait5690be12015-02-12 16:09:11 +0530255 me.frm.doc.base_net_total * sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530256 precision("allocated_amount", sales_person));
257 }
258 });
259 },
Anand Doshibd67e872014-04-11 16:51:27 +0530260
Anand Doshicefccb92013-07-15 18:28:14 +0530261 shipping_rule: function() {
262 var me = this;
263 if(this.frm.doc.shipping_rule) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530264 return this.frm.call({
Anand Doshicefccb92013-07-15 18:28:14 +0530265 doc: this.frm.doc,
266 method: "apply_shipping_rule",
267 callback: function(r) {
268 if(!r.exc) {
269 me.calculate_taxes_and_totals();
270 }
271 }
272 })
273 }
274 },
Anand Doshibd67e872014-04-11 16:51:27 +0530275
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530276 batch_no: function(doc, cdt, cdn) {
277 var me = this;
278 var item = frappe.get_doc(cdt, cdn);
Nabin Hait2ed71ba2015-03-20 15:06:30 +0530279
Sambhaji Kolatea4fa96c2015-03-30 16:04:55 +0530280 if(item.warehouse && item.item_code && item.batch_no) {
Sambhaji Kolatefeff40a2015-03-11 11:50:28 +0530281 return this.frm.call({
282 method: "erpnext.stock.get_item_details.get_batch_qty",
283 child: item,
284 args: {
285 "batch_no": item.batch_no,
286 "warehouse": item.warehouse,
287 "item_code": item.item_code
288 },
289 "fieldname": "actual_batch_qty"
290 });
291 }
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530292 },
293
Anand Doshi2168e392013-05-23 19:25:08 +0530294 set_dynamic_labels: function() {
Anand Doshi61a2f682013-06-21 17:55:31 +0530295 this._super();
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530296 this.set_product_bundle_help(this.frm.doc);
Nabin Hait0b157552014-06-24 17:02:45 +0530297 },
298
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530299 set_product_bundle_help: function(doc) {
Nabin Hait0b157552014-06-24 17:02:45 +0530300 if(!cur_frm.fields_dict.packing_list) return;
Nabin Haite7d15362014-12-25 16:01:55 +0530301 if ((doc.packed_items || []).length) {
Nabin Hait0b157552014-06-24 17:02:45 +0530302 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true);
303
304 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
305 help_msg = "<div class='alert alert-warning'>" +
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530306 __("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 +0530307 "</div>";
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530308 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = help_msg;
Nabin Hait0b157552014-06-24 17:02:45 +0530309 }
310 } else {
311 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false);
312 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530313 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = '';
Nabin Hait0b157552014-06-24 17:02:45 +0530314 }
315 }
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530316 refresh_field('product_bundle_help');
Saurabheba7aa42015-12-16 09:57:59 +0530317 },
Anand Doshi01de9452016-01-26 16:22:50 +0530318
Saurabheba7aa42015-12-16 09:57:59 +0530319 make_payment_request: function() {
Saurabheba7aa42015-12-16 09:57:59 +0530320 frappe.call({
321 method:"erpnext.accounts.doctype.payment_request.payment_request.make_payment_request",
322 args: {
323 "dt": cur_frm.doc.doctype,
324 "dn": cur_frm.doc.name,
Saurabhb109ee92015-12-16 20:48:40 +0530325 "recipient_id": cur_frm.doc.contact_email
Saurabheba7aa42015-12-16 09:57:59 +0530326 },
327 callback: function(r) {
Saurabhcb98d9e2015-12-17 09:48:44 +0530328 if(!r.exc){
Saurabh3ba22672015-12-21 18:24:49 +0530329 var doc = frappe.model.sync(r.message);
Saurabh3ba22672015-12-21 18:24:49 +0530330 frappe.set_route("Form", r.message.doctype, r.message.name);
Saurabhcb98d9e2015-12-17 09:48:44 +0530331 }
Saurabheba7aa42015-12-16 09:57:59 +0530332 }
333 })
mbauskar1e9c1642016-01-18 16:21:25 +0530334 },
mbauskar1e428ae2016-01-19 19:52:22 +0530335
336 rate: function(doc, cdt, cdn){
337 // if user changes the rate then set margin Rate or amount to 0
338 item = locals[cdt][cdn];
mbauskara52472c2016-03-05 15:10:25 +0530339 item.margin_type = "";
340 item.margin_rate_or_amount = 0.0;
mbauskar1e428ae2016-01-19 19:52:22 +0530341 cur_frm.refresh_fields();
342 },
343
mbauskara52472c2016-03-05 15:10:25 +0530344 margin_rate_or_amount: function(doc, cdt, cdn) {
mbauskar1e9c1642016-01-18 16:21:25 +0530345 // calculated the revised total margin and rate on margin rate changes
346 item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530347 this.apply_pricing_rule_on_item(item)
mbauskara52472c2016-03-05 15:10:25 +0530348 this.calculate_taxes_and_totals();
mbauskar1e9c1642016-01-18 16:21:25 +0530349 cur_frm.refresh_fields();
350 },
mbauskar1e428ae2016-01-19 19:52:22 +0530351
mbauskara52472c2016-03-05 15:10:25 +0530352 margin_type: function(doc, cdt, cdn){
mbauskar1e9c1642016-01-18 16:21:25 +0530353 // calculate the revised total margin and rate on margin type changes
354 item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530355 this.apply_pricing_rule_on_item(item, doc,cdt, cdn)
mbauskara52472c2016-03-05 15:10:25 +0530356 this.calculate_taxes_and_totals();
mbauskar1e428ae2016-01-19 19:52:22 +0530357 cur_frm.refresh_fields();
Nabin Haitcfc6bb12012-07-11 13:14:52 +0530358 }
Nabin Hait0b157552014-06-24 17:02:45 +0530359});
Anand Doshi43f087c2014-08-26 14:25:53 +0530360
Neil Trini Lasrado6e343e22016-03-09 17:02:59 +0530361frappe.ui.form.on(cur_frm.doctype,"project", function(frm) {
Nabin Hait10b155a2014-10-23 13:18:59 +0530362 if(in_list(["Delivery Note", "Sales Invoice"], frm.doc.doctype)) {
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530363 if(frm.doc.project) {
364 frappe.call({
365 method:'erpnext.projects.doctype.project.project.get_cost_center_name' ,
366 args: { project: frm.doc.project },
367 callback: function(r, rt) {
368 if(!r.exc) {
369 $.each(frm.doc["items"] || [], function(i, row) {
370 if(r.message) {
371 frappe.model.set_value(row.doctype, row.name, "cost_center", r.message);
372 msgprint(__("Cost Center For Item with Item Code '"+row.item_name+"' has been Changed to "+ r.message));
373 }
374 })
375 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530376 }
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530377 })
378 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530379 }
Kanchan Chauhanaf0d6372016-11-13 21:19:09 +0530380})