fix: added two more number cards
This commit is contained in:
parent
81dc4e1138
commit
2dd2608c09
@ -19,18 +19,22 @@ def get_number_card_data(from_date="", to_date="", user="", lead_conds="", deal_
|
|||||||
if is_sales_user and not user:
|
if is_sales_user and not user:
|
||||||
user = frappe.session.user
|
user = frappe.session.user
|
||||||
|
|
||||||
lead_chart_data = get_lead_count(from_date, to_date, user, lead_conds)
|
lead_count_data = get_lead_count(from_date, to_date, user, lead_conds)
|
||||||
deal_chart_data = get_deal_count(from_date, to_date, user, deal_conds)
|
ongoing_deal_count_data = get_ongoing_deal_count(from_date, to_date, user, deal_conds)[0]
|
||||||
get_won_deal_count_data = get_won_deal_count(from_date, to_date, user, deal_conds)
|
average_ongoing_deal_value_data = get_ongoing_deal_count(from_date, to_date, user, deal_conds)[1]
|
||||||
get_average_deal_value_data = get_average_deal_value(from_date, to_date, user, deal_conds)
|
won_deal_count_data = get_won_deal_count(from_date, to_date, user, deal_conds)[0]
|
||||||
get_average_time_to_close_data = get_average_time_to_close(from_date, to_date, user, deal_conds)
|
average_won_deal_value_data = get_won_deal_count(from_date, to_date, user, deal_conds)[1]
|
||||||
|
average_deal_value_data = get_average_deal_value(from_date, to_date, user, deal_conds)
|
||||||
|
average_time_to_close_data = get_average_time_to_close(from_date, to_date, user, deal_conds)
|
||||||
|
|
||||||
return [
|
return [
|
||||||
lead_chart_data,
|
lead_count_data,
|
||||||
deal_chart_data,
|
ongoing_deal_count_data,
|
||||||
get_won_deal_count_data,
|
average_ongoing_deal_value_data,
|
||||||
get_average_deal_value_data,
|
won_deal_count_data,
|
||||||
get_average_time_to_close_data,
|
average_won_deal_value_data,
|
||||||
|
average_deal_value_data,
|
||||||
|
average_time_to_close_data,
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@ -91,9 +95,9 @@ def get_lead_count(from_date, to_date, user="", conds="", return_result=False):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def get_deal_count(from_date, to_date, user="", conds="", return_result=False):
|
def get_ongoing_deal_count(from_date, to_date, user="", conds="", return_result=False):
|
||||||
"""
|
"""
|
||||||
Get ongoing deal count for the dashboard.
|
Get ongoing deal count for the dashboard, and also calculate average deal value for ongoing deals.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
diff = frappe.utils.date_diff(to_date, from_date)
|
diff = frappe.utils.date_diff(to_date, from_date)
|
||||||
@ -120,7 +124,23 @@ def get_deal_count(from_date, to_date, user="", conds="", return_result=False):
|
|||||||
{conds}
|
{conds}
|
||||||
THEN d.name
|
THEN d.name
|
||||||
ELSE NULL
|
ELSE NULL
|
||||||
END) as prev_month_deals
|
END) as prev_month_deals,
|
||||||
|
|
||||||
|
AVG(CASE
|
||||||
|
WHEN d.creation >= %(from_date)s AND d.creation < DATE_ADD(%(to_date)s, INTERVAL 1 DAY)
|
||||||
|
AND s.type NOT IN ('Won', 'Lost')
|
||||||
|
{conds}
|
||||||
|
THEN d.deal_value * IFNULL(d.exchange_rate, 1)
|
||||||
|
ELSE NULL
|
||||||
|
END) as current_month_avg_value,
|
||||||
|
|
||||||
|
AVG(CASE
|
||||||
|
WHEN d.creation >= %(prev_from_date)s AND d.creation < %(from_date)s
|
||||||
|
AND s.type NOT IN ('Won', 'Lost')
|
||||||
|
{conds}
|
||||||
|
THEN d.deal_value * IFNULL(d.exchange_rate, 1)
|
||||||
|
ELSE NULL
|
||||||
|
END) as prev_month_avg_value
|
||||||
FROM `tabCRM Deal` d
|
FROM `tabCRM Deal` d
|
||||||
JOIN `tabCRM Deal Status` s ON d.status = s.name
|
JOIN `tabCRM Deal Status` s ON d.status = s.name
|
||||||
""",
|
""",
|
||||||
@ -137,23 +157,36 @@ def get_deal_count(from_date, to_date, user="", conds="", return_result=False):
|
|||||||
|
|
||||||
current_month_deals = result[0].current_month_deals or 0
|
current_month_deals = result[0].current_month_deals or 0
|
||||||
prev_month_deals = result[0].prev_month_deals or 0
|
prev_month_deals = result[0].prev_month_deals or 0
|
||||||
|
current_month_avg_value = result[0].current_month_avg_value or 0
|
||||||
|
prev_month_avg_value = result[0].prev_month_avg_value or 0
|
||||||
|
|
||||||
delta_in_percentage = (
|
delta_in_percentage = (
|
||||||
(current_month_deals - prev_month_deals) / prev_month_deals * 100 if prev_month_deals else 0
|
(current_month_deals - prev_month_deals) / prev_month_deals * 100 if prev_month_deals else 0
|
||||||
)
|
)
|
||||||
|
avg_value_delta = current_month_avg_value - prev_month_avg_value if prev_month_avg_value else 0
|
||||||
|
|
||||||
return {
|
return [
|
||||||
"title": _("Ongoing Deals"),
|
{
|
||||||
"value": current_month_deals,
|
"title": _("Ongoing Deals"),
|
||||||
"delta": delta_in_percentage,
|
"value": current_month_deals,
|
||||||
"deltaSuffix": "%",
|
"delta": delta_in_percentage,
|
||||||
"tooltip": _("Total number of ongoing deals"),
|
"deltaSuffix": "%",
|
||||||
}
|
"tooltip": _("Total number of ongoing deals"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": _("Avg Ongoing Deal Value"),
|
||||||
|
"value": current_month_avg_value,
|
||||||
|
"delta": avg_value_delta,
|
||||||
|
"prefix": get_base_currency_symbol(),
|
||||||
|
# "suffix": "K",
|
||||||
|
"tooltip": _("Average deal value of ongoing deals"),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def get_won_deal_count(from_date, to_date, user="", conds="", return_result=False):
|
def get_won_deal_count(from_date, to_date, user="", conds="", return_result=False):
|
||||||
"""
|
"""
|
||||||
Get won deal count for the dashboard.
|
Get won deal count for the dashboard, and also calculate average deal value for won deals.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
diff = frappe.utils.date_diff(to_date, from_date)
|
diff = frappe.utils.date_diff(to_date, from_date)
|
||||||
@ -180,7 +213,23 @@ def get_won_deal_count(from_date, to_date, user="", conds="", return_result=Fals
|
|||||||
{conds}
|
{conds}
|
||||||
THEN d.name
|
THEN d.name
|
||||||
ELSE NULL
|
ELSE NULL
|
||||||
END) as prev_month_deals
|
END) as prev_month_deals,
|
||||||
|
|
||||||
|
AVG(CASE
|
||||||
|
WHEN d.closed_on >= %(from_date)s AND d.closed_on < DATE_ADD(%(to_date)s, INTERVAL 1 DAY)
|
||||||
|
AND s.type = 'Won'
|
||||||
|
{conds}
|
||||||
|
THEN d.deal_value * IFNULL(d.exchange_rate, 1)
|
||||||
|
ELSE NULL
|
||||||
|
END) as current_month_avg_value,
|
||||||
|
|
||||||
|
AVG(CASE
|
||||||
|
WHEN d.closed_on >= %(prev_from_date)s AND d.closed_on < %(from_date)s
|
||||||
|
AND s.type = 'Won'
|
||||||
|
{conds}
|
||||||
|
THEN d.deal_value * IFNULL(d.exchange_rate, 1)
|
||||||
|
ELSE NULL
|
||||||
|
END) as prev_month_avg_value
|
||||||
FROM `tabCRM Deal` d
|
FROM `tabCRM Deal` d
|
||||||
JOIN `tabCRM Deal Status` s ON d.status = s.name
|
JOIN `tabCRM Deal Status` s ON d.status = s.name
|
||||||
""",
|
""",
|
||||||
@ -197,18 +246,31 @@ def get_won_deal_count(from_date, to_date, user="", conds="", return_result=Fals
|
|||||||
|
|
||||||
current_month_deals = result[0].current_month_deals or 0
|
current_month_deals = result[0].current_month_deals or 0
|
||||||
prev_month_deals = result[0].prev_month_deals or 0
|
prev_month_deals = result[0].prev_month_deals or 0
|
||||||
|
current_month_avg_value = result[0].current_month_avg_value or 0
|
||||||
|
prev_month_avg_value = result[0].prev_month_avg_value or 0
|
||||||
|
|
||||||
delta_in_percentage = (
|
delta_in_percentage = (
|
||||||
(current_month_deals - prev_month_deals) / prev_month_deals * 100 if prev_month_deals else 0
|
(current_month_deals - prev_month_deals) / prev_month_deals * 100 if prev_month_deals else 0
|
||||||
)
|
)
|
||||||
|
avg_value_delta = current_month_avg_value - prev_month_avg_value if prev_month_avg_value else 0
|
||||||
|
|
||||||
return {
|
return [
|
||||||
"title": _("Won Deals"),
|
{
|
||||||
"value": current_month_deals,
|
"title": _("Won Deals"),
|
||||||
"delta": delta_in_percentage,
|
"value": current_month_deals,
|
||||||
"deltaSuffix": "%",
|
"delta": delta_in_percentage,
|
||||||
"tooltip": _("Total number of won deals"),
|
"deltaSuffix": "%",
|
||||||
}
|
"tooltip": _("Total number of won deals based on its closure date"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": _("Avg Won Deal Value"),
|
||||||
|
"value": current_month_avg_value,
|
||||||
|
"delta": avg_value_delta,
|
||||||
|
"prefix": get_base_currency_symbol(),
|
||||||
|
# "suffix": "K",
|
||||||
|
"tooltip": _("Average deal value of won deals"),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def get_average_deal_value(from_date, to_date, user="", conds="", return_result=False):
|
def get_average_deal_value(from_date, to_date, user="", conds="", return_result=False):
|
||||||
|
|||||||
@ -339,7 +339,7 @@ const dealsBySalesperson = createResource({
|
|||||||
return {
|
return {
|
||||||
data: r.data || [],
|
data: r.data || [],
|
||||||
title: __('Deals by Salesperson'),
|
title: __('Deals by Salesperson'),
|
||||||
subtitle: 'Number of deals and total value per salesperson',
|
subtitle: __('Number of deals and total value per salesperson'),
|
||||||
xAxis: {
|
xAxis: {
|
||||||
title: __('Salesperson'),
|
title: __('Salesperson'),
|
||||||
key: 'salesperson',
|
key: 'salesperson',
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user