fix: default clear repost logs
This commit is contained in:
		| @@ -318,3 +318,4 @@ erpnext.patches.v13_0.update_schedule_type_in_loans | ||||
| erpnext.patches.v14_0.create_accounting_dimensions_for_asset_capitalization | ||||
| erpnext.patches.v14_0.update_partial_tds_fields | ||||
| erpnext.patches.v14_0.create_incoterms_and_migrate_shipment | ||||
| erpnext.patches.v14_0.setup_clear_repost_logs | ||||
							
								
								
									
										8
									
								
								erpnext/patches/v14_0/setup_clear_repost_logs.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								erpnext/patches/v14_0/setup_clear_repost_logs.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| # Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors | ||||
| # License: MIT. See LICENSE | ||||
|  | ||||
| from erpnext.setup.install import setup_log_settings | ||||
|  | ||||
|  | ||||
| def execute(): | ||||
| 	setup_log_settings() | ||||
| @@ -30,6 +30,7 @@ def after_install(): | ||||
| 	add_company_to_session_defaults() | ||||
| 	add_standard_navbar_items() | ||||
| 	add_app_name() | ||||
| 	setup_log_settings() | ||||
| 	frappe.db.commit() | ||||
|  | ||||
|  | ||||
| @@ -197,3 +198,10 @@ def add_standard_navbar_items(): | ||||
|  | ||||
| def add_app_name(): | ||||
| 	frappe.db.set_value("System Settings", None, "app_name", "ERPNext") | ||||
|  | ||||
|  | ||||
| def setup_log_settings(): | ||||
| 	log_settings = frappe.get_single("Log Settings") | ||||
| 	log_settings.append("logs_to_clear", {"ref_doctype": "Repost Item Valuation", "days": 60}) | ||||
|  | ||||
| 	log_settings.save(ignore_permissions=True) | ||||
|   | ||||
| @@ -5,6 +5,8 @@ import frappe | ||||
| from frappe import _ | ||||
| from frappe.exceptions import QueryDeadlockError, QueryTimeoutError | ||||
| from frappe.model.document import Document | ||||
| from frappe.query_builder import DocType, Interval | ||||
| from frappe.query_builder.functions import Now | ||||
| from frappe.utils import cint, get_link_to_form, get_weekday, getdate, now, nowtime | ||||
| from frappe.utils.user import get_users_with_role | ||||
| from rq.timeouts import JobTimeoutException | ||||
| @@ -21,6 +23,18 @@ RecoverableErrors = (JobTimeoutException, QueryDeadlockError, QueryTimeoutError) | ||||
|  | ||||
|  | ||||
| class RepostItemValuation(Document): | ||||
| 	@staticmethod | ||||
| 	def clear_old_logs(days=None): | ||||
| 		days = days or 90 | ||||
| 		table = DocType("Repost Item Valuation") | ||||
| 		frappe.db.delete( | ||||
| 			table, | ||||
| 			filters=( | ||||
| 				(table.modified < (Now() - Interval(days=days))) | ||||
| 				& (table.status.isin(["Completed", "Skipped"])) | ||||
| 			), | ||||
| 		) | ||||
|  | ||||
| 	def validate(self): | ||||
| 		self.set_status(write=False) | ||||
| 		self.reset_field_values() | ||||
|   | ||||
| @@ -86,6 +86,31 @@ class TestRepostItemValuation(FrappeTestCase, StockTestMixin): | ||||
| 				msg=f"Exepcted false from : {case}", | ||||
| 			) | ||||
|  | ||||
| 	def test_clear_old_logs(self): | ||||
| 		# create 10 logs | ||||
| 		for i in range(1, 20): | ||||
| 			frappe.get_doc( | ||||
| 				doctype="Repost Item Valuation", | ||||
| 				item_code="_Test Item", | ||||
| 				warehouse="_Test Warehouse - _TC", | ||||
| 				based_on="Item and Warehouse", | ||||
| 				creation=add_to_date(today(), days=-i * 10), | ||||
| 				modified=add_to_date(today(), days=-i * 10), | ||||
| 				posting_date=nowdate(), | ||||
| 				status="Skipped", | ||||
| 				posting_time="00:01:00", | ||||
| 			).insert(ignore_permissions=True) | ||||
|  | ||||
| 		logs = frappe.get_all("Repost Item Valuation", filters={"status": "Skipped"}) | ||||
| 		self.assertTrue(len(logs) > 10) | ||||
|  | ||||
| 		from erpnext.stock.doctype.repost_item_valuation.repost_item_valuation import RepostItemValuation | ||||
|  | ||||
| 		RepostItemValuation.clear_old_logs(days=1) | ||||
|  | ||||
| 		logs = frappe.get_all("Repost Item Valuation", filters={"status": "Skipped"}) | ||||
| 		self.assertTrue(len(logs) == 0) | ||||
|  | ||||
| 	def test_create_item_wise_repost_item_valuation_entries(self): | ||||
| 		pr = make_purchase_receipt( | ||||
| 			company="_Test Company with perpetual inventory", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Rohit Waghchaure
					Rohit Waghchaure