Anand Doshi | 885e074 | 2015-03-03 14:55:30 +0530 | [diff] [blame] | 1 | // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors |
Rushabh Mehta | e67d1fb | 2013-08-05 14:59:54 +0530 | [diff] [blame] | 2 | // License: GNU General Public License v3. See license.txt |
Rushabh Mehta | 3966f1d | 2012-02-23 12:35:32 +0530 | [diff] [blame] | 3 | |
Pratik Vyas | c1e6e4c | 2011-06-08 14:37:15 +0530 | [diff] [blame] | 4 | |
Nabin Hait | 613d081 | 2015-02-23 11:58:15 +0530 | [diff] [blame] | 5 | cur_frm.cscript.tax_table = "Sales Taxes and Charges"; |
Rushabh Mehta | 009378e | 2015-05-06 22:59:00 +0530 | [diff] [blame] | 6 | {% include 'accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js' %} |
Nabin Hait | 613d081 | 2015-02-23 11:58:15 +0530 | [diff] [blame] | 7 | |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 8 | frappe.provide("erpnext.selling"); |
Nabin Hait | b4a3dfa | 2015-01-22 17:13:13 +0530 | [diff] [blame] | 9 | frappe.require("assets/erpnext/js/controllers/transaction.js"); |
Rushabh Mehta | b09d9da | 2014-01-02 11:47:23 +0530 | [diff] [blame] | 10 | |
Rushabh Mehta | e10cf02 | 2014-09-12 13:09:41 +0530 | [diff] [blame] | 11 | cur_frm.email_field = "contact_email"; |
| 12 | |
Anand Doshi | 3543f30 | 2013-05-24 19:25:01 +0530 | [diff] [blame] | 13 | erpnext.selling.SellingController = erpnext.TransactionController.extend({ |
Anand Doshi | 9b49614 | 2013-07-11 19:13:58 +0530 | [diff] [blame] | 14 | onload: function() { |
| 15 | this._super(); |
Anand Doshi | 9b49614 | 2013-07-11 19:13:58 +0530 | [diff] [blame] | 16 | this.setup_queries(); |
| 17 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 18 | |
Anand Doshi | 9b49614 | 2013-07-11 19:13:58 +0530 | [diff] [blame] | 19 | setup_queries: function() { |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 20 | var me = this; |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 21 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 22 | this.frm.add_fetch("sales_partner", "commission_rate", "commission_rate"); |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 23 | |
| 24 | $.each([["customer_address", "customer_filter"], |
Anand Doshi | d5d39ac | 2013-07-29 13:28:37 +0530 | [diff] [blame] | 25 | ["shipping_address_name", "customer_filter"], |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 26 | ["contact_person", "customer_filter"], |
| 27 | ["customer", "customer"], |
| 28 | ["lead", "lead"]], |
Anand Doshi | d5d39ac | 2013-07-29 13:28:37 +0530 | [diff] [blame] | 29 | function(i, opts) { |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 30 | if(me.frm.fields_dict[opts[0]]) |
Anand Doshi | d5d39ac | 2013-07-29 13:28:37 +0530 | [diff] [blame] | 31 | me.frm.set_query(opts[0], erpnext.queries[opts[1]]); |
| 32 | }); |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 33 | |
Akhilesh Darjee | 4f72156 | 2014-01-29 16:31:38 +0530 | [diff] [blame] | 34 | if(this.frm.fields_dict.taxes_and_charges) { |
| 35 | this.frm.set_query("taxes_and_charges", function() { |
Saurabh | f52dc07 | 2013-07-10 13:07:49 +0530 | [diff] [blame] | 36 | return { |
| 37 | filters: [ |
Rushabh Mehta | ab1ed01 | 2015-05-08 11:08:48 +0530 | [diff] [blame] | 38 | ['Sales Taxes and Charges Template', 'company', '=', me.frm.doc.company], |
| 39 | ['Sales Taxes and Charges Template', 'docstatus', '!=', 2] |
Saurabh | f52dc07 | 2013-07-10 13:07:49 +0530 | [diff] [blame] | 40 | ] |
| 41 | } |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 42 | }); |
| 43 | } |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 44 | |
Rushabh Mehta | 4a404e9 | 2013-08-09 18:11:35 +0530 | [diff] [blame] | 45 | if(this.frm.fields_dict.selling_price_list) { |
| 46 | this.frm.set_query("selling_price_list", function() { |
Nabin Hait | dc15b4f | 2014-01-20 16:48:49 +0530 | [diff] [blame] | 47 | return { filters: { selling: 1 } }; |
Anand Doshi | 720a01a | 2013-07-26 11:32:02 +0530 | [diff] [blame] | 48 | }); |
Anand Doshi | 720a01a | 2013-07-26 11:32:02 +0530 | [diff] [blame] | 49 | } |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 50 | |
Nabin Hait | dd38a26 | 2014-12-26 13:15:21 +0530 | [diff] [blame] | 51 | if(!this.frm.fields_dict["items"]) { |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 52 | return; |
| 53 | } |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 54 | |
Nabin Hait | dd38a26 | 2014-12-26 13:15:21 +0530 | [diff] [blame] | 55 | if(this.frm.fields_dict["items"].grid.get_field('item_code')) { |
| 56 | this.frm.set_query("item_code", "items", function() { |
Anand Doshi | 9b49614 | 2013-07-11 19:13:58 +0530 | [diff] [blame] | 57 | return { |
Rushabh Mehta | 6de403f | 2013-12-13 14:10:14 +0530 | [diff] [blame] | 58 | query: "erpnext.controllers.queries.item_query", |
Anand Doshi | 9b49614 | 2013-07-11 19:13:58 +0530 | [diff] [blame] | 59 | filters: (me.frm.doc.order_type === "Maintenance" ? |
| 60 | {'is_service_item': 'Yes'}: |
| 61 | {'is_sales_item': 'Yes' }) |
| 62 | } |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 63 | }); |
| 64 | } |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 65 | |
Nabin Hait | dd38a26 | 2014-12-26 13:15:21 +0530 | [diff] [blame] | 66 | if(this.frm.fields_dict["items"].grid.get_field('batch_no')) { |
| 67 | this.frm.set_query("batch_no", "items", function(doc, cdt, cdn) { |
Rushabh Mehta | 66d52b5 | 2014-03-27 14:17:33 +0530 | [diff] [blame] | 68 | var item = frappe.get_doc(cdt, cdn); |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 69 | if(!item.item_code) { |
Pratik Vyas | b52618c | 2014-04-14 16:25:30 +0530 | [diff] [blame] | 70 | frappe.throw(__("Please enter Item Code to get batch no")); |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 71 | } else { |
Nabin Hait | d1fd1e2 | 2013-10-18 12:29:11 +0530 | [diff] [blame] | 72 | filters = { |
| 73 | 'item_code': item.item_code, |
Neil Trini Lasrado | ebb60f5 | 2015-07-08 14:36:09 +0530 | [diff] [blame] | 74 | 'posting_date': me.frm.doc.posting_date || nowdate(), |
Nabin Hait | d1fd1e2 | 2013-10-18 12:29:11 +0530 | [diff] [blame] | 75 | } |
| 76 | if(item.warehouse) filters["warehouse"] = item.warehouse |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 77 | |
Nabin Hait | d1fd1e2 | 2013-10-18 12:29:11 +0530 | [diff] [blame] | 78 | return { |
Akhilesh Darjee | 4f72156 | 2014-01-29 16:31:38 +0530 | [diff] [blame] | 79 | query : "erpnext.controllers.queries.get_batch_no", |
Nabin Hait | d1fd1e2 | 2013-10-18 12:29:11 +0530 | [diff] [blame] | 80 | filters: filters |
Anand Doshi | 99100a4 | 2013-07-04 17:13:53 +0530 | [diff] [blame] | 81 | } |
| 82 | } |
| 83 | }); |
| 84 | } |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 85 | |
Anand Doshi | ed69892 | 2013-07-23 15:16:50 +0530 | [diff] [blame] | 86 | if(this.frm.fields_dict.sales_team && this.frm.fields_dict.sales_team.grid.get_field("sales_person")) { |
Anand Doshi | d5d39ac | 2013-07-29 13:28:37 +0530 | [diff] [blame] | 87 | this.frm.set_query("sales_person", "sales_team", erpnext.queries.not_a_group_filter); |
Anand Doshi | ed69892 | 2013-07-23 15:16:50 +0530 | [diff] [blame] | 88 | } |
Anand Doshi | 1dde46a | 2013-05-15 21:15:57 +0530 | [diff] [blame] | 89 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 90 | |
Anand Doshi | c4a54fe | 2013-08-01 18:19:51 +0530 | [diff] [blame] | 91 | refresh: function() { |
| 92 | this._super(); |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 93 | this.frm.toggle_display("customer_name", |
Akhilesh Darjee | 5ce1b8b | 2013-12-09 16:29:04 +0530 | [diff] [blame] | 94 | (this.frm.doc.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer)); |
Nabin Hait | e7d1536 | 2014-12-25 16:01:55 +0530 | [diff] [blame] | 95 | if(this.frm.fields_dict.packed_items) { |
| 96 | var packing_list_exists = (this.frm.doc.packed_items || []).length; |
Anand Doshi | c4a54fe | 2013-08-01 18:19:51 +0530 | [diff] [blame] | 97 | this.frm.toggle_display("packing_list", packing_list_exists ? true : false); |
| 98 | } |
Nabin Hait | 2029ea9 | 2015-04-16 17:55:35 +0530 | [diff] [blame] | 99 | this.toggle_editable_price_list_rate(); |
Rushabh Mehta | 8aded13 | 2013-07-04 12:50:52 +0530 | [diff] [blame] | 100 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 101 | |
Anand Doshi | 3543f30 | 2013-05-24 19:25:01 +0530 | [diff] [blame] | 102 | customer: function() { |
Nabin Hait | a3dd72a | 2014-05-28 12:49:20 +0530 | [diff] [blame] | 103 | var me = this; |
| 104 | erpnext.utils.get_party_details(this.frm, null, null, function(){me.apply_pricing_rule()}); |
Anand Doshi | 3543f30 | 2013-05-24 19:25:01 +0530 | [diff] [blame] | 105 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 106 | |
Nabin Hait | a279d78 | 2013-07-15 13:04:33 +0530 | [diff] [blame] | 107 | customer_address: function() { |
Rushabh Mehta | b09d9da | 2014-01-02 11:47:23 +0530 | [diff] [blame] | 108 | erpnext.utils.get_address_display(this.frm, "customer_address"); |
Nabin Hait | a279d78 | 2013-07-15 13:04:33 +0530 | [diff] [blame] | 109 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 110 | |
Nabin Hait | 9d1f077 | 2014-02-19 17:43:24 +0530 | [diff] [blame] | 111 | shipping_address_name: function() { |
| 112 | erpnext.utils.get_address_display(this.frm, "shipping_address_name", "shipping_address"); |
| 113 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 114 | |
Nabin Hait | a3dd72a | 2014-05-28 12:49:20 +0530 | [diff] [blame] | 115 | sales_partner: function() { |
| 116 | this.apply_pricing_rule(); |
| 117 | }, |
| 118 | |
| 119 | campaign: function() { |
| 120 | this.apply_pricing_rule(); |
| 121 | }, |
| 122 | |
Rushabh Mehta | 4a404e9 | 2013-08-09 18:11:35 +0530 | [diff] [blame] | 123 | selling_price_list: function() { |
Anand Doshi | dffec8f | 2014-07-01 17:45:15 +0530 | [diff] [blame] | 124 | this.apply_price_list(); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 125 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 126 | |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 127 | price_list_rate: function(doc, cdt, cdn) { |
Rushabh Mehta | 66d52b5 | 2014-03-27 14:17:33 +0530 | [diff] [blame] | 128 | var item = frappe.get_doc(cdt, cdn); |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 129 | frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]); |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 130 | |
Nabin Hait | 7979f7e | 2014-02-10 18:26:49 +0530 | [diff] [blame] | 131 | item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0), |
| 132 | precision("rate", item)); |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 133 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 134 | this.calculate_taxes_and_totals(); |
| 135 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 136 | |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 137 | discount_percentage: function(doc, cdt, cdn) { |
Rushabh Mehta | 66d52b5 | 2014-03-27 14:17:33 +0530 | [diff] [blame] | 138 | var item = frappe.get_doc(cdt, cdn); |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 139 | if(!item.price_list_rate) { |
| 140 | item.discount_percentage = 0.0; |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 141 | } else { |
Nabin Hait | a7f757a | 2014-02-10 17:54:04 +0530 | [diff] [blame] | 142 | this.price_list_rate(doc, cdt, cdn); |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 143 | } |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 144 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 145 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 146 | commission_rate: function() { |
| 147 | this.calculate_commission(); |
| 148 | refresh_field("total_commission"); |
| 149 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 150 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 151 | total_commission: function() { |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 152 | if(this.frm.doc.base_net_total) { |
| 153 | frappe.model.round_floats_in(this.frm.doc, ["base_net_total", "total_commission"]); |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 154 | |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 155 | if(this.frm.doc.base_net_total < this.frm.doc.total_commission) { |
Pratik Vyas | b52618c | 2014-04-14 16:25:30 +0530 | [diff] [blame] | 156 | var msg = (__("[Error]") + " " + |
| 157 | __(frappe.meta.get_label(this.frm.doc.doctype, "total_commission", |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 158 | this.frm.doc.name)) + " > " + |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 159 | __(frappe.meta.get_label(this.frm.doc.doctype, "base_net_total", this.frm.doc.name))); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 160 | msgprint(msg); |
| 161 | throw msg; |
| 162 | } |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 163 | |
| 164 | this.frm.set_value("commission_rate", |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 165 | flt(this.frm.doc.total_commission * 100.0 / this.frm.doc.base_net_total)); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 166 | } |
| 167 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 168 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 169 | allocated_percentage: function(doc, cdt, cdn) { |
Rushabh Mehta | 66d52b5 | 2014-03-27 14:17:33 +0530 | [diff] [blame] | 170 | var sales_person = frappe.get_doc(cdt, cdn); |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 171 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 172 | if(sales_person.allocated_percentage) { |
| 173 | sales_person.allocated_percentage = flt(sales_person.allocated_percentage, |
| 174 | precision("allocated_percentage", sales_person)); |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 175 | sales_person.allocated_amount = flt(this.frm.doc.base_net_total * |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 176 | sales_person.allocated_percentage / 100.0, |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 177 | precision("allocated_amount", sales_person)); |
| 178 | |
| 179 | refresh_field(["allocated_percentage", "allocated_amount"], sales_person.name, |
| 180 | sales_person.parentfield); |
| 181 | } |
| 182 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 183 | |
Anand Doshi | fc77718 | 2013-05-27 19:29:07 +0530 | [diff] [blame] | 184 | warehouse: function(doc, cdt, cdn) { |
Sambhaji Kolate | 98dbccd | 2015-03-10 15:04:28 +0530 | [diff] [blame] | 185 | var me = this; |
| 186 | this.batch_no(doc, cdt, cdn); |
Rushabh Mehta | 66d52b5 | 2014-03-27 14:17:33 +0530 | [diff] [blame] | 187 | var item = frappe.get_doc(cdt, cdn); |
Anand Doshi | 1dc95ed | 2013-07-23 13:36:38 +0530 | [diff] [blame] | 188 | if(item.item_code && item.warehouse) { |
Anand Doshi | 1fac2a9 | 2013-07-29 19:30:39 +0530 | [diff] [blame] | 189 | return this.frm.call({ |
Nabin Hait | 0984f22 | 2014-05-30 19:10:12 +0530 | [diff] [blame] | 190 | method: "erpnext.stock.get_item_details.get_available_qty", |
Anand Doshi | fc77718 | 2013-05-27 19:29:07 +0530 | [diff] [blame] | 191 | child: item, |
| 192 | args: { |
| 193 | item_code: item.item_code, |
Anand Doshi | 1dc95ed | 2013-07-23 13:36:38 +0530 | [diff] [blame] | 194 | warehouse: item.warehouse, |
Anand Doshi | fc77718 | 2013-05-27 19:29:07 +0530 | [diff] [blame] | 195 | }, |
| 196 | }); |
| 197 | } |
| 198 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 199 | |
Anand Doshi | 33fe867 | 2013-08-02 12:39:10 +0530 | [diff] [blame] | 200 | toggle_editable_price_list_rate: function() { |
Nabin Hait | dd38a26 | 2014-12-26 13:15:21 +0530 | [diff] [blame] | 201 | var df = frappe.meta.get_docfield(this.frm.doc.doctype + " Item", "price_list_rate", this.frm.doc.name); |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 202 | var editable_price_list_rate = cint(frappe.defaults.get_default("editable_price_list_rate")); |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 203 | |
Anand Doshi | 33fe867 | 2013-08-02 12:39:10 +0530 | [diff] [blame] | 204 | if(df && editable_price_list_rate) { |
| 205 | df.read_only = 0; |
| 206 | } |
| 207 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 208 | |
Anand Doshi | 652bc07 | 2014-04-16 15:21:46 +0530 | [diff] [blame] | 209 | calculate_outstanding_amount: function(update_paid_amount) { |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 210 | // NOTE: |
Akhilesh Darjee | 38e8f98 | 2013-09-05 12:59:33 +0530 | [diff] [blame] | 211 | // paid_amount and write_off_amount is only for POS Invoice |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 212 | // total_advance is only for non POS Invoice |
Anand Doshi | 29ea5d0 | 2013-07-05 17:23:14 +0530 | [diff] [blame] | 213 | if(this.frm.doc.doctype == "Sales Invoice" && this.frm.doc.docstatus==0) { |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 214 | frappe.model.round_floats_in(this.frm.doc, ["base_grand_total", "total_advance", "write_off_amount", |
Nabin Hait | 5410680 | 2014-03-13 17:26:41 +0530 | [diff] [blame] | 215 | "paid_amount"]); |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 216 | var total_amount_to_pay = this.frm.doc.base_grand_total - this.frm.doc.write_off_amount |
Nabin Hait | 5410680 | 2014-03-13 17:26:41 +0530 | [diff] [blame] | 217 | - this.frm.doc.total_advance; |
Nabin Hait | 0c9d422 | 2014-03-25 19:35:41 +0530 | [diff] [blame] | 218 | if(this.frm.doc.is_pos) { |
Anand Doshi | 652bc07 | 2014-04-16 15:21:46 +0530 | [diff] [blame] | 219 | if(!this.frm.doc.paid_amount || update_paid_amount===undefined || update_paid_amount) { |
| 220 | this.frm.doc.paid_amount = flt(total_amount_to_pay); |
Anand Doshi | 50d7e8c | 2015-01-06 17:14:13 +0530 | [diff] [blame] | 221 | this.frm.refresh_field("paid_amount"); |
Anand Doshi | 652bc07 | 2014-04-16 15:21:46 +0530 | [diff] [blame] | 222 | } |
Nabin Hait | 0c9d422 | 2014-03-25 19:35:41 +0530 | [diff] [blame] | 223 | } else { |
| 224 | this.frm.doc.paid_amount = 0 |
Anand Doshi | 50d7e8c | 2015-01-06 17:14:13 +0530 | [diff] [blame] | 225 | this.frm.refresh_field("paid_amount"); |
Nabin Hait | 0c9d422 | 2014-03-25 19:35:41 +0530 | [diff] [blame] | 226 | } |
Nabin Hait | 482ffac | 2014-03-13 16:32:43 +0530 | [diff] [blame] | 227 | |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 228 | this.frm.set_value("outstanding_amount", flt(total_amount_to_pay |
Nabin Hait | 5410680 | 2014-03-13 17:26:41 +0530 | [diff] [blame] | 229 | - this.frm.doc.paid_amount, precision("outstanding_amount"))); |
Anand Doshi | fc77718 | 2013-05-27 19:29:07 +0530 | [diff] [blame] | 230 | } |
| 231 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 232 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 233 | calculate_commission: function() { |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 234 | if(this.frm.fields_dict.commission_rate) { |
| 235 | if(this.frm.doc.commission_rate > 100) { |
Pratik Vyas | b52618c | 2014-04-14 16:25:30 +0530 | [diff] [blame] | 236 | var msg = __(frappe.meta.get_label(this.frm.doc.doctype, "commission_rate", this.frm.doc.name)) + |
| 237 | " " + __("cannot be greater than 100"); |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 238 | msgprint(msg); |
| 239 | throw msg; |
| 240 | } |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 241 | |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 242 | this.frm.doc.total_commission = flt(this.frm.doc.base_net_total * this.frm.doc.commission_rate / 100.0, |
Anand Doshi | 923d41d | 2013-05-28 17:23:36 +0530 | [diff] [blame] | 243 | precision("total_commission")); |
| 244 | } |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 245 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 246 | |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 247 | calculate_contribution: function() { |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 248 | var me = this; |
Rushabh Mehta | aa355af | 2014-03-26 18:24:30 +0530 | [diff] [blame] | 249 | $.each(this.frm.doc.doctype.sales_team || [], function(i, sales_person) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 250 | frappe.model.round_floats_in(sales_person); |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 251 | if(sales_person.allocated_percentage) { |
| 252 | sales_person.allocated_amount = flt( |
Nabin Hait | 5690be1 | 2015-02-12 16:09:11 +0530 | [diff] [blame] | 253 | me.frm.doc.base_net_total * sales_person.allocated_percentage / 100.0, |
Anand Doshi | f309613 | 2013-05-21 19:35:06 +0530 | [diff] [blame] | 254 | precision("allocated_amount", sales_person)); |
| 255 | } |
| 256 | }); |
| 257 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 258 | |
Anand Doshi | cefccb9 | 2013-07-15 18:28:14 +0530 | [diff] [blame] | 259 | shipping_rule: function() { |
| 260 | var me = this; |
| 261 | if(this.frm.doc.shipping_rule) { |
Anand Doshi | 1fac2a9 | 2013-07-29 19:30:39 +0530 | [diff] [blame] | 262 | return this.frm.call({ |
Anand Doshi | cefccb9 | 2013-07-15 18:28:14 +0530 | [diff] [blame] | 263 | doc: this.frm.doc, |
| 264 | method: "apply_shipping_rule", |
| 265 | callback: function(r) { |
| 266 | if(!r.exc) { |
| 267 | me.calculate_taxes_and_totals(); |
| 268 | } |
| 269 | } |
| 270 | }) |
| 271 | } |
| 272 | }, |
Anand Doshi | bd67e87 | 2014-04-11 16:51:27 +0530 | [diff] [blame] | 273 | |
Sambhaji Kolate | 98dbccd | 2015-03-10 15:04:28 +0530 | [diff] [blame] | 274 | batch_no: function(doc, cdt, cdn) { |
| 275 | var me = this; |
| 276 | var item = frappe.get_doc(cdt, cdn); |
Nabin Hait | 2ed71ba | 2015-03-20 15:06:30 +0530 | [diff] [blame] | 277 | |
Sambhaji Kolate | a4fa96c | 2015-03-30 16:04:55 +0530 | [diff] [blame] | 278 | if(item.warehouse && item.item_code && item.batch_no) { |
Sambhaji Kolate | feff40a | 2015-03-11 11:50:28 +0530 | [diff] [blame] | 279 | return this.frm.call({ |
| 280 | method: "erpnext.stock.get_item_details.get_batch_qty", |
| 281 | child: item, |
| 282 | args: { |
| 283 | "batch_no": item.batch_no, |
| 284 | "warehouse": item.warehouse, |
| 285 | "item_code": item.item_code |
| 286 | }, |
| 287 | "fieldname": "actual_batch_qty" |
| 288 | }); |
| 289 | } |
Sambhaji Kolate | 98dbccd | 2015-03-10 15:04:28 +0530 | [diff] [blame] | 290 | }, |
| 291 | |
Anand Doshi | 2168e39 | 2013-05-23 19:25:08 +0530 | [diff] [blame] | 292 | set_dynamic_labels: function() { |
Anand Doshi | 61a2f68 | 2013-06-21 17:55:31 +0530 | [diff] [blame] | 293 | this._super(); |
Neil Trini Lasrado | ed8cecb | 2015-07-07 13:59:23 +0530 | [diff] [blame] | 294 | this.set_product_bundle_help(this.frm.doc); |
Nabin Hait | 0b15755 | 2014-06-24 17:02:45 +0530 | [diff] [blame] | 295 | }, |
| 296 | |
Neil Trini Lasrado | ed8cecb | 2015-07-07 13:59:23 +0530 | [diff] [blame] | 297 | set_product_bundle_help: function(doc) { |
Nabin Hait | 0b15755 | 2014-06-24 17:02:45 +0530 | [diff] [blame] | 298 | if(!cur_frm.fields_dict.packing_list) return; |
Nabin Hait | e7d1536 | 2014-12-25 16:01:55 +0530 | [diff] [blame] | 299 | if ((doc.packed_items || []).length) { |
Nabin Hait | 0b15755 | 2014-06-24 17:02:45 +0530 | [diff] [blame] | 300 | $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true); |
| 301 | |
| 302 | if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) { |
| 303 | help_msg = "<div class='alert alert-warning'>" + |
Neil Trini Lasrado | ed8cecb | 2015-07-07 13:59:23 +0530 | [diff] [blame] | 304 | __("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 Hait | 0b15755 | 2014-06-24 17:02:45 +0530 | [diff] [blame] | 305 | "</div>"; |
Neil Trini Lasrado | ed8cecb | 2015-07-07 13:59:23 +0530 | [diff] [blame] | 306 | frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = help_msg; |
Nabin Hait | 0b15755 | 2014-06-24 17:02:45 +0530 | [diff] [blame] | 307 | } |
| 308 | } else { |
| 309 | $(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false); |
| 310 | if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) { |
Neil Trini Lasrado | ed8cecb | 2015-07-07 13:59:23 +0530 | [diff] [blame] | 311 | frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = ''; |
Nabin Hait | 0b15755 | 2014-06-24 17:02:45 +0530 | [diff] [blame] | 312 | } |
| 313 | } |
Neil Trini Lasrado | ed8cecb | 2015-07-07 13:59:23 +0530 | [diff] [blame] | 314 | refresh_field('product_bundle_help'); |
Nabin Hait | cfc6bb1 | 2012-07-11 13:14:52 +0530 | [diff] [blame] | 315 | } |
Nabin Hait | 0b15755 | 2014-06-24 17:02:45 +0530 | [diff] [blame] | 316 | }); |
Anand Doshi | 43f087c | 2014-08-26 14:25:53 +0530 | [diff] [blame] | 317 | |
| 318 | frappe.ui.form.on(cur_frm.doctype,"project_name", function(frm) { |
Nabin Hait | 10b155a | 2014-10-23 13:18:59 +0530 | [diff] [blame] | 319 | if(in_list(["Delivery Note", "Sales Invoice"], frm.doc.doctype)) { |
| 320 | frappe.call({ |
| 321 | method:'erpnext.projects.doctype.project.project.get_cost_center_name' , |
| 322 | args: { project_name: frm.doc.project_name }, |
| 323 | callback: function(r, rt) { |
| 324 | if(!r.exc) { |
Nabin Hait | dd38a26 | 2014-12-26 13:15:21 +0530 | [diff] [blame] | 325 | $.each(frm.doc["items"] || [], function(i, row) { |
Neil Trini Lasrado | 6fc2821 | 2014-10-28 14:36:26 +0530 | [diff] [blame] | 326 | frappe.model.set_value(row.doctype, row.name, "cost_center", r.message); |
| 327 | msgprint(__("Cost Center For Item with Item Code '"+row.item_name+"' has been Changed to "+ r.message)); |
Nabin Hait | 10b155a | 2014-10-23 13:18:59 +0530 | [diff] [blame] | 328 | }) |
| 329 | } |
Anand Doshi | 43f087c | 2014-08-26 14:25:53 +0530 | [diff] [blame] | 330 | } |
Nabin Hait | 10b155a | 2014-10-23 13:18:59 +0530 | [diff] [blame] | 331 | }) |
| 332 | } |
Anand Doshi | 43f087c | 2014-08-26 14:25:53 +0530 | [diff] [blame] | 333 | }) |