コード例 #1
0
 public TotalsBO TotalCost(List<ReceiptItemBO> receipt)
 {
     return new TotalsBO()
     {
         DiscountSum = Math.Round(receipt.Sum(r => r.WellnessDiscount), 2),
         TaxSum = Math.Round(receipt.Sum(r => r.ItemTax), 2),
         TotalSum = Math.Round(receipt.Sum(r => r.ItemTotal), 2)
     };
 }
コード例 #2
0
        public static List<double> GetCorrelogram(List<double> excerpt, int k)
        {
            // sum of all elements
            double sum = excerpt.Sum();
            // init lsum (only left elements) and rsum (only right elements)
            // theirs size will be decreased
            double lsum = sum, rsum = sum;
            List<double> crl = new List<double> { 1 };
            for (int i = 1; i <= k; i++)
            {
                // subtract last left element from rsum
                rsum -= excerpt[i - 1];
                // subtract last right element from lsum
                lsum -= excerpt[excerpt.Count - i];
                // reduction of sum by dividing by N-K
                double rusum = rsum / (excerpt.Count - i), lusum = lsum / (excerpt.Count - i);
                // abv is expression in numerator

                double abv = 0, lund = 0, rund = 0;
                for (int j = 0; j < excerpt.Count - i; j++)
                {
                    abv += (excerpt[j] - lusum) * (excerpt[j + i] - rusum);
                    lund += (excerpt[j] - lusum) * (excerpt[j] - lusum);
                    rund += (excerpt[j + i] - rusum) * (excerpt[j + i] - rusum);
                }
                double und = Math.Sqrt(rund * lund);
                double val = abv == und ? 1.0 : abv / und;
                crl.Add(val);
            }
            return crl;
        }
コード例 #3
0
        private static void Main()
        {
            int num = Helpers.ValidateInputAsInt("How many numbers you would like to enter: ");
            List<double> numbers = new List<double>();

            // Fill array with numbers
            for (int i = 0; i < num; i++)
            {
                numbers.Add(Helpers.ValidateInputAsDouble("Enter value " + (i + 1) + ": "));
            }

            // Use of List methods
            Console.WriteLine("Minimal number is : {0}", numbers.Min());
            Console.WriteLine("Maximal number is : {0}", numbers.Max());
            Console.WriteLine("Sum number is : {0}", numbers.Sum());
            Console.WriteLine("Average number is : {0}", numbers.Average());
        }
コード例 #4
0
        /// <summary>
        /// 消费数据分析
        /// </summary>
        /// <returns></returns>
        bool cosumeRecordAnalysis()
        {
            this._IsRunning = true;
            bool res = true;
            try
            {
                bool canStart = false;
                TimeSpan tsNow = new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
                foreach (TimeSpan item in this._ListCollectSpan)
                {
                    TimeSpan tsEnd = new TimeSpan();
                    if (item.Hours == 23)
                    {
                        tsEnd = new TimeSpan(23, 59, 59);
                    }
                    else
                    {
                        tsEnd = new TimeSpan(item.Hours + 1, item.Minutes, 0);
                    }

                    if (tsNow > item && tsNow < tsEnd)
                    {
                        canStart = true;
                        break;
                    }
                }
                if (!canStart)
                {
                    this._IsRunning = false;
                    return false;
                }

                //消费机最后同步时间
                DateTime dtMacSync = DateTime.MinValue;
                //找出消费机主档信息,检查是否全部收数完毕,是则进行平数处理,否则不操作
                #region 找出消费机主档信息,检查是否全部收数完毕,是则进行平数处理,否则不操作

                List<ConsumeMachineMaster_cmm_Info> listMachineInfos = this._IConsumeMachineBL.SearchRecords(new ConsumeMachineMaster_cmm_Info()
                    {
                        cmm_cStatus = Common.DefineConstantValue.ConsumeMachineStatus.Using.ToString(),
                    });
                if (listMachineInfos == null)
                {
                    this._IsRunning = false;
                    return false;
                }
                else
                {
                    if (listMachineInfos != null && listMachineInfos.Count > 0)
                    {
                        if (listMachineInfos != null && listMachineInfos.Count > 0)
                        {
                            dtMacSync = listMachineInfos[0].cmm_dLastAccessTime;
                        }
                    }

                    List<ConsumeMachineMaster_cmm_Info> listUnSyncMachineInfos = listMachineInfos.Where(x =>
                          x.cmm_dLastAccessTime.Hour != dtMacSync.Hour).ToList();
                    if (listUnSyncMachineInfos != null && listUnSyncMachineInfos.Count > 0)
                    {
                        this._IsRunning = false;
                        return false;
                    }

                    List<ConsumeMachineMaster_cmm_Info> listUnConnMachineInfos = listMachineInfos.Where(x =>
                        x.cmm_lIsActive == true
                        && x.cmm_lLastAccessRes == false
                        ).ToList();
                    if (listUnConnMachineInfos == null || (listUnConnMachineInfos != null && listUnConnMachineInfos.Count > 0))
                    {
                        this._IsRunning = false;
                        return false;
                    }
                }

                #endregion

                //就餐时段
                #region 学生真实就餐时段列表
                List<CodeMaster_cmt_Info> listMealTimeSpan = this._ICodeMasterBL.SearchRecords(new CodeMaster_cmt_Info()
                {
                    cmt_cKey1 = Common.DefineConstantValue.CodeMasterDefine.KEY1_MealTimeSpan
                });
                if (listMealTimeSpan == null || (listMealTimeSpan != null && listMealTimeSpan.Count < 1))
                {
                    this._IsRunning = false;
                    return false;
                }
                #endregion

                //定餐时段
                #region 学生定餐设置生成时间列表

                List<CodeMaster_cmt_Info> listBookingMealTimeSpan = this._ICodeMasterBL.SearchRecords(new CodeMaster_cmt_Info()
                {
                    cmt_cKey1 = Common.DefineConstantValue.CodeMasterDefine.KEY1_BWListUploadInterval
                });
                if (listBookingMealTimeSpan == null || (listBookingMealTimeSpan != null && listBookingMealTimeSpan.Count < 1))
                {
                    this._IsRunning = false;
                    return false;
                }

                #endregion

                //未结算的未可确认扣费的消费记录
                #region  获取当前所有未结算的未可确认扣费的消费记录

                List<PreConsumeRecord_pcs_Info> listUnSettlePreCost = this._IPreConsumeRecordBL.SearchRecords(new PreConsumeRecord_pcs_Info()
                {
                    pcs_cConsumeType = Common.DefineConstantValue.ConsumeMoneyFlowType.IndeterminateCost.ToString()
                });
                List<PreConsumeRecord_pcs_Info> listWaitSettlePreCost = this._IPreConsumeRecordBL.SearchRecords(new PreConsumeRecord_pcs_Info()
                {
                    pcs_cConsumeType = Common.DefineConstantValue.ConsumeMoneyFlowType.AdvanceMealCost.ToString()
                });
                listUnSettlePreCost.AddRange(listWaitSettlePreCost);
                if (listUnSettlePreCost != null)
                {
                    //条件分开两次进行筛选,方便数据观察
                    listUnSettlePreCost = listUnSettlePreCost.Where(x =>
                        x.pcs_lIsSettled == false//需要状态为未结算
                        ).ToList();
                    listUnSettlePreCost = listUnSettlePreCost.Where(x =>
                        x.pcs_dConsumeDate <= dtMacSync//使用消费机最后同步时间之前的未结算数据进行同步
                        ).ToList();
                }

                #endregion

                //对冲平数记录
                #region 获取当前所有对冲数据记录

                List<PreConsumeRecord_pcs_Info> listHedge = this._IPreConsumeRecordBL.SearchRecords(new PreConsumeRecord_pcs_Info()
                {
                    pcs_cConsumeType = Common.DefineConstantValue.ConsumeMoneyFlowType.HedgeFund.ToString()
                });
                listHedge = listHedge.Where(x =>
                    x.pcs_lIsSettled == false//需要为未结算状态
                    && x.pcs_dConsumeDate <= dtMacSync//需要为消费机最后同步前的数据
                    ).ToList();

                #endregion

                //未结算的消费记录
                #region 获取当前所有状态为未结算的打卡消费数据

                List<ConsumeRecord_csr_Info> listUnSettleCardCost = this._IConsumeRecordBL.SearchRecords(new ConsumeRecord_csr_Info()
                {
                    IsSettled = false
                });
                if (listUnSettleCardCost != null && listUnSettleCardCost.Count > 0)
                {
                    listUnSettleCardCost = listUnSettleCardCost.Where(x =>
                        x.csr_dConsumeDate <= dtMacSync//需要为消费机最后同步前的数据
                        ).ToList();
                }

                #endregion

                /*<Start-------------------------------------------用于最后数据处理的容器-------------------------------------------------->*/
                //待更新的打卡消费记录
                List<ConsumeRecord_csr_Info> listUpdate_Consume = new List<ConsumeRecord_csr_Info>();
                //待更新的预扣费记录
                List<PreConsumeRecord_pcs_Info> listUpdate_PreCost = new List<PreConsumeRecord_pcs_Info>();
                //无需要处理预扣费的消费记录
                List<ConsumeRecord_csr_Info> listUpdate_UnMealConsume = new List<ConsumeRecord_csr_Info>();
                //待删除的多余预扣费记录
                List<PreConsumeRecord_pcs_Info> listDelete_PreCost = new List<PreConsumeRecord_pcs_Info>();
                /*<End-------------------------------------------用于最后数据处理的容器--------------------------------------------------->*/

                if (listUnSettleCardCost != null && listUnSettleCardCost.Count > 0)//存在未结算处理的消费记录时
                {
                    #region 处理打卡数据(定餐打卡,饮料打卡,加菜打卡,热水打卡)

                    //逐条消费数据进行比对,用作处理未确认扣款记录和对冲记录
                    foreach (ConsumeRecord_csr_Info consumeItem in listUnSettleCardCost)
                    {
                        if (consumeItem.csr_cConsumeType == DefineConstantValue.ConsumeMachineType.StuSetmeal.ToString())
                        {
                            #region 处理定餐消费记录

                            //判断为定餐消费记录,用于消除未确定消费记录
                            List<PreConsumeRecord_pcs_Info> listResPreCost = listUnSettlePreCost.Where(x =>
                                  x.pcs_cUserID == consumeItem.csr_cCardUserID//需为消费用户对应ID
                                  && x.MealType == consumeItem.csr_cMealType//餐类型需要相同
                                      //&& x.pcs_dConsumeDate.Date == consumeItem.csr_dConsumeDate.Date
                                  && x.pcs_dAddDate.Date == consumeItem.csr_dConsumeDate.Date//以添加时间为准,找出
                                  && Math.Abs(x.pcs_fCost) == Math.Abs(consumeItem.csr_fConsumeMoney)//消费金额需一致
                                  ).ToList();
                            if (listResPreCost != null && listResPreCost.Count > 0)//!要注意这里会不会搜索出两条记录出来
                            {
                                if (listResPreCost.Count > 1)
                                {
                                    bool lSign = true;//标识特殊case:同一条打卡消费记录对应两条定餐未结算记录
                                }
                                //消费数据符合该条未确认数据记录的条件,更新该条消费记录的状态为已结,并更新对应的未确定扣费定餐记录置为已结状态
                                consumeItem.csr_lIsSettled = true;
                                consumeItem.csr_dSettleTime = DateTime.Now;
                                listUpdate_Consume.Add(consumeItem);

                                //按升序排序多条待付款预扣费记录
                                List<PreConsumeRecord_pcs_Info> listPreTmp = listResPreCost.OrderBy(x => x.pcs_dAddDate).ToList();
                                for (int i = 0; i < listPreTmp.Count; i++)
                                {
                                    PreConsumeRecord_pcs_Info preCost = listPreTmp[i];
                                    preCost.pcs_cSourceID = consumeItem.csr_cRecordID;//转换预付款记录的源记录ID,原为定餐记录,现为消费记录
                                    preCost.pcs_lIsSettled = true;
                                    preCost.pcs_dSettleTime = DateTime.Now;
                                    preCost.pcs_cConsumeType = Common.DefineConstantValue.ConsumeMoneyFlowType.SetMealCost.ToString();
                                    preCost.pcs_dConsumeDate = consumeItem.csr_dConsumeDate;
                                    PreConsumeRecord_pcs_Info resCompUp = listUpdate_PreCost.Find(x => x.pcs_cRecordID == preCost.pcs_cRecordID);
                                    PreConsumeRecord_pcs_Info resCompDel = listDelete_PreCost.Find(x => x.pcs_cRecordID == preCost.pcs_cRecordID);
                                    if (resCompUp == null && resCompDel == null)
                                    {
                                        if (i == 0)
                                        {
                                            listUpdate_PreCost.Add(preCost);
                                        }
                                        else
                                        {
                                            listDelete_PreCost.Add(preCost);
                                        }
                                    }
                                    else
                                    {
                                        bool lSign = true;//异常数据标识
                                    }
                                }
                            }
                            else
                            {
                                //无符合该消费记录的待付款记录
                                listUpdate_UnMealConsume.Add(consumeItem);
                            }

                            #endregion
                        }
                        else
                        {
                            //判断为非定餐消费记录,用于消减冲数记录
                            consumeItem.csr_lIsSettled = true;
                            consumeItem.csr_dSettleTime = DateTime.Now;
                            listUpdate_Consume.Add(consumeItem);
                        }
                    }

                    #endregion
                }

                //找出有定餐但无打卡数据的未确定预消费记录
                #region 筛选出定餐但无打卡的数据

                int iCount = 0;
                int iCOunt2 = 0;
                foreach (PreConsumeRecord_pcs_Info unMealPreCost in listUnSettlePreCost)
                {
                    PreConsumeRecord_pcs_Info resUnMeal = listUpdate_PreCost.Find(x => x.pcs_cRecordID == unMealPreCost.pcs_cRecordID);
                    PreConsumeRecord_pcs_Info resDelMeal = listDelete_PreCost.Find(x => x.pcs_cRecordID == unMealPreCost.pcs_cRecordID);
                    if (resUnMeal == null && resDelMeal == null)
                    {
                        unMealPreCost.pcs_cConsumeType = Common.DefineConstantValue.ConsumeMoneyFlowType.SetMealCost.ToString();
                        unMealPreCost.pcs_dAddDate = DateTime.Now;
                        unMealPreCost.pcs_cAdd = this._ServiceName;
                        listUpdate_PreCost.Add(unMealPreCost);
                        iCount++;
                    }
                    else
                    {
                        iCOunt2++;
                    }
                }

                #endregion

                //消减平账冲数记录
                #region 消减平账记录

                var groupUserHedge = listHedge.GroupBy(x => x.pcs_cUserID);
                foreach (var userItem in groupUserHedge)
                {
                    //以人为单位组成数据组别
                    Guid userID = userItem.Key;
                    //找出本次收数得到的指定用户的打卡记录
                    List<ConsumeRecord_csr_Info> listUserConsume = listUpdate_Consume.Where(x => x.csr_cCardUserID == userID).ToList();
                    //找出未被处理到类型的打卡记录,并添加到打卡对比记录列表
                    List<ConsumeRecord_csr_Info> listUnMealConsume = listUpdate_UnMealConsume.Where(x => x.csr_cCardUserID == userID).ToList();
                    if (listUnMealConsume != null && listUnMealConsume.Count > 0)
                    {
                        listUserConsume.AddRange(listUnMealConsume);
                    }

                    if (listUserConsume == null || (listUserConsume != null && listUserConsume.Count < 1))
                    {
                        continue;
                    }

                    //以对冲记录产生的时间升序排列,时间早的靠前
                    List<PreConsumeRecord_pcs_Info> listUserHedge = userItem.OrderBy(x => x.pcs_dConsumeDate).ToList();
                    if (listUserHedge != null && listUserHedge.Count > 0)
                    {
                        for (int i = 0; i < listUserHedge.Count; i++)
                        {
                            List<ConsumeRecord_csr_Info> listConsumeComp = new List<ConsumeRecord_csr_Info>();
                            if (i > 0 && i == listUserHedge.Count - 1)
                            {
                                //对冲记录数大于0,且为最后一条记录时,找出是否存在打卡记录在最后一条对冲记录和倒数第二条对冲记录之间
                                listConsumeComp = listUserConsume.Where(x => x.csr_dConsumeDate <= listUserHedge[i].pcs_dConsumeDate && x.csr_dConsumeDate > listUserHedge[i - 1].pcs_dConsumeDate).ToList();
                            }
                            else if (i < listUserHedge.Count - 1)
                            {
                                listConsumeComp = listUserConsume.Where(x => x.csr_dConsumeDate < listUserHedge[i + 1].pcs_dConsumeDate && x.csr_dConsumeDate >= listUserHedge[i].pcs_dConsumeDate).ToList();
                            }
                            else if (i == 0 && listUserHedge.Count == 1)
                            {
                                listConsumeComp = listUserConsume.Where(x => x.csr_dConsumeDate <= listUserHedge[i].pcs_dConsumeDate).ToList();
                            }

                            if (listConsumeComp == null)
                                continue;

                            if (listConsumeComp.Count > 1)
                            {
                                decimal fComp = Math.Abs(listUserHedge[i].pcs_fCost) - Math.Abs(listConsumeComp.Sum(x => x.csr_fConsumeMoney));
                                if (fComp <= 0)
                                {
                                    listUserHedge[i].pcs_lIsSettled = true;
                                    listUserHedge[i].pcs_dSettleTime = DateTime.Now;
                                    listUpdate_PreCost.Add(listUserHedge[i]);
                                }
                                else
                                {
                                    listUserHedge[i].pcs_dConsumeDate = DateTime.Now;
                                    listUserHedge[i].pcs_fCost = fComp;
                                    listUpdate_PreCost.Add(listUserHedge[i]);
                                }

                                foreach (ConsumeRecord_csr_Info item in listConsumeComp)
                                {
                                    ConsumeRecord_csr_Info consumeHedge = listUpdate_Consume.Find(x => x.csr_cRecordID == item.csr_cRecordID);
                                    if (consumeHedge == null)
                                    {
                                        consumeHedge = listUpdate_UnMealConsume.Find(x => x.csr_cRecordID == item.csr_cRecordID);
                                        consumeHedge.csr_lIsSettled = true;
                                        consumeHedge.csr_dSettleTime = DateTime.Now;
                                        listUpdate_Consume.Add(consumeHedge);
                                    }
                                    else
                                    {
                                        consumeHedge.csr_lIsSettled = true;
                                        consumeHedge.csr_dSettleTime = DateTime.Now;
                                    }
                                }
                            }
                            else
                            {
                                if (listUserHedge[i].pcs_dConsumeDate < dtMacSync)
                                {
                                    //若无对应的消费记录,且时间早于收数时间,则删除此对冲记录
                                    listDelete_PreCost.Add(listUserHedge[i]);
                                }
                            }
                        }
                    }
                }

                #endregion

                //如没有被1、定餐冲数;2、平数记录冲数,则进行结算处理
                if (listUpdate_UnMealConsume != null && listUpdate_UnMealConsume.Count > 0)
                {
                    foreach (ConsumeRecord_csr_Info item in listUpdate_UnMealConsume)
                    {
                        if (!item.csr_lIsSettled)
                        {
                            item.csr_lIsSettled = true;
                            item.csr_dSettleTime = DateTime.Now;
                            listUpdate_Consume.Add(item);
                        }
                    }
                }

                if (listUpdate_PreCost.Count > 0 || listUpdate_Consume.Count > 0)
                {
                    ReturnValueInfo rvInfo = this._ICardUserAccountBL.BatchSyncAccountDetail(listUpdate_PreCost, listDelete_PreCost, listUpdate_Consume);
                    if (rvInfo.boolValue && !rvInfo.isError)
                    {
                        this._LocalLogger.WriteLog("同步账户数据成功!" + DateTime.Now.ToString(), string.Empty, SystemLog.SystemLog.LogType.Trace);
                        res = true;
                    }
                    else
                    {
                        if (rvInfo.isError)
                        {
                            this._LocalLogger.WriteLog("同步账户数据失败!" + DateTime.Now.ToString() + rvInfo.messageText, string.Empty, SystemLog.SystemLog.LogType.Error);
                        }
                        else
                        {
                            this._LocalLogger.WriteLog("同步账户数据失败!" + DateTime.Now.ToString() + rvInfo.messageText, string.Empty, SystemLog.SystemLog.LogType.Warning);
                        }
                        res = false;
                    }
                }
                else
                {
                    this._IsRunning = false;
                    return true;
                }
            }
            catch (Exception ex)
            {
                this._LocalLogger.WriteLog(ex.Message, string.Empty, SystemLog.SystemLog.LogType.Error);
                res = false;
            }

            this._IsRunning = false;
            return res;
        }
コード例 #5
0
ファイル: StringReplacer.cs プロジェクト: orichisonic/Program
        /// <summary>  
        /// 二进制替换,如果没有替换则返回原数组对像的复本.  
        /// </summary>  
        /// <param name="sourceByteArray">源数据</param>  
        /// <param name="replaces">需要替换的数据集合</param>  
        public static byte[] Replace(byte[] sourceByteArray, List<HexReplaceEntity> replaces)
        {
            //创建新数据多出1字节
            int newArrayLen =
                (int)
                    ((replaces.Sum(p => p.newValue.Length) / (double)replaces.Sum(p => p.oldValue.Length)) *
                     sourceByteArray.Length) + 1;
            //得到数组长度
            newArrayLen = Math.Max(newArrayLen, sourceByteArray.Length);
            //新的最后结果数组
            byte[] newByteArray = new byte[newArrayLen];
            //新数组的当前索引
            int curIndex = 0;
            bool find = false;
            //替换数据替换
            for (int x = 0; x < sourceByteArray.Length; x++)
            {

                foreach (HexReplaceEntity rep in replaces)
                {
                    //查找要替换的数据
                    if (sourceByteArray[x] == rep.oldValue[rep.oldCurindex])
                    {
                        if (rep.oldCurindex == 0)
                        {
                            rep.start = x;
                        }
                        if (rep.oldCurindex == rep.oldValue.Length - 1)
                        {
                            rep.end = x;
                            rep.oldCurindex = 0;
                        }
                        else
                        {
                            rep.oldCurindex++;
                        }
                    }
                    else
                    {
                        rep.oldCurindex = 0;
                        newByteArray[curIndex] = sourceByteArray[x];
                        find = false;
                    }
                    //数据查找完成
                    if (rep.start != -1 && rep.end != -1)
                    {
                        find = true;
                        if (rep.newValue.Length >= rep.oldValue.Length)
                        {
                            //复制替换数据
                            Buffer.BlockCopy(rep.newValue, 0, newByteArray, curIndex, rep.newValue.Length);
                            //计算新数组的偏移量
                            curIndex += rep.newValue.Length;
                        }
                        else
                        //由大字节替换为少字节时出现了问题
                        {
                            curIndex -= rep.end - rep.start;
                            //复制替换数据
                            Buffer.BlockCopy(rep.newValue, 0, newByteArray, curIndex, rep.newValue.Length);
                            //计算新数组的偏移量
                            curIndex += rep.newValue.Length;
                        }
                        //重新设置需要复制索引的索引
                        rep.start = rep.end = -1;
                        break;
                    }
                }
                if (!find)
                {
                    curIndex++;
                }
            }

            //处理返回结果
            byte[] result = null;
            //if (curIndex != 0)
            //{
            //    result = new byte[curIndex];
            //    Buffer.BlockCopy(newByteArray, 0, result, 0, result.Length);
            //}
            //else
            //{
            //    result = new byte[sourceByteArray.Length];
            //    Buffer.BlockCopy(sourceByteArray, 0, result, 0, result.Length);
            //}
            if (curIndex != 0)
                return newByteArray;
            else
                return sourceByteArray;
        }
コード例 #6
0
 public static double CalculateExpectedValue(List<double> excerpt)
 {
     return excerpt.Sum() / excerpt.Count;
 }
コード例 #7
0
 public static double CalculateDispersion(List<double> excerpt)
 {
     double ev = CalculateExpectedValue(excerpt);
     return excerpt.Sum(val => (val - ev) * (val - ev)) / (excerpt.Count - 1);
 }
コード例 #8
0
ファイル: Orders.ascx.cs プロジェクト: nguyentu1982/inthudo
        protected void btFind_Click(object sender, EventArgs e)
        {
            DateTime? orderFrom = ctrlDatePickerFrom.SelectedDate;
            DateTime? orderTo = ctrlDatePickerTo.SelectedDate;

            int orderId = 0;
            int.TryParse(txtOrderCode.Text, out orderId);

            int custId = 0;
            int.TryParse(ctrlCustomerSelect.CustomerId, out custId);

            int productId = 0;
            int.TryParse(ddlProduct.SelectedValue, out productId);

            int shipMethodId = 0;
            int.TryParse(ddlShipping.SelectedValue, out shipMethodId);

            int depositMethodId = 0;
            int.TryParse(ddlDeposit.SelectedValue, out depositMethodId);

            int orderDetailStatusId = 0;
            int.TryParse(ddlOrderDetailStatus.SelectedValue, out orderDetailStatusId);

            int busManId = 0;
            int.TryParse(ddlBusinessManId.SelectedValue,out busManId);

            int designerManId = 0;
            int.TryParse(ddlDesingerId.SelectedValue, out designerManId);

            List<OrderStatusEnum> orderStatus = new List<OrderStatusEnum>();
            foreach(ListItem i in cblOrderStatus.Items)
            {
                if (i.Selected)
                {
                    orderStatus.Add((OrderStatusEnum)int.Parse(i.Value));
                }
            }

            List<int> printingTypeIds = ctrlPrintingTypeSelect.SelectedValues;

            OrderSearch orderSearchObj = new OrderSearch()
            {
                OrderFrom = orderFrom,
                OrderTo = orderTo,
                OrderId= orderId,
                CustId = custId,
                ProductId = productId,
                ShipMethodId = shipMethodId,
                DepositMethodId = depositMethodId,
                OrderDetailStatus = (OrderItemStatusEnum)orderDetailStatusId,
                OrderStatus = orderStatus,
                BusManId = busManId,
                DesignerManId = designerManId,
                PrintingTypeIds = printingTypeIds
            };

            List<OrderBO> orders = this.OrderService.GetOrders(orderSearchObj);
            grvOrders.DataSource = orders;
            grvOrders.DataBind();

            lbNumberOfOrders.Text = orders.Count.ToString();
            lbOrderTotal.Text = orders.Sum(o => o.OrderTotal).ToString("C0");

            lbNotCompletedNumberOfOrders.Text = orders.Where(o=>o.OrderStatus == OrderStatusEnum.NotCompleted).Count().ToString();
            lbNotCompletedOrderTotal.Text = orders.Where(o => o.OrderStatus == OrderStatusEnum.NotCompleted).Sum(o => o.OrderTotal).ToString("C0");

            lbCompletedNumberOfOrders.Text = orders.Where(o => o.OrderStatus == OrderStatusEnum.Completed).Count().ToString();
            lbCompletedOrderTotal.Text = orders.Where(o => o.OrderStatus == OrderStatusEnum.Completed).Sum(o => o.OrderTotal).ToString("C0");

            lbFailedNumberOfOrders.Text = orders.Where(o => o.OrderStatus == OrderStatusEnum.IsFailed).Count().ToString();
            lbFailedOrderTotal.Text = orders.Where(o => o.OrderStatus == OrderStatusEnum.IsFailed).Sum(o => o.OrderTotal).ToString("C0");

            List<ProductApprovedBO> failedProductsResult = new List<ProductApprovedBO>();
            foreach (OrderBO o in orders)
            {
                List<ProductApprovedBO> failedProducts = this.OrderService.GetFailedProductByOrderId(o.OrderId);
                foreach (ProductApprovedBO pa in failedProducts)
                {
                    failedProductsResult.Add(pa);
                }
            }

            lbFailedOrderDetailTotal.Text = failedProductsResult.Sum(fd => fd.Total).ToString("C0");

            lbOverdueNumberOfOrders.Text = orders.Where(o => o.OrderStatus == OrderStatusEnum.Overdue).Count().ToString();
            lbOverdueOrderTotal.Text = orders.Where(o => o.OrderStatus == OrderStatusEnum.Overdue).Sum(o => o.OrderTotal).ToString("C0");
            var overdueOrders = orders.Where(o => o.OrderStatus == OrderStatusEnum.Overdue);
            decimal overdueOrderDetailTotal = 0;
            foreach (OrderBO o in overdueOrders)
            {
                foreach (OrderItemlBO od in o.OrderItems)
                {
                    if (od.OrderItemStatus == OrderItemStatusEnum.Overdue)
                    {
                        overdueOrderDetailTotal += od.Quantity * od.Price;
                    }
                }
            }
            lbOverdueOrderDetailTotal.Text = overdueOrderDetailTotal.ToString("C0");
        }
コード例 #9
0
        private int? ControlarImprimirEnvase(List<LINEA_VENTA> ImprimirLineasEnGrilla)
        {
            //controlo si existen envases
            if (!ImprimirLineasEnGrilla.Any(x => x.ENV_ID != null))
                return null;

            List<LINEA_VENTA> listaEnvase = new List<LINEA_VENTA>();
            decimal subTotal = 0;
            decimal total = 0;
            foreach (var item in ImprimirLineasEnGrilla)
            {
                if (item.ENV_ID != null)
                {
                    listaEnvase.Add(item);
                }
            }

            subTotal = listaEnvase.Sum(x => x.LIN_TOTAL);
            total = subTotal;

            var comprobante = cTIPO_COMPROBANTES.ObtenerPorDescripcion(Constantes.ValeEnvase);
            int nroComprobante = (int)comprobante.TIC_ULTIMONUMERO;
            comprobante.TIC_ULTIMONUMERO = nroComprobante + 1;
            cTIPO_COMPROBANTES.Modificacion(comprobante);

            var nroCompEnvase = comprobante.TIC_ULTIMONUMERO;

            if (!ImpresoraOK)
            {
                MostrarMensajeInformativo(string.Format("Por falla de impresora se generó la devolución de envase Nro: {0}", nroCompEnvase));
                return nroCompEnvase;
            }
            else
            {
                #region IMPRIME DOCUMENTO NO FISCAL

                var noFiscal = new DocumentoNoFiscalTicket();

                noFiscal.DescripcionCabecera1 = "---------------------------";
                noFiscal.DescripcionCabecera2 = "-- Devolucion de Envases";
                noFiscal.DescripcionCabecera3 = string.Format("-- Nro: {0}", TipoComprobante.TIC_ULTIMONUMERO);
                noFiscal.DescripcionCabecera4 = "---------------------------";

                noFiscal.items = new List<DocumentoNoFiscalTicketItem>();
                foreach (LINEA_VENTA LineaEnGrilla in listaEnvase)
                {
                    var item = new DocumentoNoFiscalTicketItem();
                    item.DescripcionItem = (LineaEnGrilla.LIN_DESCRESUMIDA.Length > 27) ? LineaEnGrilla.LIN_DESCRESUMIDA.Substring(0, 27) : LineaEnGrilla.LIN_DESCRESUMIDA.ToString();
                    item.Cantidad = LineaEnGrilla.LIN_CANTIDAD.ToString("0.000");
                    item.PrecioUnitario = LineaEnGrilla.LIN_PRECIOUNIDAD.ToString("0.000");
                    noFiscal.items.Add(item);
                }

                //DESCUENTO
                noFiscal.DescuentoDescripcion = "";
                noFiscal.DescuentoMonto = "";

                //PAGO
                noFiscal.PagoDescripcionExtra = "";
                noFiscal.PagoDescripcion = "";

                noFiscal.SubTotalMonto = subTotal.ToString("0.000");
                noFiscal.TotalMonto = total.ToString("0.000");

                //CIERRE
                noFiscal.DescripcionPie1 = "Para retornar los envases";
                noFiscal.DescripcionPie2 = "debe presentar el comprobante.";
                noFiscal.DescripcionPie3 = "";

                var retornoImpresion = frmImpresoraFiscal.DocumentoNoFiscalTicket(noFiscal);
                if (retornoImpresion < 0)
                    return nroCompEnvase;

                //MostrarMensajeInformativo("Se imprimió correctamente Nº: " + retornoImpresion);

                #endregion
            }

            return nroCompEnvase;
        }