fix: pymysql.err.ProgrammingError

This commit is contained in:
s-aga-r 2023-01-26 18:10:05 +05:30
parent 7b3d496ce0
commit 5138ef0160

View File

@ -335,47 +335,48 @@ class PickList(Document):
def get_picked_items_details(self, items): def get_picked_items_details(self, items):
picked_items = frappe._dict() picked_items = frappe._dict()
pi = frappe.qb.DocType("Pick List") if items:
pi_item = frappe.qb.DocType("Pick List Item") pi = frappe.qb.DocType("Pick List")
query = ( pi_item = frappe.qb.DocType("Pick List Item")
frappe.qb.from_(pi) query = (
.inner_join(pi_item) frappe.qb.from_(pi)
.on(pi.name == pi_item.parent) .inner_join(pi_item)
.select( .on(pi.name == pi_item.parent)
pi_item.item_code, .select(
pi_item.warehouse, pi_item.item_code,
pi_item.batch_no, pi_item.warehouse,
Sum(pi_item.picked_qty).as_("picked_qty"), pi_item.batch_no,
Replace(GROUP_CONCAT(pi_item.serial_no), ",", "\n").as_("serial_no"), Sum(pi_item.picked_qty).as_("picked_qty"),
Replace(GROUP_CONCAT(pi_item.serial_no), ",", "\n").as_("serial_no"),
)
.where(
(pi_item.item_code.isin([x.item_code for x in items]))
& (pi_item.docstatus != 2)
& (pi_item.picked_qty > 0)
& (pi.status != "Completed")
)
.groupby(
pi_item.item_code,
pi_item.warehouse,
pi_item.batch_no,
)
) )
.where(
(pi_item.item_code.isin([x.item_code for x in items]))
& (pi_item.docstatus != 2)
& (pi_item.picked_qty > 0)
& (pi.status != "Completed")
)
.groupby(
pi_item.item_code,
pi_item.warehouse,
pi_item.batch_no,
)
)
if self.name: if self.name:
query = query.where(pi_item.parent != self.name) query = query.where(pi_item.parent != self.name)
items_data = query.run(as_dict=True) items_data = query.run(as_dict=True)
for item_data in items_data: for item_data in items_data:
key = (item_data.warehouse, item_data.batch_no) if item_data.batch_no else item_data.warehouse key = (item_data.warehouse, item_data.batch_no) if item_data.batch_no else item_data.warehouse
serial_no = [x for x in item_data.serial_no.split("\n") if x] if item_data.serial_no else None serial_no = [x for x in item_data.serial_no.split("\n") if x] if item_data.serial_no else None
data = {"picked_qty": item_data.picked_qty} data = {"picked_qty": item_data.picked_qty}
if serial_no: if serial_no:
data["serial_no"] = serial_no data["serial_no"] = serial_no
if item_data.item_code not in picked_items: if item_data.item_code not in picked_items:
picked_items[item_data.item_code] = {key: data} picked_items[item_data.item_code] = {key: data}
else: else:
picked_items[item_data.item_code][key] = data picked_items[item_data.item_code][key] = data
return picked_items return picked_items