54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
import webnotes
|
|
def execute():
|
|
webnotes.conn.auto_commit_on_many_writes = 1
|
|
repost_reserved_qty()
|
|
webnotes.conn.auto_commit_on_many_writes = 0
|
|
|
|
def repost_reserved_qty():
|
|
from webnotes.utils import flt
|
|
bins = webnotes.conn.sql("select item_code, warehouse, name, reserved_qty from `tabBin`")
|
|
i = 0
|
|
for d in bins:
|
|
i += 1
|
|
reserved_qty = webnotes.conn.sql("""
|
|
select
|
|
sum((dnpi_qty / so_item_qty) * (so_item_qty - so_item_delivered_qty))
|
|
from
|
|
(
|
|
(select
|
|
qty as dnpi_qty,
|
|
(
|
|
select qty from `tabSales Order Item`
|
|
where name = dnpi.parent_detail_docname
|
|
) as so_item_qty,
|
|
(
|
|
select ifnull(delivered_qty, 0) from `tabSales Order Item`
|
|
where name = dnpi.parent_detail_docname
|
|
) as so_item_delivered_qty,
|
|
parent, name
|
|
from
|
|
(
|
|
select qty, parent_detail_docname, parent, name
|
|
from `tabDelivery Note Packing Item` dnpi_in
|
|
where item_code = %s and warehouse = %s
|
|
and parenttype="Sales Order"
|
|
and item_code != parent_item
|
|
and exists (select * from `tabSales Order` so
|
|
where name = dnpi_in.parent and docstatus = 1 and status != 'Stopped')
|
|
) dnpi)
|
|
union
|
|
(select qty as dnpi_qty, qty as so_item_qty,
|
|
ifnull(delivered_qty, 0) as so_item_delivered_qty, parent, name
|
|
from `tabSales Order Item` so_item
|
|
where item_code = %s and reserved_warehouse = %s
|
|
and exists(select * from `tabSales Order` so
|
|
where so.name = so_item.parent and so.docstatus = 1
|
|
and so.status != 'Stopped'))
|
|
) tab
|
|
where
|
|
so_item_qty >= so_item_delivered_qty
|
|
""", (d[0], d[1], d[0], d[1]))
|
|
|
|
if flt(d[3]) != flt(reserved_qty[0][0]):
|
|
webnotes.conn.sql("""update `tabBin` set reserved_qty = %s where name = %s""",
|
|
(reserved_qty and reserved_qty[0][0] or 0, d[2])) |