fix: Procurement tracker report (#21421)
* fix: procurement report data was not coming
* fix: leave allocation minor issue
diff --git a/erpnext/buying/report/procurement_tracker/procurement_tracker.py b/erpnext/buying/report/procurement_tracker/procurement_tracker.py
index 866bf0c..3966879 100644
--- a/erpnext/buying/report/procurement_tracker/procurement_tracker.py
+++ b/erpnext/buying/report/procurement_tracker/procurement_tracker.py
@@ -141,19 +141,18 @@
conditions = ""
if filters.get("company"):
- conditions += " AND company=%s"% frappe.db.escape(filters.get('company'))
+ conditions += " AND par.company=%s" % frappe.db.escape(filters.get('company'))
if filters.get("cost_center") or filters.get("project"):
conditions += """
- AND (cost_center=%s
- OR project=%s)
- """% (frappe.db.escape(filters.get('cost_center')), frappe.db.escape(filters.get('project')))
+ AND (child.`cost_center`=%s OR child.`project`=%s)
+ """ % (frappe.db.escape(filters.get('cost_center')), frappe.db.escape(filters.get('project')))
if filters.get("from_date"):
- conditions += " AND transaction_date>=%s"% filters.get('from_date')
+ conditions += " AND par.transaction_date>='%s'" % filters.get('from_date')
if filters.get("to_date"):
- conditions += " AND transaction_date<=%s"% filters.get('to_date')
+ conditions += " AND par.transaction_date<='%s'" % filters.get('to_date')
return conditions
def get_data(filters):
@@ -162,7 +161,6 @@
mr_records, procurement_record_against_mr = get_mapped_mr_details(conditions)
pr_records = get_mapped_pr_records()
pi_records = get_mapped_pi_records()
- print(pi_records)
procurement_record=[]
if procurement_record_against_mr:
@@ -198,16 +196,16 @@
mr_records = {}
mr_details = frappe.db.sql("""
SELECT
- mr.transaction_date,
- mr.per_ordered,
- mr_item.name,
- mr_item.parent,
- mr_item.amount
- FROM `tabMaterial Request` mr, `tabMaterial Request Item` mr_item
+ par.transaction_date,
+ par.per_ordered,
+ child.name,
+ child.parent,
+ child.amount
+ FROM `tabMaterial Request` par, `tabMaterial Request Item` child
WHERE
- mr.per_ordered>=0
- AND mr.name=mr_item.parent
- AND mr.docstatus=1
+ par.per_ordered>=0
+ AND par.name=child.parent
+ AND par.docstatus=1
{conditions}
""".format(conditions=conditions), as_dict=1) #nosec
@@ -254,29 +252,29 @@
def get_po_entries(conditions):
return frappe.db.sql("""
SELECT
- po_item.name,
- po_item.parent,
- po_item.cost_center,
- po_item.project,
- po_item.warehouse,
- po_item.material_request,
- po_item.material_request_item,
- po_item.description,
- po_item.stock_uom,
- po_item.qty,
- po_item.amount,
- po_item.base_amount,
- po_item.schedule_date,
- po.transaction_date,
- po.supplier,
- po.status,
- po.owner
- FROM `tabPurchase Order` po, `tabPurchase Order Item` po_item
+ child.name,
+ child.parent,
+ child.cost_center,
+ child.project,
+ child.warehouse,
+ child.material_request,
+ child.material_request_item,
+ child.description,
+ child.stock_uom,
+ child.qty,
+ child.amount,
+ child.base_amount,
+ child.schedule_date,
+ par.transaction_date,
+ par.supplier,
+ par.status,
+ par.owner
+ FROM `tabPurchase Order` par, `tabPurchase Order Item` child
WHERE
- po.docstatus = 1
- AND po.name = po_item.parent
- AND po.status not in ("Closed","Completed","Cancelled")
+ par.docstatus = 1
+ AND par.name = child.parent
+ AND par.status not in ("Closed","Completed","Cancelled")
{conditions}
GROUP BY
- po.name,po_item.item_code
+ par.name, child.item_code
""".format(conditions=conditions), as_dict=1) #nosec
\ No newline at end of file
diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.py b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
index d13bb45..03fe3fa 100755
--- a/erpnext/hr/doctype/leave_allocation/leave_allocation.py
+++ b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
@@ -30,16 +30,16 @@
def validate_leave_allocation_days(self):
company = frappe.db.get_value("Employee", self.employee, "company")
leave_period = get_leave_period(self.from_date, self.to_date, company)
- max_leaves_allowed = frappe.db.get_value("Leave Type", self.leave_type, "max_leaves_allowed")
+ max_leaves_allowed = flt(frappe.db.get_value("Leave Type", self.leave_type, "max_leaves_allowed"))
if max_leaves_allowed > 0:
leave_allocated = 0
if leave_period:
leave_allocated = get_leave_allocation_for_period(self.employee, self.leave_type,
leave_period[0].from_date, leave_period[0].to_date)
- leave_allocated += self.new_leaves_allocated
+ leave_allocated += flt(self.new_leaves_allocated)
if leave_allocated > max_leaves_allowed:
frappe.throw(_("Total allocated leaves are more days than maximum allocation of {0} leave type for employee {1} in the period")
- .format(self.leave_type, self.employee))
+ .format(self.leave_type, self.employee))
def on_submit(self):
self.create_leave_ledger_entry()