blob: 19acefa72c0327594c1342c95fe8e5346fae3675 [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;
Rushabh Mehtadab11722017-07-17 15:31:17 +053099 erpnext.utils.get_party_details(this.frm, null, null,
100 function(){ me.apply_pricing_rule() });
Anand Doshi3543f302013-05-24 19:25:01 +0530101 },
Anand Doshibd67e872014-04-11 16:51:27 +0530102
Nabin Haita279d782013-07-15 13:04:33 +0530103 customer_address: function() {
Rushabh Mehtab09d9da2014-01-02 11:47:23 +0530104 erpnext.utils.get_address_display(this.frm, "customer_address");
Nabin Haita279d782013-07-15 13:04:33 +0530105 },
Anand Doshibd67e872014-04-11 16:51:27 +0530106
Nabin Hait9d1f0772014-02-19 17:43:24 +0530107 shipping_address_name: function() {
108 erpnext.utils.get_address_display(this.frm, "shipping_address_name", "shipping_address");
109 },
Anand Doshibd67e872014-04-11 16:51:27 +0530110
Nabin Haita3dd72a2014-05-28 12:49:20 +0530111 sales_partner: function() {
112 this.apply_pricing_rule();
113 },
114
115 campaign: function() {
116 this.apply_pricing_rule();
117 },
118
Rushabh Mehta4a404e92013-08-09 18:11:35 +0530119 selling_price_list: function() {
Anand Doshidffec8f2014-07-01 17:45:15 +0530120 this.apply_price_list();
rohitwaghchaure8e675eb2018-02-13 17:11:06 +0530121 this.set_dynamic_labels();
Anand Doshif3096132013-05-21 19:35:06 +0530122 },
Anand Doshibd67e872014-04-11 16:51:27 +0530123
Nabin Haita7f757a2014-02-10 17:54:04 +0530124 price_list_rate: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530125 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530126 frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530127
mbauskara52472c2016-03-05 15:10:25 +0530128 // check if child doctype is Sales Order Item/Qutation Item and calculate the rate
129 if(in_list(["Quotation Item", "Sales Order Item", "Delivery Note Item", "Sales Invoice Item"]), cdt)
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530130 this.apply_pricing_rule_on_item(item);
mbauskara52472c2016-03-05 15:10:25 +0530131 else
132 item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0),
133 precision("rate", item));
134
Anand Doshif3096132013-05-21 19:35:06 +0530135 this.calculate_taxes_and_totals();
136 },
Anand Doshibd67e872014-04-11 16:51:27 +0530137
Nabin Haita7f757a2014-02-10 17:54:04 +0530138 discount_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530139 var item = frappe.get_doc(cdt, cdn);
Nabin Haita7f757a2014-02-10 17:54:04 +0530140 if(!item.price_list_rate) {
141 item.discount_percentage = 0.0;
Anand Doshi923d41d2013-05-28 17:23:36 +0530142 } else {
Nabin Haita7f757a2014-02-10 17:54:04 +0530143 this.price_list_rate(doc, cdt, cdn);
Anand Doshi923d41d2013-05-28 17:23:36 +0530144 }
Saurabh5ada14b2016-02-26 18:02:55 +0530145 this.set_gross_profit(item);
Anand Doshif3096132013-05-21 19:35:06 +0530146 },
Anand Doshibd67e872014-04-11 16:51:27 +0530147
Anand Doshif3096132013-05-21 19:35:06 +0530148 commission_rate: function() {
149 this.calculate_commission();
150 refresh_field("total_commission");
151 },
Anand Doshibd67e872014-04-11 16:51:27 +0530152
Anand Doshif3096132013-05-21 19:35:06 +0530153 total_commission: function() {
Nabin Hait5690be12015-02-12 16:09:11 +0530154 if(this.frm.doc.base_net_total) {
155 frappe.model.round_floats_in(this.frm.doc, ["base_net_total", "total_commission"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530156
Nabin Hait5690be12015-02-12 16:09:11 +0530157 if(this.frm.doc.base_net_total < this.frm.doc.total_commission) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530158 var msg = (__("[Error]") + " " +
159 __(frappe.meta.get_label(this.frm.doc.doctype, "total_commission",
Anand Doshibd67e872014-04-11 16:51:27 +0530160 this.frm.doc.name)) + " > " +
Nabin Hait5690be12015-02-12 16:09:11 +0530161 __(frappe.meta.get_label(this.frm.doc.doctype, "base_net_total", this.frm.doc.name)));
Faris Ansariab74ca72017-05-30 12:54:42 +0530162 frappe.msgprint(msg);
Anand Doshif3096132013-05-21 19:35:06 +0530163 throw msg;
164 }
Anand Doshibd67e872014-04-11 16:51:27 +0530165
166 this.frm.set_value("commission_rate",
Nabin Hait5690be12015-02-12 16:09:11 +0530167 flt(this.frm.doc.total_commission * 100.0 / this.frm.doc.base_net_total));
Anand Doshif3096132013-05-21 19:35:06 +0530168 }
169 },
Anand Doshibd67e872014-04-11 16:51:27 +0530170
Anand Doshif3096132013-05-21 19:35:06 +0530171 allocated_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530172 var sales_person = frappe.get_doc(cdt, cdn);
Anand Doshibd67e872014-04-11 16:51:27 +0530173
Anand Doshif3096132013-05-21 19:35:06 +0530174 if(sales_person.allocated_percentage) {
175 sales_person.allocated_percentage = flt(sales_person.allocated_percentage,
176 precision("allocated_percentage", sales_person));
Nabin Hait5690be12015-02-12 16:09:11 +0530177 sales_person.allocated_amount = flt(this.frm.doc.base_net_total *
Anand Doshibd67e872014-04-11 16:51:27 +0530178 sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530179 precision("allocated_amount", sales_person));
180
181 refresh_field(["allocated_percentage", "allocated_amount"], sales_person.name,
182 sales_person.parentfield);
183 }
184 },
Anand Doshibd67e872014-04-11 16:51:27 +0530185
Anand Doshifc777182013-05-27 19:29:07 +0530186 warehouse: function(doc, cdt, cdn) {
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530187 var me = this;
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530188 var item = frappe.get_doc(cdt, cdn);
Shreyaa20157a2018-04-13 12:03:42 +0530189 if (item.serial_no && !item.batch_no) {
190 item.serial_no = null;
Anand Doshifc777182013-05-27 19:29:07 +0530191 }
Shreyaa20157a2018-04-13 12:03:42 +0530192 var has_batch_no;
193 frappe.db.get_value('Item', {'item_code': item.item_code}, 'has_batch_no', (r) => {
194 has_batch_no = r && r.has_batch_no;
195 if(item.item_code && item.warehouse) {
196 return this.frm.call({
197 method: "erpnext.stock.get_item_details.get_bin_details_and_serial_nos",
198 child: item,
199 args: {
200 item_code: item.item_code,
201 warehouse: item.warehouse,
202 has_batch_no: has_batch_no,
203 stock_qty: item.stock_qty,
204 serial_no: item.serial_no || "",
205 },
206 callback:function(r){
207 if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
208 me.set_batch_number(cdt, cdn);
209 me.batch_no(doc, cdt, cdn);
210 }
211 }
212 });
213 }
214 })
Anand Doshifc777182013-05-27 19:29:07 +0530215 },
Anand Doshibd67e872014-04-11 16:51:27 +0530216
Anand Doshi33fe8672013-08-02 12:39:10 +0530217 toggle_editable_price_list_rate: function() {
Nabin Haitdd38a262014-12-26 13:15:21 +0530218 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 +0530219 var editable_price_list_rate = cint(frappe.defaults.get_default("editable_price_list_rate"));
Anand Doshibd67e872014-04-11 16:51:27 +0530220
Anand Doshi33fe8672013-08-02 12:39:10 +0530221 if(df && editable_price_list_rate) {
222 df.read_only = 0;
223 }
224 },
Anand Doshibd67e872014-04-11 16:51:27 +0530225
Anand Doshif3096132013-05-21 19:35:06 +0530226 calculate_commission: function() {
Anand Doshi923d41d2013-05-28 17:23:36 +0530227 if(this.frm.fields_dict.commission_rate) {
228 if(this.frm.doc.commission_rate > 100) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530229 var msg = __(frappe.meta.get_label(this.frm.doc.doctype, "commission_rate", this.frm.doc.name)) +
230 " " + __("cannot be greater than 100");
Faris Ansariab74ca72017-05-30 12:54:42 +0530231 frappe.msgprint(msg);
Anand Doshi923d41d2013-05-28 17:23:36 +0530232 throw msg;
233 }
Anand Doshibd67e872014-04-11 16:51:27 +0530234
Nabin Hait5690be12015-02-12 16:09:11 +0530235 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 +0530236 precision("total_commission"));
237 }
Anand Doshif3096132013-05-21 19:35:06 +0530238 },
Anand Doshibd67e872014-04-11 16:51:27 +0530239
Anand Doshif3096132013-05-21 19:35:06 +0530240 calculate_contribution: function() {
Anand Doshi2168e392013-05-23 19:25:08 +0530241 var me = this;
Rushabh Mehtaaa355af2014-03-26 18:24:30 +0530242 $.each(this.frm.doc.doctype.sales_team || [], function(i, sales_person) {
Faris Ansariab74ca72017-05-30 12:54:42 +0530243 frappe.model.round_floats_in(sales_person);
244 if(sales_person.allocated_percentage) {
245 sales_person.allocated_amount = flt(
246 me.frm.doc.base_net_total * sales_person.allocated_percentage / 100.0,
247 precision("allocated_amount", sales_person));
248 }
249 });
Anand Doshif3096132013-05-21 19:35:06 +0530250 },
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);
Shreyaa20157a2018-04-13 12:03:42 +0530255 item.serial_no = null;
256 var has_serial_no;
257 frappe.db.get_value('Item', {'item_code': item.item_code}, 'has_serial_no', (r) => {
258 has_serial_no = r && r.has_serial_no;
259 if(item.warehouse && item.item_code && item.batch_no) {
260 return this.frm.call({
261 method: "erpnext.stock.get_item_details.get_batch_qty_and_serial_no",
262 child: item,
263 args: {
264 "batch_no": item.batch_no,
265 "stock_qty": item.stock_qty,
266 "warehouse": item.warehouse,
267 "item_code": item.item_code,
268 "has_serial_no": has_serial_no
269 },
270 "fieldname": "actual_batch_qty"
271 });
272 }
273 })
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530274 },
275
Anand Doshi2168e392013-05-23 19:25:08 +0530276 set_dynamic_labels: function() {
Anand Doshi61a2f682013-06-21 17:55:31 +0530277 this._super();
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530278 this.set_product_bundle_help(this.frm.doc);
Nabin Hait0b157552014-06-24 17:02:45 +0530279 },
280
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530281 set_product_bundle_help: function(doc) {
Nabin Hait0b157552014-06-24 17:02:45 +0530282 if(!cur_frm.fields_dict.packing_list) return;
Nabin Haite7d15362014-12-25 16:01:55 +0530283 if ((doc.packed_items || []).length) {
Nabin Hait0b157552014-06-24 17:02:45 +0530284 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true);
285
Faris Ansariab74ca72017-05-30 12:54:42 +0530286 if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
287 var help_msg = "<div class='alert alert-warning'>" +
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530288 __("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 +0530289 "</div>";
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530290 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = help_msg;
Nabin Hait0b157552014-06-24 17:02:45 +0530291 }
292 } else {
293 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false);
Faris Ansariab74ca72017-05-30 12:54:42 +0530294 if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530295 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = '';
Nabin Hait0b157552014-06-24 17:02:45 +0530296 }
297 }
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530298 refresh_field('product_bundle_help');
Saurabheba7aa42015-12-16 09:57:59 +0530299 },
Anand Doshi01de9452016-01-26 16:22:50 +0530300
Saurabheba7aa42015-12-16 09:57:59 +0530301 make_payment_request: function() {
Saurabheba7aa42015-12-16 09:57:59 +0530302 frappe.call({
303 method:"erpnext.accounts.doctype.payment_request.payment_request.make_payment_request",
304 args: {
305 "dt": cur_frm.doc.doctype,
306 "dn": cur_frm.doc.name,
Saurabhb109ee92015-12-16 20:48:40 +0530307 "recipient_id": cur_frm.doc.contact_email
Saurabheba7aa42015-12-16 09:57:59 +0530308 },
309 callback: function(r) {
Saurabhcb98d9e2015-12-17 09:48:44 +0530310 if(!r.exc){
Saurabh3ba22672015-12-21 18:24:49 +0530311 var doc = frappe.model.sync(r.message);
Saurabh3ba22672015-12-21 18:24:49 +0530312 frappe.set_route("Form", r.message.doctype, r.message.name);
Saurabhcb98d9e2015-12-17 09:48:44 +0530313 }
Saurabheba7aa42015-12-16 09:57:59 +0530314 }
315 })
mbauskar1e9c1642016-01-18 16:21:25 +0530316 },
mbauskar1e428ae2016-01-19 19:52:22 +0530317
mbauskara52472c2016-03-05 15:10:25 +0530318 margin_rate_or_amount: function(doc, cdt, cdn) {
mbauskar1e9c1642016-01-18 16:21:25 +0530319 // calculated the revised total margin and rate on margin rate changes
Faris Ansariab74ca72017-05-30 12:54:42 +0530320 var item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530321 this.apply_pricing_rule_on_item(item)
mbauskara52472c2016-03-05 15:10:25 +0530322 this.calculate_taxes_and_totals();
mbauskar1e9c1642016-01-18 16:21:25 +0530323 cur_frm.refresh_fields();
324 },
mbauskar1e428ae2016-01-19 19:52:22 +0530325
mbauskara52472c2016-03-05 15:10:25 +0530326 margin_type: function(doc, cdt, cdn){
mbauskar1e9c1642016-01-18 16:21:25 +0530327 // calculate the revised total margin and rate on margin type changes
Faris Ansariab74ca72017-05-30 12:54:42 +0530328 var item = locals[cdt][cdn];
Nabin Haite72c98d2017-05-24 09:01:44 +0530329 if(!item.margin_type) {
330 frappe.model.set_value(cdt, cdn, "margin_rate_or_amount", 0);
331 } else {
332 this.apply_pricing_rule_on_item(item, doc,cdt, cdn)
333 this.calculate_taxes_and_totals();
334 cur_frm.refresh_fields();
335 }
Nabin Hait879e1622017-08-21 08:28:55 +0530336 },
337
338 company_address: function() {
339 var me = this;
340 if(this.frm.doc.company_address) {
341 frappe.call({
342 method: "frappe.contacts.doctype.address.address.get_address_display",
343 args: {"address_dict": this.frm.doc.company_address },
344 callback: function(r) {
345 if(r.message) {
346 me.frm.set_value("company_address_display", r.message)
347 }
348 }
349 })
350 } else {
351 this.frm.set_value("company_address_display", "");
352 }
tundebabzyacccdb32017-11-23 08:35:15 +0100353 },
354
355 conversion_factor: function(doc, cdt, cdn, dont_fetch_price_list_rate) {
356 this._super(doc, cdt, cdn, dont_fetch_price_list_rate);
tundebabzyf9b5c742018-01-25 19:21:05 +0100357 if(frappe.meta.get_docfield(cdt, "stock_qty", cdn) &&
358 in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
tundebabzyacccdb32017-11-23 08:35:15 +0100359 this.set_batch_number(cdt, cdn);
360 }
361 },
362
363 qty: function(doc, cdt, cdn) {
Shreyaa20157a2018-04-13 12:03:42 +0530364 this._super(doc, cdt, cdn);
tundebabzyacccdb32017-11-23 08:35:15 +0100365 this.set_batch_number(cdt, cdn);
366 },
367
368 /* Determine appropriate batch number and set it in the form.
369 * @param {string} cdt - Document Doctype
370 * @param {string} cdn - Document name
371 */
372 set_batch_number: function(cdt, cdn) {
373 const doc = frappe.get_doc(cdt, cdn);
rohitwaghchaure15f8fe02017-11-24 10:46:27 +0530374 if (doc && doc.has_batch_no) {
tundebabzyacccdb32017-11-23 08:35:15 +0100375 this._set_batch_number(doc);
376 }
377 },
378
379 _set_batch_number: function(doc) {
380 return frappe.call({
381 method: 'erpnext.stock.doctype.batch.batch.get_batch_no',
382 args: {'item_code': doc.item_code, 'warehouse': doc.warehouse, 'qty': flt(doc.qty) * flt(doc.conversion_factor)},
383 callback: function(r) {
384 if(r.message) {
385 frappe.model.set_value(doc.doctype, doc.name, 'batch_no', r.message);
tundebabzy8ae53ca2017-11-30 07:07:21 +0100386 } else {
387 frappe.model.set_value(doc.doctype, doc.name, 'batch_no', r.message);
tundebabzyacccdb32017-11-23 08:35:15 +0100388 }
389 }
390 });
391 },
Charles-Henri Decultot8b223102018-06-28 10:57:58 +0200392
393 update_auto_repeat_reference: function(doc) {
394 if (doc.auto_repeat) {
395 frappe.call({
396 method:"frappe.desk.doctype.auto_repeat.auto_repeat.update_reference",
397 args:{
398 docname: doc.auto_repeat,
399 reference:doc.name
400 },
401 callback: function(r){
402 if (r.message=="success") {
403 frappe.show_alert({message:__("Auto repeat document updated"), indicator:'green'});
404 } else {
405 frappe.show_alert({message:__("An error occurred during the update process"), indicator:'red'});
406 }
407 }
408 })
409 }
410 }
Nabin Hait0b157552014-06-24 17:02:45 +0530411});
Anand Doshi43f087c2014-08-26 14:25:53 +0530412
Neil Trini Lasrado6e343e22016-03-09 17:02:59 +0530413frappe.ui.form.on(cur_frm.doctype,"project", function(frm) {
Nabin Hait10b155a2014-10-23 13:18:59 +0530414 if(in_list(["Delivery Note", "Sales Invoice"], frm.doc.doctype)) {
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530415 if(frm.doc.project) {
416 frappe.call({
417 method:'erpnext.projects.doctype.project.project.get_cost_center_name' ,
418 args: { project: frm.doc.project },
419 callback: function(r, rt) {
420 if(!r.exc) {
421 $.each(frm.doc["items"] || [], function(i, row) {
422 if(r.message) {
423 frappe.model.set_value(row.doctype, row.name, "cost_center", r.message);
Faris Ansariab74ca72017-05-30 12:54:42 +0530424 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 +0530425 }
426 })
427 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530428 }
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530429 })
430 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530431 }
Kanchan Chauhanaf0d6372016-11-13 21:19:09 +0530432})