chore: Patch to update SO work_order_qty and Linter fix
This commit is contained in:
parent
f9d52e7346
commit
0ca58d7627
@ -352,3 +352,4 @@ erpnext.patches.v13_0.shopping_cart_to_ecommerce
|
|||||||
erpnext.patches.v13_0.update_disbursement_account
|
erpnext.patches.v13_0.update_disbursement_account
|
||||||
erpnext.patches.v13_0.update_reserved_qty_closed_wo
|
erpnext.patches.v13_0.update_reserved_qty_closed_wo
|
||||||
erpnext.patches.v14_0.delete_amazon_mws_doctype
|
erpnext.patches.v14_0.delete_amazon_mws_doctype
|
||||||
|
erpnext.patches.v14_0.set_work_order_qty_in_so_from_mr
|
||||||
|
36
erpnext/patches/v14_0/set_work_order_qty_in_so_from_mr.py
Normal file
36
erpnext/patches/v14_0/set_work_order_qty_in_so_from_mr.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
import frappe
|
||||||
|
|
||||||
|
|
||||||
|
def execute():
|
||||||
|
"""
|
||||||
|
1. Get submitted Work Orders with MR, MR Item and SO set
|
||||||
|
2. Get SO Item detail from MR Item detail in WO, and set in WO
|
||||||
|
3. Update work_order_qty in SO
|
||||||
|
"""
|
||||||
|
work_order = frappe.qb.DocType("Work Order")
|
||||||
|
query = (
|
||||||
|
frappe.qb.from_(work_order)
|
||||||
|
.select(
|
||||||
|
work_order.name, work_order.produced_qty,
|
||||||
|
work_order.material_request,
|
||||||
|
work_order.material_request_item,
|
||||||
|
work_order.sales_order
|
||||||
|
).where(
|
||||||
|
(work_order.material_request.isnotnull())
|
||||||
|
& (work_order.material_request_item.isnotnull())
|
||||||
|
& (work_order.sales_order.isnotnull())
|
||||||
|
& (work_order.docstatus == 1)
|
||||||
|
& (work_order.produced_qty > 0)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
results = query.run(as_dict=True)
|
||||||
|
|
||||||
|
for row in results:
|
||||||
|
so_item = frappe.get_value(
|
||||||
|
"Material Request Item", row.material_request_item, "sales_order_item"
|
||||||
|
)
|
||||||
|
frappe.db.set_value("Work Order", row.name, "sales_order_item", so_item)
|
||||||
|
|
||||||
|
if so_item:
|
||||||
|
wo = frappe.get_doc("Work Order", row.name)
|
||||||
|
wo.update_work_order_qty_in_so()
|
@ -1401,10 +1401,10 @@ class TestSalesOrder(ERPNextTestCase):
|
|||||||
|
|
||||||
def test_so_back_updated_from_wo_via_mr(self):
|
def test_so_back_updated_from_wo_via_mr(self):
|
||||||
"SO -> MR (Manufacture) -> WO. Test if WO Qty is updated in SO."
|
"SO -> MR (Manufacture) -> WO. Test if WO Qty is updated in SO."
|
||||||
from erpnext.stock.doctype.material_request.material_request import raise_work_orders
|
|
||||||
from erpnext.manufacturing.doctype.work_order.work_order import (
|
from erpnext.manufacturing.doctype.work_order.work_order import (
|
||||||
make_stock_entry as make_se_from_wo,
|
make_stock_entry as make_se_from_wo,
|
||||||
)
|
)
|
||||||
|
from erpnext.stock.doctype.material_request.material_request import raise_work_orders
|
||||||
|
|
||||||
so = make_sales_order(item_list=[{"item_code": "_Test FG Item","qty": 2, "rate":100}])
|
so = make_sales_order(item_list=[{"item_code": "_Test FG Item","qty": 2, "rate":100}])
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user