mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-15 11:09:17 +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
This commit is contained in:
@@ -469,7 +469,6 @@ class PurchaseOrder(BuyingController):
|
||||
self.update_status_updater_if_from_pp()
|
||||
|
||||
if self.has_drop_ship_item():
|
||||
self.update_delivered_qty_in_sales_order()
|
||||
self.set_received_qty_to_zero_for_drop_ship_items()
|
||||
self.update_receiving_percentage()
|
||||
|
||||
@@ -600,9 +599,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.save()
|
||||
self.set_status(update=True)
|
||||
self.update_delivered_qty_in_sales_order()
|
||||
|
||||
def is_against_so(self):
|
||||
return any(d.sales_order for d in self.items if d.sales_order)
|
||||
|
||||
@@ -612,7 +612,6 @@
|
||||
"width": "100px"
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 1,
|
||||
"depends_on": "received_qty",
|
||||
"fieldname": "received_qty",
|
||||
"fieldtype": "Float",
|
||||
@@ -942,7 +941,7 @@
|
||||
"index_web_pages_for_search": 1,
|
||||
"istable": 1,
|
||||
"links": [],
|
||||
"modified": "2026-05-08 20:40:10.683023",
|
||||
"modified": "2026-05-14 12:16:16.192936",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Buying",
|
||||
"name": "Purchase Order Item",
|
||||
|
||||
@@ -27,6 +27,7 @@ class PurchaseOrderItem(Document):
|
||||
billed_amt: DF.Currency
|
||||
blanket_order: DF.Link | None
|
||||
blanket_order_rate: DF.Currency
|
||||
bom: DF.Link | None
|
||||
brand: DF.Link | None
|
||||
company_total_stock: DF.Float
|
||||
conversion_factor: DF.Float
|
||||
|
||||
@@ -686,18 +686,12 @@ class SalesOrder(SellingController):
|
||||
|
||||
for item in self.items:
|
||||
if item.delivered_by_supplier:
|
||||
item_delivered_qty = frappe.db.sql(
|
||||
"""select sum(qty)
|
||||
from `tabPurchase Order Item` poi, `tabPurchase Order` po
|
||||
where poi.sales_order_item = %s
|
||||
and poi.item_code = %s
|
||||
and poi.parent = po.name
|
||||
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_delivered_qty = frappe.get_all(
|
||||
"Purchase Order Item",
|
||||
{"sales_order_item": item.name, "docstatus": 1},
|
||||
[{"SUM": "received_qty", "AS": "received_qty"}],
|
||||
pluck="received_qty",
|
||||
)[0]
|
||||
item.db_set("delivered_qty", flt(item_delivered_qty), update_modified=False)
|
||||
|
||||
delivered_qty += min(item.delivered_qty, item.qty)
|
||||
|
||||
@@ -1224,9 +1224,14 @@ class TestSalesOrder(ERPNextTestSuite):
|
||||
self.assertEqual(abs(flt(reserved_qty)), 0)
|
||||
|
||||
# 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)
|
||||
po.load_from_db()
|
||||
so.reload()
|
||||
self.assertEqual(po.status, "To Bill")
|
||||
self.assertEqual(so.status, "To Bill")
|
||||
|
||||
# test after closing so
|
||||
so.db_set("status", "Closed")
|
||||
|
||||
Reference in New Issue
Block a user