blob: 038fb44e32ae78940696a5e26114705edebd6a7d [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();
Rushabh Mehta30dc9a12017-11-17 14:31:09 +053020 this.frm.set_query('shipping_rule', function() {
21 return {
22 filters: {
23 "shipping_rule_type": "Selling"
24 }
25 };
26 });
Anand Doshi9b496142013-07-11 19:13:58 +053027 },
Anand Doshibd67e872014-04-11 16:51:27 +053028
Anand Doshi9b496142013-07-11 19:13:58 +053029 setup_queries: function() {
Anand Doshi99100a42013-07-04 17:13:53 +053030 var me = this;
Anand Doshibd67e872014-04-11 16:51:27 +053031
Anand Doshif3096132013-05-21 19:35:06 +053032 this.frm.add_fetch("sales_partner", "commission_rate", "commission_rate");
Anand Doshibd67e872014-04-11 16:51:27 +053033
Rushabh Mehtab92087c2017-01-13 18:53:11 +053034 $.each([["customer", "customer"],
Anand Doshibd67e872014-04-11 16:51:27 +053035 ["lead", "lead"]],
Anand Doshid5d39ac2013-07-29 13:28:37 +053036 function(i, opts) {
Anand Doshibd67e872014-04-11 16:51:27 +053037 if(me.frm.fields_dict[opts[0]])
Anand Doshid5d39ac2013-07-29 13:28:37 +053038 me.frm.set_query(opts[0], erpnext.queries[opts[1]]);
39 });
Anand Doshibd67e872014-04-11 16:51:27 +053040
Rushabh Mehtab92087c2017-01-13 18:53:11 +053041 me.frm.set_query('contact_person', erpnext.queries.contact_query);
42 me.frm.set_query('customer_address', erpnext.queries.address_query);
43 me.frm.set_query('shipping_address_name', erpnext.queries.address_query);
44
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
Rushabh Mehta698c0402016-11-22 23:16:40 +053075 if(this.frm.fields_dict["packed_items"] &&
76 this.frm.fields_dict["packed_items"].grid.get_field('batch_no')) {
Rohit Waghchauree887e922016-11-18 12:16:22 +053077 this.frm.set_query("batch_no", "packed_items", function(doc, cdt, cdn) {
78 return me.set_query_for_batch(doc, cdt, cdn)
79 });
80 }
Rohit Waghchauree887e922016-11-18 12:16:22 +053081 },
82
Anand Doshic4a54fe2013-08-01 18:19:51 +053083 refresh: function() {
84 this._super();
Rushabh Mehtab92087c2017-01-13 18:53:11 +053085
Rushabh Mehta8d39fd92017-01-16 13:06:07 +053086 frappe.dynamic_link = {doc: this.frm.doc, fieldname: 'customer', doctype: 'Customer'}
Rushabh Mehtab92087c2017-01-13 18:53:11 +053087
Anand Doshibd67e872014-04-11 16:51:27 +053088 this.frm.toggle_display("customer_name",
Akhilesh Darjee5ce1b8b2013-12-09 16:29:04 +053089 (this.frm.doc.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer));
Nabin Haite7d15362014-12-25 16:01:55 +053090 if(this.frm.fields_dict.packed_items) {
91 var packing_list_exists = (this.frm.doc.packed_items || []).length;
Anand Doshic4a54fe2013-08-01 18:19:51 +053092 this.frm.toggle_display("packing_list", packing_list_exists ? true : false);
93 }
Nabin Hait2029ea92015-04-16 17:55:35 +053094 this.toggle_editable_price_list_rate();
Rushabh Mehta8aded132013-07-04 12:50:52 +053095 },
Anand Doshibd67e872014-04-11 16:51:27 +053096
Anand Doshi3543f302013-05-24 19:25:01 +053097 customer: function() {
Nabin Haita3dd72a2014-05-28 12:49:20 +053098 var me = this;
Nabin Haite45ec662018-08-01 17:44:34 +053099 erpnext.utils.get_party_details(this.frm, null, null, function() {
100 me.apply_price_list();
101 });
Anand Doshi3543f302013-05-24 19:25:01 +0530102 },
Anand Doshibd67e872014-04-11 16:51:27 +0530103
Nabin Haita279d782013-07-15 13:04:33 +0530104 customer_address: function() {
Rushabh Mehtab09d9da2014-01-02 11:47:23 +0530105 erpnext.utils.get_address_display(this.frm, "customer_address");
Nabin Haita279d782013-07-15 13:04:33 +0530106 },
Anand Doshibd67e872014-04-11 16:51:27 +0530107
Nabin Hait9d1f0772014-02-19 17:43:24 +0530108 shipping_address_name: function() {
109 erpnext.utils.get_address_display(this.frm, "shipping_address_name", "shipping_address");
110 },
Anand Doshibd67e872014-04-11 16:51:27 +0530111
Nabin Haita3dd72a2014-05-28 12:49:20 +0530112 sales_partner: function() {
113 this.apply_pricing_rule();
114 },
115
116 campaign: function() {
117 this.apply_pricing_rule();
118 },
119
Rushabh Mehta4a404e92013-08-09 18:11:35 +0530120 selling_price_list: function() {
Anand Doshidffec8f2014-07-01 17:45:15 +0530121 this.apply_price_list();
rohitwaghchaure8e675eb2018-02-13 17:11:06 +0530122 this.set_dynamic_labels();
Anand Doshif3096132013-05-21 19:35:06 +0530123 },
Anand Doshibd67e872014-04-11 16:51:27 +0530124
Nabin Haita7f757a2014-02-10 17:54:04 +0530125 price_list_rate: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530126 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530127 frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530128
mbauskara52472c2016-03-05 15:10:25 +0530129 // check if child doctype is Sales Order Item/Qutation Item and calculate the rate
130 if(in_list(["Quotation Item", "Sales Order Item", "Delivery Note Item", "Sales Invoice Item"]), cdt)
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530131 this.apply_pricing_rule_on_item(item);
mbauskara52472c2016-03-05 15:10:25 +0530132 else
133 item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0),
134 precision("rate", item));
135
Anand Doshif3096132013-05-21 19:35:06 +0530136 this.calculate_taxes_and_totals();
137 },
Anand Doshibd67e872014-04-11 16:51:27 +0530138
Nabin Haita7f757a2014-02-10 17:54:04 +0530139 discount_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530140 var item = frappe.get_doc(cdt, cdn);
Nabin Haita7f757a2014-02-10 17:54:04 +0530141 if(!item.price_list_rate) {
142 item.discount_percentage = 0.0;
Anand Doshi923d41d2013-05-28 17:23:36 +0530143 } else {
Nabin Haita7f757a2014-02-10 17:54:04 +0530144 this.price_list_rate(doc, cdt, cdn);
Anand Doshi923d41d2013-05-28 17:23:36 +0530145 }
Saurabh5ada14b2016-02-26 18:02:55 +0530146 this.set_gross_profit(item);
Anand Doshif3096132013-05-21 19:35:06 +0530147 },
Anand Doshibd67e872014-04-11 16:51:27 +0530148
Shreya Shah0631aed2018-08-14 10:51:48 +0530149 discount_amount: function(doc, cdt, cdn) {
150 var item = frappe.get_doc(cdt, cdn);
151 if(!item.price_list_rate) {
152 item.discount_amount = 0.0;
153 } else {
154 this.price_list_rate(doc, cdt, cdn);
155 }
156 },
157
Anand Doshif3096132013-05-21 19:35:06 +0530158 commission_rate: function() {
159 this.calculate_commission();
160 refresh_field("total_commission");
161 },
Anand Doshibd67e872014-04-11 16:51:27 +0530162
Anand Doshif3096132013-05-21 19:35:06 +0530163 total_commission: function() {
Nabin Hait5690be12015-02-12 16:09:11 +0530164 if(this.frm.doc.base_net_total) {
165 frappe.model.round_floats_in(this.frm.doc, ["base_net_total", "total_commission"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530166
Nabin Hait5690be12015-02-12 16:09:11 +0530167 if(this.frm.doc.base_net_total < this.frm.doc.total_commission) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530168 var msg = (__("[Error]") + " " +
169 __(frappe.meta.get_label(this.frm.doc.doctype, "total_commission",
Anand Doshibd67e872014-04-11 16:51:27 +0530170 this.frm.doc.name)) + " > " +
Nabin Hait5690be12015-02-12 16:09:11 +0530171 __(frappe.meta.get_label(this.frm.doc.doctype, "base_net_total", this.frm.doc.name)));
Faris Ansariab74ca72017-05-30 12:54:42 +0530172 frappe.msgprint(msg);
Anand Doshif3096132013-05-21 19:35:06 +0530173 throw msg;
174 }
Anand Doshibd67e872014-04-11 16:51:27 +0530175
176 this.frm.set_value("commission_rate",
Nabin Hait5690be12015-02-12 16:09:11 +0530177 flt(this.frm.doc.total_commission * 100.0 / this.frm.doc.base_net_total));
Anand Doshif3096132013-05-21 19:35:06 +0530178 }
179 },
Anand Doshibd67e872014-04-11 16:51:27 +0530180
Anand Doshif3096132013-05-21 19:35:06 +0530181 allocated_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530182 var sales_person = frappe.get_doc(cdt, cdn);
Anand Doshibd67e872014-04-11 16:51:27 +0530183
Anand Doshif3096132013-05-21 19:35:06 +0530184 if(sales_person.allocated_percentage) {
185 sales_person.allocated_percentage = flt(sales_person.allocated_percentage,
186 precision("allocated_percentage", sales_person));
Nabin Hait5690be12015-02-12 16:09:11 +0530187 sales_person.allocated_amount = flt(this.frm.doc.base_net_total *
Anand Doshibd67e872014-04-11 16:51:27 +0530188 sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530189 precision("allocated_amount", sales_person));
190
191 refresh_field(["allocated_percentage", "allocated_amount"], sales_person.name,
192 sales_person.parentfield);
193 }
194 },
Anand Doshibd67e872014-04-11 16:51:27 +0530195
Anand Doshifc777182013-05-27 19:29:07 +0530196 warehouse: function(doc, cdt, cdn) {
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530197 var me = this;
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530198 var item = frappe.get_doc(cdt, cdn);
Shreyaa20157a2018-04-13 12:03:42 +0530199 if (item.serial_no && !item.batch_no) {
200 item.serial_no = null;
Anand Doshifc777182013-05-27 19:29:07 +0530201 }
Shreyaa20157a2018-04-13 12:03:42 +0530202 var has_batch_no;
203 frappe.db.get_value('Item', {'item_code': item.item_code}, 'has_batch_no', (r) => {
204 has_batch_no = r && r.has_batch_no;
205 if(item.item_code && item.warehouse) {
206 return this.frm.call({
207 method: "erpnext.stock.get_item_details.get_bin_details_and_serial_nos",
208 child: item,
209 args: {
210 item_code: item.item_code,
211 warehouse: item.warehouse,
212 has_batch_no: has_batch_no,
213 stock_qty: item.stock_qty,
214 serial_no: item.serial_no || "",
215 },
216 callback:function(r){
217 if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
218 me.set_batch_number(cdt, cdn);
219 me.batch_no(doc, cdt, cdn);
220 }
221 }
222 });
223 }
224 })
Anand Doshifc777182013-05-27 19:29:07 +0530225 },
Anand Doshibd67e872014-04-11 16:51:27 +0530226
Anand Doshi33fe8672013-08-02 12:39:10 +0530227 toggle_editable_price_list_rate: function() {
Nabin Haitdd38a262014-12-26 13:15:21 +0530228 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 +0530229 var editable_price_list_rate = cint(frappe.defaults.get_default("editable_price_list_rate"));
Anand Doshibd67e872014-04-11 16:51:27 +0530230
Anand Doshi33fe8672013-08-02 12:39:10 +0530231 if(df && editable_price_list_rate) {
232 df.read_only = 0;
233 }
234 },
Anand Doshibd67e872014-04-11 16:51:27 +0530235
Anand Doshif3096132013-05-21 19:35:06 +0530236 calculate_commission: function() {
Anand Doshi923d41d2013-05-28 17:23:36 +0530237 if(this.frm.fields_dict.commission_rate) {
238 if(this.frm.doc.commission_rate > 100) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530239 var msg = __(frappe.meta.get_label(this.frm.doc.doctype, "commission_rate", this.frm.doc.name)) +
240 " " + __("cannot be greater than 100");
Faris Ansariab74ca72017-05-30 12:54:42 +0530241 frappe.msgprint(msg);
Anand Doshi923d41d2013-05-28 17:23:36 +0530242 throw msg;
243 }
Anand Doshibd67e872014-04-11 16:51:27 +0530244
Nabin Hait5690be12015-02-12 16:09:11 +0530245 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 +0530246 precision("total_commission"));
247 }
Anand Doshif3096132013-05-21 19:35:06 +0530248 },
Anand Doshibd67e872014-04-11 16:51:27 +0530249
Anand Doshif3096132013-05-21 19:35:06 +0530250 calculate_contribution: function() {
Anand Doshi2168e392013-05-23 19:25:08 +0530251 var me = this;
Rushabh Mehtaaa355af2014-03-26 18:24:30 +0530252 $.each(this.frm.doc.doctype.sales_team || [], function(i, sales_person) {
Faris Ansariab74ca72017-05-30 12:54:42 +0530253 frappe.model.round_floats_in(sales_person);
254 if(sales_person.allocated_percentage) {
255 sales_person.allocated_amount = flt(
256 me.frm.doc.base_net_total * sales_person.allocated_percentage / 100.0,
257 precision("allocated_amount", sales_person));
258 }
259 });
Anand Doshif3096132013-05-21 19:35:06 +0530260 },
Anand Doshibd67e872014-04-11 16:51:27 +0530261
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530262 batch_no: function(doc, cdt, cdn) {
263 var me = this;
264 var item = frappe.get_doc(cdt, cdn);
Shreyaa20157a2018-04-13 12:03:42 +0530265 item.serial_no = null;
266 var has_serial_no;
267 frappe.db.get_value('Item', {'item_code': item.item_code}, 'has_serial_no', (r) => {
268 has_serial_no = r && r.has_serial_no;
269 if(item.warehouse && item.item_code && item.batch_no) {
270 return this.frm.call({
271 method: "erpnext.stock.get_item_details.get_batch_qty_and_serial_no",
272 child: item,
273 args: {
274 "batch_no": item.batch_no,
275 "stock_qty": item.stock_qty,
276 "warehouse": item.warehouse,
277 "item_code": item.item_code,
278 "has_serial_no": has_serial_no
279 },
280 "fieldname": "actual_batch_qty"
281 });
282 }
283 })
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530284 },
285
Anand Doshi2168e392013-05-23 19:25:08 +0530286 set_dynamic_labels: function() {
Anand Doshi61a2f682013-06-21 17:55:31 +0530287 this._super();
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530288 this.set_product_bundle_help(this.frm.doc);
Nabin Hait0b157552014-06-24 17:02:45 +0530289 },
290
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530291 set_product_bundle_help: function(doc) {
Nabin Hait0b157552014-06-24 17:02:45 +0530292 if(!cur_frm.fields_dict.packing_list) return;
Nabin Haite7d15362014-12-25 16:01:55 +0530293 if ((doc.packed_items || []).length) {
Nabin Hait0b157552014-06-24 17:02:45 +0530294 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true);
295
Faris Ansariab74ca72017-05-30 12:54:42 +0530296 if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
297 var help_msg = "<div class='alert alert-warning'>" +
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530298 __("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 +0530299 "</div>";
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530300 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = help_msg;
Nabin Hait0b157552014-06-24 17:02:45 +0530301 }
302 } else {
303 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false);
Faris Ansariab74ca72017-05-30 12:54:42 +0530304 if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530305 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = '';
Nabin Hait0b157552014-06-24 17:02:45 +0530306 }
307 }
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530308 refresh_field('product_bundle_help');
Saurabheba7aa42015-12-16 09:57:59 +0530309 },
Anand Doshi01de9452016-01-26 16:22:50 +0530310
Saurabheba7aa42015-12-16 09:57:59 +0530311 make_payment_request: function() {
Saurabheba7aa42015-12-16 09:57:59 +0530312 frappe.call({
313 method:"erpnext.accounts.doctype.payment_request.payment_request.make_payment_request",
314 args: {
315 "dt": cur_frm.doc.doctype,
316 "dn": cur_frm.doc.name,
Saurabhb109ee92015-12-16 20:48:40 +0530317 "recipient_id": cur_frm.doc.contact_email
Saurabheba7aa42015-12-16 09:57:59 +0530318 },
319 callback: function(r) {
Saurabhcb98d9e2015-12-17 09:48:44 +0530320 if(!r.exc){
Saurabh3ba22672015-12-21 18:24:49 +0530321 var doc = frappe.model.sync(r.message);
Saurabh3ba22672015-12-21 18:24:49 +0530322 frappe.set_route("Form", r.message.doctype, r.message.name);
Saurabhcb98d9e2015-12-17 09:48:44 +0530323 }
Saurabheba7aa42015-12-16 09:57:59 +0530324 }
325 })
mbauskar1e9c1642016-01-18 16:21:25 +0530326 },
mbauskar1e428ae2016-01-19 19:52:22 +0530327
mbauskara52472c2016-03-05 15:10:25 +0530328 margin_rate_or_amount: function(doc, cdt, cdn) {
mbauskar1e9c1642016-01-18 16:21:25 +0530329 // calculated the revised total margin and rate on margin rate changes
Faris Ansariab74ca72017-05-30 12:54:42 +0530330 var item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530331 this.apply_pricing_rule_on_item(item)
mbauskara52472c2016-03-05 15:10:25 +0530332 this.calculate_taxes_and_totals();
mbauskar1e9c1642016-01-18 16:21:25 +0530333 cur_frm.refresh_fields();
334 },
mbauskar1e428ae2016-01-19 19:52:22 +0530335
mbauskara52472c2016-03-05 15:10:25 +0530336 margin_type: function(doc, cdt, cdn){
mbauskar1e9c1642016-01-18 16:21:25 +0530337 // calculate the revised total margin and rate on margin type changes
Faris Ansariab74ca72017-05-30 12:54:42 +0530338 var item = locals[cdt][cdn];
Nabin Haite72c98d2017-05-24 09:01:44 +0530339 if(!item.margin_type) {
340 frappe.model.set_value(cdt, cdn, "margin_rate_or_amount", 0);
341 } else {
342 this.apply_pricing_rule_on_item(item, doc,cdt, cdn)
343 this.calculate_taxes_and_totals();
344 cur_frm.refresh_fields();
345 }
Nabin Hait879e1622017-08-21 08:28:55 +0530346 },
347
348 company_address: function() {
349 var me = this;
350 if(this.frm.doc.company_address) {
351 frappe.call({
352 method: "frappe.contacts.doctype.address.address.get_address_display",
353 args: {"address_dict": this.frm.doc.company_address },
354 callback: function(r) {
355 if(r.message) {
356 me.frm.set_value("company_address_display", r.message)
357 }
358 }
359 })
360 } else {
361 this.frm.set_value("company_address_display", "");
362 }
tundebabzyacccdb32017-11-23 08:35:15 +0100363 },
364
365 conversion_factor: function(doc, cdt, cdn, dont_fetch_price_list_rate) {
366 this._super(doc, cdt, cdn, dont_fetch_price_list_rate);
tundebabzyf9b5c742018-01-25 19:21:05 +0100367 if(frappe.meta.get_docfield(cdt, "stock_qty", cdn) &&
368 in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
tundebabzyacccdb32017-11-23 08:35:15 +0100369 this.set_batch_number(cdt, cdn);
370 }
371 },
372
373 qty: function(doc, cdt, cdn) {
Shreyaa20157a2018-04-13 12:03:42 +0530374 this._super(doc, cdt, cdn);
tundebabzyacccdb32017-11-23 08:35:15 +0100375 this.set_batch_number(cdt, cdn);
376 },
377
378 /* Determine appropriate batch number and set it in the form.
379 * @param {string} cdt - Document Doctype
380 * @param {string} cdn - Document name
381 */
382 set_batch_number: function(cdt, cdn) {
383 const doc = frappe.get_doc(cdt, cdn);
rohitwaghchaure15f8fe02017-11-24 10:46:27 +0530384 if (doc && doc.has_batch_no) {
tundebabzyacccdb32017-11-23 08:35:15 +0100385 this._set_batch_number(doc);
386 }
387 },
388
389 _set_batch_number: function(doc) {
390 return frappe.call({
391 method: 'erpnext.stock.doctype.batch.batch.get_batch_no',
392 args: {'item_code': doc.item_code, 'warehouse': doc.warehouse, 'qty': flt(doc.qty) * flt(doc.conversion_factor)},
393 callback: function(r) {
394 if(r.message) {
395 frappe.model.set_value(doc.doctype, doc.name, 'batch_no', r.message);
tundebabzy8ae53ca2017-11-30 07:07:21 +0100396 } else {
397 frappe.model.set_value(doc.doctype, doc.name, 'batch_no', r.message);
tundebabzyacccdb32017-11-23 08:35:15 +0100398 }
399 }
400 });
401 },
Charles-Henri Decultot8b223102018-06-28 10:57:58 +0200402
403 update_auto_repeat_reference: function(doc) {
404 if (doc.auto_repeat) {
405 frappe.call({
406 method:"frappe.desk.doctype.auto_repeat.auto_repeat.update_reference",
407 args:{
408 docname: doc.auto_repeat,
409 reference:doc.name
410 },
411 callback: function(r){
412 if (r.message=="success") {
413 frappe.show_alert({message:__("Auto repeat document updated"), indicator:'green'});
414 } else {
415 frappe.show_alert({message:__("An error occurred during the update process"), indicator:'red'});
416 }
417 }
418 })
419 }
420 }
Nabin Hait0b157552014-06-24 17:02:45 +0530421});
Anand Doshi43f087c2014-08-26 14:25:53 +0530422
Neil Trini Lasrado6e343e22016-03-09 17:02:59 +0530423frappe.ui.form.on(cur_frm.doctype,"project", function(frm) {
Nabin Hait10b155a2014-10-23 13:18:59 +0530424 if(in_list(["Delivery Note", "Sales Invoice"], frm.doc.doctype)) {
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530425 if(frm.doc.project) {
426 frappe.call({
427 method:'erpnext.projects.doctype.project.project.get_cost_center_name' ,
428 args: { project: frm.doc.project },
429 callback: function(r, rt) {
430 if(!r.exc) {
431 $.each(frm.doc["items"] || [], function(i, row) {
432 if(r.message) {
433 frappe.model.set_value(row.doctype, row.name, "cost_center", r.message);
Faris Ansariab74ca72017-05-30 12:54:42 +0530434 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 +0530435 }
436 })
437 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530438 }
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530439 })
440 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530441 }
Nabin Haite45ec662018-08-01 17:44:34 +0530442})