Added API calls for the Job Dials and a column for the Invoice Status in the datatable.
This commit is contained in:
parent
37bd0f60a3
commit
00f6d69482
1 changed files with 63 additions and 3 deletions
|
|
@ -7,6 +7,64 @@ from frappe.utils import getdate
|
|||
# JOB MANAGEMENT API METHODS
|
||||
# ===============================================================================
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_jobs_in_queue_count(company):
|
||||
try:
|
||||
filters = {
|
||||
'company': company,
|
||||
'is_scheduled': True,
|
||||
}
|
||||
count = frappe.db.count("Project", filters=filters)
|
||||
return build_success_response([count])
|
||||
except Exception as e:
|
||||
return build_error_response(str(e), 500)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_jobs_in_progress_count(company):
|
||||
try:
|
||||
today = getdate()
|
||||
filters = {
|
||||
'company': company,
|
||||
'invoice_status': 'Not Ready',
|
||||
'expected_start_date': ['<=', today],
|
||||
'expected_end_date': ['>=', today],
|
||||
}
|
||||
count = frappe.db.count("Project", filters=filters)
|
||||
return build_success_response([count])
|
||||
except Exception as e:
|
||||
return build_error_response(str(e), 500)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_jobs_late_count(company):
|
||||
try:
|
||||
today = getdate()
|
||||
filters = {
|
||||
'company': company,
|
||||
'invoice_status': 'Not Ready',
|
||||
'expected_end_date': ['<', today]
|
||||
}
|
||||
count = frappe.db.count("Project", filters=filters)
|
||||
return build_success_response([count])
|
||||
except Exception as e:
|
||||
return build_error_response(str(e), 500)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_jobs_to_invoice_count(company):
|
||||
try:
|
||||
filters = {
|
||||
'company': company,
|
||||
'invoice_status': 'Ready to Invoice',
|
||||
}
|
||||
count = frappe.db.count("Project", filters=filters)
|
||||
return build_success_response([count])
|
||||
except Exception as e:
|
||||
return build_error_response(str(e), 500)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_job_templates(company=None):
|
||||
"""Get list of job (project) templates."""
|
||||
|
|
@ -19,6 +77,7 @@ def get_job_templates(company=None):
|
|||
except Exception as e:
|
||||
return build_error_response(str(e), 500)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def create_job_from_sales_order(sales_order_name):
|
||||
"""Create a Job (Project) from a given Sales Order"""
|
||||
|
|
@ -152,9 +211,10 @@ def get_jobs_table_data(filters={}, sortings=[], page=1, page_size=10):
|
|||
tableRow = {}
|
||||
tableRow["id"] = project["name"]
|
||||
tableRow["name"] = project["name"]
|
||||
tableRow["installation_address"] = project.get("custom_installation_address", "")
|
||||
tableRow["job_address"] = project["job_address"]
|
||||
tableRow["customer"] = project.get("customer", "")
|
||||
tableRow["status"] = project.get("status", "")
|
||||
tableRow["invoice_status"] = project.get("invoice_status")
|
||||
tableRow["percent_complete"] = project.get("percent_complete", 0)
|
||||
tableRows.append(tableRow)
|
||||
|
||||
|
|
@ -203,7 +263,7 @@ def get_projects_for_calendar(start_date, end_date, company=None, project_templa
|
|||
filters["project_template"] = ["in", project_templates]
|
||||
unscheduled_filters = filters.copy()
|
||||
unscheduled_filters["is_scheduled"] = 0
|
||||
|
||||
|
||||
# add to filter for if expected_start_date is between start_date and end_date OR expected_end_date is between start_date and end_date
|
||||
filters["expected_start_date"] = ["<=", getdate(end_date)]
|
||||
filters["expected_end_date"] = [">=", getdate(start_date)]
|
||||
|
|
@ -239,4 +299,4 @@ def update_job_scheduled_dates(job_name: str, new_start_date: str = None, new_en
|
|||
project.save()
|
||||
return build_success_response(project.as_dict())
|
||||
except Exception as e:
|
||||
return build_error_response(str(e), 500)
|
||||
return build_error_response(str(e), 500)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue