public SalesPersonRankInfo GetSalePersonRankInfo(int sPersonId)
    {
        SalesPersonRankInfo info = null;

        for (int i = 0; i < AllSalesPersonRankInfos.Count; i++)
        {
            if (AllSalesPersonRankInfos[i].SalePersonID == sPersonId)
            {
                info = AllSalesPersonRankInfos[i];
            }
        }
        if (info == null)
        {
            info = new SalesPersonRankInfo();
            info.SalePersonID     = sPersonId;
            info.SalesPsersonName = SalesDataSystem.SystemDatas.SalesPersonData.GetSalesNameByPersonID(sPersonId);
            if (string.IsNullOrEmpty(info.SalesPsersonName))
            {
                return(null);
            }
            info.LeastSales       = SalesDataSystem.SystemDatas.SalesPersonData.GetLeastSalesByPersonID(sPersonId);
            info.TargetSales      = SalesDataSystem.SystemDatas.SalesPersonData.GetTargetSalesByPersonID(sPersonId);
            info.Ranking          = 0;
            info.PerformanceSales = 0;
            info.CompleteRate     = 0;
            AllSalesPersonRankInfos.Add(info);
        }
        return(info);
    }
Exemple #2
0
 public void SetValue(SalesPersonRankInfo info)
 {
     Text_StoreName.text         = info.StoreName;
     Text_SalePersonName.text    = info.SalesPsersonName;
     Text_LeastSales.text        = info.LeastSales.ToString();
     Text_TargetSales.text       = info.TargetSales.ToString();
     Text_Ranking.text           = info.Ranking.ToString();
     Text_PerformanceaSales.text = info.PerformanceSales.ToString();
     Text_completeRate.text      = (info.CompleteRate * 100).ToString("f2");
 }
    private void CreateSalesPersonRankDailySaleDataPrefab(SalesPersonRankInfo info)
    {
        GameObject newGo = GameObject.Instantiate(SalePsersonRankinDataPrefab);

        newGo.transform.SetParent(SalesPersonRankingDataContent);
        newGo.transform.localScale = Vector3.one;
        newGo.transform.SetAsLastSibling();
        SingleSalePersonRankPrefabInfo prefabInfo = newGo.GetComponent <SingleSalePersonRankPrefabInfo>();

        prefabInfo.SetValue(info);
        salePersonRankingDataPrefabList.Add(prefabInfo);
        newGo.SetActive(true);
    }
 private void InitAllSalePersonRankInfo()
 {
     foreach (var s in SalesDataSystem.SystemDatas.SalesPersonData.AllSalePersonInfos)
     {
         SalesPersonRankInfo salepersonRankinfo = new SalesPersonRankInfo();
         salepersonRankinfo.StoreName        = s.StoreName;
         salepersonRankinfo.SalePersonID     = s.SalePsersonID;
         salepersonRankinfo.SalesPsersonName = s.Name;
         salepersonRankinfo.LeastSales       = s.LeastSales;
         salepersonRankinfo.TargetSales      = s.TargetSales;
         salepersonRankinfo.Ranking          = 0;
         salepersonRankinfo.PerformanceSales = 0;
         salepersonRankinfo.CompleteRate     = 0;
         AllSalesPersonRankInfos.Add(salepersonRankinfo);
     }
 }
    /// <summary>
    /// 根据输入的数据计算每日销售信息
    /// 门店销售信息,月销售信息
    /// </summary>
    /// <param name="date"></param>
    public void CalculateData(string date)
    {
        string         day         = date.Substring(6, 2);
        DailySalesData thisDayData = LoadDailyData(date);

        if (int.Parse(day) == 1)
        {
            thisDayData.Reset();
        }
        else
        {
            DailySalesData lastDayData = LoadLastDailyData(date);
            thisDayData.TotalSales          = 0;
            thisDayData.MonthSaleDataToDate = lastDayData.MonthSaleDataToDate.Clone();
            thisDayData.ProductTransactionInfos.Clear();
            #region storeDailyDate
            for (int i = 0; i < lastDayData.AllStoreDailySaleData.Count; i++)
            {
                StoreDailyInfo lastStoreDayInfo  = lastDayData.AllStoreDailySaleData[i];
                StoreDailyInfo todaystoreDayinfo = thisDayData.GetStoreDailyInfo(lastStoreDayInfo.StoreID);
                todaystoreDayinfo.MonthEnterCustomerNubmer = lastStoreDayInfo.MonthEnterCustomerNubmer + todaystoreDayinfo.TodayEnterCustomerNumber;
                todaystoreDayinfo.MonthTransaction         = lastStoreDayInfo.MonthTransaction;
                todaystoreDayinfo.MonthTotalSales          = lastStoreDayInfo.MonthTotalSales;
                todaystoreDayinfo.OldCustomerCount         = lastStoreDayInfo.OldCustomerCount;;
                todaystoreDayinfo.OldCustomerSales         = lastStoreDayInfo.OldCustomerSales;
                todaystoreDayinfo.NewCustomerCount         = lastStoreDayInfo.NewCustomerCount;
                todaystoreDayinfo.NewCustomerSales         = lastStoreDayInfo.NewCustomerSales;
                todaystoreDayinfo.CompletionRate           = lastStoreDayInfo.CompletionRate;
            }
            for (int i = 0; i < thisDayData.AllStoreDailySaleData.Count; i++)
            {
                StoreDailyInfo todayStoreDayInfo = thisDayData.AllStoreDailySaleData[i];
                todayStoreDayInfo.TodaySales      = 0;
                todayStoreDayInfo.TodyTransaction = 0;
                todayStoreDayInfo.TodayProductTransactions.Clear();
            }
            #endregion
            #region RankingInfo
            for (int i = 0; i < lastDayData.AllSalesPersonRankInfos.Count; i++)
            {
                SalesPersonRankInfo lastRankingInfo  = lastDayData.AllSalesPersonRankInfos[i];
                SalesPersonRankInfo todayRankingInfo = thisDayData.GetSalePersonRankInfo(lastRankingInfo.SalePersonID);
                if (todayRankingInfo == null)
                {
                    continue;
                }
                todayRankingInfo.Ranking          = lastRankingInfo.Ranking;
                todayRankingInfo.PerformanceSales = lastRankingInfo.PerformanceSales;
                todayRankingInfo.CompleteRate     = lastRankingInfo.CompleteRate;
            }
            for (int i = 0; i < thisDayData.AllSalesPersonRankInfos.Count; i++)
            {
                SalesPersonRankInfo todayRankinfo   = thisDayData.AllSalesPersonRankInfos[i];
                SalesPersonRankInfo lastRankingInfo = lastDayData.GetSalePersonRankInfo(todayRankinfo.SalePersonID);
                todayRankinfo.Ranking          = lastRankingInfo.Ranking;
                todayRankinfo.PerformanceSales = lastRankingInfo.PerformanceSales;
                todayRankinfo.CompleteRate     = lastRankingInfo.CompleteRate;
            }
            #endregion
        }
        for (int i = 0; i < thisDayData.AllSingleSalesData.Count; i++)
        {
            SingleSalesData singleSaleData = thisDayData.AllSingleSalesData[i];
            thisDayData.TotalSales += singleSaleData.TotalPrice;
            ProductTransactionInfo trans = thisDayData.GetTransactionInfo(singleSaleData.ProductID, singleSaleData.ProductName);
            trans.TransactionCount += singleSaleData.SaleCount;
            #region 计算门店每日数据
            StoreDailyInfo storeDayInfo = thisDayData.GetStoreDailyInfo(singleSaleData.StoreID);
            if (singleSaleData.TransactionPercent > 0)
            {
                storeDayInfo.TodyTransaction += 1;
            }
            if (singleSaleData.TransactionPercent > 0)
            {
                storeDayInfo.MonthTransaction += 1;
            }
            storeDayInfo.TodaySales += singleSaleData.TotalPrice;
            ProductTransactionInfo transaction = storeDayInfo.GetTransactionInfo(singleSaleData.ProductID, singleSaleData.ProductName);
            transaction.TransactionCount += singleSaleData.SaleCount;
            storeDayInfo.MonthTotalSales += singleSaleData.TotalPrice;
            storeDayInfo.CompletionRate   = storeDayInfo.MonthTotalSales / storeDayInfo.TargetSales;
            if (singleSaleData.IsNewCustomer)
            {
                if (singleSaleData.TransactionPercent > 0)
                {
                    storeDayInfo.NewCustomerCount += 1;
                }
                storeDayInfo.NewCustomerSales += singleSaleData.TotalPrice;
            }
            else
            {
                if (singleSaleData.TransactionPercent > 0)
                {
                    storeDayInfo.OldCustomerCount += 1;
                }
                storeDayInfo.OldCustomerSales += singleSaleData.TotalPrice;
            }
            #endregion
            #region 计算本月数据
            thisDayData.MonthSaleDataToDate.TotalSales += singleSaleData.TotalPrice;
            if (singleSaleData.IsNewCustomer)
            {
                thisDayData.MonthSaleDataToDate.NewCustomerTransactions += (1 * singleSaleData.TransactionPercent);
                thisDayData.MonthSaleDataToDate.NewCustomerSales        += singleSaleData.TotalPrice;
            }
            else
            {
                thisDayData.MonthSaleDataToDate.OldCustomerTransactions += (1 * singleSaleData.TransactionPercent);
                thisDayData.MonthSaleDataToDate.OldCustomerSales        += singleSaleData.TotalPrice;
            }
            #endregion
            #region
            int salesPersonId = SalesDataSystem.SystemDatas.SalesPersonData.GetSalesPersonIdByName(singleSaleData.SalesPerson1);
            SalesPersonRankInfo salesPersonRankingInfo = thisDayData.GetSalePersonRankInfo(salesPersonId);
            salesPersonRankingInfo.PerformanceSales += singleSaleData.TotalPrice;
            #endregion
        }
        for (int i = 0; i < thisDayData.AllStoreDailySaleData.Count; i++)
        {
            StoreDailyInfo todayStoreDayInfo = thisDayData.AllStoreDailySaleData[i];
            todayStoreDayInfo.CompletionRate = todayStoreDayInfo.MonthTotalSales / todayStoreDayInfo.TargetSales;
        }
        thisDayData.AllSalesPersonRankInfos.Sort((a, b) =>
        {
            if (a.PerformanceSales > b.PerformanceSales)
            {
                return(-1);
            }
            else if (a.PerformanceSales == b.PerformanceSales)
            {
                return(0);
            }
            else
            {
                return(1);
            }
        });
        for (int i = 0; i < thisDayData.AllSalesPersonRankInfos.Count; i++)
        {
            SalesPersonRankInfo rankinginfo = thisDayData.AllSalesPersonRankInfos[i];
            rankinginfo.Ranking      = i + 1;
            rankinginfo.CompleteRate = rankinginfo.PerformanceSales / rankinginfo.TargetSales;
        }
    }
Exemple #6
0
    public static void ExportDailyData(string date, DailySalesData newinfo)
    {
        string year        = date.Substring(0, 4);
        string month       = date.Substring(4, 2);
        string day         = date.Substring(6, 2);
        string persistPath = string.Format("{0}/{1}/{2}/{3}/{4}ExportData.txt", Application.persistentDataPath, "ExportData", year, month, day);
        string folder      = Path.GetDirectoryName(persistPath);

        Utility.CreateDir(persistPath);
        string         DailySalesDataMonthPart                = (Resources.Load("Configs/DailySalesDataMonthPart") as TextAsset).text;
        string         DailySalesDataStorePart                = (Resources.Load("Configs/DailySalesDataStorePart") as TextAsset).text;
        string         DailySalesDataCustomerServicePart      = (Resources.Load("Configs/DailySalesDataCustomerServicePart") as TextAsset).text;
        string         DailySalesDataDejiStorePart            = (Resources.Load("Configs/DailySalesDataDejiStorePart") as TextAsset).text;
        string         DailySalesDataCustomerServiceStorePart = (Resources.Load("Configs/DailySalesDataCustomersServiceStorePart") as TextAsset).text;
        string         productTransactionInfo = GetMonthProductTransactionInfo(newinfo);
        MonthSalesData thisMonthData          = newinfo.MonthSaleDataToDate;

        System.Text.StringBuilder strb = new System.Text.StringBuilder(500);
        string exportInfo      = null;
        string exportmonthInfo = string.Format(DailySalesDataMonthPart, year, month, day, newinfo.TotalSales, productTransactionInfo,
                                               thisMonthData.TotalSales, thisMonthData.NewCustomerTransactions, thisMonthData.NewCustomerSales, thisMonthData.OldCustomerTransactions,
                                               thisMonthData.OldCustomerSales);

        strb.Append(exportmonthInfo);

        int index = 1;

        #region 一般的店面处理
        for (int i = 0; i < newinfo.AllStoreDailySaleData.Count; i++)
        {
            StoreDailyInfo sdi = newinfo.AllStoreDailySaleData[i];
            if (sdi.StoreName == "德基广场店" || sdi.StoreName == "德基BHG店" ||
                sdi.StoreName == "广播进线" || sdi.StoreName == "售后维护")
            {
                continue;
            }
            string storeproductInfo     = GetStoreProductTransactionInfo(sdi);
            string exportStoreDailyInfo = string.Format(DailySalesDataStorePart, index, sdi.StoreName, month, sdi.LeastSales / 10000f, sdi.TargetSales / 10000f,
                                                        year, month, day, sdi.TodayEnterCustomerNumber, sdi.MonthEnterCustomerNubmer, sdi.TodyTransaction, sdi.MonthTransaction, sdi.TodaySales, storeproductInfo,
                                                        sdi.MonthTotalSales, (sdi.CompletionRate * 100).ToString("F2"), sdi.OldCustomerSales, sdi.OldCustomerCount,
                                                        sdi.NewCustomerSales, sdi.NewCustomerCount);
            strb.Append(exportStoreDailyInfo);
            index++;
        }
        #endregion

        #region 德基广场店处理
        int            dejistoreId          = SalesDataSystem.SystemDatas.StoreSysData.GetStoreIDByName("德基广场店");
        StoreDailyInfo dejiStoreInfo        = newinfo.GetStoreDailyInfo(dejistoreId);
        string         dejiStoreProductInfo = GetStoreProductTransactionInfo(dejiStoreInfo);
        int            dejiBHGstoreId       = SalesDataSystem.SystemDatas.StoreSysData.GetStoreIDByName("德基BHG店");
        StoreDailyInfo dejiBhgStoreInfo     = newinfo.GetStoreDailyInfo(dejiBHGstoreId);
        string         dejiBhgProductInfo   = GetStoreProductTransactionInfo(dejiBhgStoreInfo);
        string         dejiStoreDailyInfo   = string.Format(DailySalesDataDejiStorePart, index, month, dejiStoreInfo.LeastSales / 10000f, dejiStoreInfo.TargetSales / 10000f,
                                                            year, month, day, (dejiStoreInfo.TodayEnterCustomerNumber + dejiBhgStoreInfo.TodayEnterCustomerNumber), (dejiBhgStoreInfo.MonthEnterCustomerNubmer + dejiBhgStoreInfo.MonthEnterCustomerNubmer), (dejiStoreInfo.TodyTransaction + dejiBhgStoreInfo.TodyTransaction), (dejiStoreInfo.MonthTransaction + dejiBhgStoreInfo.MonthTransaction)
                                                            , (dejiStoreInfo.TodaySales + dejiBhgStoreInfo.TodaySales), dejiStoreProductInfo, dejiBhgProductInfo, (dejiStoreInfo.MonthTotalSales + dejiBhgStoreInfo.MonthTotalSales), ((dejiStoreInfo.CompletionRate + dejiBhgStoreInfo.CompletionRate) * 100).ToString("F2"), (dejiStoreInfo.OldCustomerSales), (dejiStoreInfo.OldCustomerCount),
                                                            (dejiStoreInfo.NewCustomerSales), (dejiStoreInfo.NewCustomerCount), dejiBhgStoreInfo.MonthTotalSales, (dejiBhgStoreInfo.NewCustomerCount + dejiBhgStoreInfo.OldCustomerCount));
        strb.Append(dejiStoreDailyInfo);
        index++;
        #endregion
        strb.Append(Environment.NewLine);
        #region 客服部处理
        int            broadcastStoreId         = SalesDataSystem.SystemDatas.StoreSysData.GetStoreIDByName("广播进线");
        StoreDailyInfo broadCastStoreInfo       = newinfo.GetStoreDailyInfo(broadcastStoreId);
        string         broadCastProductInfo     = GetStoreProductTransactionInfo(broadCastStoreInfo);
        int            afterSaleStoreId         = SalesDataSystem.SystemDatas.StoreSysData.GetStoreIDByName("售后维护");
        StoreDailyInfo afterSaleStoreInfo       = newinfo.GetStoreDailyInfo(afterSaleStoreId);
        string         afterSaleProductInfo     = GetStoreProductTransactionInfo(afterSaleStoreInfo);
        string         customerServiceDailyInfo = string.Format(DailySalesDataCustomerServiceStorePart, index, month, broadCastStoreInfo.LeastSales / 10000f, broadCastStoreInfo.TargetSales / 10000f,
                                                                year, month, day, broadCastStoreInfo.TodyTransaction, broadCastStoreInfo.TodaySales, broadCastProductInfo, broadCastStoreInfo.MonthTotalSales,
                                                                afterSaleStoreInfo.TodyTransaction, afterSaleStoreInfo.TodaySales, afterSaleProductInfo, afterSaleStoreInfo.MonthTotalSales,
                                                                (broadCastStoreInfo.MonthTotalSales + afterSaleStoreInfo.MonthTotalSales), (broadCastStoreInfo.NewCustomerSales + afterSaleStoreInfo.NewCustomerSales), (broadCastStoreInfo.NewCustomerCount + afterSaleStoreInfo.NewCustomerCount),
                                                                (broadCastStoreInfo.OldCustomerSales + afterSaleStoreInfo.OldCustomerSales), (broadCastStoreInfo.OldCustomerCount + afterSaleStoreInfo.OldCustomerCount), (((broadCastStoreInfo.CompletionRate + afterSaleStoreInfo.CompletionRate) * 100).ToString("F2")));
        strb.Append(customerServiceDailyInfo);
        #endregion

        exportInfo = strb.ToString();
        File.WriteAllText(persistPath, exportInfo);

        string rankingPersistPath          = string.Format("{0}/{1}/{2}/{3}/{4}ExportData_Ranking.txt", Application.persistentDataPath, "ExportData", year, month, day);
        System.Text.StringBuilder rankstrb = new System.Text.StringBuilder(500);
        string rankingheadtitle            = "门店,姓名,保底(万),目标(万),排名,业绩(元),完成率(100%)" + Environment.NewLine;
        rankstrb.Append(rankingheadtitle);
        string rankinfoformat = "{0},{1},{2},{3},{4},{5},{6}%" + Environment.NewLine;
        for (int i = 0; i < newinfo.AllSalesPersonRankInfos.Count; i++)
        {
            SalesPersonRankInfo rankinginfo = newinfo.AllSalesPersonRankInfos[i];
            string singleinfo = string.Format(rankinfoformat, rankinginfo.StoreName, rankinginfo.SalesPsersonName, rankinginfo.LeastSales / 10000,
                                              rankinginfo.TargetSales / 10000, rankinginfo.Ranking, rankinginfo.PerformanceSales, (int)(rankinginfo.CompleteRate * 100));
            rankstrb.Append(singleinfo);
        }
        exportInfo = rankstrb.ToString();
        File.WriteAllText(rankingPersistPath, exportInfo);
        OpenFolder(folder);
    }