Exemplo n.º 1
0
        public SettleSelfInfo SettleSelf(int y, int m, string sales_no)
        {
            SettleSelfInfo info = new SettleSelfInfo();
            using (db0 = getDB0)
            {
                var sales = db0.Sales.Find(sales_no);
                DateTime last = DateTime.Now.AddMonths(-1);
                var getB = db0.SettleDetail.Where(x => x.Settle.y == last.Year & x.Settle.m == last.Month & x.sales_no == sales.sales_no).FirstOrDefault();
                int b_p = 0;
                if (getB != null)
                {
                    b_p = getB.b;//取得上個月累計回饋
                }
                #region 基本個人獎金
                //取得共享圈成員
                var share_no = sales.ShareSub
                .Traverse(x => x.ShareSub)
                .Where(x => x.share_level > sales.share_level & x.share_level <= (sales.share_level + 4)).ToList();

                //取得當月個人消費總kv
                int? kv_total = sales.Purchase.Where(x => x.set_date.Year == y & x.set_date.Month == m & (x.state == (int)PurchaseState.complete|| x.state == (int)PurchaseState.onSite)).Sum(x => x.kv_total);
                //取得當月共享圈消費總kv
                int share_kv_total = 0;
                foreach (var share in share_no)
                {
                    int? temp_kv_total = share.Purchase.Where(x => x.set_date.Year == y & x.set_date.Month == m & (x.state == (int)PurchaseState.complete || x.state == (int)PurchaseState.onSite)).Sum(x => x.kv_total);
                    if (temp_kv_total != null)
                    {
                        share_kv_total += (int)temp_kv_total;
                    }
                }
                info.kv_total = (int)kv_total;
                info.share_kv_total = share_kv_total;
                if (kv_total >= 1000)
                {//兩者計算取最小值
                    int temp_a = Convert.ToInt32((int)kv_total * 0.75);
                    int temp_b = Convert.ToInt32(share_kv_total * 0.01);
                    info.self_bonus = temp_a > temp_b ? temp_b : temp_a;
                }
                #endregion
                info.b = Convert.ToInt32((int)kv_total * 0.75) + b_p - info.self_bonus;

                #region 經理人獎金
                int recommend_kv_total = 0;//直推會員總kv
                int count_manager = 0;//計算直推經理人合格有幾人
                if (sales.rank >= (int)SalesRankState.manager)
                {
                    foreach (var sub in sales.SalesSub)
                    {
                        int? temp_kv_total = sub.Purchase.Where(x => x.set_date.Year == y & x.set_date.Month == m & (x.state == (int)PurchaseState.complete || x.state == (int)PurchaseState.onSite)).Sum(x => x.kv_total);
                        if (temp_kv_total != null)
                        {
                            recommend_kv_total += (int)temp_kv_total;
                            #region 計算合格經理人有幾人
                            if (sub.rank >= (int)SalesRankState.manager & temp_kv_total >= 1000)
                            {
                                int sub_count = 0;
                                foreach (var sub_sub in sub.SalesSub)
                                {
                                    int? temp_sub_kv_total = sub_sub.Purchase.Where(x => x.set_date.Year == y & x.set_date.Month == m & (x.state == (int)PurchaseState.complete || x.state == (int)PurchaseState.onSite)).Sum(x => x.kv_total);
                                    if (temp_sub_kv_total >= 1000)
                                        sub_count++;
                                }
                                if (sub_count >= 3)
                                    count_manager++;
                            }
                            #endregion
                        }
                    }
                    info.count_manager = count_manager;
                    info.recommend_kv_total = recommend_kv_total;
                    if (kv_total >= 1000)
                    {
                        //當月消費滿1000kv 及等級為經理人才有此獎金          
                        info.manager_bonus = Convert.ToInt32(recommend_kv_total * 0.12);
                    }
                }
                #endregion

                #region 營運中心獎金
                int AllLine_kv_total = 0;
                if (sales.rank >= (int)SalesRankState.operationsCenter)
                {//30位經理人以上合格
                 //取得下線成員
                    var r_no = sales.SalesSub
                    .Traverse(x => x.SalesSub).ToList();
                    foreach (var r in r_no)
                    {
                        int? temp_kv_total = r.Purchase.Where(x => x.set_date.Year == y & x.set_date.Month == m & (x.state == (int)PurchaseState.complete || x.state == (int)PurchaseState.onSite)).Sum(x => x.kv_total);
                        AllLine_kv_total += (int)temp_kv_total;
                    }
                    info.AllLine_kv_total = AllLine_kv_total;
                    if (kv_total >= 1000 & sales.rank == (int)SalesRankState.operationsCenter & count_manager >= 30)
                        info.center_bonus = Convert.ToInt32(AllLine_kv_total * 0.02);
                }
                #endregion

                #region 管理處紅利

                if (sales.rank == (int)SalesRankState.managementOffice)
                {
                    //取得直推會員內等級為營運中心(以上)的會員及該會員下線
                    var center = sales.SalesSub.Where(x => x.rank >= (int)SalesRankState.operationsCenter).Traverse(x => x.SalesSub).ToList();
                    int recommend_center_kv_total = 0;//直推營運中心總營業kv

                    #region 取得下線總營業kv
                    foreach (var c in center)
                    {
                        //計算營運中心或下線的該月消費
                        int? sub_kv_total = c.Purchase.Where(x => x.set_date.Year == y & x.set_date.Month == m & (x.state == (int)PurchaseState.complete || x.state == (int)PurchaseState.onSite)).Sum(x => x.kv_total);
                        recommend_center_kv_total += (int)sub_kv_total;
                    }

                    #endregion

                    info.recommend_center_kv_total = recommend_center_kv_total;
                    if (kv_total >= 1000 & count_manager >= 30)
                    {
                        //營運中心紅利獎金(等級為管理處算法不同)
                        info.center_bonus = Convert.ToInt32((AllLine_kv_total - recommend_center_kv_total) * 0.02);
                        //管理處紅利-個人消費滿1000kv且30位經理人合格
                        info.office_bonus = Convert.ToInt32(recommend_center_kv_total * 0.01);
                    }
                }

                #endregion
            }
            return info;
        }
Exemplo n.º 2
0
        /// <summary>
        /// 顯示安置人
        /// </summary>
        /// <param name="share_no"></param>
        /// <param name="sales_no"></param>
        /// <returns></returns>
        public SalesTree GetShareBySalesSelf(string share_no, string sales_no)
        {

            using (db0 = getDB0)
            {
                var sales = db0.Sales.Find(sales_no);
                var share_sales = db0.Sales.Find(share_no);
                var data = sales.ShareSub
                    .Traverse(x => x.ShareSub).Where(x => x.share_level > sales.share_level & x.share_level < (sales.share_level + 4)).ToList();

                //安置人
                SalesTree share = new SalesTree()
                {
                    sales_no = share_no,
                    sales_name = share_sales.sales_name,
                    sub = null
                };
                //自己
                SalesTree n = new SalesTree()
                {
                    sales_no = sales_no,
                    sales_name = sales.sales_name,
                    sub = null
                };

                IList<SalesTree> Share_n = new List<SalesTree>() { n };
                share.sub = Share_n;
                share.sub_count = sales.ShareSub
                    .Traverse(x => x.ShareSub).Where(x => x.share_level > sales.share_level & x.share_level <= (sales.share_level + 4)).Count();

                IList<SalesTree> L = new List<SalesTree>();
                foreach (var t in sales.ShareSub)
                {
                    var m = new SalesTree()
                    {
                        sales_no = t.sales_no,
                        sales_name = t.sales_name,
                        sub = null
                    };

                    var k = QSub(t.sales_no, data);
                    m.sub = k;
                    m.sub_count = k.Length;
                    L.Add(m);
                }
                n.sub_count = L.Count();
                n.sub = L;
                return share;
            }

        }
Exemplo n.º 3
0
        public ResultInfo SettleCalVerion2(int y, int m)
        {
            db0 = getDB0;
            var r = new ResultInfo();
            try
            {
                #region MyRegion
                //上個月日期
                var p_date = DateTime.Parse(y + "/" + m + "/1").AddMonths(-1);
                //上上個月日期
                var pp_date = DateTime.Parse(y + "/" + m + "/1").AddMonths(-2);

                //清空 SettleCal 資料
                string sql = "delete from SettleCal where sales_no!='A'";
                db0.Database.ExecuteSqlCommandAsync(sql).Wait();

                //清楚計算月的資料
                sql = "delete from SettleDetail where y=@y and m=@m";
                SqlParameter[] sps = new SqlParameter[] { new SqlParameter("@y", y), new SqlParameter("@m", m) };
                db0.Database.ExecuteSqlCommandAsync(sql, sps).Wait();

                var sales_colle = db0.Sales.Select(x => new SalesCalInfo()
                {
                    sales_no = x.sales_no,
                    sales_name = x.sales_name,
                    rank = x.rank,
                    recommend_no = x.recommend_no,
                    recommend_name = x.recommend_name,
                    share_sn = x.share_sn,
                    share_level = x.share_level,
                    share_name = x.ShareParent.sales_name
                }).Where(x => x.sales_no != "A").ToList(); //取得會員

                var sales_sum_kv = db0.PurchaseDetail
                .Where(x => x.Purchase.set_date.Year == y && x.Purchase.set_date.Month == m & (x.Purchase.state == (int)PurchaseState.complete || x.Purchase.state == (int)PurchaseState.onSite))
                .GroupBy(x => new { x.Purchase.sales_no })
                .Select(g => new { sales_no = g.Key.sales_no, sum_kv = g.Sum(x => x.kv_sub_total) }).ToList();

                foreach (var sales in sales_colle)
                {
                    var md = new SettleCal();
                    var obj = sales_sum_kv.FirstOrDefault(x => x.sales_no == sales.sales_no);
                    if (obj != null)
                    {
                        md.sales_no = sales.sales_no;
                        md.sales_name = sales.sales_name;
                        md.rank = sales.rank;
                        md.share_level = sales.share_level;
                        md.share_sn = sales.share_sn;
                        md.share_name = sales.share_name;
                        md.recommend_no = sales.recommend_no;
                        md.recommend_name = sales.recommend_name;
                        md.KV = obj.sum_kv;
                    }
                    else
                    {
                        md.sales_no = sales.sales_no;
                        md.sales_name = sales.sales_name;
                        md.rank = sales.rank;
                        md.share_level = sales.share_level;
                        md.share_sn = sales.share_sn;
                        md.share_name = sales.share_name;
                        md.recommend_no = sales.recommend_no;
                        md.recommend_name = sales.recommend_name;
                        md.KV = 0;
                    }
                    db0.SettleCal.Add(md);
                }

                #region 取出該月獎金計算主檔

                var settle = db0.Settle.Where(x => x.y == y & x.m == m).FirstOrDefault();
                if (settle == null)
                {
                    settle = new Settle()
                    {
                        settle_id = GetNewId(CodeTable.Settle),
                        y = y,
                        m = m,
                        state = (int)SettleState.progress,
                        set_date = DateTime.Now
                    };
                    db0.Settle.Add(settle);
                }
                #endregion

                //以上只算出每位會員KV值
                db0.SaveChangesAsync().Wait();

                var sales_kv_data = db0.SettleCal.Where(x => x.KV >= 1000).ToList();

                //取得上個月結算全部資料
                var sales_settle_pre = db0.SettleDetail.Where(x => x.y == p_date.Year && x.m == p_date.Month).ToList();
                //取得上上個月結算全部資料
                var sales_settle_prepre = db0.SettleDetail.Where(x => x.y == pp_date.Year && x.m == pp_date.Month).ToList();

                #endregion

                #region 消費滿1000kv
                foreach (var sales in sales_kv_data)
                {
                    #region MyRegion
                    var p = sales_settle_pre.FirstOrDefault(x => x.sales_no == sales.sales_no);
                    var md = new SettleDetail();

                    #region 計算共享圈消費總kv
                    //加總子系KV值 且往下只探四層,取當月總消費(未滿1000kv也列入)
                    var cal_kv_sum = sales.SettleCalSub
                        .Traverse(x => x.SettleCalSub)
                        .Where(x => (x.share_level <= sales.share_level + 4))
                        .Sum(x => x.KV);
                    #endregion
                    #region 計算直推會員總kv
                    var r_kv_sum = 0;
                    //加總子系KV值 ,取當月總消費(未滿1000kv也列入)
                    if (sales.rank >= (int)SalesRankState.manager)
                    {//經理人以上才需要計算
                        r_kv_sum = sales.SettleCalRSub.Sum(x => x.KV);
                    }
                    #endregion
                    #region 計算直推經理人是否達30在線&下線總消費額
                    int count_manager = 0;
                    int l_kv_sum = 0;
                    //找出消費滿1000kv且等級為經理人以上且下線有達三位消費滿1000kv
                    if (sales.rank >= (int)SalesRankState.operationsCenter)
                    {//營運中心以上才需要計算                                           
                        foreach (var sub in sales.SettleCalRSub.Where(x => x.KV >= 1000 & x.rank >= (int)SalesRankState.manager))
                        {
                            if (sub.SettleCalRSub.Where(x => x.KV >= 1000).Count() >= 3)
                                count_manager++;
                        }
                        if (count_manager >= 30)
                        {
                            l_kv_sum = sales.SettleCalRSub.Traverse(x => x.SettleCalRSub).Sum(x => x.KV);
                        }
                    }
                    #endregion
                    #region 計算直推營運中心營業總kv
                    var rc_kv_sum = 0;
                    if (sales.rank == (int)SalesRankState.managementOffice)
                    {//管理處以上才需要計算
                        rc_kv_sum = sales.SettleCalRSub.Where(x => x.rank >= (int)SalesRankState.operationsCenter)
                                                             .Traverse(x => x.SettleCalRSub).Sum(x => x.KV);
                    }
                    #endregion

                    md.settle_id = settle.settle_id;
                    md.y = y;
                    md.m = m;

                    md.sales_no = sales.sales_no;
                    md.sales_name = sales.sales_name;
                    md.rank = sales.rank;

                    md.kv_p_sum = sales.KV;//個人_kv總計
                    md.kv_g_sum = cal_kv_sum;//共享圈_kv總計
                    md.kv_r_sum = r_kv_sum;//直推會員_kv總計
                    md.kv_l_sum = l_kv_sum;//直推+間接會員_kv總計
                    md.kv_rc_sum = rc_kv_sum;//直推營運中心營業額_kv總計

                    md.count_manager = count_manager;//直推經理人在線人數

                    var x1 = Convert.ToInt32(cal_kv_sum * 0.01);
                    var x2 = Convert.ToInt32(sales.KV * 0.75);

                    md.a = x1 > x2 ? x2 : x1;

                    #region 上月累計獎金
                    if (p != null)
                    {
                        md.a_p = p.a;
                        md.b_p = p.b;
                    }
                    else
                    {
                        md.a_p = 0;
                        md.b_p = 0;
                    }
                    #endregion

                    //計算本月累計回饋金
                    md.b = x2 + md.b_p - md.a;

                    if (sales.rank >= (int)SalesRankState.manager) //經理人獎金
                    {
                        md.bound = Convert.ToInt32(md.kv_r_sum * 0.12);
                    }
                    if (sales.rank == (int)SalesRankState.operationsCenter & count_manager >= 30) //營運中心
                    {//30位經理人在線
                        md.center_bonus = Convert.ToInt32(md.kv_l_sum * 0.02);
                    }
                    if (sales.rank == (int)SalesRankState.managementOffice & count_manager >= 30)//管理處
                    {//30位經理人在線
                        md.center_bonus = Convert.ToInt32((md.kv_l_sum - md.kv_rc_sum) * 0.02);//管理處的營運中心紅利算法(與rank=營運中心)不太一樣
                        md.office_bonus = Convert.ToInt32(md.kv_rc_sum * 0.01);
                    }

                    db0.SettleDetail.Add(md);

                    #endregion
                }
                #endregion

                #region 消費未滿1000kv(計算累計回饋)
                var accumulate_kv_data = db0.SettleCal.Where(x => x.KV < 1000 & x.sales_no != "A").ToList();
                foreach (var sales in accumulate_kv_data)
                {
                    #region MyRegion
                    var p = sales_settle_pre.FirstOrDefault(x => x.sales_no == sales.sales_no);
                    var pp = sales_settle_pre.FirstOrDefault(x => x.sales_no == sales.sales_no);
                    var md = new SettleDetail();

                    md.settle_id = settle.settle_id;
                    md.y = y;
                    md.m = m;

                    md.sales_no = sales.sales_no;
                    md.sales_name = sales.sales_name;
                    md.rank = sales.rank;

                    md.kv_p_sum = sales.KV;//個人_kv總計
                    md.kv_g_sum = 0;//共享圈_kv總計
                    md.kv_r_sum = 0;//直推會員_kv總計
                    md.kv_l_sum = 0;//直推+間接會員_kv總計
                    md.kv_rc_sum = 0;//直推營運中心營業額_kv總計

                    md.count_manager = 0;//直推經理人在線人數
                    md.bound = 0;//經理人獎金
                    md.center_bonus = 0;//營運中心獎金
                    md.office_bonus = 0;//管理處獎金

                    //var x1 = Convert.ToInt32(cal_kv_sum * 0.01);
                    var x2 = Convert.ToInt32(sales.KV * 0.75);

                    md.a = 0;//未滿1000kv回饋金為0

                    #region 上月累計獎金
                    int pp_kv_p_sum = 0;//上上個月個人_kv總計
                    int p_kv_p_sum = 0;//上個月個人_kv總計
                    if (p != null)
                    {
                        md.a_p = p.a;
                        md.b_p = p.b;
                        p_kv_p_sum = p.kv_p_sum;
                    }
                    else
                    {
                        md.a_p = 0;
                        md.b_p = 0;
                    }
                    pp_kv_p_sum = pp != null ? pp.kv_p_sum : 0;
                    #endregion

                    //計算本月累計回饋金
                    md.b = x2 + md.b_p - md.a;
                    //連續三個月消費未滿1000kv累計回饋金歸0
                    if (pp_kv_p_sum < 1000 & p_kv_p_sum < 1000)
                        md.b = 0;

                    db0.SettleDetail.Add(md);

                    #endregion
                }
                #endregion

                db0.SaveChangesAsync().Wait();

                r.result = true;
                return r;
            }
            catch (Exception ex)
            {
                r.result = false;
                r.message = ex.Message;
                return r;
            }
            finally
            {
                db0.Dispose();
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 查詢該員其下共享圈樹狀結構會員
        /// </summary>
        /// <param name="sales_no"></param>
        /// <returns></returns>
        public SalesTree GetShareBySales(string sales_no, string exexclude_no)
        {

            using (db0 = getDB0)
            {
                var sales = db0.Sales.Find(sales_no);
                var data = sales.ShareSub
                    .Traverse(x => x.ShareSub).Where(x => x.share_level + 4 >= sales.share_level).ToList();

                SalesTree n = new SalesTree()
                {
                    sales_no = sales_no,
                    sales_name = sales.sales_name,
                    sub = null
                };

                IList<SalesTree> L = new List<SalesTree>();
                foreach (var t in sales.ShareSub)
                {
                    var m = new SalesTree()
                    {
                        sales_no = t.sales_no,
                        sales_name = t.sales_name,
                        sub = null
                    };

                    var k = QSub(t.sales_no, data);
                    m.sub = k;
                    m.sub_count = k.Length;
                    L.Add(m);
                }
                n.sub_count = L.Count();
                n.sub = ReMarkData(L, exexclude_no);
                return n;
            }

        }
Exemplo n.º 5
0
        public ResultInfo SettleCal(int y, int m)
        {
            db0 = getDB0;
            var r = new ResultInfo();
            try
            {
                #region MyRegion
                //上個月日期
                var p_date = DateTime.Parse(y + "/" + m + "/1").AddMonths(-1);

                //清空 SettleCal 資料
                string sql = "delete from SettleCal where sales_no!='A'";
                db0.Database.ExecuteSqlCommandAsync(sql).Wait();

                //清楚計算月的資料
                sql = "delete from SettleDetail where y=@y and m=@m";
                SqlParameter[] sps = new SqlParameter[] { new SqlParameter("@y", y), new SqlParameter("@m", m) };
                db0.Database.ExecuteSqlCommandAsync(sql, sps).Wait();

                var sales_colle = db0.Sales.Select(x => new SalesCalInfo()
                {
                    sales_no = x.sales_no,
                    sales_name = x.sales_name,
                    rank = x.rank,
                    share_sn = x.share_sn,
                    share_level = x.share_level,
                    share_name = x.ShareParent.sales_name
                }).Where(x => x.sales_no != "A").ToList(); //取得會員

                var sales_sum_kv = db0.PurchaseDetail
                .Where(x => x.Purchase.set_date.Year == y && x.Purchase.set_date.Month == m)
                .GroupBy(x => new { x.Purchase.sales_no })
                .Select(g => new { sales_no = g.Key.sales_no, sum_kv = g.Sum(x => x.kv_sub_total) }).ToList();

                foreach (var sales in sales_colle)
                {
                    var md = new SettleCal();
                    var obj = sales_sum_kv.FirstOrDefault(x => x.sales_no == sales.sales_no);
                    if (obj != null)
                    {
                        md.sales_no = sales.sales_no;
                        md.sales_name = sales.sales_name;
                        md.rank = sales.rank;
                        md.share_level = sales.share_level;
                        md.share_sn = sales.share_sn;
                        md.share_name = sales.share_name;
                        md.KV = obj.sum_kv;
                    }
                    else
                    {
                        md.sales_no = sales.sales_no;
                        md.sales_name = sales.sales_name;
                        md.rank = sales.rank;
                        md.share_level = sales.share_level;
                        md.share_sn = sales.share_sn;
                        md.share_name = sales.share_name;
                        md.KV = 0;
                    }
                    db0.SettleCal.Add(md);
                }
                //以上只算出每位會員KV值
                db0.SaveChangesAsync().Wait();

                var sales_kv_data = db0.SettleCal.Where(x => x.KV >= 1000).ToList();

                //取得上個月結算全部資料
                var sales_settle_pre = db0.SettleDetail.Where(x => x.y == p_date.Year && x.m == p_date.Month).ToList();
                #endregion

                foreach (var sales in sales_kv_data)
                {
                    #region MyRegion
                    var p = sales_settle_pre.FirstOrDefault(x => x.sales_no == sales.sales_no);
                    var md = new SettleDetail();

                    //加總子系KV值 且往下只探四層
                    var cal_kv_sum = sales.SettleCalSub
                        .Traverse(x => x.SettleCalSub)
                        .Where(x => x.share_level < sales.share_level + 4)
                        .Sum(x => x.KV);

                    md.settle_id = 1;
                    md.y = y;
                    md.m = m;

                    md.sales_no = sales.sales_no;
                    md.sales_name = sales.sales_name;
                    md.rank = sales.rank;

                    md.kv_p_sum = sales.KV;
                    md.kv_g_sum = cal_kv_sum;

                    var x1 = Convert.ToInt32(cal_kv_sum * 0.01);
                    var x2 = Convert.ToInt32(sales.KV * 0.75);

                    md.a = x1 > x2 ? x2 : x1;

                    if (p != null)
                    {
                        md.a_p = p.a;
                        md.b_p = p.b;
                    }
                    else
                    {
                        md.a_p = 0;
                        md.b_p = 0;
                    }

                    //計算本月累計回饋金
                    md.b = x2 + md.b_p - md.a_p;

                    //全部總KV
                    var total_kv = sales_kv_data.Sum(x => x.KV);
                    if (sales.rank == 1 || sales.rank == 2) //經理人獎金
                    {
                        var f = sales.SettleCalSub.Sum(x => x.KV) * 0.12;
                    }

                    if (sales.rank == 2) //營運中心
                    {

                    }

                    db0.SettleDetail.Add(md);

                    #endregion
                }

                db0.SaveChangesAsync().Wait();

                r.result = true;
                return r;
            }
            catch (Exception ex)
            {
                r.result = false;
                r.message = ex.Message;
                return r;
            }
            finally
            {
                db0.Dispose();
            }
        }
Exemplo n.º 6
0
 public void setParmValue(ParmDefine ParmName, object value)
 {
     db0 = getDB0;
     string str = Enum.GetName(typeof(ParmDefine), ParmName);
     var item = db0.i_Parm.Where(x => x.ParmName == str).FirstOrDefault();
     if (item != null)
     {
         if (item.ParmType == "S")
         {
             item.S = (string)value;
         }
         if (item.ParmType == "I")
         {
             item.I = (int)value;
         }
         if (item.ParmType == "F")
         {
             item.F = (decimal)value;
         }
         if (item.ParmType == "D")
         {
             item.D = (DateTime)value;
         }
         if (item.ParmType == "B")
         {
             item.B = (bool)value;
         }
     }
     db0.SaveChanges();
 }
Exemplo n.º 7
0
 public object getParmValue(ParmDefine ParmName)
 {
     db0 = getDB0;
     string getName = Enum.GetName(typeof(ParmDefine), ParmName);
     var item = db0.i_Parm.Where(x => x.ParmName == getName).FirstOrDefault();
     if (item != null)
     {
         if (item.ParmType == "S")
         {
             return item.S;
         }
         if (item.ParmType == "I")
         {
             return item.I;
         }
         if (item.ParmType == "F")
         {
             return item.F;
         }
         if (item.ParmType == "D")
         {
             return item.D;
         }
         if (item.ParmType == "B")
         {
             return item.B;
         }
         else
         {
             return null;
         }
     }
     else
     {
         return null;
     }
 }
Exemplo n.º 8
0
        public void GetPreOrderLevel(string sales_no)
        {
            using (db0 = getDB0)
            {
                var sales = db0.Sales.Find(sales_no);
                var data = sales.ShareSub
                    .Traverse(x => x.ShareSub).Where(x => x.share_level >= sales.share_level).ToList();

                foreach (var t in sales.ShareSub)
                {
                    t.share_level = sales.share_level + 1;

                    TreeSub(t.sales_no, data);
                }

                db0.SaveChanges();
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// 推薦人及其下線
        /// </summary>
        /// <param name="sales_no"></param>
        /// <returns></returns>
        public SalesTree GetRemmonedBySales(string sales_no)
        {

            using (db0 = getDB0)
            {
                var sales = db0.Sales.Find(sales_no);
                var data = sales.SalesSub.Traverse(x => x.SalesSub).ToList();

                SalesTree n = new SalesTree()
                {
                    sales_no = sales_no,
                    sales_name = sales.sales_name,
                    sales_rank = sales.rank,
                    sub = null
                };

                n.sub_count = sales.SalesSub.Count();
                #region get kv、total
                DateTime now = DateTime.Now;
                DateTime past = now.AddMonths(-1);
                var thisMonth = sales.Purchase.Where(x => x.sales_no == sales_no &
                                                            x.set_date.Year == now.Year &
                                                            x.set_date.Month == now.Month &
                                                            (x.state == (int)PurchaseState.complete || x.state == (int)PurchaseState.onSite)).ToList();
                var lastMonth = sales.Purchase.Where(x => x.sales_no == sales_no &
                                                              x.set_date.Year == past.Year &
                                                              x.set_date.Month == past.Month &
                                                              (x.state == (int)PurchaseState.complete || x.state == (int)PurchaseState.onSite)).ToList();
                n.kv_total = (int)thisMonth.Sum(x => x.kv_total);
                n.total = (int)thisMonth.Sum(x => x.total);
                n.last_kv_total = (int)lastMonth.Sum(x => x.kv_total);
                n.last_total = (int)lastMonth.Sum(x => x.total);
                #endregion
                IList<SalesTree> L = new List<SalesTree>();
                foreach (var t in sales.SalesSub)
                {
                    var m = new SalesTree()
                    {
                        sales_no = t.sales_no,
                        sales_name = t.sales_name,
                        sales_rank = t.rank,
                        sub = null
                    };
                    var k = QSubBySales(t.sales_no, data);
                    m.sub = k;
                    m.sub_count = k.Length;
                    #region get kv、total
                    var subthisMonth = t.Purchase.Where(x => x.sales_no == t.sales_no &
                                                             x.set_date.Year == now.Year &
                                                             x.set_date.Month == now.Month &
                                                             (x.state == (int)PurchaseState.complete || x.state == (int)PurchaseState.onSite)).ToList();
                    var sublastMonth = t.Purchase.Where(x => x.sales_no == t.sales_no &
                                                             x.set_date.Year == past.Year &
                                                             x.set_date.Month == past.Month &
                                                             (x.state == (int)PurchaseState.complete || x.state == (int)PurchaseState.onSite)).ToList();
                    m.kv_total = (int)subthisMonth.Sum(x => x.kv_total);
                    m.total = (int)subthisMonth.Sum(x => x.total);
                    m.last_kv_total = (int)sublastMonth.Sum(x => x.kv_total);
                    m.last_total = (int)sublastMonth.Sum(x => x.total);
                    #endregion
                    L.Add(m);
                }
                n.sub = L;
                return n;
            }
        }