⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frontpage.jsp

📁 国外的一套开源CRM
💻 JSP
📖 第 1 页 / 共 2 页
字号:
<%@ 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 + -