mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-02 19:59:12 +00:00
fix: correct ordered_qty and requested_qty for Sales Order Item through a patch
This commit is contained in:
@@ -467,4 +467,5 @@ erpnext.patches.v16_0.update_company_custom_field_in_bin
|
|||||||
erpnext.patches.v15_0.replace_http_with_https_in_sales_partner
|
erpnext.patches.v15_0.replace_http_with_https_in_sales_partner
|
||||||
erpnext.patches.v16_0.migrate_asset_type_checkboxes_to_select
|
erpnext.patches.v16_0.migrate_asset_type_checkboxes_to_select
|
||||||
erpnext.patches.v15_0.delete_quotation_lost_record_detail
|
erpnext.patches.v15_0.delete_quotation_lost_record_detail
|
||||||
erpnext.patches.v16_0.add_portal_redirects
|
erpnext.patches.v16_0.add_portal_redirects
|
||||||
|
erpnext.patches.v16_0.update_order_qty_and_requested_qty_based_on_mr_and_po
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
import frappe
|
||||||
|
from frappe.query_builder import DocType
|
||||||
|
from frappe.query_builder.functions import Sum
|
||||||
|
|
||||||
|
|
||||||
|
def execute():
|
||||||
|
PurchaseOrderItem = DocType("Purchase Order Item")
|
||||||
|
MaterialRequestItem = DocType("Material Request Item")
|
||||||
|
|
||||||
|
poi_query = (
|
||||||
|
frappe.qb.from_(PurchaseOrderItem)
|
||||||
|
.select(PurchaseOrderItem.sales_order_item, Sum(PurchaseOrderItem.qty))
|
||||||
|
.where(PurchaseOrderItem.sales_order_item.isnotnull() & PurchaseOrderItem.docstatus != 2)
|
||||||
|
.groupby(PurchaseOrderItem.sales_order_item)
|
||||||
|
)
|
||||||
|
|
||||||
|
mri_query = (
|
||||||
|
frappe.qb.from_(MaterialRequestItem)
|
||||||
|
.select(MaterialRequestItem.sales_order_item, Sum(MaterialRequestItem.qty))
|
||||||
|
.where(MaterialRequestItem.sales_order_item.isnotnull() & MaterialRequestItem.docstatus != 2)
|
||||||
|
.groupby(MaterialRequestItem.sales_order_item)
|
||||||
|
)
|
||||||
|
|
||||||
|
poi_data = poi_query.run()
|
||||||
|
mri_data = mri_query.run()
|
||||||
|
|
||||||
|
updates_against_poi = {}
|
||||||
|
updates_against_mri = {}
|
||||||
|
|
||||||
|
for data in poi_data:
|
||||||
|
updates_against_poi[data[0]] = {"ordered_qty": data[1]}
|
||||||
|
|
||||||
|
for data in mri_data:
|
||||||
|
updates_against_mri[data[0]] = {"requested_qty": data[1], "ordered_qty": 0}
|
||||||
|
|
||||||
|
frappe.db.auto_commit_on_many_writes = 1
|
||||||
|
frappe.db.bulk_update("Sales Order Item", updates_against_mri)
|
||||||
|
frappe.db.bulk_update("Sales Order Item", updates_against_poi)
|
||||||
|
frappe.db.auto_commit_on_many_writes = 0
|
||||||
Reference in New Issue
Block a user