35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """ This patch fixes old purchase receipts (PR) where even after submitting
 | |
| 	the PR, the `status` remains "Draft". `per_billed` field was copied over from previous
 | |
| 	doc (PO), hence it is recalculated for setting new correct status of PR.
 | |
| """
 | |
| 
 | |
| import frappe
 | |
| 
 | |
| logger = frappe.logger("patch", allow_site=True, file_count=50)
 | |
| 
 | |
| 
 | |
| def execute():
 | |
| 	affected_purchase_receipts = frappe.db.sql(
 | |
| 		"""select name from `tabPurchase Receipt`
 | |
| 		where status = 'Draft' and per_billed = 100 and docstatus = 1"""
 | |
| 	)
 | |
| 
 | |
| 	if not affected_purchase_receipts:
 | |
| 		return
 | |
| 
 | |
| 	logger.info(
 | |
| 		"purchase_receipt_status: begin patch, PR count: {}".format(len(affected_purchase_receipts))
 | |
| 	)
 | |
| 
 | |
| 	frappe.reload_doc("stock", "doctype", "Purchase Receipt")
 | |
| 	frappe.reload_doc("stock", "doctype", "Purchase Receipt Item")
 | |
| 
 | |
| 	for pr in affected_purchase_receipts:
 | |
| 		pr_name = pr[0]
 | |
| 		logger.info("purchase_receipt_status: patching PR - {}".format(pr_name))
 | |
| 
 | |
| 		pr_doc = frappe.get_doc("Purchase Receipt", pr_name)
 | |
| 
 | |
| 		pr_doc.update_billing_status(update_modified=False)
 | |
| 		pr_doc.set_status(update=True, update_modified=False)
 |