blob: 402ff116ecc98a1b03ba8f816d91e6290e2c71e4 [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 {
Rushabh Mehtad973c162016-08-16 11:32:08 +053069 query: "erpnext.controllers.queries.item_query",
70 filters: {'is_sales_item': 1}
Anand Doshi9b496142013-07-11 19:13:58 +053071 }
Anand Doshi99100a42013-07-04 17:13:53 +053072 });
73 }
Anand Doshibd67e872014-04-11 16:51:27 +053074
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) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +053077 var item = frappe.get_doc(cdt, cdn);
Anand Doshi99100a42013-07-04 17:13:53 +053078 if(!item.item_code) {
Pratik Vyasb52618c2014-04-14 16:25:30 +053079 frappe.throw(__("Please enter Item Code to get batch no"));
Anand Doshi99100a42013-07-04 17:13:53 +053080 } else {
Nabin Haitd1fd1e22013-10-18 12:29:11 +053081 filters = {
82 'item_code': item.item_code,
Neil Trini Lasradoebb60f52015-07-08 14:36:09 +053083 'posting_date': me.frm.doc.posting_date || nowdate(),
Nabin Haitd1fd1e22013-10-18 12:29:11 +053084 }
85 if(item.warehouse) filters["warehouse"] = item.warehouse
Anand Doshibd67e872014-04-11 16:51:27 +053086
Nabin Haitd1fd1e22013-10-18 12:29:11 +053087 return {
Akhilesh Darjee4f721562014-01-29 16:31:38 +053088 query : "erpnext.controllers.queries.get_batch_no",
Nabin Haitd1fd1e22013-10-18 12:29:11 +053089 filters: filters
Anand Doshi99100a42013-07-04 17:13:53 +053090 }
91 }
92 });
93 }
Anand Doshi1dde46a2013-05-15 21:15:57 +053094 },
Anand Doshibd67e872014-04-11 16:51:27 +053095
Anand Doshic4a54fe2013-08-01 18:19:51 +053096 refresh: function() {
97 this._super();
Anand Doshibd67e872014-04-11 16:51:27 +053098 this.frm.toggle_display("customer_name",
Akhilesh Darjee5ce1b8b2013-12-09 16:29:04 +053099 (this.frm.doc.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer));
Nabin Haite7d15362014-12-25 16:01:55 +0530100 if(this.frm.fields_dict.packed_items) {
101 var packing_list_exists = (this.frm.doc.packed_items || []).length;
Anand Doshic4a54fe2013-08-01 18:19:51 +0530102 this.frm.toggle_display("packing_list", packing_list_exists ? true : false);
103 }
Nabin Hait2029ea92015-04-16 17:55:35 +0530104 this.toggle_editable_price_list_rate();
Rushabh Mehta8aded132013-07-04 12:50:52 +0530105 },
Anand Doshibd67e872014-04-11 16:51:27 +0530106
Anand Doshi3543f302013-05-24 19:25:01 +0530107 customer: function() {
Nabin Haita3dd72a2014-05-28 12:49:20 +0530108 var me = this;
109 erpnext.utils.get_party_details(this.frm, null, null, function(){me.apply_pricing_rule()});
Anand Doshi3543f302013-05-24 19:25:01 +0530110 },
Anand Doshibd67e872014-04-11 16:51:27 +0530111
Nabin Haita279d782013-07-15 13:04:33 +0530112 customer_address: function() {
Rushabh Mehtab09d9da2014-01-02 11:47:23 +0530113 erpnext.utils.get_address_display(this.frm, "customer_address");
Nabin Haita279d782013-07-15 13:04:33 +0530114 },
Anand Doshibd67e872014-04-11 16:51:27 +0530115
Nabin Hait9d1f0772014-02-19 17:43:24 +0530116 shipping_address_name: function() {
117 erpnext.utils.get_address_display(this.frm, "shipping_address_name", "shipping_address");
118 },
Anand Doshibd67e872014-04-11 16:51:27 +0530119
Nabin Haita3dd72a2014-05-28 12:49:20 +0530120 sales_partner: function() {
121 this.apply_pricing_rule();
122 },
123
124 campaign: function() {
125 this.apply_pricing_rule();
126 },
127
Rushabh Mehta4a404e92013-08-09 18:11:35 +0530128 selling_price_list: function() {
Anand Doshidffec8f2014-07-01 17:45:15 +0530129 this.apply_price_list();
Anand Doshif3096132013-05-21 19:35:06 +0530130 },
Anand Doshibd67e872014-04-11 16:51:27 +0530131
Nabin Haita7f757a2014-02-10 17:54:04 +0530132 price_list_rate: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530133 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530134 frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530135
mbauskara52472c2016-03-05 15:10:25 +0530136 // check if child doctype is Sales Order Item/Qutation Item and calculate the rate
137 if(in_list(["Quotation Item", "Sales Order Item", "Delivery Note Item", "Sales Invoice Item"]), cdt)
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530138 this.apply_pricing_rule_on_item(item);
mbauskara52472c2016-03-05 15:10:25 +0530139 else
140 item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0),
141 precision("rate", item));
142
Anand Doshif3096132013-05-21 19:35:06 +0530143 this.calculate_taxes_and_totals();
144 },
Anand Doshibd67e872014-04-11 16:51:27 +0530145
Nabin Haita7f757a2014-02-10 17:54:04 +0530146 discount_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530147 var item = frappe.get_doc(cdt, cdn);
Nabin Haita7f757a2014-02-10 17:54:04 +0530148 if(!item.price_list_rate) {
149 item.discount_percentage = 0.0;
Anand Doshi923d41d2013-05-28 17:23:36 +0530150 } else {
Nabin Haita7f757a2014-02-10 17:54:04 +0530151 this.price_list_rate(doc, cdt, cdn);
Anand Doshi923d41d2013-05-28 17:23:36 +0530152 }
Saurabh5ada14b2016-02-26 18:02:55 +0530153 this.set_gross_profit(item);
Anand Doshif3096132013-05-21 19:35:06 +0530154 },
Anand Doshibd67e872014-04-11 16:51:27 +0530155
Anand Doshif3096132013-05-21 19:35:06 +0530156 commission_rate: function() {
157 this.calculate_commission();
158 refresh_field("total_commission");
159 },
Anand Doshibd67e872014-04-11 16:51:27 +0530160
Anand Doshif3096132013-05-21 19:35:06 +0530161 total_commission: function() {
Nabin Hait5690be12015-02-12 16:09:11 +0530162 if(this.frm.doc.base_net_total) {
163 frappe.model.round_floats_in(this.frm.doc, ["base_net_total", "total_commission"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530164
Nabin Hait5690be12015-02-12 16:09:11 +0530165 if(this.frm.doc.base_net_total < this.frm.doc.total_commission) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530166 var msg = (__("[Error]") + " " +
167 __(frappe.meta.get_label(this.frm.doc.doctype, "total_commission",
Anand Doshibd67e872014-04-11 16:51:27 +0530168 this.frm.doc.name)) + " > " +
Nabin Hait5690be12015-02-12 16:09:11 +0530169 __(frappe.meta.get_label(this.frm.doc.doctype, "base_net_total", this.frm.doc.name)));
Anand Doshif3096132013-05-21 19:35:06 +0530170 msgprint(msg);
171 throw msg;
172 }
Anand Doshibd67e872014-04-11 16:51:27 +0530173
174 this.frm.set_value("commission_rate",
Nabin Hait5690be12015-02-12 16:09:11 +0530175 flt(this.frm.doc.total_commission * 100.0 / this.frm.doc.base_net_total));
Anand Doshif3096132013-05-21 19:35:06 +0530176 }
177 },
Anand Doshibd67e872014-04-11 16:51:27 +0530178
Anand Doshif3096132013-05-21 19:35:06 +0530179 allocated_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530180 var sales_person = frappe.get_doc(cdt, cdn);
Anand Doshibd67e872014-04-11 16:51:27 +0530181
Anand Doshif3096132013-05-21 19:35:06 +0530182 if(sales_person.allocated_percentage) {
183 sales_person.allocated_percentage = flt(sales_person.allocated_percentage,
184 precision("allocated_percentage", sales_person));
Nabin Hait5690be12015-02-12 16:09:11 +0530185 sales_person.allocated_amount = flt(this.frm.doc.base_net_total *
Anand Doshibd67e872014-04-11 16:51:27 +0530186 sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530187 precision("allocated_amount", sales_person));
188
189 refresh_field(["allocated_percentage", "allocated_amount"], sales_person.name,
190 sales_person.parentfield);
191 }
192 },
Anand Doshibd67e872014-04-11 16:51:27 +0530193
Anand Doshifc777182013-05-27 19:29:07 +0530194 warehouse: function(doc, cdt, cdn) {
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530195 var me = this;
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530196 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehtabe2ee182016-04-29 17:22:42 +0530197
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530198 if(item.item_code && item.warehouse) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530199 return this.frm.call({
Saurabhd3135532016-02-25 18:59:20 +0530200 method: "erpnext.stock.get_item_details.get_bin_details",
Anand Doshifc777182013-05-27 19:29:07 +0530201 child: item,
202 args: {
203 item_code: item.item_code,
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530204 warehouse: item.warehouse,
Anand Doshifc777182013-05-27 19:29:07 +0530205 },
Saurabhd3135532016-02-25 18:59:20 +0530206 callback:function(r){
207 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
208 me.batch_no(doc, cdt, cdn);
209 }
210 }
Anand Doshifc777182013-05-27 19:29:07 +0530211 });
212 }
213 },
Anand Doshibd67e872014-04-11 16:51:27 +0530214
Anand Doshi33fe8672013-08-02 12:39:10 +0530215 toggle_editable_price_list_rate: function() {
Nabin Haitdd38a262014-12-26 13:15:21 +0530216 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 +0530217 var editable_price_list_rate = cint(frappe.defaults.get_default("editable_price_list_rate"));
Anand Doshibd67e872014-04-11 16:51:27 +0530218
Anand Doshi33fe8672013-08-02 12:39:10 +0530219 if(df && editable_price_list_rate) {
220 df.read_only = 0;
221 }
222 },
Anand Doshibd67e872014-04-11 16:51:27 +0530223
Anand Doshif3096132013-05-21 19:35:06 +0530224 calculate_commission: function() {
Anand Doshi923d41d2013-05-28 17:23:36 +0530225 if(this.frm.fields_dict.commission_rate) {
226 if(this.frm.doc.commission_rate > 100) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530227 var msg = __(frappe.meta.get_label(this.frm.doc.doctype, "commission_rate", this.frm.doc.name)) +
228 " " + __("cannot be greater than 100");
Anand Doshi923d41d2013-05-28 17:23:36 +0530229 msgprint(msg);
230 throw msg;
231 }
Anand Doshibd67e872014-04-11 16:51:27 +0530232
Nabin Hait5690be12015-02-12 16:09:11 +0530233 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 +0530234 precision("total_commission"));
235 }
Anand Doshif3096132013-05-21 19:35:06 +0530236 },
Anand Doshibd67e872014-04-11 16:51:27 +0530237
Anand Doshif3096132013-05-21 19:35:06 +0530238 calculate_contribution: function() {
Anand Doshi2168e392013-05-23 19:25:08 +0530239 var me = this;
Rushabh Mehtaaa355af2014-03-26 18:24:30 +0530240 $.each(this.frm.doc.doctype.sales_team || [], function(i, sales_person) {
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530241 frappe.model.round_floats_in(sales_person);
Anand Doshif3096132013-05-21 19:35:06 +0530242 if(sales_person.allocated_percentage) {
243 sales_person.allocated_amount = flt(
Nabin Hait5690be12015-02-12 16:09:11 +0530244 me.frm.doc.base_net_total * sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530245 precision("allocated_amount", sales_person));
246 }
247 });
248 },
Anand Doshibd67e872014-04-11 16:51:27 +0530249
Anand Doshicefccb92013-07-15 18:28:14 +0530250 shipping_rule: function() {
251 var me = this;
252 if(this.frm.doc.shipping_rule) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530253 return this.frm.call({
Anand Doshicefccb92013-07-15 18:28:14 +0530254 doc: this.frm.doc,
255 method: "apply_shipping_rule",
256 callback: function(r) {
257 if(!r.exc) {
258 me.calculate_taxes_and_totals();
259 }
260 }
261 })
262 }
263 },
Anand Doshibd67e872014-04-11 16:51:27 +0530264
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530265 batch_no: function(doc, cdt, cdn) {
266 var me = this;
267 var item = frappe.get_doc(cdt, cdn);
Nabin Hait2ed71ba2015-03-20 15:06:30 +0530268
Sambhaji Kolatea4fa96c2015-03-30 16:04:55 +0530269 if(item.warehouse && item.item_code && item.batch_no) {
Sambhaji Kolatefeff40a2015-03-11 11:50:28 +0530270 return this.frm.call({
271 method: "erpnext.stock.get_item_details.get_batch_qty",
272 child: item,
273 args: {
274 "batch_no": item.batch_no,
275 "warehouse": item.warehouse,
276 "item_code": item.item_code
277 },
278 "fieldname": "actual_batch_qty"
279 });
280 }
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530281 },
282
Anand Doshi2168e392013-05-23 19:25:08 +0530283 set_dynamic_labels: function() {
Anand Doshi61a2f682013-06-21 17:55:31 +0530284 this._super();
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530285 this.set_product_bundle_help(this.frm.doc);
Nabin Hait0b157552014-06-24 17:02:45 +0530286 },
287
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530288 set_product_bundle_help: function(doc) {
Nabin Hait0b157552014-06-24 17:02:45 +0530289 if(!cur_frm.fields_dict.packing_list) return;
Nabin Haite7d15362014-12-25 16:01:55 +0530290 if ((doc.packed_items || []).length) {
Nabin Hait0b157552014-06-24 17:02:45 +0530291 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true);
292
293 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
294 help_msg = "<div class='alert alert-warning'>" +
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530295 __("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 +0530296 "</div>";
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530297 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = help_msg;
Nabin Hait0b157552014-06-24 17:02:45 +0530298 }
299 } else {
300 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false);
301 if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530302 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = '';
Nabin Hait0b157552014-06-24 17:02:45 +0530303 }
304 }
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530305 refresh_field('product_bundle_help');
Saurabheba7aa42015-12-16 09:57:59 +0530306 },
Anand Doshi01de9452016-01-26 16:22:50 +0530307
Saurabheba7aa42015-12-16 09:57:59 +0530308 make_payment_request: function() {
Saurabheba7aa42015-12-16 09:57:59 +0530309 frappe.call({
310 method:"erpnext.accounts.doctype.payment_request.payment_request.make_payment_request",
311 args: {
312 "dt": cur_frm.doc.doctype,
313 "dn": cur_frm.doc.name,
Saurabhb109ee92015-12-16 20:48:40 +0530314 "recipient_id": cur_frm.doc.contact_email
Saurabheba7aa42015-12-16 09:57:59 +0530315 },
316 callback: function(r) {
Saurabhcb98d9e2015-12-17 09:48:44 +0530317 if(!r.exc){
Saurabh3ba22672015-12-21 18:24:49 +0530318 var doc = frappe.model.sync(r.message);
Saurabh3ba22672015-12-21 18:24:49 +0530319 frappe.set_route("Form", r.message.doctype, r.message.name);
Saurabhcb98d9e2015-12-17 09:48:44 +0530320 }
Saurabheba7aa42015-12-16 09:57:59 +0530321 }
322 })
mbauskar1e9c1642016-01-18 16:21:25 +0530323 },
mbauskar1e428ae2016-01-19 19:52:22 +0530324
325 rate: function(doc, cdt, cdn){
326 // if user changes the rate then set margin Rate or amount to 0
327 item = locals[cdt][cdn];
mbauskara52472c2016-03-05 15:10:25 +0530328 item.margin_type = "";
329 item.margin_rate_or_amount = 0.0;
mbauskar1e428ae2016-01-19 19:52:22 +0530330 cur_frm.refresh_fields();
331 },
332
mbauskara52472c2016-03-05 15:10:25 +0530333 margin_rate_or_amount: function(doc, cdt, cdn) {
mbauskar1e9c1642016-01-18 16:21:25 +0530334 // calculated the revised total margin and rate on margin rate changes
335 item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530336 this.apply_pricing_rule_on_item(item)
mbauskara52472c2016-03-05 15:10:25 +0530337 this.calculate_taxes_and_totals();
mbauskar1e9c1642016-01-18 16:21:25 +0530338 cur_frm.refresh_fields();
339 },
mbauskar1e428ae2016-01-19 19:52:22 +0530340
mbauskara52472c2016-03-05 15:10:25 +0530341 margin_type: function(doc, cdt, cdn){
mbauskar1e9c1642016-01-18 16:21:25 +0530342 // calculate the revised total margin and rate on margin type changes
343 item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530344 this.apply_pricing_rule_on_item(item, doc,cdt, cdn)
mbauskara52472c2016-03-05 15:10:25 +0530345 this.calculate_taxes_and_totals();
mbauskar1e428ae2016-01-19 19:52:22 +0530346 cur_frm.refresh_fields();
Nabin Haitcfc6bb12012-07-11 13:14:52 +0530347 }
Nabin Hait0b157552014-06-24 17:02:45 +0530348});
Anand Doshi43f087c2014-08-26 14:25:53 +0530349
Neil Trini Lasrado6e343e22016-03-09 17:02:59 +0530350frappe.ui.form.on(cur_frm.doctype,"project", function(frm) {
Nabin Hait10b155a2014-10-23 13:18:59 +0530351 if(in_list(["Delivery Note", "Sales Invoice"], frm.doc.doctype)) {
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530352 if(frm.doc.project) {
353 frappe.call({
354 method:'erpnext.projects.doctype.project.project.get_cost_center_name' ,
355 args: { project: frm.doc.project },
356 callback: function(r, rt) {
357 if(!r.exc) {
358 $.each(frm.doc["items"] || [], function(i, row) {
359 if(r.message) {
360 frappe.model.set_value(row.doctype, row.name, "cost_center", r.message);
361 msgprint(__("Cost Center For Item with Item Code '"+row.item_name+"' has been Changed to "+ r.message));
362 }
363 })
364 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530365 }
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530366 })
367 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530368 }
Anand Doshi43f087c2014-08-26 14:25:53 +0530369})