blob: 3d174b78f7c688c8ff1ecdfe5d44177a5f0ebf26 [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();
Anand Doshif3096132013-05-21 19:35:06 +0530121 },
Anand Doshibd67e872014-04-11 16:51:27 +0530122
Nabin Haita7f757a2014-02-10 17:54:04 +0530123 price_list_rate: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530124 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530125 frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530126
mbauskara52472c2016-03-05 15:10:25 +0530127 // check if child doctype is Sales Order Item/Qutation Item and calculate the rate
128 if(in_list(["Quotation Item", "Sales Order Item", "Delivery Note Item", "Sales Invoice Item"]), cdt)
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530129 this.apply_pricing_rule_on_item(item);
mbauskara52472c2016-03-05 15:10:25 +0530130 else
131 item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0),
132 precision("rate", item));
133
Anand Doshif3096132013-05-21 19:35:06 +0530134 this.calculate_taxes_and_totals();
135 },
Anand Doshibd67e872014-04-11 16:51:27 +0530136
Nabin Haita7f757a2014-02-10 17:54:04 +0530137 discount_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530138 var item = frappe.get_doc(cdt, cdn);
Nabin Haita7f757a2014-02-10 17:54:04 +0530139 if(!item.price_list_rate) {
140 item.discount_percentage = 0.0;
Anand Doshi923d41d2013-05-28 17:23:36 +0530141 } else {
Nabin Haita7f757a2014-02-10 17:54:04 +0530142 this.price_list_rate(doc, cdt, cdn);
Anand Doshi923d41d2013-05-28 17:23:36 +0530143 }
Saurabh5ada14b2016-02-26 18:02:55 +0530144 this.set_gross_profit(item);
Anand Doshif3096132013-05-21 19:35:06 +0530145 },
Anand Doshibd67e872014-04-11 16:51:27 +0530146
Anand Doshif3096132013-05-21 19:35:06 +0530147 commission_rate: function() {
148 this.calculate_commission();
149 refresh_field("total_commission");
150 },
Anand Doshibd67e872014-04-11 16:51:27 +0530151
Anand Doshif3096132013-05-21 19:35:06 +0530152 total_commission: function() {
Nabin Hait5690be12015-02-12 16:09:11 +0530153 if(this.frm.doc.base_net_total) {
154 frappe.model.round_floats_in(this.frm.doc, ["base_net_total", "total_commission"]);
Anand Doshibd67e872014-04-11 16:51:27 +0530155
Nabin Hait5690be12015-02-12 16:09:11 +0530156 if(this.frm.doc.base_net_total < this.frm.doc.total_commission) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530157 var msg = (__("[Error]") + " " +
158 __(frappe.meta.get_label(this.frm.doc.doctype, "total_commission",
Anand Doshibd67e872014-04-11 16:51:27 +0530159 this.frm.doc.name)) + " > " +
Nabin Hait5690be12015-02-12 16:09:11 +0530160 __(frappe.meta.get_label(this.frm.doc.doctype, "base_net_total", this.frm.doc.name)));
Faris Ansariab74ca72017-05-30 12:54:42 +0530161 frappe.msgprint(msg);
Anand Doshif3096132013-05-21 19:35:06 +0530162 throw msg;
163 }
Anand Doshibd67e872014-04-11 16:51:27 +0530164
165 this.frm.set_value("commission_rate",
Nabin Hait5690be12015-02-12 16:09:11 +0530166 flt(this.frm.doc.total_commission * 100.0 / this.frm.doc.base_net_total));
Anand Doshif3096132013-05-21 19:35:06 +0530167 }
168 },
Anand Doshibd67e872014-04-11 16:51:27 +0530169
Anand Doshif3096132013-05-21 19:35:06 +0530170 allocated_percentage: function(doc, cdt, cdn) {
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530171 var sales_person = frappe.get_doc(cdt, cdn);
Anand Doshibd67e872014-04-11 16:51:27 +0530172
Anand Doshif3096132013-05-21 19:35:06 +0530173 if(sales_person.allocated_percentage) {
174 sales_person.allocated_percentage = flt(sales_person.allocated_percentage,
175 precision("allocated_percentage", sales_person));
Nabin Hait5690be12015-02-12 16:09:11 +0530176 sales_person.allocated_amount = flt(this.frm.doc.base_net_total *
Anand Doshibd67e872014-04-11 16:51:27 +0530177 sales_person.allocated_percentage / 100.0,
Anand Doshif3096132013-05-21 19:35:06 +0530178 precision("allocated_amount", sales_person));
179
180 refresh_field(["allocated_percentage", "allocated_amount"], sales_person.name,
181 sales_person.parentfield);
182 }
183 },
Anand Doshibd67e872014-04-11 16:51:27 +0530184
Anand Doshifc777182013-05-27 19:29:07 +0530185 warehouse: function(doc, cdt, cdn) {
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530186 var me = this;
Rushabh Mehta66d52b52014-03-27 14:17:33 +0530187 var item = frappe.get_doc(cdt, cdn);
Rushabh Mehtabe2ee182016-04-29 17:22:42 +0530188
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530189 if(item.item_code && item.warehouse) {
Anand Doshi1fac2a92013-07-29 19:30:39 +0530190 return this.frm.call({
Kanchan Chauhanaf0d6372016-11-13 21:19:09 +0530191 method: "erpnext.stock.get_item_details.get_bin_details_and_serial_nos",
Anand Doshifc777182013-05-27 19:29:07 +0530192 child: item,
193 args: {
194 item_code: item.item_code,
Anand Doshi1dc95ed2013-07-23 13:36:38 +0530195 warehouse: item.warehouse,
Kanchan Chauhan5a980ac2017-02-10 14:27:11 +0530196 stock_qty: item.stock_qty,
Nabin Hait1d90b412016-12-24 10:42:23 +0530197 serial_no: item.serial_no || ""
Anand Doshifc777182013-05-27 19:29:07 +0530198 },
Saurabhd3135532016-02-25 18:59:20 +0530199 callback:function(r){
Faris Ansariab74ca72017-05-30 12:54:42 +0530200 if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
tundebabzy8ae53ca2017-11-30 07:07:21 +0100201 me.set_batch_number(cdt, cdn);
Saurabhd3135532016-02-25 18:59:20 +0530202 me.batch_no(doc, cdt, cdn);
203 }
204 }
Anand Doshifc777182013-05-27 19:29:07 +0530205 });
206 }
207 },
Anand Doshibd67e872014-04-11 16:51:27 +0530208
Anand Doshi33fe8672013-08-02 12:39:10 +0530209 toggle_editable_price_list_rate: function() {
Nabin Haitdd38a262014-12-26 13:15:21 +0530210 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 +0530211 var editable_price_list_rate = cint(frappe.defaults.get_default("editable_price_list_rate"));
Anand Doshibd67e872014-04-11 16:51:27 +0530212
Anand Doshi33fe8672013-08-02 12:39:10 +0530213 if(df && editable_price_list_rate) {
214 df.read_only = 0;
215 }
216 },
Anand Doshibd67e872014-04-11 16:51:27 +0530217
Anand Doshif3096132013-05-21 19:35:06 +0530218 calculate_commission: function() {
Anand Doshi923d41d2013-05-28 17:23:36 +0530219 if(this.frm.fields_dict.commission_rate) {
220 if(this.frm.doc.commission_rate > 100) {
Pratik Vyasb52618c2014-04-14 16:25:30 +0530221 var msg = __(frappe.meta.get_label(this.frm.doc.doctype, "commission_rate", this.frm.doc.name)) +
222 " " + __("cannot be greater than 100");
Faris Ansariab74ca72017-05-30 12:54:42 +0530223 frappe.msgprint(msg);
Anand Doshi923d41d2013-05-28 17:23:36 +0530224 throw msg;
225 }
Anand Doshibd67e872014-04-11 16:51:27 +0530226
Nabin Hait5690be12015-02-12 16:09:11 +0530227 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 +0530228 precision("total_commission"));
229 }
Anand Doshif3096132013-05-21 19:35:06 +0530230 },
Anand Doshibd67e872014-04-11 16:51:27 +0530231
Anand Doshif3096132013-05-21 19:35:06 +0530232 calculate_contribution: function() {
Anand Doshi2168e392013-05-23 19:25:08 +0530233 var me = this;
Rushabh Mehtaaa355af2014-03-26 18:24:30 +0530234 $.each(this.frm.doc.doctype.sales_team || [], function(i, sales_person) {
Faris Ansariab74ca72017-05-30 12:54:42 +0530235 frappe.model.round_floats_in(sales_person);
236 if(sales_person.allocated_percentage) {
237 sales_person.allocated_amount = flt(
238 me.frm.doc.base_net_total * sales_person.allocated_percentage / 100.0,
239 precision("allocated_amount", sales_person));
240 }
241 });
Anand Doshif3096132013-05-21 19:35:06 +0530242 },
Anand Doshibd67e872014-04-11 16:51:27 +0530243
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530244 batch_no: function(doc, cdt, cdn) {
245 var me = this;
246 var item = frappe.get_doc(cdt, cdn);
Nabin Hait2ed71ba2015-03-20 15:06:30 +0530247
Sambhaji Kolatea4fa96c2015-03-30 16:04:55 +0530248 if(item.warehouse && item.item_code && item.batch_no) {
Faris Ansariab74ca72017-05-30 12:54:42 +0530249 return this.frm.call({
250 method: "erpnext.stock.get_item_details.get_batch_qty",
251 child: item,
252 args: {
253 "batch_no": item.batch_no,
254 "warehouse": item.warehouse,
255 "item_code": item.item_code
256 },
257 "fieldname": "actual_batch_qty"
258 });
Sambhaji Kolatefeff40a2015-03-11 11:50:28 +0530259 }
Sambhaji Kolate98dbccd2015-03-10 15:04:28 +0530260 },
261
Anand Doshi2168e392013-05-23 19:25:08 +0530262 set_dynamic_labels: function() {
Anand Doshi61a2f682013-06-21 17:55:31 +0530263 this._super();
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530264 this.set_product_bundle_help(this.frm.doc);
Nabin Hait0b157552014-06-24 17:02:45 +0530265 },
266
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530267 set_product_bundle_help: function(doc) {
Nabin Hait0b157552014-06-24 17:02:45 +0530268 if(!cur_frm.fields_dict.packing_list) return;
Nabin Haite7d15362014-12-25 16:01:55 +0530269 if ((doc.packed_items || []).length) {
Nabin Hait0b157552014-06-24 17:02:45 +0530270 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true);
271
Faris Ansariab74ca72017-05-30 12:54:42 +0530272 if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
273 var help_msg = "<div class='alert alert-warning'>" +
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530274 __("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 +0530275 "</div>";
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530276 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = help_msg;
Nabin Hait0b157552014-06-24 17:02:45 +0530277 }
278 } else {
279 $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false);
Faris Ansariab74ca72017-05-30 12:54:42 +0530280 if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530281 frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = '';
Nabin Hait0b157552014-06-24 17:02:45 +0530282 }
283 }
Neil Trini Lasradoed8cecb2015-07-07 13:59:23 +0530284 refresh_field('product_bundle_help');
Saurabheba7aa42015-12-16 09:57:59 +0530285 },
Anand Doshi01de9452016-01-26 16:22:50 +0530286
Saurabheba7aa42015-12-16 09:57:59 +0530287 make_payment_request: function() {
Saurabheba7aa42015-12-16 09:57:59 +0530288 frappe.call({
289 method:"erpnext.accounts.doctype.payment_request.payment_request.make_payment_request",
290 args: {
291 "dt": cur_frm.doc.doctype,
292 "dn": cur_frm.doc.name,
Saurabhb109ee92015-12-16 20:48:40 +0530293 "recipient_id": cur_frm.doc.contact_email
Saurabheba7aa42015-12-16 09:57:59 +0530294 },
295 callback: function(r) {
Saurabhcb98d9e2015-12-17 09:48:44 +0530296 if(!r.exc){
Saurabh3ba22672015-12-21 18:24:49 +0530297 var doc = frappe.model.sync(r.message);
Saurabh3ba22672015-12-21 18:24:49 +0530298 frappe.set_route("Form", r.message.doctype, r.message.name);
Saurabhcb98d9e2015-12-17 09:48:44 +0530299 }
Saurabheba7aa42015-12-16 09:57:59 +0530300 }
301 })
mbauskar1e9c1642016-01-18 16:21:25 +0530302 },
mbauskar1e428ae2016-01-19 19:52:22 +0530303
mbauskara52472c2016-03-05 15:10:25 +0530304 margin_rate_or_amount: function(doc, cdt, cdn) {
mbauskar1e9c1642016-01-18 16:21:25 +0530305 // calculated the revised total margin and rate on margin rate changes
Faris Ansariab74ca72017-05-30 12:54:42 +0530306 var item = locals[cdt][cdn];
Rohit Waghchaure6087fe12016-04-09 14:31:09 +0530307 this.apply_pricing_rule_on_item(item)
mbauskara52472c2016-03-05 15:10:25 +0530308 this.calculate_taxes_and_totals();
mbauskar1e9c1642016-01-18 16:21:25 +0530309 cur_frm.refresh_fields();
310 },
mbauskar1e428ae2016-01-19 19:52:22 +0530311
mbauskara52472c2016-03-05 15:10:25 +0530312 margin_type: function(doc, cdt, cdn){
mbauskar1e9c1642016-01-18 16:21:25 +0530313 // calculate the revised total margin and rate on margin type changes
Faris Ansariab74ca72017-05-30 12:54:42 +0530314 var item = locals[cdt][cdn];
Nabin Haite72c98d2017-05-24 09:01:44 +0530315 if(!item.margin_type) {
316 frappe.model.set_value(cdt, cdn, "margin_rate_or_amount", 0);
317 } else {
318 this.apply_pricing_rule_on_item(item, doc,cdt, cdn)
319 this.calculate_taxes_and_totals();
320 cur_frm.refresh_fields();
321 }
Nabin Hait879e1622017-08-21 08:28:55 +0530322 },
323
324 company_address: function() {
325 var me = this;
326 if(this.frm.doc.company_address) {
327 frappe.call({
328 method: "frappe.contacts.doctype.address.address.get_address_display",
329 args: {"address_dict": this.frm.doc.company_address },
330 callback: function(r) {
331 if(r.message) {
332 me.frm.set_value("company_address_display", r.message)
333 }
334 }
335 })
336 } else {
337 this.frm.set_value("company_address_display", "");
338 }
tundebabzyacccdb32017-11-23 08:35:15 +0100339 },
340
341 conversion_factor: function(doc, cdt, cdn, dont_fetch_price_list_rate) {
342 this._super(doc, cdt, cdn, dont_fetch_price_list_rate);
343 if(frappe.meta.get_docfield(cdt, "stock_qty", cdn)) {
344 this.set_batch_number(cdt, cdn);
345 }
346 },
347
348 qty: function(doc, cdt, cdn) {
349 this._super(doc, cdt, cdn);
350 this.set_batch_number(cdt, cdn);
351 },
352
353 /* Determine appropriate batch number and set it in the form.
354 * @param {string} cdt - Document Doctype
355 * @param {string} cdn - Document name
356 */
357 set_batch_number: function(cdt, cdn) {
358 const doc = frappe.get_doc(cdt, cdn);
rohitwaghchaure15f8fe02017-11-24 10:46:27 +0530359 if (doc && doc.has_batch_no) {
tundebabzyacccdb32017-11-23 08:35:15 +0100360 this._set_batch_number(doc);
361 }
362 },
363
364 _set_batch_number: function(doc) {
365 return frappe.call({
366 method: 'erpnext.stock.doctype.batch.batch.get_batch_no',
367 args: {'item_code': doc.item_code, 'warehouse': doc.warehouse, 'qty': flt(doc.qty) * flt(doc.conversion_factor)},
368 callback: function(r) {
369 if(r.message) {
370 frappe.model.set_value(doc.doctype, doc.name, 'batch_no', r.message);
tundebabzy8ae53ca2017-11-30 07:07:21 +0100371 } else {
372 frappe.model.set_value(doc.doctype, doc.name, 'batch_no', r.message);
tundebabzyacccdb32017-11-23 08:35:15 +0100373 }
374 }
375 });
376 },
Nabin Hait0b157552014-06-24 17:02:45 +0530377});
Anand Doshi43f087c2014-08-26 14:25:53 +0530378
Neil Trini Lasrado6e343e22016-03-09 17:02:59 +0530379frappe.ui.form.on(cur_frm.doctype,"project", function(frm) {
Nabin Hait10b155a2014-10-23 13:18:59 +0530380 if(in_list(["Delivery Note", "Sales Invoice"], frm.doc.doctype)) {
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530381 if(frm.doc.project) {
382 frappe.call({
383 method:'erpnext.projects.doctype.project.project.get_cost_center_name' ,
384 args: { project: frm.doc.project },
385 callback: function(r, rt) {
386 if(!r.exc) {
387 $.each(frm.doc["items"] || [], function(i, row) {
388 if(r.message) {
389 frappe.model.set_value(row.doctype, row.name, "cost_center", r.message);
Faris Ansariab74ca72017-05-30 12:54:42 +0530390 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 +0530391 }
392 })
393 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530394 }
Rushabh Mehta532eedf2016-05-19 18:22:49 +0530395 })
396 }
Nabin Hait10b155a2014-10-23 13:18:59 +0530397 }
Kanchan Chauhanaf0d6372016-11-13 21:19:09 +0530398})