55 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import frappe
 | |
| 
 | |
| 
 | |
| def execute():
 | |
| 	"""
 | |
| 	Description:
 | |
| 	Calculate the new Advance Payment Statuse column in SO & PO
 | |
| 	"""
 | |
| 
 | |
| 	if frappe.reload_doc("selling", "doctype", "Sales Order"):
 | |
| 		so = frappe.qb.DocType("Sales Order")
 | |
| 		frappe.qb.update(so).set(so.advance_payment_status, "Not Requested").where(
 | |
| 			so.docstatus == 1
 | |
| 		).where(so.advance_paid == 0.0).run()
 | |
| 
 | |
| 		frappe.qb.update(so).set(so.advance_payment_status, "Partially Paid").where(
 | |
| 			so.docstatus == 1
 | |
| 		).where(so.advance_payment_status.isnull()).where(
 | |
| 			so.advance_paid < (so.rounded_total or so.grand_total)
 | |
| 		).run()
 | |
| 
 | |
| 		frappe.qb.update(so).set(so.advance_payment_status, "Fully Paid").where(so.docstatus == 1).where(
 | |
| 			so.advance_payment_status.isnull()
 | |
| 		).where(so.advance_paid == (so.rounded_total or so.grand_total)).run()
 | |
| 
 | |
| 		pr = frappe.qb.DocType("Payment Request")
 | |
| 		frappe.qb.update(so).join(pr).on(so.name == pr.reference_name).set(
 | |
| 			so.advance_payment_status, "Requested"
 | |
| 		).where(so.docstatus == 1).where(pr.docstatus == 1).where(
 | |
| 			so.advance_payment_status == "Not Requested"
 | |
| 		).run()
 | |
| 
 | |
| 	if frappe.reload_doc("buying", "doctype", "Purchase Order"):
 | |
| 		po = frappe.qb.DocType("Purchase Order")
 | |
| 		frappe.qb.update(po).set(po.advance_payment_status, "Not Initiated").where(
 | |
| 			po.docstatus == 1
 | |
| 		).where(po.advance_paid == 0.0).run()
 | |
| 
 | |
| 		frappe.qb.update(po).set(po.advance_payment_status, "Partially Paid").where(
 | |
| 			po.docstatus == 1
 | |
| 		).where(po.advance_payment_status.isnull()).where(
 | |
| 			po.advance_paid < (po.rounded_total or po.grand_total)
 | |
| 		).run()
 | |
| 
 | |
| 		frappe.qb.update(po).set(po.advance_payment_status, "Fully Paid").where(po.docstatus == 1).where(
 | |
| 			po.advance_payment_status.isnull()
 | |
| 		).where(po.advance_paid == (po.rounded_total or po.grand_total)).run()
 | |
| 
 | |
| 		pr = frappe.qb.DocType("Payment Request")
 | |
| 		frappe.qb.update(po).join(pr).on(po.name == pr.reference_name).set(
 | |
| 			po.advance_payment_status, "Initiated"
 | |
| 		).where(po.docstatus == 1).where(pr.docstatus == 1).where(
 | |
| 			po.advance_payment_status == "Not Initiated"
 | |
| 		).run()
 |