mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-26 16:34:46 +00:00
Merge branch 'master' of github.com:webnotes/erpnext
This commit is contained in:
@@ -73,6 +73,9 @@ class DocType(SellingController):
|
||||
self.update_current_stock()
|
||||
self.validate_with_previous_doc()
|
||||
|
||||
from stock.doctype.packed_item.packed_item import make_packing_list
|
||||
self.doclist = make_packing_list(self, 'delivery_note_details')
|
||||
|
||||
self.doc.status = 'Draft'
|
||||
if not self.doc.installation_status: self.doc.installation_status = 'Not Installed'
|
||||
|
||||
@@ -142,10 +145,6 @@ class DocType(SellingController):
|
||||
bin = webnotes.conn.sql("select actual_qty, projected_qty from `tabBin` where item_code = %s and warehouse = %s", (d.item_code, d.warehouse), as_dict = 1)
|
||||
d.actual_qty = bin and flt(bin[0]['actual_qty']) or 0
|
||||
d.projected_qty = bin and flt(bin[0]['projected_qty']) or 0
|
||||
|
||||
def on_update(self):
|
||||
from stock.doctype.packed_item.packed_item import make_packing_list
|
||||
self.doclist = make_packing_list(self, 'delivery_note_details')
|
||||
|
||||
def on_submit(self):
|
||||
self.validate_packed_qty()
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
{
|
||||
"creation": "2013-05-24 19:29:09",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-12-09 16:24:08",
|
||||
"modified": "2013-12-14 17:26:12",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
@@ -1058,7 +1058,7 @@
|
||||
},
|
||||
{
|
||||
"doctype": "DocPerm",
|
||||
"match": "customer_name",
|
||||
"match": "customer",
|
||||
"role": "Customer"
|
||||
}
|
||||
]
|
||||
@@ -56,9 +56,6 @@ def update_packing_list_item(obj, packing_item_code, qty, warehouse, line, packi
|
||||
pi.batch_no = cstr(line.batch_no)
|
||||
pi.idx = packing_list_idx
|
||||
|
||||
# saved, since this function is called on_update of delivery note
|
||||
pi.save()
|
||||
|
||||
packing_list_idx += 1
|
||||
|
||||
|
||||
@@ -87,19 +84,13 @@ def cleanup_packing_list(obj, parent_items):
|
||||
for d in obj.doclist.get({"parentfield": "packing_details"}):
|
||||
if [d.parent_item, d.parent_detail_docname] not in parent_items:
|
||||
# mark for deletion from doclist
|
||||
delete_list.append(d.name)
|
||||
delete_list.append([d.parent_item, d.parent_detail_docname])
|
||||
|
||||
if not delete_list:
|
||||
return obj.doclist
|
||||
|
||||
# delete from doclist
|
||||
obj.doclist = webnotes.doclist(filter(lambda d: d.name not in delete_list, obj.doclist))
|
||||
|
||||
# delete from db
|
||||
webnotes.conn.sql("""\
|
||||
delete from `tabPacked Item`
|
||||
where name in (%s)"""
|
||||
% (", ".join(["%s"] * len(delete_list))),
|
||||
tuple(delete_list))
|
||||
obj.doclist = webnotes.doclist(filter(lambda d: [d.parent_item, d.parent_detail_docname]
|
||||
not in delete_list, obj.doclist))
|
||||
|
||||
return obj.doclist
|
||||
@@ -150,7 +150,7 @@ class DocType(StockController):
|
||||
where serial_no like %s and item_code=%s and ifnull(is_cancelled, 'No')='No'
|
||||
order by posting_date desc, posting_time desc, name desc""",
|
||||
("%%%s%%" % self.doc.name, self.doc.item_code), as_dict=1):
|
||||
if self.doc.name in get_serial_nos(sle.serial_no):
|
||||
if self.doc.name.upper() in get_serial_nos(sle.serial_no):
|
||||
if sle.actual_qty > 0:
|
||||
sle_dict.setdefault("incoming", []).append(sle)
|
||||
else:
|
||||
@@ -268,7 +268,8 @@ def get_item_details(item_code):
|
||||
from tabItem where name=%s""", item_code, as_dict=True)[0]
|
||||
|
||||
def get_serial_nos(serial_no):
|
||||
return [s.strip() for s in cstr(serial_no).strip().replace(',', '\n').split('\n') if s.strip()]
|
||||
return [s.strip() for s in cstr(serial_no).strip().upper().replace(',', '\n').split('\n')
|
||||
if s.strip()]
|
||||
|
||||
def make_serial_no(serial_no, sle):
|
||||
sr = webnotes.new_bean("Serial No")
|
||||
|
||||
Reference in New Issue
Block a user