예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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