[fix][patch] Fix wrong gle for Purchase Invoice against Expenses Included in Valuation account
This commit is contained in:
		
							parent
							
								
									191b2970e9
								
							
						
					
					
						commit
						be464696cc
					
				| @ -317,23 +317,22 @@ class PurchaseInvoice(BuyingController): | |||||||
| 			if auto_accounting_for_stock and self.is_opening == "No" and \ | 			if auto_accounting_for_stock and self.is_opening == "No" and \ | ||||||
| 				item.item_code in stock_items and item.item_tax_amount: | 				item.item_code in stock_items and item.item_tax_amount: | ||||||
| 					# Post reverse entry for Stock-Received-But-Not-Billed if it is booked in Purchase Receipt | 					# Post reverse entry for Stock-Received-But-Not-Billed if it is booked in Purchase Receipt | ||||||
| 					negative_expense_booked_in_pi = None |  | ||||||
| 					if item.purchase_receipt: | 					if item.purchase_receipt: | ||||||
| 						negative_expense_booked_in_pi = frappe.db.sql("""select name from `tabGL Entry` | 						negative_expense_booked_in_pr = frappe.db.sql("""select name from `tabGL Entry` | ||||||
| 							where voucher_type='Purchase Receipt' and voucher_no=%s and account=%s""", | 							where voucher_type='Purchase Receipt' and voucher_no=%s and account=%s""", | ||||||
| 							(item.purchase_receipt, expenses_included_in_valuation)) | 							(item.purchase_receipt, expenses_included_in_valuation)) | ||||||
| 
 | 
 | ||||||
| 					if not negative_expense_booked_in_pi: | 						if not negative_expense_booked_in_pr: | ||||||
| 						gl_entries.append( | 							gl_entries.append( | ||||||
| 							self.get_gl_dict({ | 								self.get_gl_dict({ | ||||||
| 								"account": stock_received_but_not_billed, | 									"account": stock_received_but_not_billed, | ||||||
| 								"against": self.supplier, | 									"against": self.supplier, | ||||||
| 								"debit": flt(item.item_tax_amount, self.precision("item_tax_amount", item)), | 									"debit": flt(item.item_tax_amount, self.precision("item_tax_amount", item)), | ||||||
| 								"remarks": self.remarks or "Accounting Entry for Stock" | 									"remarks": self.remarks or "Accounting Entry for Stock" | ||||||
| 							}) | 								}) | ||||||
| 						) | 							) | ||||||
| 
 | 
 | ||||||
| 						negative_expense_to_be_booked += flt(item.item_tax_amount, self.precision("item_tax_amount", item)) | 							negative_expense_to_be_booked += flt(item.item_tax_amount, self.precision("item_tax_amount", item)) | ||||||
| 
 | 
 | ||||||
| 		if self.is_opening == "No" and negative_expense_to_be_booked and valuation_tax: | 		if self.is_opening == "No" and negative_expense_to_be_booked and valuation_tax: | ||||||
| 			# credit valuation tax amount in "Expenses Included In Valuation" | 			# credit valuation tax amount in "Expenses Included In Valuation" | ||||||
|  | |||||||
| @ -224,8 +224,7 @@ erpnext.patches.v6_4.email_digest_update | |||||||
| execute:frappe.delete_doc_if_exists("DocType", "Applicable Territory") | execute:frappe.delete_doc_if_exists("DocType", "Applicable Territory") | ||||||
| execute:frappe.delete_doc_if_exists("DocType", "Shopping Cart Price List") | execute:frappe.delete_doc_if_exists("DocType", "Shopping Cart Price List") | ||||||
| execute:frappe.delete_doc_if_exists("DocType", "Shopping Cart Taxes and Charges Master") | execute:frappe.delete_doc_if_exists("DocType", "Shopping Cart Taxes and Charges Master") | ||||||
| 
 |  | ||||||
| erpnext.patches.v6_4.set_user_in_contact | erpnext.patches.v6_4.set_user_in_contact | ||||||
| erpnext.patches.v6_4.make_image_thumbnail #2015-10-20 | erpnext.patches.v6_4.make_image_thumbnail #2015-10-20 | ||||||
| 
 |  | ||||||
| erpnext.patches.v6_5.show_in_website_for_template_item | erpnext.patches.v6_5.show_in_website_for_template_item | ||||||
|  | erpnext.patches.v6_4.fix_expense_included_in_valuation | ||||||
|  | |||||||
							
								
								
									
										66
									
								
								erpnext/patches/v6_4/fix_expense_included_in_valuation.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								erpnext/patches/v6_4/fix_expense_included_in_valuation.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,66 @@ | |||||||
|  | # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors | ||||||
|  | # License: GNU General Public License v3. See license.txt | ||||||
|  | 
 | ||||||
|  | from __future__ import unicode_literals | ||||||
|  | import frappe | ||||||
|  | from frappe.utils import cstr | ||||||
|  | 
 | ||||||
|  | def execute(): | ||||||
|  | 	stock_items = [r[0] for r in frappe.db.sql("""select name from `tabItem` where is_stock_item=1""")] | ||||||
|  | 	 | ||||||
|  | 	for company in frappe.db.sql("select name, expenses_included_in_valuation from tabCompany", as_dict=1): | ||||||
|  | 		frozen_date = get_frozen_date(company.name, company.expenses_included_in_valuation) | ||||||
|  | 	 | ||||||
|  | 		# Purchase Invoices after frozen date  | ||||||
|  | 		# which are not against Receipt, but valuation related tax is there | ||||||
|  | 		pi_list = frappe.db.sql(""" | ||||||
|  | 			select distinct pi.name | ||||||
|  | 			from `tabPurchase Invoice` pi, `tabPurchase Invoice Item` pi_item | ||||||
|  | 			where  | ||||||
|  | 				pi.name = pi_item.parent | ||||||
|  | 				and pi.company = %s | ||||||
|  | 				and pi.posting_date > %s | ||||||
|  | 				and pi.docstatus = 1 | ||||||
|  | 				and pi.is_opening = 'No' | ||||||
|  | 				and (pi_item.item_tax_amount is not null and pi_item.item_tax_amount > 0) | ||||||
|  | 				and (pi_item.purchase_receipt is null or pi_item.purchase_receipt = '') | ||||||
|  | 				and pi_item.item_code in (%s) | ||||||
|  | 		""" % ('%s', '%s', ', '.join(['%s']*len(stock_items))),  | ||||||
|  | 			tuple([company.name, frozen_date] + stock_items), as_dict=1) | ||||||
|  | 		 | ||||||
|  | 		for pi in pi_list: | ||||||
|  | 			# Check whether gle exists for Expenses Included in Valuation account against the PI | ||||||
|  | 			gle_for_expenses_included_in_valuation = frappe.db.sql("""select name from `tabGL Entry`  | ||||||
|  | 				where voucher_type='Purchase Invoice' and voucher_no=%s and account=%s""",  | ||||||
|  | 				(pi.name, company.expenses_included_in_valuation)) | ||||||
|  | 				 | ||||||
|  | 			if gle_for_expenses_included_in_valuation: | ||||||
|  | 				frappe.db.sql("""delete from `tabGL Entry` | ||||||
|  | 					where voucher_type='Purchase Invoice' and voucher_no=%s""", pi.name) | ||||||
|  | 
 | ||||||
|  | 				purchase_invoice = frappe.get_doc("Purchase Invoice", pi.name) | ||||||
|  | 				purchase_invoice.make_gl_entries() | ||||||
|  | 				 | ||||||
|  | 				print pi.name | ||||||
|  | 		 | ||||||
|  | def get_frozen_date(company, account): | ||||||
|  | 	# Accounting frozen upto | ||||||
|  | 	accounts_frozen_upto = frappe.db.get_single_value("Accounts Settings", "acc_frozen_upto") | ||||||
|  | 	 | ||||||
|  | 	# Last adjustment entry to correct Expenses Included in Valuation account balance | ||||||
|  | 	last_adjustment_entry = frappe.db.sql("""select posting_date from `tabGL Entry`  | ||||||
|  | 		where account=%s and company=%s and voucher_type = 'Journal Entry' | ||||||
|  | 		order by posting_date desc limit 1""", (account, company)) | ||||||
|  | 		 | ||||||
|  | 	last_adjustment_date = cstr(last_adjustment_entry[0][0]) if last_adjustment_entry else None | ||||||
|  | 	 | ||||||
|  | 	# Last period closing voucher | ||||||
|  | 	last_closing_entry = frappe.db.sql("""select posting_date from `tabGL Entry`  | ||||||
|  | 		where company=%s and voucher_type = 'Period Closing Voucher' | ||||||
|  | 		order by posting_date desc limit 1""", company) | ||||||
|  | 		 | ||||||
|  | 	last_closing_date = cstr(last_closing_entry[0][0]) if last_closing_entry else None | ||||||
|  | 
 | ||||||
|  | 	frozen_date = max([accounts_frozen_upto, last_adjustment_date, last_closing_date]) | ||||||
|  | 	 | ||||||
|  | 	return frozen_date or '1900-01-01' | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user