def execute(filters=None): priority_map = {"High": 3, "Medium": 2, "Low": 1} todo_list = runreport(doctype="ToDo", fields=[ "name", "date", "description", "priority", "reference_type", "reference_name", "assigned_by", "owner" ], filters=[["ToDo", "checked", "!=", 1]]) todo_list.sort(key=lambda todo: (priority_map.get(todo.priority, 0), todo.date and getdate( todo.date) or getdate("1900-01-01")), reverse=True) columns = [ "ID:Link/ToDo:90", "Priority::60", "Date:Date", "Description::150", "Assigned To/Owner:Link/Profile:120", "Assigned By:Link/Profile:120", "Reference::200" ] result = [] for todo in todo_list: if todo.reference_type: todo.reference = """<a href="#Form/%s/%s">%s: %s</a>""" % \ (todo.reference_type, todo.reference_name, todo.reference_type, todo.reference_name) else: todo.reference = None result.append([ todo.name, todo.priority, todo.date, todo.description, todo.owner, todo.assigned_by, todo.reference ]) return columns, result
def execute(filters=None): priority_map = {"High": 3, "Medium": 2, "Low": 1} todo_list = runreport(doctype="ToDo", fields=["name", "date", "description", "priority", "reference_type", "reference_name", "assigned_by", "owner"], filters=[["ToDo", "checked", "!=", 1]]) todo_list.sort(key=lambda todo: (priority_map.get(todo.priority, 0), todo.date and getdate(todo.date) or getdate("1900-01-01")), reverse=True) columns = [_("ID")+":Link/ToDo:90", _("Priority")+"::60", _("Date")+ ":Date", _("Description")+"::150", _("Assigned To/Owner") + ":Link/Profile:120", _("Assigned By")+":Link/Profile:120", _("Reference")+"::200"] result = [] for todo in todo_list: if todo.reference_type: todo.reference = """<a href="#Form/%s/%s">%s: %s</a>""" % \ (todo.reference_type, todo.reference_name, todo.reference_type, todo.reference_name) else: todo.reference = None result.append([todo.name, todo.priority, todo.date, todo.description, todo.owner, todo.assigned_by, todo.reference]) return columns, result
def execute(filters=None): if not filters: filters = {} employee_filters = filters.get("company") and [["Employee", "company", "=", filters.get("company")]] or None employees = runreport(doctype="Employee", fields=["name", "employee_name", "department"], filters=employee_filters) leave_types = webnotes.conn.sql_list("select name from `tabLeave Type`") if filters.get("fiscal_year"): fiscal_years = [filters["fiscal_year"]] else: fiscal_years = webnotes.conn.sql_list("select name from `tabFiscal Year` order by name desc") employee_in = '", "'.join([e.name for e in employees]) allocations = webnotes.conn.sql( """select employee, fiscal_year, leave_type, total_leaves_allocated from `tabLeave Allocation` where docstatus=1 and employee in ("%s")""" % employee_in, as_dict=True, ) applications = webnotes.conn.sql( """select employee, fiscal_year, leave_type, SUM(total_leave_days) as leaves from `tabLeave Application` where status="Approved" and docstatus = 1 and employee in ("%s") group by employee, fiscal_year, leave_type""" % employee_in, as_dict=True, ) columns = ["Fiscal Year", "Employee:Link/Employee:150", "Employee Name::200", "Department::150"] for leave_type in leave_types: columns.append(leave_type + " Allocated:Float") columns.append(leave_type + " Taken:Float") columns.append(leave_type + " Balance:Float") data = {} for d in allocations: data.setdefault( (d.fiscal_year, d.employee, d.leave_type), webnotes._dict() ).allocation = d.total_leaves_allocated for d in applications: data.setdefault((d.fiscal_year, d.employee, d.leave_type), webnotes._dict()).leaves = d.leaves result = [] for fiscal_year in fiscal_years: for employee in employees: row = [fiscal_year, employee.name, employee.employee_name, employee.department] result.append(row) for leave_type in leave_types: tmp = data.get((fiscal_year, employee.name, leave_type), webnotes._dict()) row.append(tmp.allocation or 0) row.append(tmp.leaves or 0) row.append((tmp.allocation or 0) - (tmp.leaves or 0)) return columns, result
def execute(filters=None): if not filters: filters = {} employee_filters = filters.get("company") and \ [["Employee", "company", "=", filters.get("company")]] or None employees = runreport(doctype="Employee", fields=["name", "employee_name", "department"], filters=employee_filters) leave_types = webnotes.conn.sql_list("select name from `tabLeave Type`") if filters.get("fiscal_year"): fiscal_years = [filters["fiscal_year"]] else: fiscal_years = webnotes.conn.sql_list("select name from `tabFiscal Year` order by name desc") employee_in = '", "'.join([e.name for e in employees]) allocations = webnotes.conn.sql("""select employee, fiscal_year, leave_type, total_leaves_allocated from `tabLeave Allocation` where docstatus=1 and employee in ("%s")""" % employee_in, as_dict=True) applications = webnotes.conn.sql("""select employee, fiscal_year, leave_type, SUM(total_leave_days) as leaves from `tabLeave Application` where status="Approved" and docstatus = 1 and employee in ("%s") group by employee, fiscal_year, leave_type""" % employee_in, as_dict=True) columns = [ "Fiscal Year", "Employee:Link/Employee:150", "Employee Name::200", "Department::150" ] for leave_type in leave_types: columns.append(leave_type + " Allocated:Float") columns.append(leave_type + " Taken:Float") columns.append(leave_type + " Balance:Float") data = {} for d in allocations: data.setdefault((d.fiscal_year, d.employee, d.leave_type), webnotes._dict()).allocation = d.total_leaves_allocated for d in applications: data.setdefault((d.fiscal_year, d.employee, d.leave_type), webnotes._dict()).leaves = d.leaves result = [] for fiscal_year in fiscal_years: for employee in employees: row = [fiscal_year, employee.name, employee.employee_name, employee.department] result.append(row) for leave_type in leave_types: tmp = data.get((fiscal_year, employee.name, leave_type), webnotes._dict()) row.append(tmp.allocation or 0) row.append(tmp.leaves or 0) row.append((tmp.allocation or 0) - (tmp.leaves or 0)) return columns, result
def execute(filters=None): priority_map = {"High": 3, "Medium": 2, "Low": 1} todo_list = runreport( doctype="ToDo", fields=["name", "date", "description", "priority", "reference_type", "reference_name", "assigned_by", "owner"], filters=[["ToDo", "checked", "!=", 1]], ) todo_list.sort( key=lambda todo: ( priority_map.get(todo.priority, 0), todo.date and getdate(todo.date) or getdate("1900-01-01"), ), reverse=True, ) columns = [ "ID:Link/ToDo:90", "Priority::60", "Date:Date", "Description::150", "Assigned To/Owner:Data:120", "Assigned By:Data:120", "Reference::200", ] result = [] for todo in todo_list: if todo.owner == webnotes.session.user or todo.assigned_by == webnotes.session.user: if todo.reference_type: todo.reference = """<a href="#Form/%s/%s">%s: %s</a>""" % ( todo.reference_type, todo.reference_name, todo.reference_type, todo.reference_name, ) else: todo.reference = None result.append( [todo.name, todo.priority, todo.date, todo.description, todo.owner, todo.assigned_by, todo.reference] ) return columns, result