blob: e613daf84ae86d36b3860fc6494a1b64477e1869 [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({
Anand Doshi9b496142013-07-11 19:13:58 +053013 onload: function() {
14 this._super();
Anand Doshi9b496142013-07-11 19:13:58 +053015 this.setup_queries();
16 },
Anand Doshibd67e872014-04-11 16:51:27 +053017
Anand Doshi9b496142013-07-11 19:13:58 +053018 setup_queries: function() {
Anand Doshi99100a42013-07-04 17:13:53 +053019 var me = this;
Anand Doshibd67e872014-04-11 16:51:27 +053020
Anand Doshif3096132013-05-21 19:35:06 +053021 this.frm.add_fetch("sales_partner", "commission_rate", "commission_rate");
Anand Doshibd67e872014-04-11 16:51:27 +053022
23 $.each([["customer_address", "customer_filter"],
Anand Doshid5d39ac2013-07-29 13:28:37 +053024 ["shipping_address_name", "customer_filter"],
Anand Doshibd67e872014-04-11 16:51:27 +053025 ["contact_person", "customer_filter"],
26 ["customer", "customer"],
27 ["lead", "lead"]],
Anand Doshid5d39ac2013-07-29 13:28:37 +053028 function(i, opts) {
Anand Doshibd67e872014-04-11 16:51:27 +053029 if(me.frm.fields_dict[opts[0]])
Anand Doshid5d39ac2013-07-29 13:28:37 +053030 me.frm.set_query(opts[0], erpnext.queries[opts[1]]);
31 });
Anand Doshibd67e872014-04-11 16:51:27 +053032
Akhilesh Darjee4f721562014-01-29 16:31:38 +053033 if(this.frm.fields_dict.taxes_and_charges) {
34 this.frm.set_query("taxes_and_charges", function() {
Saurabhf52dc072013-07-10 13:07:49 +053035 return {
36 filters: [
Rushabh Mehtaab1ed012015-05-08 11:08:48 +053037 ['Sales Taxes and Charges Template', 'company', '=', me.frm.doc.company],
38 ['Sales Taxes and Charges Template', 'docstatus', '!=', 2]
Saurabhf52dc072013-07-10 13:07:49 +053039 ]
40 }
Anand Doshi99100a42013-07-04 17:13:53 +053041 });
42 }
Anand Doshi99100a42013-07-04 17:13:53 +053043
Rushabh Mehta4a404e92013-08-09 18:11:35 +053044 if(this.frm.fields_dict.selling_price_list) {
45 this.frm.set_query("selling_price_list", function() {
Nabin Haitdc15b4f2014-01-20 16:48:49 +053046 return { filters: { selling: 1 } };
Anand Doshi720a01a2013-07-26 11:32:02 +053047 });
Anand Doshi720a01a2013-07-26 11:32:02 +053048 }
Anand Doshibd67e872014-04-11 16:51:27 +053049
Nabin Haitdd38a262014-12-26 13:15:21 +053050 if(!this.frm.fields_dict["items"]) {
Anand Doshi99100a42013-07-04 17:13:53 +053051 return;
52 }
Anand Doshibd67e872014-04-11 16:51:27 +053053
Nabin Haitdd38a262014-12-26 13:15:21 +053054 if(this.frm.fields_dict["items"].grid.get_field('item_code')) {
55 this.frm.set_query("item_code", "items", function() {
Anand Doshi9b496142013-07-11 19:13:58 +053056 return {
Umair Sayyed72534de2016-04-15 12:52:12 +053057 query: "erpnext.controllers.queries.item_query"
Anand Doshi9b496142013-07-11 19:13:58 +053058 }
Anand Doshi99100a42013-07-04 17:13:53 +053059 });
60 }
Anand Doshibd67e872014-04-11 16:51:27 +053061
Nabin Haitdd38a262014-12-26 13:15:21 +053062 if(this.frm.fields_dict["items"].grid.get_field('batch_no')) {
63 this.frm.set_query("batch_no", "items", function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +053064 var item = frappe.get_doc(cdt, cdn);
Anand Doshi99100a42013-07-04 17:13:53 +053065 if(!item.item_code) {
Pratik Vyasb52618c2014-04-14 16:25:30 +053066 frappe.throw(__("Please enter Item Code to get batch no"));
Anand Doshi99100a42013-07-04 17:13:53 +053067 } else {
Nabin Haitd1fd1e22013-10-18 12:29:11 +053068 filters = {
69 'item_code': item.item_code,
Neil Trini Lasradoebb60f52015-07-08 14:36:09 +053070 'posting_date': me.frm.doc.posting_date || nowdate(),
Nabin Haitd1fd1e22013-10-18 12:29:11 +053071 }
72 if(item.warehouse) filters["warehouse"] = item.warehouse
Anand Doshibd67e872014-04-11 16:51:27 +053073
Nabin Haitd1fd1e22013-10-18 12:29:11 +053074 return {
Akhilesh Darjee4f721562014-01-29 16:31:38 +053075 query : "erpnext.controllers.queries.get_batch_no",
Nabin Haitd1fd1e22013-10-18 12:29:11 +053076 filters: filters
Anand Doshi99100a42013-07-04 17:13:53 +053077 }
78 }
79 });
80 }
Anand Doshi1dde46a2013-05-15 21:15:57 +053081 },
Anand Doshibd67e872014-04-11 16:51:27 +053082
Anand Doshic4a54fe2013-08-01 18:19:51 +053083 refresh: function() {
84 this._super();
Anand Doshibd67e872014-04-11 16:51:27 +053085 this.frm.toggle_display("customer_name",
Akhilesh Darjee5ce1b8b2013-12-09 16:29:04 +053086 (this.frm.doc.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer));
Nabin Haite7d15362014-12-25 16:01:55 +053087 if(this.frm.fields_dict.packed_items) {
88 var packing_list_exists = (this.frm.doc.packed_items || []).length;
Anand Doshic4a54fe2013-08-01 18:19:51 +053089 this.frm.toggle_display("packing_list", packing_list_exists ? true : false);
90 }
Nabin Hait2029ea92015-04-16 17:55:35 +053091 this.toggle_editable_price_list_rate();
Rushabh Mehta8aded132013-07-04 12:50:52 +053092 },
Anand Doshibd67e872014-04-11 16:51:27 +053093
Anand Doshi3543f302013-05-24 19:25:01 +053094 customer: function() {
Nabin Haita3dd72a2014-05-28 12:49:20 +053095 var me = this;
96 erpnext.utils.get_party_details(this.frm, null, null, function(){me.apply_pricing_rule()});
Anand Doshi3543f302013-05-24 19:25:01 +053097 },
Anand Doshibd67e872014-04-11 16:51:27 +053098
Nabin Haita279d782013-07-15 13:04:33 +053099 customer_address: function() {
Rushabh Mehtab09d9da2014-01-02 11:47:23 +0530100 erpnext.utils.get_address_display(this.frm, "customer_address");
Nabin Haita279d782013-07-15 13:04:33 +0530101 },
Anand Doshibd67e872014-04-11 16:51:27 +0530102
Nabin Hait9d1f0772014-02-19 17:43:24 +0530103 shipping_address_name: function() {
104 erpnext.utils.get_address_display(this.frm, "shipping_address_name", "shipping_address");
105 },
Anand Doshibd67e872014-04-11 16:51:27 +0530106
Nabin Haita3dd72a2014-05-28 12:49:20 +0530107 sales_partner: function() {
108 this.apply_pricing_rule();
109 },
110
111 campaign: function() {
112 this.apply_pricing_rule();
113 },
114
Rushabh Mehta4a404e92013-08-09 18:11:35 +0530115 selling_price_list: function() {
Anand Doshidffec8f2014-07-01 17:45:15 +0530116 this.apply_price_list();
Anand Doshif3096132013-05-21 19:35:06 +0530117 },
Anand Doshibd67e872014-04-11 16:51:27 +0530118
Nabin Haita7f757a2014-02-10 17:54:04 +0530119 price_list_rate: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530120 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530121 frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530122
mbauskara52472c2016-03-05 15:10:25 +0530123 // check if child doctype is Sales Order Item/Qutation Item and calculate the rate
124 if(in_list(["Quotation Item", "Sales Order Item", "Delivery Note Item", "Sales Invoice Item"]), cdt)
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530125 this.apply_pricing_rule_on_item(item);
mbauskara52472c2016-03-05 15:10:25 +0530126 else
127 item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0),
128 precision("rate", item));
129
Anand Doshif3096132013-05-21 19:35:06 +0530130 this.calculate_taxes_and_totals();
131 },
Anand Doshibd67e872014-04-11 16:51:27 +0530132
Nabin Haita7f757a2014-02-10 17:54:04 +0530133 discount_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530134 var item = frappe.get_doc(cdt, cdn);
Nabin Haita7f757a2014-02-10 17:54:04 +0530135 if(!item.price_list_rate) {
136 item.discount_percentage = 0.0;
Anand Doshi923d41d2013-05-28 17:23:36 +0530137 } else {
Nabin Haita7f757a2014-02-10 17:54:04 +0530138 this.price_list_rate(doc, cdt, cdn);
Anand Doshi923d41d2013-05-28 17:23:36 +0530139 }
Saurabh5ada14b2016-02-26 18:02:55 +0530140 this.set_gross_profit(item);
Anand Doshif3096132013-05-21 19:35:06 +0530141 },
Anand Doshibd67e872014-04-11 16:51:27 +0530142
Anand Doshif3096132013-05-21 19:35:06 +0530143 commission_rate: function() {
144 this.calculate_commission();
145 refresh_field("total_commission");
146 },
Anand Doshibd67e872014-04-11 16:51:27 +0530147
Anand Doshif3096132013-05-21 19:35:06 +0530148 total_commission: function() {
Nabin Hait5690be12015-02-12 16:09:11 +0530149 if(this.frm.doc.base_net_total) {
150 frappe.model.round_floats_in(this.frm.doc, ["base_net_total", "total_commission"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530151
Nabin Hait5690be12015-02-12 16:09:11 +0530152 if(this.frm.doc.base_net_total < this.frm.doc.total_commission) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530153 var msg = (__("[Error]") + " " +
154 __(frappe.meta.get_label(this.frm.doc.doctype, "total_commission",
Anand Doshibd67e872014-04-11 16:51:27 +0530155 this.frm.doc.name)) + " > " +
Nabin Hait5690be12015-02-12 16:09:11 +0530156 __(frappe.meta.get_label(this.frm.doc.doctype, "base_net_total", this.frm.doc.name)));
Anand Doshif3096132013-05-21 19:35:06 +0530157 msgprint(msg);
158 throw msg;
159 }
Anand Doshibd67e872014-04-11 16:51:27 +0530160
161 this.frm.set_value("commission_rate",
Nabin Hait5690be12015-02-12 16:09:11 +0530162 flt(this.frm.doc.total_commission * 100.0 / this.frm.doc.base_net_total));
Anand Doshif3096132013-05-21 19:35:06 +0530163 }
164 },
Anand Doshibd67e872014-04-11 16:51:27 +0530165
Anand Doshif3096132013-05-21 19:35:06 +0530166 allocated_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530167 var sales_person = frappe.get_doc(cdt, cdn);
Anand Doshibd67e872014-04-11 16:51:27 +0530168
Anand Doshif3096132013-05-21 19:35:06 +0530169 if(sales_person.allocated_percentage) {
170 sales_person.allocated_percentage = flt(sales_person.allocated_percentage,
171 precision("allocated_percentage", sales_person));
Nabin Hait5690be12015-02-12 16:09:11 +0530172 sales_person.allocated_amount = flt(this.frm.doc.base_net_total *
Anand Doshibd67e872014-04-11 16:51:27 +0530173 sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530174 precision("allocated_amount", sales_person));
175
176 refresh_field(["allocated_percentage", "allocated_amount"], sales_person.name,
177 sales_person.parentfield);
178 }
179 },
Anand Doshibd67e872014-04-11 16:51:27 +0530180
Anand Doshifc777182013-05-27 19:29:07 +0530181 warehouse: function(doc, cdt, cdn) {
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530182 var me = this;
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530183 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehtabe2ee182016-04-29 17:22:42 +0530184
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530185 if(item.item_code && item.warehouse) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530186 return this.frm.call({
Saurabhd3135532016-02-25 18:59:20 +0530187 method: "erpnext.stock.get_item_details.get_bin_details",
Anand Doshifc777182013-05-27 19:29:07 +0530188 child: item,
189 args: {
190 item_code: item.item_code,
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530191 warehouse: item.warehouse,
Anand Doshifc777182013-05-27 19:29:07 +0530192 },
Saurabhd3135532016-02-25 18:59:20 +0530193 callback:function(r){
194 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
195 me.batch_no(doc, cdt, cdn);
196 }
197 }
Anand Doshifc777182013-05-27 19:29:07 +0530198 });
199 }
200 },
Anand Doshibd67e872014-04-11 16:51:27 +0530201
Anand Doshi33fe8672013-08-02 12:39:10 +0530202 toggle_editable_price_list_rate: function() {
Nabin Haitdd38a262014-12-26 13:15:21 +0530203 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 +0530204 var editable_price_list_rate = cint(frappe.defaults.get_default("editable_price_list_rate"));
Anand Doshibd67e872014-04-11 16:51:27 +0530205
Anand Doshi33fe8672013-08-02 12:39:10 +0530206 if(df && editable_price_list_rate) {
207 df.read_only = 0;
208 }
209 },
Anand Doshibd67e872014-04-11 16:51:27 +0530210
Anand Doshif3096132013-05-21 19:35:06 +0530211 calculate_commission: function() {
Anand Doshi923d41d2013-05-28 17:23:36 +0530212 if(this.frm.fields_dict.commission_rate) {
213 if(this.frm.doc.commission_rate > 100) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530214 var msg = __(frappe.meta.get_label(this.frm.doc.doctype, "commission_rate", this.frm.doc.name)) +
215 " " + __("cannot be greater than 100");
Anand Doshi923d41d2013-05-28 17:23:36 +0530216 msgprint(msg);
217 throw msg;
218 }
Anand Doshibd67e872014-04-11 16:51:27 +0530219
Nabin Hait5690be12015-02-12 16:09:11 +0530220 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 +0530221 precision("total_commission"));
222 }
Anand Doshif3096132013-05-21 19:35:06 +0530223 },
Anand Doshibd67e872014-04-11 16:51:27 +0530224
Anand Doshif3096132013-05-21 19:35:06 +0530225 calculate_contribution: function() {
Anand Doshi2168e392013-05-23 19:25:08 +0530226 var me = this;
Rushabh Mehtaaa355af2014-03-26 18:24:30 +0530227 $.each(this.frm.doc.doctype.sales_team || [], function(i, sales_person) {
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530228 frappe.model.round_floats_in(sales_person);
Anand Doshif3096132013-05-21 19:35:06 +0530229 if(sales_person.allocated_percentage) {
230 sales_person.allocated_amount = flt(
Nabin Hait5690be12015-02-12 16:09:11 +0530231 me.frm.doc.base_net_total * sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530232 precision("allocated_amount", sales_person));
233 }
234 });
235 },
Anand Doshibd67e872014-04-11 16:51:27 +0530236
Anand Doshicefccb92013-07-15 18:28:14 +0530237 shipping_rule: function() {
238 var me = this;
239 if(this.frm.doc.shipping_rule) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530240 return this.frm.call({
Anand Doshicefccb92013-07-15 18:28:14 +0530241 doc: this.frm.doc,
242 method: "apply_shipping_rule",
243 callback: function(r) {
244 if(!r.exc) {
245 me.calculate_taxes_and_totals();
246 }
247 }
248 })
249 }
250 },
Anand Doshibd67e872014-04-11 16:51:27 +0530251
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530252 batch_no: function(doc, cdt, cdn) {
253 var me = this;
254 var item = frappe.get_doc(cdt, cdn);
Nabin Hait2ed71ba2015-03-20 15:06:30 +0530255
Sambhaji Kolatea4fa96c2015-03-30 16:04:55 +0530256 if(item.warehouse && item.item_code && item.batch_no) {
Sambhaji Kolatefeff40a2015-03-11 11:50:28 +0530257 return this.frm.call({
258 method: "erpnext.stock.get_item_details.get_batch_qty",
259 child: item,
260 args: {
261 "batch_no": item.batch_no,
262 "warehouse": item.warehouse,
263 "item_code": item.item_code
264 },
265 "fieldname": "actual_batch_qty"
266 });
267 }
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530268 },
269
Anand Doshi2168e392013-05-23 19:25:08 +0530270 set_dynamic_labels: function() {
Anand Doshi61a2f682013-06-21 17:55:31 +0530271 this._super();
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530272 this.set_product_bundle_help(this.frm.doc);
Nabin Hait0b157552014-06-24 17:02:45 +0530273 },
274
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530275 set_product_bundle_help: function(doc) {
Nabin Hait0b157552014-06-24 17:02:45 +0530276 if(!cur_frm.fields_dict.packing_list) return;
Nabin Haite7d15362014-12-25 16:01:55 +0530277 if ((doc.packed_items || []).length) {
Nabin Hait0b157552014-06-24 17:02:45 +0530278 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true);
279
280 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
281 help_msg = "<div class='alert alert-warning'>" +
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530282 __("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 +0530283 "</div>";
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530284 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = help_msg;
Nabin Hait0b157552014-06-24 17:02:45 +0530285 }
286 } else {
287 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false);
288 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530289 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = '';
Nabin Hait0b157552014-06-24 17:02:45 +0530290 }
291 }
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530292 refresh_field('product_bundle_help');
Saurabheba7aa42015-12-16 09:57:59 +0530293 },
Anand Doshi01de9452016-01-26 16:22:50 +0530294
Saurabheba7aa42015-12-16 09:57:59 +0530295 make_payment_request: function() {
Saurabheba7aa42015-12-16 09:57:59 +0530296 frappe.call({
297 method:"erpnext.accounts.doctype.payment_request.payment_request.make_payment_request",
298 args: {
299 "dt": cur_frm.doc.doctype,
300 "dn": cur_frm.doc.name,
Saurabhb109ee92015-12-16 20:48:40 +0530301 "recipient_id": cur_frm.doc.contact_email
Saurabheba7aa42015-12-16 09:57:59 +0530302 },
303 callback: function(r) {
Saurabhcb98d9e2015-12-17 09:48:44 +0530304 if(!r.exc){
Saurabh3ba22672015-12-21 18:24:49 +0530305 var doc = frappe.model.sync(r.message);
Saurabh3ba22672015-12-21 18:24:49 +0530306 frappe.set_route("Form", r.message.doctype, r.message.name);
Saurabhcb98d9e2015-12-17 09:48:44 +0530307 }
Saurabheba7aa42015-12-16 09:57:59 +0530308 }
309 })
mbauskar1e9c1642016-01-18 16:21:25 +0530310 },
mbauskar1e428ae2016-01-19 19:52:22 +0530311
312 rate: function(doc, cdt, cdn){
313 // if user changes the rate then set margin Rate or amount to 0
314 item = locals[cdt][cdn];
mbauskara52472c2016-03-05 15:10:25 +0530315 item.margin_type = "";
316 item.margin_rate_or_amount = 0.0;
mbauskar1e428ae2016-01-19 19:52:22 +0530317 cur_frm.refresh_fields();
318 },
319
mbauskara52472c2016-03-05 15:10:25 +0530320 margin_rate_or_amount: function(doc, cdt, cdn) {
mbauskar1e9c1642016-01-18 16:21:25 +0530321 // calculated the revised total margin and rate on margin rate changes
322 item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530323 this.apply_pricing_rule_on_item(item)
mbauskara52472c2016-03-05 15:10:25 +0530324 this.calculate_taxes_and_totals();
mbauskar1e9c1642016-01-18 16:21:25 +0530325 cur_frm.refresh_fields();
326 },
mbauskar1e428ae2016-01-19 19:52:22 +0530327
mbauskara52472c2016-03-05 15:10:25 +0530328 margin_type: function(doc, cdt, cdn){
mbauskar1e9c1642016-01-18 16:21:25 +0530329 // calculate the revised total margin and rate on margin type changes
330 item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530331 this.apply_pricing_rule_on_item(item, doc,cdt, cdn)
mbauskara52472c2016-03-05 15:10:25 +0530332 this.calculate_taxes_and_totals();
mbauskar1e428ae2016-01-19 19:52:22 +0530333 cur_frm.refresh_fields();
Nabin Haitcfc6bb12012-07-11 13:14:52 +0530334 }
Nabin Hait0b157552014-06-24 17:02:45 +0530335});
Anand Doshi43f087c2014-08-26 14:25:53 +0530336
Neil Trini Lasrado6e343e22016-03-09 17:02:59 +0530337frappe.ui.form.on(cur_frm.doctype,"project", function(frm) {
Nabin Hait10b155a2014-10-23 13:18:59 +0530338 if(in_list(["Delivery Note", "Sales Invoice"], frm.doc.doctype)) {
339 frappe.call({
340 method:'erpnext.projects.doctype.project.project.get_cost_center_name' ,
Neil Trini Lasrado6e343e22016-03-09 17:02:59 +0530341 args: { project: frm.doc.project },
Nabin Hait10b155a2014-10-23 13:18:59 +0530342 callback: function(r, rt) {
343 if(!r.exc) {
Nabin Haitdd38a262014-12-26 13:15:21 +0530344 $.each(frm.doc["items"] || [], function(i, row) {
Neil Trini Lasrado6fc28212014-10-28 14:36:26 +0530345 frappe.model.set_value(row.doctype, row.name, "cost_center", r.message);
346 msgprint(__("Cost Center For Item with Item Code '"+row.item_name+"' has been Changed to "+ r.message));
Nabin Hait10b155a2014-10-23 13:18:59 +0530347 })
348 }
Anand Doshi43f087c2014-08-26 14:25:53 +0530349 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530350 })
351 }
Anand Doshi43f087c2014-08-26 14:25:53 +0530352})