示例#1
0
        /// <summary>
        /// 取得带拨打电话列表
        /// </summary>
        /// <returns></returns>
        //public static List<ViewMemberLeadToCall> GetMemberToCallList(this Member item, DateTime? startdate = null, DateTime? enddate = null)
        //{
        //    var lcs = CH.GetAllData<LeadCall>(lc =>lc.Member.Name==item.Name && lc.CompanyRelationship.ProjectID == item.ProjectID && lc.CallBackDate != null);

        //    startdate = startdate == null ? new DateTime(1, 1, 1) : startdate;
        //    enddate = enddate == null ? new DateTime(9999, 1, 1) : enddate.Value.AddDays(+1);

        //    lcs = lcs.FindAll(l => l.CallBackDate >= startdate && l.CallBackDate <= enddate);

        //    var list = new List<ViewMemberLeadToCall>();
        //    lcs.ForEach(l =>
        //    {
        //        var nd = new ViewMemberLeadToCall() { LeadCall = l };
        //        list.Add(nd);
        //    });
        //    return list;
        //}
        /// <summary>
        /// 员工业绩统计
        /// </summary>
        /// <returns></returns>
        public static ViewMemberProgressAmount GetMemberProgress(this Member item, DateTime?startdate = null, DateTime?enddate = null)
        {
            startdate = startdate == null ? new DateTime(1, 1, 1) : startdate;
            enddate   = enddate == null ? new DateTime(9999, 1, 1) : enddate.Value.AddDays(+1);

            decimal totaldeal         = 0;
            decimal totalcheckin      = 0;
            decimal dealin            = 0;
            decimal checkin           = 0;
            decimal dealtarget        = 0;
            decimal checkintarget     = 0;
            decimal nextdealtarget    = 0;
            decimal nextcheckintarget = 0;
            var     deals             = CH.GetAllData <Deal>(d => d.Sales == item.Name && d.CompanyRelationship.ProjectID == item.ProjectID);

            deals.ForEach(d =>
            {
                totalcheckin += d.Income;
                totaldeal    += d.Payment;
                if (d.SignDate >= startdate && d.SignDate <= enddate)
                {
                    checkin += d.Income;
                    dealin  += d.Payment;
                }
            });

            var ts = CH.GetAllData <TargetOfWeek>(t => t.Member == item.Name && t.ProjectID == item.ProjectID).FindAll(t => (t.StartDate > startdate && t.StartDate < enddate) | (t.EndDate > startdate && t.EndDate < enddate));

            dealtarget    += ts.Sum(t => t.Deal);
            checkintarget += ts.Sum(t => t.CheckIn);


            var nextweekend = enddate.Value.AddDays(7);


            var nextts = CH.GetAllData <TargetOfWeek>(t => t.Member == item.Name && t.ProjectID == item.ProjectID).FindAll(t => (t.StartDate > enddate && t.EndDate < nextweekend));

            nextdealtarget    += ts.Sum(t => t.Deal);
            nextcheckintarget += ts.Sum(t => t.CheckIn);

            var result = new ViewMemberProgressAmount()
            {
                TotalCheckIn      = totalcheckin,
                TotalDealIn       = totaldeal,
                CheckIn           = checkin,
                DealIn            = dealin,
                CheckInTarget     = checkintarget,
                Member            = item,
                DealInTarget      = dealtarget,
                NextCheckInTarget = nextcheckintarget,
                NextDealInTarget  = nextdealtarget,
                CheckInPercentage = checkintarget == 0 ? 100 : (int)(checkin * 100 / checkintarget),
                DealInPercentage  = dealtarget == 0 ? 100 : (int)(dealin * 100 / dealtarget)
            };

            return(result);
        }
示例#2
0
        public static List <ViewProjectMemberProgressAmount> GetMemberProgressList(List <int> selectedprojects, bool?isActivated, DateTime?startdate, DateTime?enddate)
        {
            startdate = startdate == null ? new DateTime(1, 1, 1) : startdate;
            enddate   = enddate == null ? new DateTime(9999, 1, 1) : startdate;

            if (selectedprojects == null)
            {
                selectedprojects = BLL.CRM_Logical.GetUserInvolveProject().Select(p => p.ID).ToList();
            }

            var list       = new List <ViewProjectMemberProgressAmount>();
            var totaldeals = from d in CH.DB.Deals
                             where selectedprojects.Any(sp => sp == d.ProjectID)
                             select d;

            var deals = from d in totaldeals where d.SignDate >= startdate && d.SignDate <= enddate select d;

            var totaltargetofmonths = from t in CH.DB.TargetOfMonthForMembers
                                      where selectedprojects.Any(sp => sp == t.ProjectID)
                                      select t;

            var targetofmonths = from t in totaltargetofmonths
                                 where (t.StartDate >= startdate && t.StartDate <= enddate) || (t.StartDate >= startdate && t.StartDate <= enddate)
                                 select t;

            var projects = from p in CH.DB.Projects
                           where selectedprojects.Any(sp => sp == p.ID) && p.EndDate >= startdate && p.EndDate <= enddate
                           select p;



            foreach (var p in projects.ToList())
            {
                ViewProjectMemberProgressAmount pm = new ViewProjectMemberProgressAmount();
                pm.Project = p;
                var tms     = from m in p.Members where p.IsActived == true select m;
                var memlist = new List <ViewMemberProgressAmount>();
                foreach (var m in tms)
                {
                    ViewMemberProgressAmount v = new ViewMemberProgressAmount();
                    v.Member = m;
                    var projectdeals   = from d in deals where d.Sales == m.Name && d.ProjectID == p.ID select d;
                    var projecttargets = from t in targetofmonths where t.MemberID == m.ID && t.ProjectID == p.ID select t;

                    var projecttotaldeals   = from d in totaldeals where d.Sales == m.Name && d.ProjectID == p.ID select d;
                    var projecttotaltargets = from t in totaltargetofmonths where t.MemberID == m.ID && t.ProjectID == p.ID select t;

                    if (projectdeals.Count() > 0)
                    {
                        v.CheckIn = projectdeals.Sum(d => d.Income);
                        v.DealIn  = projectdeals.Sum(d => d.Payment);
                    }

                    if (projecttargets.Count() > 0)
                    {
                        v.CheckInTarget = projecttargets.Sum(t => t.CheckIn);
                        v.DealInTarget  = projecttargets.Sum(t => t.Deal);
                    }

                    if (projecttotaldeals.Count() > 0)
                    {
                        v.TotalCheckIn = projecttotaldeals.Sum(d => d.Income);
                        v.TotalDealIn  = projecttotaldeals.Sum(d => d.Payment);
                    }
                    if (projecttotaltargets.Count() > 0)
                    {
                        v.TotalDealinTarget = projecttotaltargets.Sum(t => t.Deal);
                    }
                    memlist.Add(v);
                }
                pm.ViewMemberProgressAmounts = memlist;
                list.Add(pm);
            }

            return(list);
        }