[selling/buying] set dynamic labels
This commit is contained in:
		
							parent
							
								
									4543884021
								
							
						
					
					
						commit
						2168e39bf3
					
				| @ -151,7 +151,7 @@ erpnext.buying.BuyingController = wn.ui.form.Controller.extend({ | |||||||
| 	}, | 	}, | ||||||
| 	 | 	 | ||||||
| 	currency: function() { | 	currency: function() { | ||||||
| 		this.set_dynamic_labels(); | 		this.price_list_currency(); | ||||||
| 	}, | 	}, | ||||||
| 	 | 	 | ||||||
| 	company: function() { | 	company: function() { | ||||||
| @ -189,7 +189,8 @@ erpnext.buying.BuyingController = wn.ui.form.Controller.extend({ | |||||||
| 					field_label_map[fname] = label.trim() + " (" + currency + ")"; | 					field_label_map[fname] = label.trim() + " (" + currency + ")"; | ||||||
| 				} | 				} | ||||||
| 			}); | 			}); | ||||||
| 		} | 		}; | ||||||
|  | 		 | ||||||
| 		 | 		 | ||||||
| 		setup_field_label_map(["net_total", "total_tax", "grand_total", "in_words", | 		setup_field_label_map(["net_total", "total_tax", "grand_total", "in_words", | ||||||
| 			"other_charges_added", "other_charges_deducted",  | 			"other_charges_added", "other_charges_deducted",  | ||||||
| @ -211,6 +212,9 @@ erpnext.buying.BuyingController = wn.ui.form.Controller.extend({ | |||||||
| 		this.frm.toggle_display(["conversion_rate", "net_total", "grand_total",  | 		this.frm.toggle_display(["conversion_rate", "net_total", "grand_total",  | ||||||
| 			"in_words", "other_charges_added", "other_charges_deducted"], | 			"in_words", "other_charges_added", "other_charges_deducted"], | ||||||
| 			this.frm.doc.currency != company_currency); | 			this.frm.doc.currency != company_currency); | ||||||
|  | 			 | ||||||
|  | 		this.frm.toggle_display(["plc_conversion_rate"],  | ||||||
|  | 			this.frm.price_list_currency != company_currency) | ||||||
| 		 | 		 | ||||||
| 		// set labels
 | 		// set labels
 | ||||||
| 		$.each(field_label_map, function(fname, label) { | 		$.each(field_label_map, function(fname, label) { | ||||||
| @ -227,8 +231,9 @@ erpnext.buying.BuyingController = wn.ui.form.Controller.extend({ | |||||||
| 			$.each(fields_list, function(i, fname) { | 			$.each(fields_list, function(i, fname) { | ||||||
| 				var docfield = wn.meta.get_docfield(grid_doctype, fname); | 				var docfield = wn.meta.get_docfield(grid_doctype, fname); | ||||||
| 				if(docfield) { | 				if(docfield) { | ||||||
|  | 					var label = wn._((docfield.label || "")).replace(/\([^\)]*\)/g, ""); | ||||||
| 					field_label_map[grid_doctype + "-" + fname] =  | 					field_label_map[grid_doctype + "-" + fname] =  | ||||||
| 						docfield.label + " (" + currency + ")"; | 						label.trim() + " (" + currency + ")"; | ||||||
| 				} | 				} | ||||||
| 			}); | 			}); | ||||||
| 		} | 		} | ||||||
|  | |||||||
| @ -58,10 +58,8 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 	// 2
 | 	// 2
 | ||||||
| 	refresh: function() { | 	refresh: function() { | ||||||
| 		erpnext.hide_naming_series(); | 		erpnext.hide_naming_series(); | ||||||
| 		this.toggle_price_list_fields(); | 		this.show_item_wise_taxes(); | ||||||
| 		 | 		this.set_dynamic_labels(); | ||||||
| 		// TODO
 |  | ||||||
| 		// display item wise taxes in an html table
 |  | ||||||
| 	}, | 	}, | ||||||
| 	 | 	 | ||||||
| 	// 3
 | 	// 3
 | ||||||
| @ -75,7 +73,6 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 				callback: function(r) { | 				callback: function(r) { | ||||||
| 					// remove this call when using client side mapper
 | 					// remove this call when using client side mapper
 | ||||||
| 					me.set_default_values(); | 					me.set_default_values(); | ||||||
| 					 |  | ||||||
| 					me.frm.refresh(); | 					me.frm.refresh(); | ||||||
| 				} | 				} | ||||||
| 			}); | 			}); | ||||||
| @ -134,15 +131,13 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 	company: function() { | 	company: function() { | ||||||
| 		if(this.frm.doc.company) { | 		if(this.frm.doc.company) { | ||||||
| 			var me = this; | 			var me = this; | ||||||
| 			var company_currency = wn.model.get_doc(":Company", this.frm.doc.company).default_currency; | 			var company_currency = this.get_company_currency(); | ||||||
| 			$.each(["currency", "price_list_currency"], function(i, fieldname) { | 			$.each(["currency", "price_list_currency"], function(i, fieldname) { | ||||||
| 				if(!me.doc[fieldname]) { | 				if(!me.doc[fieldname]) { | ||||||
| 					me.frm.set_value(fieldname, company_currency); | 					me.frm.set_value(fieldname, company_currency); | ||||||
| 
 |  | ||||||
| 					// TODO - check this
 |  | ||||||
| 					me.frm.runclientscript(fieldname); |  | ||||||
| 				} | 				} | ||||||
| 			}); | 			}); | ||||||
|  | 			this.price_list_currency(); | ||||||
| 		} | 		} | ||||||
| 	}, | 	}, | ||||||
| 	 | 	 | ||||||
| @ -161,7 +156,7 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 					freeze: true, | 					freeze: true, | ||||||
| 					callback: function(r) { | 					callback: function(r) { | ||||||
| 						if(!r.exc) { | 						if(!r.exc) { | ||||||
| 							me.frm.refresh(); | 							me.frm.refresh_fields(); | ||||||
| 							if(me.frm.doc.price_list_name !== price_list_name) me.price_list_name(); | 							if(me.frm.doc.price_list_name !== price_list_name) me.price_list_name(); | ||||||
| 						} | 						} | ||||||
| 					} | 					} | ||||||
| @ -172,9 +167,51 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 		// TODO hide/unhide related fields
 | 		// TODO hide/unhide related fields
 | ||||||
| 	}, | 	}, | ||||||
| 	 | 	 | ||||||
| 	// TODO
 |  | ||||||
| 	price_list_name: function() { | 	price_list_name: function() { | ||||||
| 		console.log("price_list_name"); | 		var me = this; | ||||||
|  | 		if(this.frm.doc.price_list_name) { | ||||||
|  | 			this.frm.call({ | ||||||
|  | 				method: "setup.utils.get_price_list_currency", | ||||||
|  | 				args: {args: { | ||||||
|  | 					price_list_name: this.frm.doc.price_list_name, | ||||||
|  | 					use_for: "selling" | ||||||
|  | 				}}, | ||||||
|  | 				callback: function(r) { | ||||||
|  | 					if(!r.exc) { | ||||||
|  | 						me.price_list_currency(); | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			}); | ||||||
|  | 		} | ||||||
|  | 	}, | ||||||
|  | 	 | ||||||
|  | 	currency: function() { | ||||||
|  | 		this.price_list_currency(); | ||||||
|  | 	}, | ||||||
|  | 	 | ||||||
|  | 	price_list_currency: function() { | ||||||
|  | 		// What TODO? should we make price list system non-mandatory?
 | ||||||
|  | 		// this.frm.toggle_reqd("plc_conversion_rate",
 | ||||||
|  | 		// 	!!(this.frm.doc.price_list_name && this.frm.doc.price_list_currency));
 | ||||||
|  | 		 | ||||||
|  | 		if(this.frm.doc.price_list_currency === this.get_company_currency()) { | ||||||
|  | 			this.frm.set_value("plc_conversion_rate", 1.0); | ||||||
|  | 			this.calculate_taxes_and_totals(); | ||||||
|  | 		} else if(this.frm.doc.price_list_currency === this.frm.doc.currency) { | ||||||
|  | 			this.frm.set_value("plc_conversion_rate", this.frm.doc.conversion_rate); | ||||||
|  | 			this.calculate_taxes_and_totals(); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		this.set_dynamic_labels(); | ||||||
|  | 	}, | ||||||
|  | 	 | ||||||
|  | 	conversion_rate: function() { | ||||||
|  | 		this.price_list_currency(); | ||||||
|  | 		this.calculate_taxes_and_totals(); | ||||||
|  | 	}, | ||||||
|  | 	 | ||||||
|  | 	plc_conversion_rate: function() { | ||||||
|  | 		this.price_list_currency(); | ||||||
| 	}, | 	}, | ||||||
| 	 | 	 | ||||||
| 	ref_rate: function(doc, cdt, cdn) { | 	ref_rate: function(doc, cdt, cdn) { | ||||||
| @ -214,6 +251,7 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 		try { | 		try { | ||||||
| 			this.validate_on_previous_row(tax); | 			this.validate_on_previous_row(tax); | ||||||
| 			this.validate_inclusive_tax(tax); | 			this.validate_inclusive_tax(tax); | ||||||
|  | 			this.calculate_taxes_and_totals(); | ||||||
| 		} catch(e) { | 		} catch(e) { | ||||||
| 			tax.included_in_print_rate = 0; | 			tax.included_in_print_rate = 0; | ||||||
| 			refresh_field("included_in_print_rate", tax.name, tax.parentfield); | 			refresh_field("included_in_print_rate", tax.name, tax.parentfield); | ||||||
| @ -294,15 +332,6 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 		}); | 		}); | ||||||
| 	}, | 	}, | ||||||
| 	 | 	 | ||||||
| 	// TODO
 |  | ||||||
| 	toggle_price_list_fields: function() { |  | ||||||
| 		 |  | ||||||
| 	}, |  | ||||||
| 	 |  | ||||||
| 	set_dynamic_labels: function() { |  | ||||||
| 		 |  | ||||||
| 	}, |  | ||||||
| 	 |  | ||||||
| 	calculate_taxes_and_totals: function() { | 	calculate_taxes_and_totals: function() { | ||||||
| 		this.frm.doc.conversion_rate = flt(this.frm.doc.conversion_rate, precision("conversion_rate")); | 		this.frm.doc.conversion_rate = flt(this.frm.doc.conversion_rate, precision("conversion_rate")); | ||||||
| 		 | 		 | ||||||
| @ -320,7 +349,6 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 		this.calculate_commission(); | 		this.calculate_commission(); | ||||||
| 		this.calculate_contribution(); | 		this.calculate_contribution(); | ||||||
| 		this._cleanup(); | 		this._cleanup(); | ||||||
| 		 |  | ||||||
| 		this.frm.doc.in_words = this.frm.doc.in_words_export = ""; | 		this.frm.doc.in_words = this.frm.doc.in_words_export = ""; | ||||||
| 		 | 		 | ||||||
| 		// TODO
 | 		// TODO
 | ||||||
| @ -328,7 +356,8 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 		 | 		 | ||||||
| 		// check for custom_recalc in custom scripts of server
 | 		// check for custom_recalc in custom scripts of server
 | ||||||
| 		 | 		 | ||||||
| 		this.frm.refresh(); | 		this.frm.refresh_fields(); | ||||||
|  | 		this.show_item_wise_taxes(); | ||||||
| 				 | 				 | ||||||
| 	}, | 	}, | ||||||
| 	 | 	 | ||||||
| @ -370,6 +399,7 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 			 | 			 | ||||||
| 			// temporary fields
 | 			// temporary fields
 | ||||||
| 			tax.tax_amount_for_current_item = tax.grand_total_for_current_item = 0.0; | 			tax.tax_amount_for_current_item = tax.grand_total_for_current_item = 0.0; | ||||||
|  | 			tax.tax_fraction_for_current_item = tax.grand_total_fraction_for_current_item = 0.0; | ||||||
| 			 | 			 | ||||||
| 			me.validate_on_previous_row(tax); | 			me.validate_on_previous_row(tax); | ||||||
| 			me.validate_inclusive_tax(tax); | 			me.validate_inclusive_tax(tax); | ||||||
| @ -388,10 +418,10 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 				tax.tax_fraction_for_current_item = me.get_current_tax_fraction(tax, item_tax_map); | 				tax.tax_fraction_for_current_item = me.get_current_tax_fraction(tax, item_tax_map); | ||||||
| 				 | 				 | ||||||
| 				if(i==0) { | 				if(i==0) { | ||||||
| 					tax.grand_total_for_current_item = 1 + tax.tax_fraction_for_current_item; | 					tax.grand_total_fraction_for_current_item = 1 + tax.tax_fraction_for_current_item; | ||||||
| 				} else { | 				} else { | ||||||
| 					tax.grand_total_for_current_item =  | 					tax.grand_total_fraction_for_current_item =  | ||||||
| 						me.frm.tax_doclist[i-1].grand_total_for_current_item + | 						me.frm.tax_doclist[i-1].grand_total_fraction_for_current_item + | ||||||
| 						tax.tax_fraction_for_current_item; | 						tax.tax_fraction_for_current_item; | ||||||
| 				} | 				} | ||||||
| 				 | 				 | ||||||
| @ -422,18 +452,18 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 		var current_tax_fraction = 0.0; | 		var current_tax_fraction = 0.0; | ||||||
| 		 | 		 | ||||||
| 		if(cint(tax.included_in_print_rate)) { | 		if(cint(tax.included_in_print_rate)) { | ||||||
| 			var tax_rate = me._get_tax_rate(tax, item_tax_map); | 			var tax_rate = this._get_tax_rate(tax, item_tax_map); | ||||||
| 			 | 			 | ||||||
| 			if(tax.charge_type == "On Net Total") { | 			if(tax.charge_type == "On Net Total") { | ||||||
| 				current_tax_fraction = (tax_rate / 100.0); | 				current_tax_fraction = (tax_rate / 100.0); | ||||||
| 				 | 				 | ||||||
| 			} else if(tax.charge_type == "On Previous Row Amount") { | 			} else if(tax.charge_type == "On Previous Row Amount") { | ||||||
| 				current_tax_fraction = (tax_rate / 100.0) * | 				current_tax_fraction = (tax_rate / 100.0) * | ||||||
| 					me.frm.tax_doclist[cint(tax.row_id) - 1].tax_fraction_for_current_item; | 					this.frm.tax_doclist[cint(tax.row_id) - 1].tax_fraction_for_current_item; | ||||||
| 				 | 				 | ||||||
| 			} else if(tax.charge_type == "On Previous Row Total") { | 			} else if(tax.charge_type == "On Previous Row Total") { | ||||||
| 				current_tax_fraction = (tax_rate / 100.0) * | 				current_tax_fraction = (tax_rate / 100.0) * | ||||||
| 					me.frm.tax_doclist[cint(tax.row_id) - 1].grand_total_fraction_for_current_item; | 					this.frm.tax_doclist[cint(tax.row_id) - 1].grand_total_fraction_for_current_item; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| @ -512,15 +542,15 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 				0.0; | 				0.0; | ||||||
| 			 | 			 | ||||||
| 		} else if(tax.charge_type == "On Net Total") { | 		} else if(tax.charge_type == "On Net Total") { | ||||||
| 			current_tax_amount = (tax_rate / 100.0); | 			current_tax_amount = (tax_rate / 100.0) * item.amount; | ||||||
| 			 | 			 | ||||||
| 		} else if(tax.charge_type == "On Previous Row Amount") { | 		} else if(tax.charge_type == "On Previous Row Amount") { | ||||||
| 			current_tax_amount = (tax_rate / 100.0) * | 			current_tax_amount = (tax_rate / 100.0) * | ||||||
| 				me.frm.tax_doclist[cint(tax.row_id) - 1].tax_amount_for_current_item; | 				this.frm.tax_doclist[cint(tax.row_id) - 1].tax_amount_for_current_item; | ||||||
| 			 | 			 | ||||||
| 		} else if(tax.charge_type == "On Previous Row Total") { | 		} else if(tax.charge_type == "On Previous Row Total") { | ||||||
| 			current_tax_amount = (tax_rate / 100.0) * | 			current_tax_amount = (tax_rate / 100.0) * | ||||||
| 				me.frm.tax_doclist[cint(tax.row_id) - 1].grand_total_for_current_item; | 				this.frm.tax_doclist[cint(tax.row_id) - 1].grand_total_for_current_item; | ||||||
| 			 | 			 | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| @ -558,6 +588,7 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 	}, | 	}, | ||||||
| 	 | 	 | ||||||
| 	calculate_contribution: function() { | 	calculate_contribution: function() { | ||||||
|  | 		var me = this; | ||||||
| 		$.each(wn.model.get_doclist(this.frm.doc.doctype, this.frm.doc.name,  | 		$.each(wn.model.get_doclist(this.frm.doc.doctype, this.frm.doc.name,  | ||||||
| 			{parentfield: "sales_team"}), function(i, sales_person) { | 			{parentfield: "sales_team"}), function(i, sales_person) { | ||||||
| 				wn.model.round_floats_in(sales_person); | 				wn.model.round_floats_in(sales_person); | ||||||
| @ -653,9 +684,162 @@ erpnext.selling.SellingController = wn.ui.form.Controller.extend({ | |||||||
| 	 | 	 | ||||||
| 	_get_tax_rate: function(tax, item_tax_map) { | 	_get_tax_rate: function(tax, item_tax_map) { | ||||||
| 		return (keys(item_tax_map).indexOf(tax.account_head) != -1) ? | 		return (keys(item_tax_map).indexOf(tax.account_head) != -1) ? | ||||||
| 			flt(item_tax_map.get(tax.account_head), precision("rate", tax)) : | 			flt(item_tax_map[tax.account_head], precision("rate", tax)) : | ||||||
| 			tax.rate; | 			tax.rate; | ||||||
| 	}, | 	}, | ||||||
|  | 
 | ||||||
|  | 	show_item_wise_taxes: function() { | ||||||
|  | 		$(this.get_item_wise_taxes_html()) | ||||||
|  | 			.appendTo($(this.frm.fields_dict.other_charges_calculation.wrapper).empty()); | ||||||
|  | 	}, | ||||||
|  | 	 | ||||||
|  | 	get_item_wise_taxes_html: function() { | ||||||
|  | 		var item_tax = {}; | ||||||
|  | 		var tax_accounts = []; | ||||||
|  | 		var company_currency = this.get_company_currency(); | ||||||
|  | 		 | ||||||
|  | 		$.each(this.get_tax_doclist(), function(i, tax) { | ||||||
|  | 			var tax_amount_precision = precision("tax_amount", tax); | ||||||
|  | 			$.each(JSON.parse(tax.item_wise_tax_detail || '{}'),  | ||||||
|  | 				function(item_code, tax_amount) { | ||||||
|  | 					if(!item_tax[item_code]) item_tax[item_code] = {}; | ||||||
|  | 					item_tax[item_code][tax.account_head] = flt(tax_amount, tax_amount_precision); | ||||||
|  | 				}); | ||||||
|  | 			tax_accounts.push(tax.account_head); | ||||||
|  | 		}); | ||||||
|  | 		 | ||||||
|  | 		var headings = $.map([wn._("Item Name")].concat(tax_accounts),  | ||||||
|  | 			function(head) { return '<th style="min-width: 100px;">' + (head || "") + "</th>" }).join("\n"); | ||||||
|  | 		 | ||||||
|  | 		var rows = $.map(this.get_item_doclist(), function(item) { | ||||||
|  | 			var item_tax_record = item_tax[item.item_code || item.item_name]; | ||||||
|  | 			return repl("<tr><td>%(item_name)s</td>%(taxes)s</tr>", { | ||||||
|  | 				item_name: item.item_name, | ||||||
|  | 				taxes: $.map(tax_accounts, function(head) { | ||||||
|  | 					return "<td>" + format_currency(item_tax_record[head], company_currency) + "</td>" | ||||||
|  | 				}).join("\n") | ||||||
|  | 			}); | ||||||
|  | 		}).join("\n"); | ||||||
|  | 		 | ||||||
|  | 		return '<div style="overflow-x: scroll;"><table class="table table-bordered table-hover">\ | ||||||
|  | 			<thead><tr>' + headings + '</tr></thead> \ | ||||||
|  | 			<tbody>' + rows + '</tbody> \ | ||||||
|  | 		</table></div>'; | ||||||
|  | 	}, | ||||||
|  | 	 | ||||||
|  | 	get_charges: function() { | ||||||
|  | 		var me = this; | ||||||
|  | 		if(this.frm.doc.charge) { | ||||||
|  | 			this.frm.call({ | ||||||
|  | 				doc: this.frm.doc, | ||||||
|  | 				method: "get_other_charges", | ||||||
|  | 				callback: function(r) { | ||||||
|  | 					if(!r.exc) { | ||||||
|  | 						me.calculate_taxes_and_totals(); | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			}); | ||||||
|  | 		} | ||||||
|  | 	}, | ||||||
|  | 	 | ||||||
|  | 	set_dynamic_labels: function() { | ||||||
|  | 		var company_currency = this.get_company_currency(); | ||||||
|  | 		 | ||||||
|  | 		this.change_form_labels(company_currency); | ||||||
|  | 		this.change_grid_labels(company_currency); | ||||||
|  | 	}, | ||||||
|  | 	 | ||||||
|  | 	change_form_labels: function(company_currency) { | ||||||
|  | 		var me = this; | ||||||
|  | 		var field_label_map = {}; | ||||||
|  | 		 | ||||||
|  | 		var setup_field_label_map = function(fields_list, currency) { | ||||||
|  | 			$.each(fields_list, function(i, fname) { | ||||||
|  | 				var docfield = wn.meta.get_docfield(me.frm.doc.doctype, fname); | ||||||
|  | 				if(docfield) { | ||||||
|  | 					var label = wn._((docfield.label || "")).replace(/\([^\)]*\)/g, ""); | ||||||
|  | 					field_label_map[fname] = label.trim() + " (" + currency + ")"; | ||||||
|  | 				} | ||||||
|  | 			}); | ||||||
|  | 		}; | ||||||
|  | 		 | ||||||
|  | 		setup_field_label_map(["net_total", "other_charges_total", "grand_total",  | ||||||
|  | 			"rounded_total", "in_words", | ||||||
|  | 			"outstanding_amount", "total_advance", "paid_amount", "write_off_amount"], | ||||||
|  | 			company_currency); | ||||||
|  | 		 | ||||||
|  | 		setup_field_label_map(["net_total_export", "other_charges_total_export", "grand_total_export",  | ||||||
|  | 			"rounded_total_export", "in_words_export"], this.frm.doc.currency); | ||||||
|  | 		 | ||||||
|  | 		setup_field_label_map(["conversion_rate"], 	"1 " + this.frm.doc.currency  | ||||||
|  | 			+ " = [?] " + company_currency); | ||||||
|  | 		 | ||||||
|  | 		if(this.frm.doc.price_list_currency && this.frm.doc.price_list_currency!=company_currency) { | ||||||
|  | 			setup_field_label_map(["plc_conversion_rate"], 	"1 " + this.frm.doc.price_list_currency  | ||||||
|  | 				+ " = [?] " + company_currency); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		// toggle fields
 | ||||||
|  | 		this.frm.toggle_display(["conversion_rate", "net_total", "other_charges_total",  | ||||||
|  | 			"grand_total", "rounded_total", "in_words"], | ||||||
|  | 			this.frm.doc.currency != company_currency); | ||||||
|  | 			 | ||||||
|  | 		this.frm.toggle_display(["plc_conversion_rate"],  | ||||||
|  | 			this.frm.doc.price_list_currency != company_currency); | ||||||
|  | 		 | ||||||
|  | 		// set labels
 | ||||||
|  | 		$.each(field_label_map, function(fname, label) { | ||||||
|  | 			me.frm.fields_dict[fname].set_label(label); | ||||||
|  | 		}); | ||||||
|  | 	}, | ||||||
|  | 	 | ||||||
|  | 	change_grid_labels: function(company_currency) { | ||||||
|  | 		var me = this; | ||||||
|  | 		var field_label_map = {}; | ||||||
|  | 		 | ||||||
|  | 		var setup_field_label_map = function(fields_list, currency, parentfield) { | ||||||
|  | 			var grid_doctype = me.frm.fields_dict[parentfield].grid.doctype; | ||||||
|  | 			$.each(fields_list, function(i, fname) { | ||||||
|  | 				var docfield = wn.meta.get_docfield(grid_doctype, fname); | ||||||
|  | 				if(docfield) { | ||||||
|  | 					var label = wn._((docfield.label || "")).replace(/\([^\)]*\)/g, ""); | ||||||
|  | 					field_label_map[grid_doctype + "-" + fname] =  | ||||||
|  | 						label.trim() + " (" + currency + ")"; | ||||||
|  | 				} | ||||||
|  | 			}); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		setup_field_label_map(["basic_rate", "base_ref_rate", "amount"], | ||||||
|  | 			company_currency, this.fname); | ||||||
|  | 		 | ||||||
|  | 		setup_field_label_map(["export_rate", "ref_rate", "export_amount"], | ||||||
|  | 			this.frm.doc.currency, this.fname); | ||||||
|  | 		 | ||||||
|  | 		setup_field_label_map(["tax_amount", "total"], company_currency, "other_charges"); | ||||||
|  | 		 | ||||||
|  | 		if(this.frm.fields_dict["advance_allocation_details"]) { | ||||||
|  | 			setup_field_label_map(["advance_amount", "allocated_amount"], company_currency, | ||||||
|  | 				"advance_allocation_details"); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		// toggle columns
 | ||||||
|  | 		var item_grid = this.frm.fields_dict[this.fname].grid; | ||||||
|  | 		var show = this.frm.doc.currency != company_currency; | ||||||
|  | 		$.each(["basic_rate", "base_ref_rate", "amount"], function(i, fname) { | ||||||
|  | 			if(wn.meta.get_docfield(item_grid.doctype, fname)) | ||||||
|  | 				item_grid.set_column_disp(fname, show); | ||||||
|  | 		}); | ||||||
|  | 		 | ||||||
|  | 		// set labels
 | ||||||
|  | 		var $wrapper = $(this.frm.wrapper); | ||||||
|  | 		$.each(field_label_map, function(fname, label) { | ||||||
|  | 			$wrapper.find('[data-grid-fieldname="'+fname+'"]').text(label); | ||||||
|  | 		}); | ||||||
|  | 	}, | ||||||
|  | 	 | ||||||
|  | 	get_company_currency: function() { | ||||||
|  | 		return erpnext.get_currency(this.frm.doc.company); | ||||||
|  | 	} | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| // to save previous state of cur_frm.cscript
 | // to save previous state of cur_frm.cscript
 | ||||||
| @ -667,61 +851,6 @@ cur_frm.cscript = new erpnext.selling.SellingController({frm: cur_frm}); | |||||||
| // for backward compatibility: combine new and previous states
 | // for backward compatibility: combine new and previous states
 | ||||||
| $.extend(cur_frm.cscript, prev_cscript); | $.extend(cur_frm.cscript, prev_cscript); | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| var set_dynamic_label_par = function(doc, cdt, cdn, base_curr) { |  | ||||||
| 	//parent flds
 |  | ||||||
| 	par_cols_base = {'net_total': 'Net Total', 'other_charges_total': 'Taxes and Charges Total',  |  | ||||||
| 		'grand_total':	'Grand Total', 'rounded_total': 'Rounded Total', 'in_words': 'In Words'} |  | ||||||
| 	par_cols_export = {'grand_total_export': 'Grand Total', 'rounded_total_export':	'Rounded Total', 'in_words_export':	'In Words'}; |  | ||||||
| 
 |  | ||||||
| 	for (d in par_cols_base) cur_frm.fields_dict[d].label_span.innerHTML = par_cols_base[d]+' (' + base_curr + ')'; |  | ||||||
| 	for (d in par_cols_export) cur_frm.fields_dict[d].label_span.innerHTML = par_cols_export[d]+' (' + doc.currency + ')'; |  | ||||||
| 	cur_frm.fields_dict['conversion_rate'].label_span.innerHTML = "Conversion Rate (" + doc.currency +' -> '+ base_curr + ')'; |  | ||||||
| 	cur_frm.fields_dict['plc_conversion_rate'].label_span.innerHTML = 'Price List Currency Conversion Rate (' + doc.price_list_currency +' -> '+ base_curr + ')'; |  | ||||||
| 
 |  | ||||||
| 	if (doc.doctype == 'Sales Invoice') { |  | ||||||
| 		si_cols = {'total_advance': 'Total Advance', 'outstanding_amount': 'Outstanding Amount', 'paid_amount': 'Paid Amount', 'write_off_amount': 'Write Off Amount'} |  | ||||||
| 		for (d in si_cols) cur_frm.fields_dict[d].label_span.innerHTML = si_cols[d] + ' (' + base_curr + ')'; |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| var set_dynamic_label_child = function(doc, cdt, cdn, base_curr) { |  | ||||||
| 	// item table flds
 |  | ||||||
| 	item_cols_base = {'basic_rate': 'Basic Rate', 'base_ref_rate': 'Price List Rate', 'amount': 'Amount'}; |  | ||||||
| 	item_cols_export = {'export_rate': 'Basic Rate', 'ref_rate': 'Price List Rate', 'export_amount': 'Amount'}; |  | ||||||
| 		 |  | ||||||
| 	for (d in item_cols_base) $('[data-grid-fieldname="'+cur_frm.cscript.tname+'-'+d+'"]').html(item_cols_base[d]+' ('+base_curr+')'); |  | ||||||
| 	for (d in item_cols_export) $('[data-grid-fieldname="'+cur_frm.cscript.tname+'-'+d+'"]').html(item_cols_export[d]+' ('+doc.currency+')');	 |  | ||||||
| 
 |  | ||||||
| 	var hide = (doc.currency == sys_defaults['currency']) ? false : true; |  | ||||||
| 	for (f in item_cols_base) { |  | ||||||
| 		cur_frm.fields_dict[cur_frm.cscript.fname].grid.set_column_disp(f, hide); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	//tax table flds
 |  | ||||||
| 	tax_cols = {'tax_amount': 'Amount', 'total': 'Total'}; |  | ||||||
| 	for (d in tax_cols) $('[data-grid-fieldname="Sales Taxes and Charges-'+d+'"]').html(tax_cols[d]+' ('+base_curr+')'); |  | ||||||
| 		 |  | ||||||
| 	if (doc.doctype == 'Sales Invoice') { |  | ||||||
| 		// advance table flds
 |  | ||||||
| 		adv_cols = {'advance_amount': 'Advance Amount', 'allocated_amount': 'Allocated Amount'} |  | ||||||
| 		for (d in adv_cols) $('[data-grid-fieldname="Sales Invoice Advance-'+d+'"]').html(adv_cols[d]+' ('+base_curr+')');	 |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Change label dynamically based on currency
 |  | ||||||
| //------------------------------------------------------------------
 |  | ||||||
| 
 |  | ||||||
| cur_frm.cscript.dynamic_label = function(doc, cdt, cdn, base_curr, callback) { |  | ||||||
| 	cur_frm.cscript.base_currency = base_curr; |  | ||||||
| 	set_dynamic_label_par(doc, cdt, cdn, base_curr); |  | ||||||
| 	set_dynamic_label_child(doc, cdt, cdn, base_curr); |  | ||||||
| 	set_sales_bom_help(doc); |  | ||||||
| 
 |  | ||||||
| 	if (callback) callback(doc, cdt, cdn); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Help for Sales BOM items
 | // Help for Sales BOM items
 | ||||||
| var set_sales_bom_help = function(doc) { | var set_sales_bom_help = function(doc) { | ||||||
| 	if(!cur_frm.fields_dict.packing_list) return; | 	if(!cur_frm.fields_dict.packing_list) return; | ||||||
| @ -746,88 +875,6 @@ var set_sales_bom_help = function(doc) { | |||||||
| 	refresh_field('sales_bom_help'); | 	refresh_field('sales_bom_help'); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| // hide / unhide price list currency based on availability of price list in customer's currency
 |  | ||||||
| //---------------------------------------------------------------------------------------------------
 |  | ||||||
| 
 |  | ||||||
| // cur_frm.cscript.hide_price_list_currency = function(doc, cdt, cdn, callback1) {
 |  | ||||||
| // 	if (doc.price_list_name && doc.currency) {
 |  | ||||||
| // 		wn.call({
 |  | ||||||
| // 			method: 'selling.doctype.sales_common.sales_common.get_price_list_currency',
 |  | ||||||
| // 			args: {'price_list':doc.price_list_name, 'company': doc.company},
 |  | ||||||
| // 			callback: function(r, rt) {
 |  | ||||||
| // 				pl_currency = r.message[0]?r.message[0]:[];
 |  | ||||||
| // 				unhide_field(['price_list_currency', 'plc_conversion_rate']);
 |  | ||||||
| // 				
 |  | ||||||
| // 				if (pl_currency.length==1) {
 |  | ||||||
| // 					if (doc.price_list_currency != pl_currency[0]) 
 |  | ||||||
| // 						set_multiple(cdt, cdn, {price_list_currency:pl_currency[0]});
 |  | ||||||
| // 					if (pl_currency[0] == doc.currency) {
 |  | ||||||
| // 						if(doc.plc_conversion_rate != doc.conversion_rate) 
 |  | ||||||
| // 							set_multiple(cdt, cdn, {plc_conversion_rate:doc.conversion_rate});
 |  | ||||||
| // 						hide_field(['price_list_currency', 'plc_conversion_rate']);
 |  | ||||||
| // 					} else if (pl_currency[0] == r.message[1]) {
 |  | ||||||
| // 						if (doc.plc_conversion_rate != 1) 
 |  | ||||||
| // 							set_multiple(cdt, cdn, {plc_conversion_rate:1})
 |  | ||||||
| // 						hide_field(['price_list_currency', 'plc_conversion_rate']);
 |  | ||||||
| // 					}
 |  | ||||||
| // 				}
 |  | ||||||
| // 
 |  | ||||||
| // 				if (r.message[1] == doc.currency) {
 |  | ||||||
| // 					if (doc.conversion_rate != 1) 
 |  | ||||||
| // 						set_multiple(cdt, cdn, {conversion_rate:1});
 |  | ||||||
| // 					hide_field(['conversion_rate', 'grand_total_export', 'in_words_export', 'rounded_total_export']);
 |  | ||||||
| // 				} else {
 |  | ||||||
| // 					unhide_field(['conversion_rate', 'grand_total_export', 'in_words_export']);
 |  | ||||||
| // 					if(!cint(sys_defaults.disable_rounded_total))
 |  | ||||||
| // 						unhide_field("rounded_total_export");
 |  | ||||||
| // 				}
 |  | ||||||
| // 				if (r.message[1] == doc.price_list_currency) {
 |  | ||||||
| // 					if (doc.plc_conversion_rate != 1) 
 |  | ||||||
| // 						set_multiple(cdt, cdn, {plc_conversion_rate:1});
 |  | ||||||
| // 					hide_field('plc_conversion_rate');
 |  | ||||||
| // 				} else unhide_field('plc_conversion_rate');
 |  | ||||||
| // 				cur_frm.cscript.dynamic_label(doc, cdt, cdn, r.message[1], callback1);	
 |  | ||||||
| // 			}
 |  | ||||||
| // 		})
 |  | ||||||
| // 	}
 |  | ||||||
| // }
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| // TRIGGERS FOR CALCULATIONS
 |  | ||||||
| // =====================================================================================================
 |  | ||||||
| 
 |  | ||||||
| // ********************* CURRENCY ******************************
 |  | ||||||
| cur_frm.cscript.currency = function(doc, cdt, cdn) { |  | ||||||
| 	cur_frm.cscript.price_list_name(doc, cdt, cdn);  |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| cur_frm.cscript.price_list_currency = cur_frm.cscript.currency; |  | ||||||
| cur_frm.cscript.conversion_rate = cur_frm.cscript.currency; |  | ||||||
| cur_frm.cscript.plc_conversion_rate = cur_frm.cscript.currency; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| // ******************** PRICE LIST ******************************
 |  | ||||||
| cur_frm.cscript.price_list_name = function(doc, cdt, cdn) { |  | ||||||
| 	var callback = function() { |  | ||||||
| 		var fname = cur_frm.cscript.fname; |  | ||||||
| 		var cl = getchildren(cur_frm.cscript.tname, doc.name, cur_frm.cscript.fname); |  | ||||||
| 		if(doc.price_list_name && doc.currency && doc.price_list_currency && doc.conversion_rate && doc.plc_conversion_rate) { |  | ||||||
| 			$c_obj(make_doclist(doc.doctype, doc.name), 'get_adj_percent', '', |  | ||||||
| 				function(r, rt) { |  | ||||||
| 					refresh_field(fname); |  | ||||||
| 					var doc = locals[cdt][cdn]; |  | ||||||
| 					cur_frm.cscript.recalc(doc,3);		//this is to re-calculate BASIC RATE and AMOUNT on basis of changed REF RATE
 |  | ||||||
| 				} |  | ||||||
| 			); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	cur_frm.cscript.hide_price_list_currency(doc, cdt, cdn, callback); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| // ******************** ITEM CODE ******************************** 
 |  | ||||||
| cur_frm.fields_dict[cur_frm.cscript.fname].grid.get_field("item_code").get_query = function(doc, cdt, cdn) { | cur_frm.fields_dict[cur_frm.cscript.fname].grid.get_field("item_code").get_query = function(doc, cdt, cdn) { | ||||||
| 	if (doc.order_type == "Maintenance") { | 	if (doc.order_type == "Maintenance") { | ||||||
| 	 	return erpnext.queries.item({ | 	 	return erpnext.queries.item({ | ||||||
| @ -894,16 +941,4 @@ cur_frm.fields_dict.charge.get_query = function(doc) { | |||||||
| 		ORDER BY `tabSales Taxes and Charges Master`.name LIMIT 50'; | 		ORDER BY `tabSales Taxes and Charges Master`.name LIMIT 50'; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // ********************* Get Charges ****************************
 |  | ||||||
| cur_frm.cscript.get_charges = function(doc, cdt, cdn, callback) { |  | ||||||
| 	$c_obj(make_doclist(doc.doctype,doc.name), |  | ||||||
| 		'get_other_charges', |  | ||||||
| 		'',  |  | ||||||
| 		function(r, rt) { |  | ||||||
| 			cur_frm.cscript.calculate_charges(doc, cdt, cdn); |  | ||||||
| 			if(callback) callback(doc, cdt, cdn); |  | ||||||
| 		}, null,null,cur_frm.fields_dict.get_charges.input); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| cur_frm.fields_dict.customer.get_query = erpnext.utils.customer_query; | cur_frm.fields_dict.customer.get_query = erpnext.utils.customer_query; | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user