Fixed merge conflict
This commit is contained in:
		
						commit
						6ff0caa87a
					
				| @ -2,7 +2,7 @@ | |||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| import frappe | import frappe | ||||||
| 
 | 
 | ||||||
| __version__ = '7.2.18' | __version__ = '7.2.19' | ||||||
| 
 | 
 | ||||||
| def get_default_company(user=None): | def get_default_company(user=None): | ||||||
| 	'''Get default company for user''' | 	'''Get default company for user''' | ||||||
|  | |||||||
| @ -74,6 +74,9 @@ class BankReconciliation(Document): | |||||||
| 		clearance_date_updated = False | 		clearance_date_updated = False | ||||||
| 		for d in self.get('payment_entries'): | 		for d in self.get('payment_entries'): | ||||||
| 			if d.clearance_date: | 			if d.clearance_date: | ||||||
|  | 				if not d.payment_document: | ||||||
|  | 					frappe.throw(_("Row #{0}: Payment document is required to complete the trasaction")) | ||||||
|  | 
 | ||||||
| 				if d.cheque_date and getdate(d.clearance_date) < getdate(d.cheque_date): | 				if d.cheque_date and getdate(d.clearance_date) < getdate(d.cheque_date): | ||||||
| 					frappe.throw(_("Row #{0}: Clearance date {1} cannot be before Cheque Date {2}") | 					frappe.throw(_("Row #{0}: Clearance date {1} cannot be before Cheque Date {2}") | ||||||
| 						.format(d.idx, d.clearance_date, d.cheque_date)) | 						.format(d.idx, d.clearance_date, d.cheque_date)) | ||||||
|  | |||||||
| @ -278,14 +278,14 @@ | |||||||
|  "icon": "fa fa-money",  |  "icon": "fa fa-money",  | ||||||
|  "idx": 1,  |  "idx": 1,  | ||||||
|  "image_view": 0,  |  "image_view": 0,  | ||||||
|  "in_create": 1,  |  "in_create": 0,  | ||||||
|  "in_dialog": 0,  |  "in_dialog": 0,  | ||||||
|  "is_submittable": 0,  |  "is_submittable": 0,  | ||||||
|  "issingle": 0,  |  "issingle": 0,  | ||||||
|  "istable": 0,  |  "istable": 0,  | ||||||
|  "max_attachments": 0,  |  "max_attachments": 0,  | ||||||
|  "menu_index": 0,  |  "menu_index": 0,  | ||||||
|  "modified": "2016-11-07 05:20:40.282432",  |  "modified": "2017-01-30 11:27:36.615323",  | ||||||
|  "modified_by": "Administrator",  |  "modified_by": "Administrator",  | ||||||
|  "module": "Accounts",  |  "module": "Accounts",  | ||||||
|  "name": "Cost Center",  |  "name": "Cost Center",  | ||||||
|  | |||||||
| @ -46,6 +46,9 @@ class JournalEntry(AccountsController): | |||||||
| 		self.accounts = [account for account in self.accounts | 		self.accounts = [account for account in self.accounts | ||||||
| 			if not (account.debit_in_account_currency==0.0 and account.credit_in_account_currency==0.0)] | 			if not (account.debit_in_account_currency==0.0 and account.credit_in_account_currency==0.0)] | ||||||
| 
 | 
 | ||||||
|  | 		if not self.accounts: | ||||||
|  | 			frappe.throw("Debit or Credit amount is not found in account table") | ||||||
|  | 
 | ||||||
| 	def on_submit(self): | 	def on_submit(self): | ||||||
| 		self.check_credit_limit() | 		self.check_credit_limit() | ||||||
| 		self.make_gl_entries() | 		self.make_gl_entries() | ||||||
|  | |||||||
| @ -1315,6 +1315,34 @@ | |||||||
|    "set_only_once": 0,  |    "set_only_once": 0,  | ||||||
|    "unique": 0 |    "unique": 0 | ||||||
|   },  |   },  | ||||||
|  |   { | ||||||
|  |    "allow_on_submit": 1,  | ||||||
|  |    "bold": 0,  | ||||||
|  |    "collapsible": 0,  | ||||||
|  |    "columns": 0,  | ||||||
|  |    "fieldname": "is_sample_item",  | ||||||
|  |    "fieldtype": "Check",  | ||||||
|  |    "hidden": 0,  | ||||||
|  |    "ignore_user_permissions": 0,  | ||||||
|  |    "ignore_xss_filter": 0,  | ||||||
|  |    "in_filter": 0,  | ||||||
|  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|  |    "label": "Is Sample Item",  | ||||||
|  |    "length": 0,  | ||||||
|  |    "no_copy": 1,  | ||||||
|  |    "permlevel": 0,  | ||||||
|  |    "precision": "",  | ||||||
|  |    "print_hide": 1,  | ||||||
|  |    "print_hide_if_no_value": 0,  | ||||||
|  |    "read_only": 0,  | ||||||
|  |    "remember_last_selected_value": 0,  | ||||||
|  |    "report_hide": 0,  | ||||||
|  |    "reqd": 0,  | ||||||
|  |    "search_index": 0,  | ||||||
|  |    "set_only_once": 0,  | ||||||
|  |    "unique": 0 | ||||||
|  |   },  | ||||||
|   { |   { | ||||||
|    "allow_on_submit": 0,  |    "allow_on_submit": 0,  | ||||||
|    "bold": 0,  |    "bold": 0,  | ||||||
| @ -1788,7 +1816,7 @@ | |||||||
|  "issingle": 0,  |  "issingle": 0,  | ||||||
|  "istable": 1,  |  "istable": 1,  | ||||||
|  "max_attachments": 0,  |  "max_attachments": 0,  | ||||||
|  "modified": "2016-11-16 16:04:52.465169",  |  "modified": "2017-02-07 01:21:03.737800",  | ||||||
|  "modified_by": "Administrator",  |  "modified_by": "Administrator",  | ||||||
|  "module": "Accounts",  |  "module": "Accounts",  | ||||||
|  "name": "Purchase Invoice Item",  |  "name": "Purchase Invoice Item",  | ||||||
|  | |||||||
| @ -1381,6 +1381,34 @@ | |||||||
|    "set_only_once": 0,  |    "set_only_once": 0,  | ||||||
|    "unique": 0 |    "unique": 0 | ||||||
|   },  |   },  | ||||||
|  |   { | ||||||
|  |    "allow_on_submit": 1,  | ||||||
|  |    "bold": 0,  | ||||||
|  |    "collapsible": 0,  | ||||||
|  |    "columns": 0,  | ||||||
|  |    "fieldname": "is_sample_item",  | ||||||
|  |    "fieldtype": "Check",  | ||||||
|  |    "hidden": 0,  | ||||||
|  |    "ignore_user_permissions": 0,  | ||||||
|  |    "ignore_xss_filter": 0,  | ||||||
|  |    "in_filter": 0,  | ||||||
|  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|  |    "label": "Is Sample Item",  | ||||||
|  |    "length": 0,  | ||||||
|  |    "no_copy": 1,  | ||||||
|  |    "permlevel": 0,  | ||||||
|  |    "precision": "",  | ||||||
|  |    "print_hide": 1,  | ||||||
|  |    "print_hide_if_no_value": 0,  | ||||||
|  |    "read_only": 0,  | ||||||
|  |    "remember_last_selected_value": 0,  | ||||||
|  |    "report_hide": 0,  | ||||||
|  |    "reqd": 0,  | ||||||
|  |    "search_index": 0,  | ||||||
|  |    "set_only_once": 0,  | ||||||
|  |    "unique": 0 | ||||||
|  |   },  | ||||||
|   { |   { | ||||||
|    "allow_on_submit": 0,  |    "allow_on_submit": 0,  | ||||||
|    "bold": 0,  |    "bold": 0,  | ||||||
| @ -1882,7 +1910,7 @@ | |||||||
|  "issingle": 0,  |  "issingle": 0,  | ||||||
|  "istable": 1,  |  "istable": 1,  | ||||||
|  "max_attachments": 0,  |  "max_attachments": 0,  | ||||||
|  "modified": "2016-11-16 16:04:02.438952",  |  "modified": "2017-02-07 01:21:47.142162",  | ||||||
|  "modified_by": "Administrator",  |  "modified_by": "Administrator",  | ||||||
|  "module": "Accounts",  |  "module": "Accounts",  | ||||||
|  "name": "Sales Invoice Item",  |  "name": "Sales Invoice Item",  | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ | |||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| import frappe | import frappe | ||||||
| from frappe import _, scrub | from frappe import _, scrub | ||||||
|  | from erpnext.stock.utils import get_incoming_rate | ||||||
| from frappe.utils import flt | from frappe.utils import flt | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -208,21 +209,18 @@ class GrossProfitGenerator(object): | |||||||
| 								flt(my_sle[i+1].stock_value) or 0.0 | 								flt(my_sle[i+1].stock_value) or 0.0 | ||||||
| 							return  previous_stock_value - flt(sle.stock_value) | 							return  previous_stock_value - flt(sle.stock_value) | ||||||
| 			else: | 			else: | ||||||
| 				return flt(row.qty) * self.get_average_buying_rate(item_code) | 				return flt(row.qty) * self.get_average_buying_rate(row, item_code) | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| 		return 0.0 | 		return 0.0 | ||||||
| 
 | 
 | ||||||
| 	def get_average_buying_rate(self, item_code): | 	def get_average_buying_rate(self, row, item_code): | ||||||
| 		if not item_code in self.average_buying_rate: | 		if not item_code in self.average_buying_rate: | ||||||
| 			if item_code in self.non_stock_items: | 			if item_code in self.non_stock_items: | ||||||
| 				self.average_buying_rate[item_code] = flt(frappe.db.sql("""select sum(base_net_amount) / sum(qty * conversion_factor) | 				self.average_buying_rate[item_code] = flt(frappe.db.sql("""select sum(base_net_amount) / sum(qty * conversion_factor) | ||||||
| 					from `tabPurchase Invoice Item` | 					from `tabPurchase Invoice Item` | ||||||
| 					where item_code = %s and docstatus=1""", item_code)[0][0]) | 					where item_code = %s and docstatus=1""", item_code)[0][0]) | ||||||
| 			else: | 			else: | ||||||
| 				self.average_buying_rate[item_code] = flt(frappe.db.sql("""select avg(valuation_rate) | 				self.average_buying_rate[item_code] = get_incoming_rate(row) | ||||||
| 					from `tabStock Ledger Entry` |  | ||||||
| 					where item_code = %s and qty_after_transaction > 0""", item_code)[0][0]) |  | ||||||
| 
 | 
 | ||||||
| 		return self.average_buying_rate[item_code] | 		return self.average_buying_rate[item_code] | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,9 +11,11 @@ from erpnext.accounts.report.trial_balance.trial_balance import validate_filters | |||||||
| value_fields = ("income", "expense", "gross_profit_loss") | value_fields = ("income", "expense", "gross_profit_loss") | ||||||
| 
 | 
 | ||||||
| def execute(filters=None): | def execute(filters=None): | ||||||
|  | 	if not filters.get('based_on'): filters["based_on"] = 'Cost Center' | ||||||
|  | 
 | ||||||
| 	based_on = filters.based_on.replace(' ', '_').lower() | 	based_on = filters.based_on.replace(' ', '_').lower() | ||||||
| 	validate_filters(filters) | 	validate_filters(filters) | ||||||
| 	accounts = get_accounts_data(based_on, filters.company) | 	accounts = get_accounts_data(based_on, filters.get("company")) | ||||||
| 	data = get_data(accounts, filters, based_on) | 	data = get_data(accounts, filters, based_on) | ||||||
| 	columns = get_columns(filters) | 	columns = get_columns(filters) | ||||||
| 	return columns, data | 	return columns, data | ||||||
| @ -27,14 +29,14 @@ def get_accounts_data(based_on, company): | |||||||
| 
 | 
 | ||||||
| def get_data(accounts, filters, based_on): | def get_data(accounts, filters, based_on): | ||||||
| 	if not accounts: | 	if not accounts: | ||||||
| 		return None | 		return [] | ||||||
| 
 | 
 | ||||||
| 	accounts, accounts_by_name, parent_children_map = filter_accounts(accounts) | 	accounts, accounts_by_name, parent_children_map = filter_accounts(accounts) | ||||||
| 
 | 
 | ||||||
| 	gl_entries_by_account = {} | 	gl_entries_by_account = {} | ||||||
| 
 | 
 | ||||||
| 	set_gl_entries_by_account(filters.company, filters.from_date, | 	set_gl_entries_by_account(filters.get("company"), filters.get("from_date"), | ||||||
| 		filters.to_date, based_on, gl_entries_by_account, ignore_closing_entries=not flt(filters.with_period_closing_entry)) | 		filters.get("to_date"), based_on, gl_entries_by_account, ignore_closing_entries=not flt(filters.get("with_period_closing_entry"))) | ||||||
| 
 | 
 | ||||||
| 	total_row = calculate_values(accounts, gl_entries_by_account, filters) | 	total_row = calculate_values(accounts, gl_entries_by_account, filters) | ||||||
| 	accumulate_values_into_parents(accounts, accounts_by_name) | 	accumulate_values_into_parents(accounts, accounts_by_name) | ||||||
| @ -90,7 +92,7 @@ def accumulate_values_into_parents(accounts, accounts_by_name): | |||||||
| 
 | 
 | ||||||
| def prepare_data(accounts, filters, total_row, parent_children_map, based_on): | def prepare_data(accounts, filters, total_row, parent_children_map, based_on): | ||||||
| 	data = [] | 	data = [] | ||||||
| 	company_currency = frappe.db.get_value("Company", filters.company, "default_currency") | 	company_currency = frappe.db.get_value("Company", filters.get("company"), "default_currency") | ||||||
| 
 | 
 | ||||||
| 	for d in accounts: | 	for d in accounts: | ||||||
| 		has_value = False | 		has_value = False | ||||||
| @ -99,7 +101,7 @@ def prepare_data(accounts, filters, total_row, parent_children_map, based_on): | |||||||
| 			"account": d.name, | 			"account": d.name, | ||||||
| 			"parent_account": d.parent_account, | 			"parent_account": d.parent_account, | ||||||
| 			"indent": d.indent, | 			"indent": d.indent, | ||||||
| 			"fiscal_year": filters.fiscal_year, | 			"fiscal_year": filters.get("fiscal_year"), | ||||||
| 			"currency": company_currency, | 			"currency": company_currency, | ||||||
| 			"based_on": based_on | 			"based_on": based_on | ||||||
| 		} | 		} | ||||||
| @ -122,9 +124,9 @@ def get_columns(filters): | |||||||
| 	return [ | 	return [ | ||||||
| 		{ | 		{ | ||||||
| 			"fieldname": "account", | 			"fieldname": "account", | ||||||
| 			"label": _(filters.based_on), | 			"label": _(filters.get("based_on")), | ||||||
| 			"fieldtype": "Link", | 			"fieldtype": "Link", | ||||||
| 			"options": filters.based_on, | 			"options": filters.get("based_on"), | ||||||
| 			"width": 300 | 			"width": 300 | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
|  | |||||||
| @ -44,7 +44,7 @@ def get_data(): | |||||||
| 				}, | 				}, | ||||||
| 				{ | 				{ | ||||||
| 					"type": "help", | 					"type": "help", | ||||||
| 					"label": _("Setting up Email"), | 					"label": _("Setting up Email Account"), | ||||||
| 					"youtube_id": "YFYe0DrB95o" | 					"youtube_id": "YFYe0DrB95o" | ||||||
| 				}, | 				}, | ||||||
| 				{ | 				{ | ||||||
| @ -62,11 +62,6 @@ def get_data(): | |||||||
| 					"label": _("Workflow"), | 					"label": _("Workflow"), | ||||||
| 					"youtube_id": "yObJUg9FxFs" | 					"youtube_id": "yObJUg9FxFs" | ||||||
| 				}, | 				}, | ||||||
| 				{ |  | ||||||
| 					"type": "help", |  | ||||||
| 					"label": _("Email Account"), |  | ||||||
| 					"youtube_id": "YFYe0DrB95o" |  | ||||||
| 				}, |  | ||||||
| 				{ | 				{ | ||||||
| 					"type": "help", | 					"type": "help", | ||||||
| 					"label": _("File Manager"), | 					"label": _("File Manager"), | ||||||
|  | |||||||
| @ -54,9 +54,16 @@ class StockController(AccountsController): | |||||||
| 
 | 
 | ||||||
| 						self.check_expense_account(item_row) | 						self.check_expense_account(item_row) | ||||||
| 
 | 
 | ||||||
| 						if not sle.stock_value_difference: | 						# If item is not a sample item  | ||||||
| 							self.update_stock_ledger_entries(sle) | 						# and ( valuation rate not mentioned in an incoming entry | ||||||
| 							self.validate_negative_stock(sle) | 						# or incoming entry not found while delivering the item),  | ||||||
|  | 						# try to pick valuation rate from previous sle or Item master and update in SLE | ||||||
|  | 						# Otherwise, throw an exception | ||||||
|  | 
 | ||||||
|  | 						if not sle.stock_value_difference and self.doctype != "Stock Reconciliation" \ | ||||||
|  | 							and not item_row.get("is_sample_item"): | ||||||
|  | 
 | ||||||
|  | 							sle = self.update_stock_ledger_entries(sle) | ||||||
| 
 | 
 | ||||||
| 						gl_list.append(self.get_gl_dict({ | 						gl_list.append(self.get_gl_dict({ | ||||||
| 							"account": warehouse_account[sle.warehouse]["name"], | 							"account": warehouse_account[sle.warehouse]["name"], | ||||||
| @ -90,18 +97,23 @@ class StockController(AccountsController): | |||||||
| 
 | 
 | ||||||
| 	def update_stock_ledger_entries(self, sle): | 	def update_stock_ledger_entries(self, sle): | ||||||
| 		sle.valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse,  | 		sle.valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse,  | ||||||
| 			sle.voucher_type, sle.voucher_no) | 			self.doctype, self.name) | ||||||
| 		sle.stock_value = flt(sle.qty_after_transaction) * flt(sle.valuation_rate) |  | ||||||
| 		sle.stock_value_difference = sle.stock_value |  | ||||||
| 		if sle.name: |  | ||||||
| 			frappe.db.sql(""" update `tabStock Ledger Entry` set stock_value = %(stock_value)s, |  | ||||||
| 				valuation_rate = %(valuation_rate)s, stock_value_difference = %(stock_value_difference)s  |  | ||||||
| 				where name = %(name)s""", (sle)) |  | ||||||
| 
 | 
 | ||||||
| 	def validate_negative_stock(self, sle): | 		sle.stock_value = flt(sle.qty_after_transaction) * flt(sle.valuation_rate) | ||||||
| 		if sle.qty_after_transaction < 0 and sle.actual_qty < 0: | 		sle.stock_value_difference = flt(sle.actual_qty) * flt(sle.valuation_rate) | ||||||
| 			frappe.throw(_("Valuation rate not found for the Item {0}, which is required to do accounting entries (for booking expenses). Please create an incoming stock transaction or mention valuation rate in Item record, and then try submiting {1} {2}") | 		 | ||||||
| 			.format(sle.item_code, sle.voucher_type, sle.voucher_no)) | 		if sle.name: | ||||||
|  | 			frappe.db.sql(""" | ||||||
|  | 				update  | ||||||
|  | 					`tabStock Ledger Entry`  | ||||||
|  | 				set  | ||||||
|  | 					stock_value = %(stock_value)s, | ||||||
|  | 					valuation_rate = %(valuation_rate)s,  | ||||||
|  | 					stock_value_difference = %(stock_value_difference)s  | ||||||
|  | 				where  | ||||||
|  | 					name = %(name)s""", (sle)) | ||||||
|  | 					 | ||||||
|  | 		return sle | ||||||
| 					 | 					 | ||||||
| 	def get_voucher_details(self, default_expense_account, default_cost_center, sle_map): | 	def get_voucher_details(self, default_expense_account, default_cost_center, sle_map): | ||||||
| 		if self.doctype == "Stock Reconciliation": | 		if self.doctype == "Stock Reconciliation": | ||||||
| @ -150,10 +162,18 @@ class StockController(AccountsController): | |||||||
| 
 | 
 | ||||||
| 	def get_stock_ledger_details(self): | 	def get_stock_ledger_details(self): | ||||||
| 		stock_ledger = {} | 		stock_ledger = {} | ||||||
| 		for sle in frappe.db.sql("""select name, warehouse, stock_value_difference, | 		stock_ledger_entries = frappe.db.sql(""" | ||||||
| 			voucher_detail_no, item_code, posting_date, posting_time, actual_qty, qty_after_transaction | 			select  | ||||||
| 			from `tabStock Ledger Entry` where voucher_type=%s and voucher_no=%s""", | 				name, warehouse, stock_value_difference, valuation_rate, | ||||||
| 			(self.doctype, self.name), as_dict=True): | 				voucher_detail_no, item_code, posting_date, posting_time,  | ||||||
|  | 				actual_qty, qty_after_transaction | ||||||
|  | 			from | ||||||
|  | 				`tabStock Ledger Entry` | ||||||
|  | 			where | ||||||
|  | 				voucher_type=%s and voucher_no=%s | ||||||
|  | 		""", (self.doctype, self.name), as_dict=True) | ||||||
|  | 
 | ||||||
|  | 		for sle in stock_ledger_entries: | ||||||
| 				stock_ledger.setdefault(sle.voucher_detail_no, []).append(sle) | 				stock_ledger.setdefault(sle.voucher_detail_no, []).append(sle) | ||||||
| 		return stock_ledger | 		return stock_ledger | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -10,6 +10,19 @@ frappe.ui.form.on("Process Payroll", { | |||||||
| 		frm.toggle_reqd(['payroll_frequency'], !frm.doc.salary_slip_based_on_timesheet); | 		frm.toggle_reqd(['payroll_frequency'], !frm.doc.salary_slip_based_on_timesheet); | ||||||
| 	}, | 	}, | ||||||
| 
 | 
 | ||||||
|  | 	setup: function(frm) { | ||||||
|  | 		frm.set_query("payment_account", function() { | ||||||
|  | 			var account_types = ["Bank", "Cash"]; | ||||||
|  | 			return { | ||||||
|  | 				filters: { | ||||||
|  | 					"account_type": ["in", account_types], | ||||||
|  | 					"is_group": 0, | ||||||
|  | 					"company": frm.doc.company | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		}) | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
| 	refresh: function(frm) { | 	refresh: function(frm) { | ||||||
| 		frm.disable_save(); | 		frm.disable_save(); | ||||||
| 	}, | 	}, | ||||||
| @ -50,16 +63,6 @@ frappe.ui.form.on("Process Payroll", { | |||||||
| 				} | 				} | ||||||
| 			}) | 			}) | ||||||
| 		} | 		} | ||||||
| 	}, |  | ||||||
| 	account: function(frm) { |  | ||||||
| 		var account_types = ["Bank", "Cash"]; |  | ||||||
| 		return { |  | ||||||
| 			filters: { |  | ||||||
| 				"account_type": ["in", account_types], |  | ||||||
| 				"is_group": 0, |  | ||||||
| 				"company": frm.doc.company |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} | 	} | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -2,7 +2,16 @@ | |||||||
| // For license information, please see license.txt
 | // For license information, please see license.txt
 | ||||||
| 
 | 
 | ||||||
| frappe.ui.form.on('Salary Component', { | frappe.ui.form.on('Salary Component', { | ||||||
| 	refresh: function(frm) { | 	setup: function(frm) { | ||||||
| 
 | 		frm.set_query("default_account", "accounts", function(doc, cdt, cdn) { | ||||||
|  | 			var d = locals[cdt][cdn]; | ||||||
|  | 			return { | ||||||
|  | 				filters: { | ||||||
|  | 					"root_type": "Expense", | ||||||
|  | 					"is_group": 0, | ||||||
|  | 					"company": d.company | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		}) | ||||||
| 	} | 	} | ||||||
| }); | }); | ||||||
|  | |||||||
| @ -1476,6 +1476,34 @@ | |||||||
|    "unique": 0,  |    "unique": 0,  | ||||||
|    "width": "120px" |    "width": "120px" | ||||||
|   },  |   },  | ||||||
|  |   { | ||||||
|  |    "allow_on_submit": 1,  | ||||||
|  |    "bold": 0,  | ||||||
|  |    "collapsible": 0,  | ||||||
|  |    "columns": 0,  | ||||||
|  |    "fieldname": "is_sample_item",  | ||||||
|  |    "fieldtype": "Check",  | ||||||
|  |    "hidden": 0,  | ||||||
|  |    "ignore_user_permissions": 0,  | ||||||
|  |    "ignore_xss_filter": 0,  | ||||||
|  |    "in_filter": 0,  | ||||||
|  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|  |    "label": "Is Sample Item",  | ||||||
|  |    "length": 0,  | ||||||
|  |    "no_copy": 1,  | ||||||
|  |    "permlevel": 0,  | ||||||
|  |    "precision": "",  | ||||||
|  |    "print_hide": 1,  | ||||||
|  |    "print_hide_if_no_value": 0,  | ||||||
|  |    "read_only": 0,  | ||||||
|  |    "remember_last_selected_value": 0,  | ||||||
|  |    "report_hide": 0,  | ||||||
|  |    "reqd": 0,  | ||||||
|  |    "search_index": 0,  | ||||||
|  |    "set_only_once": 0,  | ||||||
|  |    "unique": 0 | ||||||
|  |   },  | ||||||
|   { |   { | ||||||
|    "allow_on_submit": 0,  |    "allow_on_submit": 0,  | ||||||
|    "bold": 0,  |    "bold": 0,  | ||||||
| @ -1691,7 +1719,7 @@ | |||||||
|  "issingle": 0,  |  "issingle": 0,  | ||||||
|  "istable": 1,  |  "istable": 1,  | ||||||
|  "max_attachments": 0,  |  "max_attachments": 0,  | ||||||
|  "modified": "2016-12-24 12:33:37.728117",  |  "modified": "2017-02-07 01:22:03.047137",  | ||||||
|  "modified_by": "Administrator",  |  "modified_by": "Administrator",  | ||||||
|  "module": "Stock",  |  "module": "Stock",  | ||||||
|  "name": "Delivery Note Item",  |  "name": "Delivery Note Item",  | ||||||
|  | |||||||
| @ -1574,6 +1574,34 @@ | |||||||
|    "set_only_once": 0,  |    "set_only_once": 0,  | ||||||
|    "unique": 0 |    "unique": 0 | ||||||
|   },  |   },  | ||||||
|  |   { | ||||||
|  |    "allow_on_submit": 1,  | ||||||
|  |    "bold": 0,  | ||||||
|  |    "collapsible": 0,  | ||||||
|  |    "columns": 0,  | ||||||
|  |    "fieldname": "is_sample_item",  | ||||||
|  |    "fieldtype": "Check",  | ||||||
|  |    "hidden": 0,  | ||||||
|  |    "ignore_user_permissions": 0,  | ||||||
|  |    "ignore_xss_filter": 0,  | ||||||
|  |    "in_filter": 0,  | ||||||
|  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|  |    "label": "Is Sample Item",  | ||||||
|  |    "length": 0,  | ||||||
|  |    "no_copy": 1,  | ||||||
|  |    "permlevel": 0,  | ||||||
|  |    "precision": "",  | ||||||
|  |    "print_hide": 1,  | ||||||
|  |    "print_hide_if_no_value": 0,  | ||||||
|  |    "read_only": 0,  | ||||||
|  |    "remember_last_selected_value": 0,  | ||||||
|  |    "report_hide": 0,  | ||||||
|  |    "reqd": 0,  | ||||||
|  |    "search_index": 0,  | ||||||
|  |    "set_only_once": 0,  | ||||||
|  |    "unique": 0 | ||||||
|  |   },  | ||||||
|   { |   { | ||||||
|    "allow_on_submit": 0,  |    "allow_on_submit": 0,  | ||||||
|    "bold": 0,  |    "bold": 0,  | ||||||
| @ -1885,7 +1913,7 @@ | |||||||
|  "issingle": 0,  |  "issingle": 0,  | ||||||
|  "istable": 1,  |  "istable": 1,  | ||||||
|  "max_attachments": 0,  |  "max_attachments": 0,  | ||||||
|  "modified": "2016-11-16 16:04:21.778869",  |  "modified": "2017-02-07 01:21:36.348032",  | ||||||
|  "modified_by": "Administrator",  |  "modified_by": "Administrator",  | ||||||
|  "module": "Stock",  |  "module": "Stock",  | ||||||
|  "name": "Purchase Receipt Item",  |  "name": "Purchase Receipt Item",  | ||||||
|  | |||||||
| @ -10,6 +10,7 @@ | |||||||
|  "doctype": "DocType",  |  "doctype": "DocType",  | ||||||
|  "document_type": "Other",  |  "document_type": "Other",  | ||||||
|  "editable_grid": 1,  |  "editable_grid": 1,  | ||||||
|  |  "engine": "InnoDB",  | ||||||
|  "fields": [ |  "fields": [ | ||||||
|   { |   { | ||||||
|    "allow_on_submit": 0,  |    "allow_on_submit": 0,  | ||||||
| @ -23,6 +24,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Barcode",  |    "label": "Barcode",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -50,6 +52,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
|    "permlevel": 0,  |    "permlevel": 0,  | ||||||
| @ -76,6 +79,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 1,  |    "in_filter": 1,  | ||||||
|    "in_list_view": 1,  |    "in_list_view": 1,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Source Warehouse",  |    "label": "Source Warehouse",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -105,6 +109,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
|    "permlevel": 0,  |    "permlevel": 0,  | ||||||
| @ -130,6 +135,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 1,  |    "in_filter": 1,  | ||||||
|    "in_list_view": 1,  |    "in_list_view": 1,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Target Warehouse",  |    "label": "Target Warehouse",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -159,6 +165,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
|    "permlevel": 0,  |    "permlevel": 0,  | ||||||
| @ -184,6 +191,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 1,  |    "in_filter": 1,  | ||||||
|    "in_list_view": 1,  |    "in_list_view": 1,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Item Code",  |    "label": "Item Code",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -213,6 +221,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
|    "permlevel": 0,  |    "permlevel": 0,  | ||||||
| @ -238,6 +247,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Item Name",  |    "label": "Item Name",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -264,6 +274,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Description",  |    "label": "Description",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -291,6 +302,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Description",  |    "label": "Description",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -321,6 +333,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
|    "permlevel": 0,  |    "permlevel": 0,  | ||||||
| @ -347,6 +360,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Image",  |    "label": "Image",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -374,6 +388,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Image View",  |    "label": "Image View",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -402,6 +417,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Quantity and Rate",  |    "label": "Quantity and Rate",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -420,7 +436,7 @@ | |||||||
|    "allow_on_submit": 0,  |    "allow_on_submit": 0,  | ||||||
|    "bold": 1,  |    "bold": 1,  | ||||||
|    "collapsible": 0,  |    "collapsible": 0,  | ||||||
|    "columns": 1,  |    "columns": 3,  | ||||||
|    "fieldname": "qty",  |    "fieldname": "qty",  | ||||||
|    "fieldtype": "Float",  |    "fieldtype": "Float",  | ||||||
|    "hidden": 0,  |    "hidden": 0,  | ||||||
| @ -428,6 +444,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 1,  |    "in_list_view": 1,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Qty",  |    "label": "Qty",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -448,14 +465,15 @@ | |||||||
|    "allow_on_submit": 0,  |    "allow_on_submit": 0,  | ||||||
|    "bold": 1,  |    "bold": 1,  | ||||||
|    "collapsible": 0,  |    "collapsible": 0,  | ||||||
|    "columns": 2,  |    "columns": 0,  | ||||||
|    "fieldname": "basic_rate",  |    "fieldname": "basic_rate",  | ||||||
|    "fieldtype": "Currency",  |    "fieldtype": "Currency",  | ||||||
|    "hidden": 0,  |    "hidden": 0,  | ||||||
|    "ignore_user_permissions": 0,  |    "ignore_user_permissions": 0,  | ||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 1,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Basic Rate (as per Stock UOM)",  |    "label": "Basic Rate (as per Stock UOM)",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -485,6 +503,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Basic Amount",  |    "label": "Basic Amount",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -513,6 +532,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Additional Cost",  |    "label": "Additional Cost",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -541,6 +561,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Amount",  |    "label": "Amount",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -570,6 +591,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Valuation Rate",  |    "label": "Valuation Rate",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -598,6 +620,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
|    "permlevel": 0,  |    "permlevel": 0,  | ||||||
| @ -623,6 +646,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "UOM",  |    "label": "UOM",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -652,6 +676,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Conversion Factor",  |    "label": "Conversion Factor",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -680,6 +705,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Stock UOM",  |    "label": "Stock UOM",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -709,6 +735,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Qty as per Stock UOM",  |    "label": "Qty as per Stock UOM",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -737,6 +764,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Serial No / Batch",  |    "label": "Serial No / Batch",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -763,6 +791,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Serial No",  |    "label": "Serial No",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 1,  |    "no_copy": 1,  | ||||||
| @ -791,6 +820,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
|    "permlevel": 0,  |    "permlevel": 0,  | ||||||
| @ -816,6 +846,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Batch No",  |    "label": "Batch No",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -845,6 +876,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Accounting",  |    "label": "Accounting",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -872,6 +904,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Difference Account",  |    "label": "Difference Account",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -899,6 +932,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
|    "permlevel": 0,  |    "permlevel": 0,  | ||||||
| @ -926,6 +960,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Cost Center",  |    "label": "Cost Center",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -953,6 +988,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "More Information",  |    "label": "More Information",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -967,6 +1003,34 @@ | |||||||
|    "set_only_once": 0,  |    "set_only_once": 0,  | ||||||
|    "unique": 0 |    "unique": 0 | ||||||
|   },  |   },  | ||||||
|  |   { | ||||||
|  |    "allow_on_submit": 1,  | ||||||
|  |    "bold": 0,  | ||||||
|  |    "collapsible": 0,  | ||||||
|  |    "columns": 0,  | ||||||
|  |    "fieldname": "is_sample_item",  | ||||||
|  |    "fieldtype": "Check",  | ||||||
|  |    "hidden": 0,  | ||||||
|  |    "ignore_user_permissions": 0,  | ||||||
|  |    "ignore_xss_filter": 0,  | ||||||
|  |    "in_filter": 0,  | ||||||
|  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|  |    "label": "Is Sample Item",  | ||||||
|  |    "length": 0,  | ||||||
|  |    "no_copy": 1,  | ||||||
|  |    "permlevel": 0,  | ||||||
|  |    "precision": "",  | ||||||
|  |    "print_hide": 1,  | ||||||
|  |    "print_hide_if_no_value": 0,  | ||||||
|  |    "read_only": 0,  | ||||||
|  |    "remember_last_selected_value": 0,  | ||||||
|  |    "report_hide": 0,  | ||||||
|  |    "reqd": 0,  | ||||||
|  |    "search_index": 0,  | ||||||
|  |    "set_only_once": 0,  | ||||||
|  |    "unique": 0 | ||||||
|  |   },  | ||||||
|   { |   { | ||||||
|    "allow_on_submit": 1,  |    "allow_on_submit": 1,  | ||||||
|    "bold": 0,  |    "bold": 0,  | ||||||
| @ -979,6 +1043,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 1,  |    "in_filter": 1,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Actual Qty (at source/target)",  |    "label": "Actual Qty (at source/target)",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 1,  |    "no_copy": 1,  | ||||||
| @ -1008,6 +1073,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "BOM No",  |    "label": "BOM No",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
| @ -1035,6 +1101,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 0,  |    "no_copy": 0,  | ||||||
|    "permlevel": 0,  |    "permlevel": 0,  | ||||||
| @ -1061,6 +1128,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Material Request",  |    "label": "Material Request",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 1,  |    "no_copy": 1,  | ||||||
| @ -1088,6 +1156,7 @@ | |||||||
|    "ignore_xss_filter": 0,  |    "ignore_xss_filter": 0,  | ||||||
|    "in_filter": 0,  |    "in_filter": 0,  | ||||||
|    "in_list_view": 0,  |    "in_list_view": 0,  | ||||||
|  |    "in_standard_filter": 0,  | ||||||
|    "label": "Material Request Item",  |    "label": "Material Request Item",  | ||||||
|    "length": 0,  |    "length": 0,  | ||||||
|    "no_copy": 1,  |    "no_copy": 1,  | ||||||
| @ -1114,7 +1183,7 @@ | |||||||
|  "issingle": 0,  |  "issingle": 0,  | ||||||
|  "istable": 1,  |  "istable": 1,  | ||||||
|  "max_attachments": 0,  |  "max_attachments": 0,  | ||||||
|  "modified": "2016-11-27 15:19:26.597414",  |  "modified": "2017-02-07 01:21:14.367586",  | ||||||
|  "modified_by": "Administrator",  |  "modified_by": "Administrator",  | ||||||
|  "module": "Stock",  |  "module": "Stock",  | ||||||
|  "name": "Stock Entry Detail",  |  "name": "Stock Entry Detail",  | ||||||
|  | |||||||
| @ -259,7 +259,10 @@ class update_entries_after(object): | |||||||
| 			if not self.valuation_rate and actual_qty > 0: | 			if not self.valuation_rate and actual_qty > 0: | ||||||
| 				self.valuation_rate = sle.incoming_rate | 				self.valuation_rate = sle.incoming_rate | ||||||
| 				 | 				 | ||||||
| 		if not self.valuation_rate: | 			# Get valuation rate from previous SLE or Item master, if item is not a sample item | ||||||
|  | 			if not self.valuation_rate and sle.voucher_detail_no: | ||||||
|  | 				is_sample_item = self.check_if_sample_item(sle.voucher_type, sle.voucher_detail_no) | ||||||
|  | 				if not is_sample_item: | ||||||
| 					self.valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse,  | 					self.valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse,  | ||||||
| 						sle.voucher_type, sle.voucher_no, self.allow_zero_rate) | 						sle.voucher_type, sle.voucher_no, self.allow_zero_rate) | ||||||
| 		 | 		 | ||||||
| @ -286,8 +289,13 @@ class update_entries_after(object): | |||||||
| 			while qty_to_pop: | 			while qty_to_pop: | ||||||
| 				if not self.stock_queue: | 				if not self.stock_queue: | ||||||
| 					# Get valuation rate from last sle if exists or from valuation rate field in item master | 					# Get valuation rate from last sle if exists or from valuation rate field in item master | ||||||
|  | 					is_sample_item = self.check_if_sample_item(sle.voucher_type, sle.voucher_detail_no) | ||||||
|  | 					if not is_sample_item: | ||||||
| 						_rate = get_valuation_rate(sle.item_code, sle.warehouse,  | 						_rate = get_valuation_rate(sle.item_code, sle.warehouse,  | ||||||
| 							sle.voucher_type, sle.voucher_no, self.allow_zero_rate) | 							sle.voucher_type, sle.voucher_no, self.allow_zero_rate) | ||||||
|  | 					else: | ||||||
|  | 						_rate = 0 | ||||||
|  | 						 | ||||||
| 					self.stock_queue.append([0, _rate]) | 					self.stock_queue.append([0, _rate]) | ||||||
| 
 | 
 | ||||||
| 				index = None | 				index = None | ||||||
| @ -334,6 +342,10 @@ class update_entries_after(object): | |||||||
| 		if not self.stock_queue: | 		if not self.stock_queue: | ||||||
| 			self.stock_queue.append([0, sle.incoming_rate or sle.outgoing_rate or self.valuation_rate]) | 			self.stock_queue.append([0, sle.incoming_rate or sle.outgoing_rate or self.valuation_rate]) | ||||||
| 			 | 			 | ||||||
|  | 	def check_if_sample_item(self, voucher_type, voucher_detail_no): | ||||||
|  | 		ref_item_dt = voucher_type + (" Detail" if voucher_type == "Stock Entry" else " Item") | ||||||
|  | 		return frappe.db.get_value(ref_item_dt, voucher_detail_no, "is_sample_item") | ||||||
|  | 		 | ||||||
| 	def get_sle_before_datetime(self): | 	def get_sle_before_datetime(self): | ||||||
| 		"""get previous stock ledger entry before current time-bucket""" | 		"""get previous stock ledger entry before current time-bucket""" | ||||||
| 		return get_stock_ledger_entries(self.args, "<", "desc", "limit 1", for_update=False) | 		return get_stock_ledger_entries(self.args, "<", "desc", "limit 1", for_update=False) | ||||||
| @ -432,7 +444,6 @@ def get_valuation_rate(item_code, warehouse, voucher_type, voucher_no, allow_zer | |||||||
| 	if not allow_zero_rate and not valuation_rate \ | 	if not allow_zero_rate and not valuation_rate \ | ||||||
| 			and cint(frappe.db.get_value("Accounts Settings", None, "auto_accounting_for_stock")): | 			and cint(frappe.db.get_value("Accounts Settings", None, "auto_accounting_for_stock")): | ||||||
| 			 | 			 | ||||||
| 		frappe.throw(_("Valuation rate not found for the Item {0}, which is required to do accounting entries (for booking expenses). Please create an incoming stock transaction or mention valuation rate in Item record, and then try submiting {1} {2}") | 		frappe.throw(_("Valuation rate not found for the Item {0}, which is required to do accounting entries for {1} {2}. If the item is transacting as a sample item in the {1}, please mention that in the {1} Item table. Otherwise, please create an incoming stock transaction for the item or mention valuation rate in the Item record, and then try submiting/cancelling this entry").format(item_code, voucher_type, voucher_no)) | ||||||
| 		.format(item_code, voucher_type, voucher_no)) |  | ||||||
| 
 | 
 | ||||||
| 	return valuation_rate | 	return valuation_rate | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user