bin fixes for reposting future entries
This commit is contained in:
parent
d77cb27bd2
commit
76228f1c79
@ -32,12 +32,12 @@ class DocType:
|
|||||||
self.doc.save()
|
self.doc.save()
|
||||||
|
|
||||||
|
|
||||||
# update valuation for post dated entry
|
|
||||||
if actual_qty:
|
if actual_qty:
|
||||||
# check actual qty with total number of serial no
|
# check actual qty with total number of serial no
|
||||||
if serial_no:
|
if serial_no:
|
||||||
self.check_qty_with_serial_no()
|
self.check_qty_with_serial_no()
|
||||||
|
|
||||||
|
# update valuation and qty after transaction for post dated entry
|
||||||
self.update_entries_after(dt, posting_time)
|
self.update_entries_after(dt, posting_time)
|
||||||
|
|
||||||
def check_qty_with_serial_no(self):
|
def check_qty_with_serial_no(self):
|
||||||
@ -46,11 +46,19 @@ class DocType:
|
|||||||
Temporary validation added on: 18-07-2011
|
Temporary validation added on: 18-07-2011
|
||||||
"""
|
"""
|
||||||
if sql("select name from `tabItem` where ifnull(has_serial_no, 'No') = 'Yes' and name = '%s'" % self.doc.item_code):
|
if sql("select name from `tabItem` where ifnull(has_serial_no, 'No') = 'Yes' and name = '%s'" % self.doc.item_code):
|
||||||
sr_count = sql("select count(name) from `tabSerial No` where item_code = '%s' and warehouse = '%s' and status ='In Store' and docstatus != 2" % (self.doc.item_code, self.doc.warehouse))[0][0]
|
sr_count = sql("""select count(name) from `tabSerial No`
|
||||||
|
where item_code = '%s' and warehouse = '%s'
|
||||||
|
and status ='In Store' and docstatus != 2
|
||||||
|
""" % (self.doc.item_code, self.doc.warehouse))[0][0]
|
||||||
|
|
||||||
if sr_count != self.doc.actual_qty:
|
if sr_count != self.doc.actual_qty:
|
||||||
msg = "Actual Qty(%s) in Bin is mismatched with total number(%s) of serial no in store for item: '%s' and warehouse: '%s'" % (self.doc.actual_qty, sr_count, self.doc.item_code, self.doc.warehouse)
|
msg = """Actual Qty(%s) in Bin is mismatched with total number(%s) of serial no in store
|
||||||
|
for item: '%s' and warehouse: '%s'""" % \
|
||||||
|
(self.doc.actual_qty, sr_count, self.doc.item_code, self.doc.warehouse)
|
||||||
|
|
||||||
if getattr(webnotes.defs,'admin_email_notification',1):
|
if getattr(webnotes.defs,'admin_email_notification',1):
|
||||||
sendmail(['developers@iwebnotes.com'], sender='automail@webnotestech.com', subject='Serial No Count vs Bin Actual Qty', parts=[['text/plain', msg]])
|
sendmail(['developers@iwebnotes.com'], sender='automail@webnotestech.com', \
|
||||||
|
subject='Serial No Count vs Bin Actual Qty', parts=[['text/plain', msg]])
|
||||||
msgprint(msg, raise_exception=1)
|
msgprint(msg, raise_exception=1)
|
||||||
|
|
||||||
# --------------------------------
|
# --------------------------------
|
||||||
@ -91,17 +99,21 @@ class DocType:
|
|||||||
|
|
||||||
|
|
||||||
# --------------------------------------------------------------------------------------------------------------------------------------
|
# --------------------------------------------------------------------------------------------------------------------------------------
|
||||||
# validate negative stock (validate if stock is going -ve in between for back dated entries will consider only is_cancel = 'No' entries)
|
#
|
||||||
# --------------------------------------------------------------------------------------------------------------------------------------
|
# --------------------------------------------------------------------------------------------------------------------------------------
|
||||||
def validate_negative_stock(self, cqty, s):
|
def validate_negative_stock(self, cqty, s):
|
||||||
|
"""
|
||||||
|
validate negative stock for entries current datetime onwards
|
||||||
|
will not consider cancelled entries
|
||||||
|
"""
|
||||||
diff = cqty + s['actual_qty']
|
diff = cqty + s['actual_qty']
|
||||||
if diff < 0 and (abs(diff) > 0.0001) and s['is_cancelled'] != 'Yes':
|
if diff < 0 and (abs(diff) > 0.0001) and s['is_cancelled'] == 'No':
|
||||||
msgprint("""
|
msgprint("""
|
||||||
Negative stock error:
|
Negative stock error:
|
||||||
Cannot complete this transaction because stock will
|
Cannot complete this transaction because stock will
|
||||||
become negative (%s) for Item <b>%s</b> in Warehouse
|
become negative (%s) for Item <b>%s</b> in Warehouse
|
||||||
<b>%s</b> on <b>%s %s</b> in Transaction %s %s""" % \
|
<b>%s</b> on <b>%s %s</b> in Transaction %s %s""" % \
|
||||||
(str(diff), self.doc.item_code, self.doc.warehouse,
|
(str(diff), self.doc.item_code, self.doc.warehouse, \
|
||||||
s['posting_date'], s['posting_time'], s['voucher_type'], s['voucher_no']), \
|
s['posting_date'], s['posting_time'], s['voucher_type'], s['voucher_no']), \
|
||||||
raise_exception=1)
|
raise_exception=1)
|
||||||
|
|
||||||
@ -201,8 +213,10 @@ class DocType:
|
|||||||
return stock_val
|
return stock_val
|
||||||
|
|
||||||
def update_entries_after(self, posting_date, posting_time):
|
def update_entries_after(self, posting_date, posting_time):
|
||||||
"""update item valution from the give stock ledger entry (sle)
|
"""
|
||||||
onwards."""
|
update valution rate and qty after transaction
|
||||||
|
from the current time-bucket onwards
|
||||||
|
"""
|
||||||
|
|
||||||
# Get prev sle
|
# Get prev sle
|
||||||
prev_sle = self.get_prev_sle(posting_date, posting_time)
|
prev_sle = self.get_prev_sle(posting_date, posting_time)
|
||||||
@ -244,7 +258,7 @@ class DocType:
|
|||||||
|
|
||||||
# Get valuation rate
|
# Get valuation rate
|
||||||
val_rate, stock_val = self.get_valuation_rate(val_method, serial_nos, \
|
val_rate, stock_val = self.get_valuation_rate(val_method, serial_nos, \
|
||||||
val_rate, in_rate, stock_val, cqty, s)
|
val_rate, in_rate, stock_val, cqty, sle)
|
||||||
|
|
||||||
# Qty upto the sle
|
# Qty upto the sle
|
||||||
cqty += sle['actual_qty']
|
cqty += sle['actual_qty']
|
||||||
|
|||||||
@ -68,7 +68,7 @@ class DocType:
|
|||||||
bl = sql("select name from tabBin where warehouse=%s", self.doc.name)
|
bl = sql("select name from tabBin where warehouse=%s", self.doc.name)
|
||||||
for b in bl:
|
for b in bl:
|
||||||
bobj = get_obj('Bin',b[0])
|
bobj = get_obj('Bin',b[0])
|
||||||
bobj.update_entries_after(posting_date = '2000-01-01', posting_time = '12:00')
|
bobj.update_entries_after(posting_date = '0000-00-00', posting_time = '00:00')
|
||||||
|
|
||||||
sql("COMMIT")
|
sql("COMMIT")
|
||||||
sql("START TRANSACTION")
|
sql("START TRANSACTION")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user