repost stock due to incorrect packing list

This commit is contained in:
Nabin Hait 2012-07-18 18:12:34 +05:30
parent 18b9eccdfa
commit ddb9f948ee

View File

@ -0,0 +1,75 @@
def repost_reserved_qty():
import webnotes
bins = webnotes.conn.sql("select item_code, warehouse, name, reserved_qty from `tabBin`")
for d in bins:
reserved_qty = webnotes.conn.sql("""
select sum((dnpi.qty/so_item.qty)*(so_item.qty - ifnull(so_item.delivered_qty, 0)))
from `tabDelivery Note Packing Item` dnpi, `tabSales Order Item` so_item, `tabSales Order` so
where dnpi.parent = so.name
and so_item.parent = so.name
and dnpi.parenttype = 'Sales Order'
and dnpi.parent_detail_docname = so_item.name
and dnpi.parent_item = so_item.item_code
and so.docstatus = 1
and so.status != 'Stopped'
and dnpi.item_code = %s
and dnpi.warehouse = %s
""", (d[0], d[1]))
if flt(d[3]) != reserved_qty:
print d, reserved_qty
# webnotes.conn.sql("""
# update `tabBin` set reserved_qty = %s where name = %s
# """, (reserved_qty and reserved_qty[0][0] or 0, d[2]))
def cleanup_wrong_sle():
sle = webnotes.conn.sql("""
select item_code, warehouse, voucher_no, name
from `tabStock Ledger Entry` sle
where voucher_type = 'Delivery Note'
and not exists(
select name from `tabDelivery Note Packing Item`
where item_code = sle.item_code
and qty = abs(sle.actual_qty)
and parent = sle.voucher_no
) and not exists (
select name from `tabDelivery Note Item`
where item_code = sle.item_code
and qty = abs(sle.actual_qty)
and parent = sle.voucher_no
)
""")
if sle:
print sle
# for d in sle:
# webnotes.conn.sql("update `tabStock Ledger Entry` set is_cancelled = 'Yes' where name = %s", d[3])
# create_comment(d[3])
# repost_bin(d[0], d[1])
def create_comment(dn):
from webnotes.model.doc import Document
cmt = Document('Comment')
for arg in ['comment', 'comment_by', 'comment_by_fullname', 'comment_doctype', \
'comment_docname']:
cmt.fields[arg] = args[arg]
cmt.comment = 'Cancelled by administrator due to wrong entry in packing list'
cmt.comment_by = 'Administrator'
cmt.comment_by_fullname = 'Administrator'
cmt.comment_doctype = 'Stock Ledger Entry'
cmt.comment_docname = dn
cmt.save(1)
def repost_bin(item, wh):
from webnotes.model.code import get_obj
bin = webnotes.conn.sql("select name from `tabBin` \
where item_code = %s and warehouse = %s", (item, wh))
get_obj('Bin', bin[0][0]).update_entries_after(posting_date = '2012-07-01', posting_time = '12:05')
def execute():
repost_reserved_qty()
cleanup_wrong_sle()