AttributeError: 'int' object has no attribute 'replace'

App Versions

{
	"erpnext": "14.60.1",
	"frappe": "14.62.2",
	"hrms": "16.0.0-dev"
}

Route

Form/Purchase Receipt/3

Traceback

Traceback (most recent call last):
  File "apps/frappe/frappe/app.py", line 95, in application
    response = frappe.api.handle()
  File "apps/frappe/frappe/api.py", line 55, in handle
    return frappe.handler.handle()
  File "apps/frappe/frappe/handler.py", line 47, in handle
    data = execute_cmd(cmd)
  File "apps/frappe/frappe/handler.py", line 85, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
  File "apps/frappe/frappe/__init__.py", line 1620, in call
    return fn(*args, **newargs)
  File "apps/frappe/frappe/desk/form/save.py", line 31, in savedocs
    doc.save()
  File "apps/frappe/frappe/model/document.py", line 309, in save
    return self._save(*args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 361, in _save
    self.run_post_save_methods()
  File "apps/frappe/frappe/model/document.py", line 1098, in run_post_save_methods
    self.run_method("on_submit")
  File "apps/frappe/frappe/model/document.py", line 922, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1284, in composer
    return composed(self, method, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1266, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "apps/frappe/frappe/model/document.py", line 919, in fn
    return method_object(*args, **kwargs)
  File "apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py", line 255, in on_submit
    self.update_prevdoc_status()
  File "apps/erpnext/erpnext/controllers/status_updater.py", line 168, in update_prevdoc_status
    self.update_qty()
  File "apps/erpnext/erpnext/controllers/status_updater.py", line 386, in update_qty
    args["cond"] = " or parent='%s'" % self.name.replace('"', '"')
AttributeError: 'int' object has no attribute 'replace'

Request Data

{
	"type": "POST",
	"args": {
		"doc": "{\"name\":2,\"owner\":\"Administrator\",\"creation\":\"2024-01-16 11:20:14.752900\",\"modified\":\"2024-01-16 11:20:14.752900\",\"modified_by\":\"Administrator\",\"docstatus\":0,\"idx\":0,\"title\":\"Fenil Sabuwala\",\"naming_series\":\"MAT-PRE-.YYYY.-\",\"supplier\":\"Fenil Sabuwala\",\"supplier_name\":\"Fenil Sabuwala\",\"supplier_delivery_note\":null,\"posting_date\":\"2024-01-16\",\"posting_time\":\"11:20:14.778888\",\"set_posting_time\":0,\"company\":\"Alpha\",\"apply_putaway_rule\":0,\"is_return\":0,\"return_against\":null,\"cost_center\":null,\"project\":null,\"currency\":\"INR\",\"conversion_rate\":1,\"buying_price_list\":\"Standard Buying\",\"price_list_currency\":\"INR\",\"plc_conversion_rate\":1,\"ignore_pricing_rule\":0,\"scan_barcode\":null,\"set_warehouse\":null,\"set_from_warehouse\":null,\"rejected_warehouse\":null,\"is_subcontracted\":0,\"supplier_warehouse\":null,\"total_qty\":20,\"total_net_weight\":0,\"base_total\":6000,\"base_net_total\":6000,\"total\":6000,\"net_total\":6000,\"tax_category\":\"\",\"taxes_and_charges\":null,\"shipping_rule\":null,\"incoterm\":null,\"named_place\":null,\"base_taxes_and_charges_added\":0,\"base_taxes_and_charges_deducted\":0,\"base_total_taxes_and_charges\":0,\"taxes_and_charges_added\":0,\"taxes_and_charges_deducted\":0,\"total_taxes_and_charges\":0,\"base_grand_total\":6000,\"base_rounding_adjustment\":0,\"base_rounded_total\":6000,\"base_in_words\":\"\",\"grand_total\":6000,\"rounding_adjustment\":0,\"rounded_total\":6000,\"in_words\":\"\",\"disable_rounded_total\":0,\"apply_discount_on\":\"Grand Total\",\"base_discount_amount\":0,\"additional_discount_percentage\":0,\"discount_amount\":0,\"other_charges_calculation\":null,\"supplier_address\":null,\"address_display\":null,\"contact_person\":null,\"contact_display\":null,\"contact_mobile\":null,\"contact_email\":null,\"shipping_address\":null,\"shipping_address_display\":null,\"billing_address\":null,\"billing_address_display\":null,\"tc_name\":null,\"terms\":null,\"status\":\"Draft\",\"per_billed\":0,\"per_returned\":0,\"auto_repeat\":null,\"letter_head\":null,\"group_same_items\":0,\"select_print_heading\":null,\"language\":\"en\",\"transporter_name\":null,\"lr_no\":null,\"lr_date\":null,\"instructions\":null,\"is_internal_supplier\":0,\"represents_company\":\"\",\"inter_company_reference\":null,\"remarks\":null,\"range\":null,\"amended_from\":null,\"is_old_subcontracting_flow\":0,\"doctype\":\"Purchase Receipt\",\"pricing_rules\":[],\"items\":[{\"name\":\"9751b79229\",\"owner\":\"Administrator\",\"creation\":\"2024-01-16 11:20:14.752900\",\"modified\":\"2024-01-16 11:20:14.752900\",\"modified_by\":\"Administrator\",\"docstatus\":0,\"idx\":1,\"barcode\":null,\"has_item_scanned\":0,\"item_code\":14,\"product_bundle\":null,\"supplier_part_no\":null,\"item_name\":\"BOYS BELT\",\"description\":\"BOYS BELT\",\"brand\":null,\"item_group\":\"4\",\"image\":\"\",\"received_qty\":20,\"qty\":20,\"rejected_qty\":0,\"uom\":\"Nos\",\"stock_uom\":\"Nos\",\"conversion_factor\":1,\"retain_sample\":0,\"sample_quantity\":0,\"received_stock_qty\":20,\"stock_qty\":20,\"returned_qty\":0,\"price_list_rate\":450,\"base_price_list_rate\":450,\"margin_type\":\"\",\"margin_rate_or_amount\":0,\"rate_with_margin\":0,\"discount_percentage\":33.333,\"discount_amount\":150,\"base_rate_with_margin\":0,\"rate\":300,\"amount\":6000,\"base_rate\":300,\"base_amount\":6000,\"pricing_rules\":\"\",\"stock_uom_rate\":300,\"is_free_item\":0,\"net_rate\":300,\"net_amount\":6000,\"item_tax_template\":null,\"base_net_rate\":300,\"base_net_amount\":6000,\"valuation_rate\":300,\"item_tax_amount\":0,\"rm_supp_cost\":0,\"landed_cost_voucher_amount\":0,\"rate_difference_with_purchase_invoice\":0,\"billed_amt\":0,\"warehouse\":\"Stores - A\",\"rejected_warehouse\":null,\"from_warehouse\":null,\"material_request\":null,\"purchase_order\":null,\"purchase_invoice\":null,\"is_fixed_asset\":0,\"asset_location\":null,\"asset_category\":null,\"schedule_date\":null,\"quality_inspection\":null,\"material_request_item\":null,\"purchase_order_item\":null,\"purchase_invoice_item\":null,\"purchase_receipt_item\":null,\"delivery_note_item\":null,\"putaway_rule\":null,\"allow_zero_valuation_rate\":0,\"bom\":null,\"serial_no\":null,\"include_exploded_items\":0,\"batch_no\":null,\"rejected_serial_no\":null,\"item_tax_rate\":\"{}\",\"weight_per_unit\":0,\"total_weight\":0,\"weight_uom\":null,\"manufacturer\":null,\"manufacturer_part_no\":null,\"expense_account\":\"Cost of Goods Sold - A\",\"wip_composite_asset\":null,\"provisional_expense_account\":null,\"project\":null,\"cost_center\":\"Main - A\",\"page_break\":0,\"sales_order\":null,\"sales_order_item\":null,\"parent\":2,\"parentfield\":\"items\",\"parenttype\":\"Purchase Receipt\",\"doctype\":\"Purchase Receipt Item\",\"__unsaved\":1}],\"supplied_items\":[],\"taxes\":[],\"__onload\":{\"make_payment_via_journal_entry\":0,\"backflush_based_on\":\"BOM\"},\"__last_sync_on\":\"2024-01-16T05:50:14.932Z\"}",
		"action": "Submit"
	},
	"btn": {
		"jQuery360075035629186794761": {
			"events": {
				"click": [
					{
						"type": "click",
						"origType": "click",
						"guid": 10102,
						"namespace": ""
					}
				]
			}
		}
	},
	"freeze": true,
	"headers": {},
	"error_handlers": {},
	"url": "/api/method/frappe.desk.form.save.savedocs"
}

Response Data

{
	"exception": "AttributeError: 'int' object has no attribute 'replace'"
}

self.update_qty() IN THIS METHOD IN PROBLEM IS CASTING INT TO STR THAT’S WHY

SOLUTION IS name=str(self.name) JUST DO THIS IN

apps/erpnext/erpnext/controllers/status_updater.py ==>update_qty()