📄 frontpage.jsp
字号:
<%@ page import="org.ofbiz.base.util.*" %>
<%@ page import="org.ofbiz.entity.*" %>
<%@ page import="org.ofbiz.entity.condition.*" %>
<%@ page import="org.ofbiz.security.*" %>
<%@ page import="com.sourcetap.sfa.activity.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<%@ page import="com.sourcetap.sfa.ui.UIScreenSection" %>
<%@ page import="com.sourcetap.sfa.code.CodeHelper" %>
<%@page import="com.sourcetap.sfa.activity.CalendarUtil" %>
<%@ include file="/includes/header.jsp" %>
<%@ include file="/includes/errormsg.jsp"%>
<% String mimes = ""; %>
<%
//get the date information
String day = "";
String lsMonth = "";
String module = "frontPage";
Calendar selectedDayCalendar = Calendar.getInstance();
int month = (selectedDayCalendar.get(Calendar.MONTH) + 1);
int year = selectedDayCalendar.get(Calendar.YEAR);
int iday = selectedDayCalendar.get(Calendar.DATE);
//if the user has selcted a day
//get the activities for that day
if ( request.getParameter("day") != null ) {
day = request.getParameter("day");
iday = Long.valueOf(day).intValue();
selectedDayCalendar.set(year, month -1, iday, 0, 0 );
}
// the user has selected a month then use that month.
if ( request.getParameter("month") != null ) {
lsMonth = request.getParameter("month");
month = Long.valueOf(lsMonth).intValue();
selectedDayCalendar.set(year, month -1, iday, 0, 0 );
}
%>
<%!
int daysSinceLastSale(String ownerId, int daysFromHire, GenericDelegator delegator) throws GenericEntityException{
//find last sale
Calendar lastSale = Calendar.getInstance();
HashMap fields = new HashMap();
fields.put("dealStatusId", "10"); //Sold
fields.put("ownerId", ownerId);
ArrayList order = new ArrayList();
order.add("actualCloseDate");
order.add("DESC");
List deals = delegator.findByAnd("Deal", fields, order);
if(deals.size() >= 1){
GenericValue details[] = (GenericValue[])deals.toArray(new GenericValue[0]);
GenericValue deal = details[deals.size()-1];
lastSale.setTime(deal.getDate("actualCloseDate"));
} else {
// No sales yet. Return the number of days since hire.
return daysFromHire;
}
//calc time since last sale
int returnInt = CalendarUtil.differenceBetweenDates(lastSale, Calendar.getInstance(), Calendar.DAY_OF_YEAR);
return returnInt;
}
int daysSinceLastLeadConversion(String ownerId, int daysFromHire, GenericDelegator delegator) throws GenericEntityException{
// Find last lead conversion
Calendar lastLeadConversion = Calendar.getInstance();
HashMap fields = new HashMap();
fields.put("statusId", "50"); // Converted
fields.put("leadOwnerId", ownerId);
ArrayList order = new ArrayList();
order.add("convertedDate");
order.add("DESC");
List leadL = delegator.findByAnd("Lead", fields, order);
if(leadL.size() >= 1){
GenericValue details[] = (GenericValue[])leadL.toArray(new GenericValue[0]);
GenericValue leadGV = details[leadL.size()-1];
lastLeadConversion.setTime(leadGV.getTimestamp("convertedDate"));
} else {
// No lead conversions yet. Return the number of days since hire.
return daysFromHire;
}
// Calc time since last conversion
int returnInt = CalendarUtil.differenceBetweenDates(lastLeadConversion, Calendar.getInstance(), Calendar.DAY_OF_YEAR);
return returnInt;
}
double calculateYearlyQuota(String partyId, GenericDelegator delegator) throws GenericEntityException {
double yearlyQuotaAmount = 0.0;
HashMap fields = new HashMap();
fields.put("year", String.valueOf(Calendar.getInstance().get(Calendar.YEAR)));
fields.put("contactId", partyId);
List forecastL = delegator.findByAnd("Forecast", fields);
Iterator forecastI = forecastL.iterator();
while (forecastI.hasNext()) {
GenericValue forecastGV = (GenericValue)forecastI.next();
double quotaAmount = forecastGV.getDouble("quotaAmount")==null ?
0.0 : forecastGV.getDouble("quotaAmount").doubleValue();
yearlyQuotaAmount += quotaAmount;
}
return yearlyQuotaAmount;
}
double calculateYearlySales(String ownerId, GenericDelegator delegator) throws GenericEntityException {
double actual = 0.0;
Calendar start = Calendar.getInstance();
start.set(Calendar.MONTH, Calendar.JANUARY);
start.set(Calendar.DAY_OF_MONTH, 1);
Calendar end = Calendar.getInstance();
end.set(Calendar.MONTH, Calendar.DECEMBER);
end.set(Calendar.DAY_OF_MONTH, 31);
ArrayList list = new ArrayList();
list.add(new EntityExpr("dealStatusId", EntityOperator.EQUALS, "10")); // Sold
list.add(new EntityExpr("ownerId", EntityOperator.EQUALS, ownerId));
list.add(new EntityExpr("actualCloseDate", EntityOperator.LESS_THAN_EQUAL_TO, new java.sql.Date( end.getTime().getTime() )));
list.add(new EntityExpr("actualCloseDate", EntityOperator.GREATER_THAN_EQUAL_TO, new java.sql.Date( start.getTime().getTime() )));
List opps = delegator.findByAnd("Deal", list, null);
GenericValue oppDetails[] = (GenericValue[])opps.toArray(new GenericValue[0]);
GenericValue oppDetail;
for(int i=0;i<oppDetails.length;i++){
oppDetail = oppDetails[i];
actual = actual + oppDetail.getDouble("amount").doubleValue();
}
return actual;
}
double calculateYearlyExpenses(String ownerId, GenericDelegator delegator) throws GenericEntityException {
double actual = 0.0;
Calendar start = Calendar.getInstance();
start.set(Calendar.MONTH, Calendar.JANUARY);
start.set(Calendar.DAY_OF_MONTH, 1);
Calendar end = Calendar.getInstance();
end.set(Calendar.MONTH, Calendar.DECEMBER);
end.set(Calendar.DAY_OF_MONTH, 31);
ArrayList list = new ArrayList();
list.add(new EntityExpr("expenseOwnerId", EntityOperator.EQUALS, ownerId));
list.add(new EntityExpr("expenseDate", EntityOperator.LESS_THAN_EQUAL_TO, new java.sql.Date(end.getTime().getTime())));
list.add(new EntityExpr("expenseDate", EntityOperator.GREATER_THAN_EQUAL_TO, new java.sql.Date(start.getTime().getTime())));
List expenses = delegator.findByAnd("Expense", list, null);
GenericValue expenseDetails[] = (GenericValue[])expenses.toArray(new GenericValue[0]);
GenericValue expenseDetail;
for(int i=0;i<expenseDetails.length;i++){
expenseDetail = expenseDetails[i];
actual = actual + expenseDetail.getDouble("expenseAmount").doubleValue();
}
return actual;
}
int calculateLeadsConverted(String partyId, Calendar start, Calendar end, GenericDelegator delegator) throws GenericEntityException {
ArrayList list = new ArrayList();
list.add(new EntityExpr("leadOwnerId", EntityOperator.EQUALS, partyId));
list.add(new EntityExpr("statusId", EntityOperator.EQUALS, "50"));
list.add(new EntityExpr("convertedDate", EntityOperator.GREATER_THAN_EQUAL_TO, new java.sql.Date(start.getTime().getTime())));
list.add(new EntityExpr("convertedDate", EntityOperator.LESS_THAN_EQUAL_TO, new java.sql.Date(end.getTime().getTime())));
List leadL = delegator.findByAnd("Lead", list, null);
return leadL.size();
}
int calculateLeadsAssigned(String partyId, Calendar start, Calendar end, GenericDelegator delegator) throws GenericEntityException {
ArrayList list = new ArrayList();
list.add(new EntityExpr("leadOwnerId", EntityOperator.EQUALS, partyId));
list.add(new EntityExpr("assignedDate", EntityOperator.GREATER_THAN_EQUAL_TO, new java.sql.Date(start.getTime().getTime())));
list.add(new EntityExpr("assignedDate", EntityOperator.LESS_THAN_EQUAL_TO, new java.sql.Date(end.getTime().getTime())));
List leadL = delegator.findByAnd("Lead", list, null);
return leadL.size();
}
Date getHireDate(String partyId, GenericDelegator delegator) throws GenericEntityException {
HashMap fields = new HashMap();
fields.put("contactId", partyId);
GenericValue contact = delegator.findByPrimaryKey("Contact", fields);
Date hireDate = contact.getDate("hireDate");
if ( hireDate == null )
hireDate = Calendar.getInstance().getTime();
return hireDate;
}
GenericValue[] getQuarterlyOpportunities(String ownerId, GenericDelegator delegator, int fyStartMonth ) throws GenericEntityException {
Calendar cal = Calendar.getInstance();
ArrayList list = new ArrayList();
list.add(new EntityExpr("ownerId", EntityOperator.EQUALS, ownerId));
list.add(new EntityExpr("projectedCloseDate", EntityOperator.LESS_THAN_EQUAL_TO, new java.sql.Date( CalendarUtil.getMaximumQuarterDate((cal.get(Calendar.MONTH) + 1),cal.get(Calendar.YEAR), fyStartMonth).getTime())));
list.add(new EntityExpr("dealStatusId", EntityOperator.NOT_EQUAL, "70")); // Not lost
ArrayList order = new ArrayList();
order.add("projectedCloseDate");
List dealList = delegator.findByAnd("Deal", list, order);
return (GenericValue[])dealList.toArray(new GenericValue[0]);
}
GenericValue[] getRecentLeads(String ownerId, GenericDelegator delegator) throws GenericEntityException {
Calendar cal = Calendar.getInstance();
ArrayList list = new ArrayList();
list.add(new EntityExpr("leadOwnerId", EntityOperator.EQUALS, ownerId));
list.add(new EntityExpr("statusId", EntityOperator.NOT_EQUAL, "50")); // Not converted
list.add(new EntityExpr("statusId", EntityOperator.NOT_EQUAL, "60")); // Not lost
ArrayList order = new ArrayList();
order.add("createdDate DESC");
List leadList = delegator.findByAnd("Lead", list, order);
return (GenericValue[])leadList.toArray(new GenericValue[0]);
}
GenericValue[] getDailyActivities(String ownerId, Calendar selectedDayCalendar, GenericDelegator delegator) throws GenericEntityException {
ArrayList list = new ArrayList();
list.add(new EntityExpr("activityOwnerId", EntityOperator.EQUALS, ownerId));
list.add(new EntityExpr("openDate", EntityOperator.EQUALS, new java.sql.Date(selectedDayCalendar.getTime().getTime())));
ArrayList order = new ArrayList();
order.add("openDate");
order.add("openStartTime");
List activityList = delegator.findByAnd("Activity", list, order);
return (GenericValue[])activityList.toArray(new GenericValue[0]);
}
GenericValue[] getIncompleteActivities(String ownerId, GenericDelegator delegator) throws GenericEntityException {
ArrayList list = new ArrayList();
list.add(new EntityExpr("activityOwnerId", EntityOperator.EQUALS, ownerId));
list.add(new EntityExpr("statusId", EntityOperator.NOT_EQUAL, "30")); // Not declined
list.add(new EntityExpr("statusId", EntityOperator.NOT_EQUAL, "50")); // Not On Hold
list.add(new EntityExpr("statusId", EntityOperator.NOT_EQUAL, "60")); // Not Canceled
list.add(new EntityExpr("statusId", EntityOperator.NOT_EQUAL, "70")); // Not Done
ArrayList order = new ArrayList();
order.add("openDate");
order.add("openStartTime");
List activityList = delegator.findByAnd("Activity", list, order);
return (GenericValue[])activityList.toArray(new GenericValue[0]);
}
%>
<%pageContext.setAttribute("PageName", "Main Page"); %>
<%String loginUrl = controlPath + "/checkLogin/" + UtilFormatOut.checkNull((String)request.getAttribute("_CURRENT_VIEW_"));%>
<% pageContext.setAttribute("PageName", "Main Page"); %>
<%
if(session.getAttribute("partyId") != null && userLogin != null ) {
%>
<SCRIPT FOR="window" EVENT="onload" LANGUAGE="JavaScript">
// Reload the menu to clear the menu items.
parent.parent.menu.location.href = parent.parent.menu.location.href;
</SCRIPT>
<%
int fyStartMonth = CalendarUtil.getFiscalYearStartMonth( delegator, userInfo );
// Find out if this is a leads user or leads admin. If so, going to display
// a special leads dashboard.
boolean leadDashBoard = false;
HashMap partyRoleFindMap = new HashMap();
partyRoleFindMap.put("partyId", userInfo.getPartyId());
try {
List partyRoleL = delegator.findByAnd("PartyRole", partyRoleFindMap);
Iterator partyRoleI = partyRoleL.iterator();
while (partyRoleI.hasNext()) {
GenericValue partyRoleGV = (GenericValue)partyRoleI.next();
String roleTypeId = partyRoleGV.getString("roleTypeId")==null ? "" : partyRoleGV.getString("roleTypeId");
if (roleTypeId.equals("SFA_LEADS_ADMIN") || roleTypeId.equals("SFA_LEADS_USER")) {
leadDashBoard = true;
}
}
} catch (Exception e) {
Debug.logWarning("Error retrieving user roles: " + e.getLocalizedMessage(), module);
}
Calendar cal = Calendar.getInstance();
cal.setTime(getHireDate(partyId, delegator));
int daysFromHire = CalendarUtil.differenceBetweenDates(cal, Calendar.getInstance(), Calendar.DAY_OF_YEAR);
//SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/YYYY");
Calendar allStart = Calendar.getInstance();
allStart.set(Calendar.YEAR, 1990);
allStart.set(Calendar.MONTH, Calendar.JANUARY);
allStart.set(Calendar.DAY_OF_MONTH, 1);
Calendar yearStart = Calendar.getInstance();
yearStart.set(Calendar.MONTH, Calendar.JANUARY);
yearStart.set(Calendar.DAY_OF_MONTH, 1);
Calendar yearEnd = Calendar.getInstance();
yearEnd.set(Calendar.MONTH, Calendar.DECEMBER);
yearEnd.set(Calendar.DAY_OF_MONTH, 31);
int yearLeadsConverted = calculateLeadsConverted(partyId, yearStart, yearEnd, delegator);
int yearLeadsAssigned = calculateLeadsAssigned(partyId, yearStart, yearEnd, delegator);
double yearLeadConversionRate = ((yearLeadsAssigned == 0) ? 0.0 : ((yearLeadsConverted * 100 ) / yearLeadsAssigned));
int allLeadsConverted = calculateLeadsConverted(partyId, allStart, yearEnd, delegator);
int allLeadsAssigned = calculateLeadsAssigned(partyId, allStart, yearEnd, delegator);
double allLeadConversionRate = ((allLeadsAssigned == 0) ? 0.0 : ((allLeadsConverted * 100 ) / allLeadsAssigned));
double quota = calculateYearlyQuota(partyId, delegator);
double actual = calculateYearlySales(partyId, delegator);
double quotaPercent = ((quota == 0) || (quota == 0.0) ? 0.0 : ((actual / quota) * 100));
double expenses = calculateYearlyExpenses(partyId, delegator);
%>
<table width=100% class="freeFormSectionTitleTable">
<tr>
<td colspan=3>
<%=userInfo.getUserFullName()%>'s Dashboard
<td>
</tr>
</table>
<!-- Table to separate the top half of the screen from the bottom half -->
<table border=0>
<!-- Start top half of screen. -->
<tr>
<td valign="top">
<!-- Table to hold the columns of the top half of the screen -->
<table border=0>
<tr>
<!-- Cell for year-to-date and lifetime -->
<td valign="top">
<!-- Table to separate the year-to-date from the lifetime -->
<table border="0">
<tr>
<td>
<!-- Table for the year-to-date label -->
<table class="freeFormSectionTitleTable" width="100%">
<tr>
<td colspan=2>
Year to Date
</td>
</tr>
</table>
<% if (leadDashBoard) { %>
<!-- Table for the year-to-date LEADS info -->
<table class="freeFormSectionDisplayTable" width="100%">
<tr>
<td class="freeFormSectionLabelOptional">
Leads Assigned:
</td>
<td class="freeFormSectionField">
<%=String.valueOf(yearLeadsAssigned)%>
</td>
</tr>
<tr>
<td class="freeFormSectionLabelOptional">
Leads Converted:
</td>
<td class="freeFormSectionField">
<%=String.valueOf(yearLeadsConverted)%>
</td>
</tr>
<tr>
<td class="freeFormSectionLabelOptional">
Conversion Rate:
</td>
<td class="freeFormSectionField">
%<%=decimalFormat.format(yearLeadConversionRate)%>
</td>
</tr>
</table>
<% } else { %>
<!-- Table for the year-to-date info -->
<table class="freeFormSectionDisplayTable" width="100%">
<tr>
<td class="freeFormSectionLabelOptional">
Quota:
</td>
<td class="freeFormSectionField">
$<%=decimalFormat.format(quota)%>
</td>
</tr>
<tr>
<td class="freeFormSectionLabelOptional">
Total Sales:
</td>
<td class="freeFormSectionField">
$<%=decimalFormat.format(actual)%>
</td>
</tr>
<tr>
<td class="freeFormSectionLabelOptional">
Quota Percentage:
</td>
<td class="freeFormSectionField">
%<%=decimalFormat.format(quotaPercent)%>
</td>
</tr>
<tr>
<td class="freeFormSectionLabelOptional">
Expenses:
</td>
<td class="freeFormSectionField">
$<%=decimalFormat.format(expenses)%>
</td>
</tr>
</table>
<% } %>
</td>
</tr>
<tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -