fix: Return Qty in PR/DN for legacy data (#27001)

diff --git a/erpnext/patches/v13_0/update_returned_qty_in_pr_dn.py b/erpnext/patches/v13_0/update_returned_qty_in_pr_dn.py
index 7f42cd9..409f4da 100644
--- a/erpnext/patches/v13_0/update_returned_qty_in_pr_dn.py
+++ b/erpnext/patches/v13_0/update_returned_qty_in_pr_dn.py
@@ -1,8 +1,7 @@
-# Copyright (c) 2019, Frappe and Contributors
+# Copyright (c) 2021, Frappe and Contributors
 # License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
 import frappe
+from erpnext.controllers.status_updater import OverAllowanceError
 
 def execute():
 	frappe.reload_doc('stock', 'doctype', 'purchase_receipt')
@@ -14,9 +13,15 @@
 		for return_doc in frappe.get_all(doctype, filters={'is_return' : 1, 'docstatus' : 1}):
 			# Update original receipt/delivery document from return
 			return_doc = frappe.get_cached_doc(doctype, return_doc.name)
-			return_doc.update_prevdoc_status()
+			try:
+				return_doc.update_prevdoc_status()
+			except OverAllowanceError:
+				frappe.db.rollback()
+				continue
+
 			return_against = frappe.get_doc(doctype, return_doc.return_against)
 			return_against.update_billing_status()
+			frappe.db.commit()
 
 	# Set received qty in stock uom in PR, as returned qty is checked against it
 	frappe.db.sql(""" update `tabPurchase Receipt Item`