mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-20 21:49:18 +00:00
fix: status not changing for dropshipped POs and SOs (#54934)
* fix: status not changing for dropshipped POs and SOs
* test: change test case to accomodate new flow
(cherry picked from commit 78a79120ea)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
This commit is contained in:
@@ -491,7 +491,6 @@ class PurchaseOrder(BuyingController):
|
|||||||
self.update_status_updater_if_from_pp()
|
self.update_status_updater_if_from_pp()
|
||||||
|
|
||||||
if self.has_drop_ship_item():
|
if self.has_drop_ship_item():
|
||||||
self.update_delivered_qty_in_sales_order()
|
|
||||||
self.set_received_qty_to_zero_for_drop_ship_items()
|
self.set_received_qty_to_zero_for_drop_ship_items()
|
||||||
self.update_receiving_percentage()
|
self.update_receiving_percentage()
|
||||||
|
|
||||||
@@ -623,9 +622,17 @@ class PurchaseOrder(BuyingController):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
item.received_qty += d.get("qty_change")
|
qty_change = item.received_qty + d.get("qty_change")
|
||||||
|
item.db_set("received_qty", qty_change, update_modified=True)
|
||||||
|
self.add_comment(
|
||||||
|
"Label",
|
||||||
|
_("updated delivered quantity for item {0} to {1}").format(
|
||||||
|
frappe.bold(item.item_code), frappe.bold(qty_change)
|
||||||
|
),
|
||||||
|
)
|
||||||
self.update_receiving_percentage()
|
self.update_receiving_percentage()
|
||||||
self.save()
|
self.set_status(update=True)
|
||||||
|
self.update_delivered_qty_in_sales_order()
|
||||||
|
|
||||||
def is_against_so(self):
|
def is_against_so(self):
|
||||||
return any(d.sales_order for d in self.items if d.sales_order)
|
return any(d.sales_order for d in self.items if d.sales_order)
|
||||||
|
|||||||
@@ -622,7 +622,6 @@
|
|||||||
"width": "100px"
|
"width": "100px"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"allow_on_submit": 1,
|
|
||||||
"depends_on": "received_qty",
|
"depends_on": "received_qty",
|
||||||
"fieldname": "received_qty",
|
"fieldname": "received_qty",
|
||||||
"fieldtype": "Float",
|
"fieldtype": "Float",
|
||||||
@@ -952,7 +951,7 @@
|
|||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2026-05-08 20:40:10.683023",
|
"modified": "2026-05-14 12:16:16.192936",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Buying",
|
"module": "Buying",
|
||||||
"name": "Purchase Order Item",
|
"name": "Purchase Order Item",
|
||||||
|
|||||||
@@ -684,18 +684,12 @@ class SalesOrder(SellingController):
|
|||||||
|
|
||||||
for item in self.items:
|
for item in self.items:
|
||||||
if item.delivered_by_supplier:
|
if item.delivered_by_supplier:
|
||||||
item_delivered_qty = frappe.db.sql(
|
item_delivered_qty = frappe.get_all(
|
||||||
"""select sum(qty)
|
"Purchase Order Item",
|
||||||
from `tabPurchase Order Item` poi, `tabPurchase Order` po
|
{"sales_order_item": item.name, "docstatus": 1},
|
||||||
where poi.sales_order_item = %s
|
[{"SUM": "received_qty", "AS": "received_qty"}],
|
||||||
and poi.item_code = %s
|
pluck="received_qty",
|
||||||
and poi.parent = po.name
|
)[0]
|
||||||
and po.docstatus = 1
|
|
||||||
and po.status = 'Delivered'""",
|
|
||||||
(item.name, item.item_code),
|
|
||||||
)
|
|
||||||
|
|
||||||
item_delivered_qty = item_delivered_qty[0][0] if item_delivered_qty else 0
|
|
||||||
item.db_set("delivered_qty", flt(item_delivered_qty), update_modified=False)
|
item.db_set("delivered_qty", flt(item_delivered_qty), update_modified=False)
|
||||||
|
|
||||||
delivered_qty += min(item.delivered_qty, item.qty)
|
delivered_qty += min(item.delivered_qty, item.qty)
|
||||||
|
|||||||
@@ -1224,9 +1224,14 @@ class TestSalesOrder(ERPNextTestSuite):
|
|||||||
self.assertEqual(abs(flt(reserved_qty)), 0)
|
self.assertEqual(abs(flt(reserved_qty)), 0)
|
||||||
|
|
||||||
# test per_delivered status
|
# test per_delivered status
|
||||||
update_status("Delivered", po.name)
|
self.assertEqual(po.status, "To Receive and Bill")
|
||||||
|
self.assertEqual(so.status, "To Deliver and Bill")
|
||||||
|
po.update_dropship_received_qty([{"name": po.items[0].name, "qty_change": 2}])
|
||||||
self.assertEqual(flt(frappe.db.get_value("Sales Order", so.name, "per_delivered"), 2), 100.00)
|
self.assertEqual(flt(frappe.db.get_value("Sales Order", so.name, "per_delivered"), 2), 100.00)
|
||||||
po.load_from_db()
|
po.load_from_db()
|
||||||
|
so.reload()
|
||||||
|
self.assertEqual(po.status, "To Bill")
|
||||||
|
self.assertEqual(so.status, "To Bill")
|
||||||
|
|
||||||
# test after closing so
|
# test after closing so
|
||||||
so.db_set("status", "Closed")
|
so.db_set("status", "Closed")
|
||||||
|
|||||||
Reference in New Issue
Block a user