blob: e9671c87117ace144a58fef3c222a35aaa4c5969 [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() {
Anand Doshi99100a42013-07-04 17:13:53 +053023 var me = this;
Anand Doshibd67e872014-04-11 16:51:27 +053024
Anand Doshif3096132013-05-21 19:35:06 +053025 this.frm.add_fetch("sales_partner", "commission_rate", "commission_rate");
Anand Doshibd67e872014-04-11 16:51:27 +053026
Rushabh Mehtab92087c2017-01-13 18:53:11 +053027 $.each([["customer", "customer"],
Anand Doshibd67e872014-04-11 16:51:27 +053028 ["lead", "lead"]],
Anand Doshid5d39ac2013-07-29 13:28:37 +053029 function(i, opts) {
Anand Doshibd67e872014-04-11 16:51:27 +053030 if(me.frm.fields_dict[opts[0]])
Anand Doshid5d39ac2013-07-29 13:28:37 +053031 me.frm.set_query(opts[0], erpnext.queries[opts[1]]);
32 });
Anand Doshibd67e872014-04-11 16:51:27 +053033
Rushabh Mehtab92087c2017-01-13 18:53:11 +053034 me.frm.set_query('contact_person', erpnext.queries.contact_query);
35 me.frm.set_query('customer_address', erpnext.queries.address_query);
36 me.frm.set_query('shipping_address_name', erpnext.queries.address_query);
37
Akhilesh Darjee4f721562014-01-29 16:31:38 +053038 if(this.frm.fields_dict.taxes_and_charges) {
39 this.frm.set_query("taxes_and_charges", function() {
Saurabhf52dc072013-07-10 13:07:49 +053040 return {
41 filters: [
Rushabh Mehtaab1ed012015-05-08 11:08:48 +053042 ['Sales Taxes and Charges Template', 'company', '=', me.frm.doc.company],
43 ['Sales Taxes and Charges Template', 'docstatus', '!=', 2]
Saurabhf52dc072013-07-10 13:07:49 +053044 ]
45 }
Anand Doshi99100a42013-07-04 17:13:53 +053046 });
47 }
Anand Doshi99100a42013-07-04 17:13:53 +053048
Rushabh Mehta4a404e92013-08-09 18:11:35 +053049 if(this.frm.fields_dict.selling_price_list) {
50 this.frm.set_query("selling_price_list", function() {
Nabin Haitdc15b4f2014-01-20 16:48:49 +053051 return { filters: { selling: 1 } };
Anand Doshi720a01a2013-07-26 11:32:02 +053052 });
Anand Doshi720a01a2013-07-26 11:32:02 +053053 }
Anand Doshibd67e872014-04-11 16:51:27 +053054
Nabin Haitdd38a262014-12-26 13:15:21 +053055 if(!this.frm.fields_dict["items"]) {
Anand Doshi99100a42013-07-04 17:13:53 +053056 return;
57 }
Anand Doshibd67e872014-04-11 16:51:27 +053058
Nabin Haitdd38a262014-12-26 13:15:21 +053059 if(this.frm.fields_dict["items"].grid.get_field('item_code')) {
60 this.frm.set_query("item_code", "items", function() {
Anand Doshi9b496142013-07-11 19:13:58 +053061 return {
Rushabh Mehtad973c162016-08-16 11:32:08 +053062 query: "erpnext.controllers.queries.item_query",
63 filters: {'is_sales_item': 1}
Anand Doshi9b496142013-07-11 19:13:58 +053064 }
Anand Doshi99100a42013-07-04 17:13:53 +053065 });
66 }
Anand Doshibd67e872014-04-11 16:51:27 +053067
Rushabh Mehta698c0402016-11-22 23:16:40 +053068 if(this.frm.fields_dict["packed_items"] &&
69 this.frm.fields_dict["packed_items"].grid.get_field('batch_no')) {
Rohit Waghchauree887e922016-11-18 12:16:22 +053070 this.frm.set_query("batch_no", "packed_items", function(doc, cdt, cdn) {
71 return me.set_query_for_batch(doc, cdt, cdn)
72 });
73 }
Rohit Waghchauree887e922016-11-18 12:16:22 +053074 },
75
Anand Doshic4a54fe2013-08-01 18:19:51 +053076 refresh: function() {
77 this._super();
Rushabh Mehtab92087c2017-01-13 18:53:11 +053078
Rushabh Mehta8d39fd92017-01-16 13:06:07 +053079 frappe.dynamic_link = {doc: this.frm.doc, fieldname: 'customer', doctype: 'Customer'}
Rushabh Mehtab92087c2017-01-13 18:53:11 +053080
Anand Doshibd67e872014-04-11 16:51:27 +053081 this.frm.toggle_display("customer_name",
Akhilesh Darjee5ce1b8b2013-12-09 16:29:04 +053082 (this.frm.doc.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer));
Nabin Haite7d15362014-12-25 16:01:55 +053083 if(this.frm.fields_dict.packed_items) {
84 var packing_list_exists = (this.frm.doc.packed_items || []).length;
Anand Doshic4a54fe2013-08-01 18:19:51 +053085 this.frm.toggle_display("packing_list", packing_list_exists ? true : false);
86 }
Nabin Hait2029ea92015-04-16 17:55:35 +053087 this.toggle_editable_price_list_rate();
Rushabh Mehta8aded132013-07-04 12:50:52 +053088 },
Anand Doshibd67e872014-04-11 16:51:27 +053089
Anand Doshi3543f302013-05-24 19:25:01 +053090 customer: function() {
Nabin Haita3dd72a2014-05-28 12:49:20 +053091 var me = this;
Rushabh Mehtadab11722017-07-17 15:31:17 +053092 erpnext.utils.get_party_details(this.frm, null, null,
93 function(){ me.apply_pricing_rule() });
Anand Doshi3543f302013-05-24 19:25:01 +053094 },
Anand Doshibd67e872014-04-11 16:51:27 +053095
Nabin Haita279d782013-07-15 13:04:33 +053096 customer_address: function() {
Rushabh Mehtab09d9da2014-01-02 11:47:23 +053097 erpnext.utils.get_address_display(this.frm, "customer_address");
Nabin Haita279d782013-07-15 13:04:33 +053098 },
Anand Doshibd67e872014-04-11 16:51:27 +053099
Nabin Hait9d1f0772014-02-19 17:43:24 +0530100 shipping_address_name: function() {
101 erpnext.utils.get_address_display(this.frm, "shipping_address_name", "shipping_address");
102 },
Anand Doshibd67e872014-04-11 16:51:27 +0530103
Nabin Haita3dd72a2014-05-28 12:49:20 +0530104 sales_partner: function() {
105 this.apply_pricing_rule();
106 },
107
108 campaign: function() {
109 this.apply_pricing_rule();
110 },
111
Rushabh Mehta4a404e92013-08-09 18:11:35 +0530112 selling_price_list: function() {
Anand Doshidffec8f2014-07-01 17:45:15 +0530113 this.apply_price_list();
Anand Doshif3096132013-05-21 19:35:06 +0530114 },
Anand Doshibd67e872014-04-11 16:51:27 +0530115
Nabin Haita7f757a2014-02-10 17:54:04 +0530116 price_list_rate: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530117 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530118 frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530119
mbauskara52472c2016-03-05 15:10:25 +0530120 // check if child doctype is Sales Order Item/Qutation Item and calculate the rate
121 if(in_list(["Quotation Item", "Sales Order Item", "Delivery Note Item", "Sales Invoice Item"]), cdt)
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530122 this.apply_pricing_rule_on_item(item);
mbauskara52472c2016-03-05 15:10:25 +0530123 else
124 item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0),
125 precision("rate", item));
126
Anand Doshif3096132013-05-21 19:35:06 +0530127 this.calculate_taxes_and_totals();
128 },
Anand Doshibd67e872014-04-11 16:51:27 +0530129
Nabin Haita7f757a2014-02-10 17:54:04 +0530130 discount_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530131 var item = frappe.get_doc(cdt, cdn);
Nabin Haita7f757a2014-02-10 17:54:04 +0530132 if(!item.price_list_rate) {
133 item.discount_percentage = 0.0;
Anand Doshi923d41d2013-05-28 17:23:36 +0530134 } else {
Nabin Haita7f757a2014-02-10 17:54:04 +0530135 this.price_list_rate(doc, cdt, cdn);
Anand Doshi923d41d2013-05-28 17:23:36 +0530136 }
Saurabh5ada14b2016-02-26 18:02:55 +0530137 this.set_gross_profit(item);
Anand Doshif3096132013-05-21 19:35:06 +0530138 },
Anand Doshibd67e872014-04-11 16:51:27 +0530139
Anand Doshif3096132013-05-21 19:35:06 +0530140 commission_rate: function() {
141 this.calculate_commission();
142 refresh_field("total_commission");
143 },
Anand Doshibd67e872014-04-11 16:51:27 +0530144
Anand Doshif3096132013-05-21 19:35:06 +0530145 total_commission: function() {
Nabin Hait5690be12015-02-12 16:09:11 +0530146 if(this.frm.doc.base_net_total) {
147 frappe.model.round_floats_in(this.frm.doc, ["base_net_total", "total_commission"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530148
Nabin Hait5690be12015-02-12 16:09:11 +0530149 if(this.frm.doc.base_net_total < this.frm.doc.total_commission) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530150 var msg = (__("[Error]") + " " +
151 __(frappe.meta.get_label(this.frm.doc.doctype, "total_commission",
Anand Doshibd67e872014-04-11 16:51:27 +0530152 this.frm.doc.name)) + " > " +
Nabin Hait5690be12015-02-12 16:09:11 +0530153 __(frappe.meta.get_label(this.frm.doc.doctype, "base_net_total", this.frm.doc.name)));
Faris Ansariab74ca72017-05-30 12:54:42 +0530154 frappe.msgprint(msg);
Anand Doshif3096132013-05-21 19:35:06 +0530155 throw msg;
156 }
Anand Doshibd67e872014-04-11 16:51:27 +0530157
158 this.frm.set_value("commission_rate",
Nabin Hait5690be12015-02-12 16:09:11 +0530159 flt(this.frm.doc.total_commission * 100.0 / this.frm.doc.base_net_total));
Anand Doshif3096132013-05-21 19:35:06 +0530160 }
161 },
Anand Doshibd67e872014-04-11 16:51:27 +0530162
Anand Doshif3096132013-05-21 19:35:06 +0530163 allocated_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530164 var sales_person = frappe.get_doc(cdt, cdn);
Anand Doshibd67e872014-04-11 16:51:27 +0530165
Anand Doshif3096132013-05-21 19:35:06 +0530166 if(sales_person.allocated_percentage) {
167 sales_person.allocated_percentage = flt(sales_person.allocated_percentage,
168 precision("allocated_percentage", sales_person));
Nabin Hait5690be12015-02-12 16:09:11 +0530169 sales_person.allocated_amount = flt(this.frm.doc.base_net_total *
Anand Doshibd67e872014-04-11 16:51:27 +0530170 sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530171 precision("allocated_amount", sales_person));
172
173 refresh_field(["allocated_percentage", "allocated_amount"], sales_person.name,
174 sales_person.parentfield);
175 }
176 },
Anand Doshibd67e872014-04-11 16:51:27 +0530177
Anand Doshifc777182013-05-27 19:29:07 +0530178 warehouse: function(doc, cdt, cdn) {
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530179 var me = this;
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530180 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehtabe2ee182016-04-29 17:22:42 +0530181
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530182 if(item.item_code && item.warehouse) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530183 return this.frm.call({
Kanchan Chauhanaf0d6372016-11-13 21:19:09 +0530184 method: "erpnext.stock.get_item_details.get_bin_details_and_serial_nos",
Anand Doshifc777182013-05-27 19:29:07 +0530185 child: item,
186 args: {
187 item_code: item.item_code,
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530188 warehouse: item.warehouse,
Kanchan Chauhan5a980ac2017-02-10 14:27:11 +0530189 stock_qty: item.stock_qty,
Nabin Hait1d90b412016-12-24 10:42:23 +0530190 serial_no: item.serial_no || ""
Anand Doshifc777182013-05-27 19:29:07 +0530191 },
Saurabhd3135532016-02-25 18:59:20 +0530192 callback:function(r){
Faris Ansariab74ca72017-05-30 12:54:42 +0530193 if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
Saurabhd3135532016-02-25 18:59:20 +0530194 me.batch_no(doc, cdt, cdn);
195 }
196 }
Anand Doshifc777182013-05-27 19:29:07 +0530197 });
198 }
199 },
Anand Doshibd67e872014-04-11 16:51:27 +0530200
Anand Doshi33fe8672013-08-02 12:39:10 +0530201 toggle_editable_price_list_rate: function() {
Nabin Haitdd38a262014-12-26 13:15:21 +0530202 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 +0530203 var editable_price_list_rate = cint(frappe.defaults.get_default("editable_price_list_rate"));
Anand Doshibd67e872014-04-11 16:51:27 +0530204
Anand Doshi33fe8672013-08-02 12:39:10 +0530205 if(df && editable_price_list_rate) {
206 df.read_only = 0;
207 }
208 },
Anand Doshibd67e872014-04-11 16:51:27 +0530209
Anand Doshif3096132013-05-21 19:35:06 +0530210 calculate_commission: function() {
Anand Doshi923d41d2013-05-28 17:23:36 +0530211 if(this.frm.fields_dict.commission_rate) {
212 if(this.frm.doc.commission_rate > 100) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530213 var msg = __(frappe.meta.get_label(this.frm.doc.doctype, "commission_rate", this.frm.doc.name)) +
214 " " + __("cannot be greater than 100");
Faris Ansariab74ca72017-05-30 12:54:42 +0530215 frappe.msgprint(msg);
Anand Doshi923d41d2013-05-28 17:23:36 +0530216 throw msg;
217 }
Anand Doshibd67e872014-04-11 16:51:27 +0530218
Nabin Hait5690be12015-02-12 16:09:11 +0530219 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 +0530220 precision("total_commission"));
221 }
Anand Doshif3096132013-05-21 19:35:06 +0530222 },
Anand Doshibd67e872014-04-11 16:51:27 +0530223
Anand Doshif3096132013-05-21 19:35:06 +0530224 calculate_contribution: function() {
Anand Doshi2168e392013-05-23 19:25:08 +0530225 var me = this;
Rushabh Mehtaaa355af2014-03-26 18:24:30 +0530226 $.each(this.frm.doc.doctype.sales_team || [], function(i, sales_person) {
Faris Ansariab74ca72017-05-30 12:54:42 +0530227 frappe.model.round_floats_in(sales_person);
228 if(sales_person.allocated_percentage) {
229 sales_person.allocated_amount = flt(
230 me.frm.doc.base_net_total * sales_person.allocated_percentage / 100.0,
231 precision("allocated_amount", sales_person));
232 }
233 });
Anand Doshif3096132013-05-21 19:35:06 +0530234 },
Anand Doshibd67e872014-04-11 16:51:27 +0530235
Anand Doshicefccb92013-07-15 18:28:14 +0530236 shipping_rule: function() {
237 var me = this;
238 if(this.frm.doc.shipping_rule) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530239 return this.frm.call({
Anand Doshicefccb92013-07-15 18:28:14 +0530240 doc: this.frm.doc,
241 method: "apply_shipping_rule",
242 callback: function(r) {
243 if(!r.exc) {
244 me.calculate_taxes_and_totals();
245 }
246 }
247 })
248 }
249 },
Anand Doshibd67e872014-04-11 16:51:27 +0530250
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530251 batch_no: function(doc, cdt, cdn) {
252 var me = this;
253 var item = frappe.get_doc(cdt, cdn);
Nabin Hait2ed71ba2015-03-20 15:06:30 +0530254
Sambhaji Kolatea4fa96c2015-03-30 16:04:55 +0530255 if(item.warehouse && item.item_code && item.batch_no) {
Faris Ansariab74ca72017-05-30 12:54:42 +0530256 return this.frm.call({
257 method: "erpnext.stock.get_item_details.get_batch_qty",
258 child: item,
259 args: {
260 "batch_no": item.batch_no,
261 "warehouse": item.warehouse,
262 "item_code": item.item_code
263 },
264 "fieldname": "actual_batch_qty"
265 });
Sambhaji Kolatefeff40a2015-03-11 11:50:28 +0530266 }
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530267 },
268
Anand Doshi2168e392013-05-23 19:25:08 +0530269 set_dynamic_labels: function() {
Anand Doshi61a2f682013-06-21 17:55:31 +0530270 this._super();
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530271 this.set_product_bundle_help(this.frm.doc);
Nabin Hait0b157552014-06-24 17:02:45 +0530272 },
273
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530274 set_product_bundle_help: function(doc) {
Nabin Hait0b157552014-06-24 17:02:45 +0530275 if(!cur_frm.fields_dict.packing_list) return;
Nabin Haite7d15362014-12-25 16:01:55 +0530276 if ((doc.packed_items || []).length) {
Nabin Hait0b157552014-06-24 17:02:45 +0530277 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true);
278
Faris Ansariab74ca72017-05-30 12:54:42 +0530279 if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
280 var help_msg = "<div class='alert alert-warning'>" +
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530281 __("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 +0530282 "</div>";
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530283 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = help_msg;
Nabin Hait0b157552014-06-24 17:02:45 +0530284 }
285 } else {
286 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false);
Faris Ansariab74ca72017-05-30 12:54:42 +0530287 if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530288 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = '';
Nabin Hait0b157552014-06-24 17:02:45 +0530289 }
290 }
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530291 refresh_field('product_bundle_help');
Saurabheba7aa42015-12-16 09:57:59 +0530292 },
Anand Doshi01de9452016-01-26 16:22:50 +0530293
Saurabheba7aa42015-12-16 09:57:59 +0530294 make_payment_request: function() {
Saurabheba7aa42015-12-16 09:57:59 +0530295 frappe.call({
296 method:"erpnext.accounts.doctype.payment_request.payment_request.make_payment_request",
297 args: {
298 "dt": cur_frm.doc.doctype,
299 "dn": cur_frm.doc.name,
Saurabhb109ee92015-12-16 20:48:40 +0530300 "recipient_id": cur_frm.doc.contact_email
Saurabheba7aa42015-12-16 09:57:59 +0530301 },
302 callback: function(r) {
Saurabhcb98d9e2015-12-17 09:48:44 +0530303 if(!r.exc){
Saurabh3ba22672015-12-21 18:24:49 +0530304 var doc = frappe.model.sync(r.message);
Saurabh3ba22672015-12-21 18:24:49 +0530305 frappe.set_route("Form", r.message.doctype, r.message.name);
Saurabhcb98d9e2015-12-17 09:48:44 +0530306 }
Saurabheba7aa42015-12-16 09:57:59 +0530307 }
308 })
mbauskar1e9c1642016-01-18 16:21:25 +0530309 },
mbauskar1e428ae2016-01-19 19:52:22 +0530310
mbauskara52472c2016-03-05 15:10:25 +0530311 margin_rate_or_amount: function(doc, cdt, cdn) {
mbauskar1e9c1642016-01-18 16:21:25 +0530312 // calculated the revised total margin and rate on margin rate changes
Faris Ansariab74ca72017-05-30 12:54:42 +0530313 var item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530314 this.apply_pricing_rule_on_item(item)
mbauskara52472c2016-03-05 15:10:25 +0530315 this.calculate_taxes_and_totals();
mbauskar1e9c1642016-01-18 16:21:25 +0530316 cur_frm.refresh_fields();
317 },
mbauskar1e428ae2016-01-19 19:52:22 +0530318
mbauskara52472c2016-03-05 15:10:25 +0530319 margin_type: function(doc, cdt, cdn){
mbauskar1e9c1642016-01-18 16:21:25 +0530320 // calculate the revised total margin and rate on margin type changes
Faris Ansariab74ca72017-05-30 12:54:42 +0530321 var item = locals[cdt][cdn];
Nabin Haite72c98d2017-05-24 09:01:44 +0530322 if(!item.margin_type) {
323 frappe.model.set_value(cdt, cdn, "margin_rate_or_amount", 0);
324 } else {
325 this.apply_pricing_rule_on_item(item, doc,cdt, cdn)
326 this.calculate_taxes_and_totals();
327 cur_frm.refresh_fields();
328 }
Nabin Hait879e1622017-08-21 08:28:55 +0530329 },
330
331 company_address: function() {
332 var me = this;
333 if(this.frm.doc.company_address) {
334 frappe.call({
335 method: "frappe.contacts.doctype.address.address.get_address_display",
336 args: {"address_dict": this.frm.doc.company_address },
337 callback: function(r) {
338 if(r.message) {
339 me.frm.set_value("company_address_display", r.message)
340 }
341 }
342 })
343 } else {
344 this.frm.set_value("company_address_display", "");
345 }
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);
Faris Ansariab74ca72017-05-30 12:54:42 +0530360 frappe.msgprint(__("Cost Center For Item with Item Code '"+row.item_name+"' has been Changed to "+ r.message));
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530361 }
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 }
Kanchan Chauhanaf0d6372016-11-13 21:19:09 +0530368})