[fixes] patch to update delivery status for drop ship item
This commit is contained in:
parent
01ca354d52
commit
70ed6ede5c
@ -159,7 +159,6 @@ class PurchaseOrder(BuyingController):
|
||||
def on_cancel(self):
|
||||
if self.has_drop_ship_item():
|
||||
self.update_status_updater()
|
||||
self.reset_received_qty_for_drop_ship_items()
|
||||
self.update_delivered_qty_in_sales_order()
|
||||
|
||||
pc_obj = frappe.get_doc('Purchase Common')
|
||||
@ -218,7 +217,7 @@ class PurchaseOrder(BuyingController):
|
||||
|
||||
for so_name in sales_orders_to_update:
|
||||
so = frappe.get_doc("Sales Order", so_name)
|
||||
so.update_delivery_status(self.name)
|
||||
so.update_delivery_status()
|
||||
so.set_status(update=True)
|
||||
so.notify_update()
|
||||
|
||||
@ -235,12 +234,7 @@ class PurchaseOrder(BuyingController):
|
||||
for item in self.items:
|
||||
if item.delivered_by_supplier == 1:
|
||||
item.received_qty = item.qty
|
||||
|
||||
def reset_received_qty_for_drop_ship_items(self):
|
||||
for item in self.items:
|
||||
if item.delivered_by_supplier == 1:
|
||||
frappe.db.set_value("Purchase Order Item", item.name, "received_qty", 0.0)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def stop_or_unstop_purchase_orders(names, status):
|
||||
if not frappe.has_permission("Purchase Order", "write"):
|
||||
|
@ -76,10 +76,10 @@ class StatusUpdater(Document):
|
||||
self.update_qty()
|
||||
self.validate_qty()
|
||||
|
||||
def set_status(self, update=False, status=None):
|
||||
def set_status(self, update=False, status=None, update_modified=True):
|
||||
if self.is_new():
|
||||
return
|
||||
|
||||
|
||||
if self.doctype in status_map:
|
||||
_status = self.status
|
||||
|
||||
@ -102,9 +102,10 @@ class StatusUpdater(Document):
|
||||
|
||||
if self.status != _status and self.status not in ("Submitted", "Cancelled"):
|
||||
self.add_comment("Label", _(self.status))
|
||||
|
||||
|
||||
if update:
|
||||
frappe.db.set_value(self.doctype, self.name, "status", self.status)
|
||||
frappe.db.set_value(self.doctype, self.name, "status", self.status,
|
||||
update_modified=update_modified)
|
||||
|
||||
def validate_qty(self):
|
||||
"""Validates qty at row level"""
|
||||
|
@ -237,4 +237,5 @@ erpnext.patches.v6_8.move_drop_ship_to_po_items
|
||||
erpnext.patches.v6_10.fix_ordered_received_billed
|
||||
erpnext.patches.v6_10.fix_jv_total_amount #2015-11-30
|
||||
erpnext.patches.v6_10.email_digest_default_quote
|
||||
erpnext.patches.v6_10.fix_billed_amount_in_drop_ship_po
|
||||
erpnext.patches.v6_10.fix_billed_amount_in_drop_ship_po
|
||||
erpnext.patches.v6_10.fix_delivery_status_of_drop_ship_item
|
@ -0,0 +1,17 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
sales_orders_to_update = []
|
||||
|
||||
for item in frappe.get_all("Purchase Order Item", filters={"delivered_by_supplier": 1},
|
||||
fields=["prevdoc_doctype", "prevdoc_docname"]):
|
||||
|
||||
if item.prevdoc_doctype == "Sales Order":
|
||||
if item.prevdoc_docname not in sales_orders_to_update:
|
||||
sales_orders_to_update.append(item.prevdoc_docname)
|
||||
|
||||
for so_name in sales_orders_to_update:
|
||||
so = frappe.get_doc("Sales Order", so_name)
|
||||
so.update_delivery_status()
|
||||
so.set_status(update=True, update_modified=False)
|
@ -265,27 +265,29 @@ class SalesOrder(SellingController):
|
||||
if exc_list:
|
||||
frappe.throw('\n'.join(exc_list))
|
||||
|
||||
def update_delivery_status(self, po_name):
|
||||
def update_delivery_status(self):
|
||||
"""Update delivery status from Purchase Order for drop shipping"""
|
||||
tot_qty, delivered_qty = 0.0, 0.0
|
||||
|
||||
for item in self.items:
|
||||
if item.delivered_by_supplier:
|
||||
item_delivered_qty = frappe.db.sql("""select received_qty
|
||||
item_delivered_qty = frappe.db.sql("""select sum(qty)
|
||||
from `tabPurchase Order Item` poi, `tabPurchase Order` po
|
||||
where poi.prevdoc_detail_docname = %s
|
||||
and poi.prevdoc_doctype = 'Sales Order'
|
||||
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.db_set("delivered_qty", item_delivered_qty)
|
||||
item.db_set("delivered_qty", flt(item_delivered_qty), update_modified=False)
|
||||
|
||||
delivered_qty += item.delivered_qty
|
||||
tot_qty += item.qty
|
||||
|
||||
frappe.db.set_value("Sales Order", self.name, "per_delivered", flt(delivered_qty/tot_qty) * 100)
|
||||
|
||||
frappe.db.set_value("Sales Order", self.name, "per_delivered", flt(delivered_qty/tot_qty) * 100,
|
||||
update_modified=False)
|
||||
|
||||
def get_list_context(context=None):
|
||||
from erpnext.controllers.website_list_for_contact import get_list_context
|
||||
|
Loading…
x
Reference in New Issue
Block a user