Ejemplo n.º 1
0
        private void BindCustomerStay()
        {
            dgvCustomerStay.Rows.Clear();
            int i = 0;

            foreach (CustomerStayModel mCs in listCustomerStay)
            {
                dgvCustomerStay.Rows.Add();
                dgvCustomerStay.Rows[i].Cells["RoomNo"].Value = mCs.RoomInfo.RoomNo;
                if (mCs.Status == 'I')
                {
                    dgvCustomerStay.Rows[i].Cells["StayStatus"].Value = "在住";
                }
                else
                {
                    dgvCustomerStay.Rows[i].Cells["StayStatus"].Value = "离店";
                    RoomStayType eRst = mCs.RoomStayType == 'D' ? RoomStayType.Day : RoomStayType.Hour;
                }
                dgvCustomerStay.Rows[i].Cells["UpdateUserName"].Value = mCs.CommonInfo.UpateUserName;
                dgvCustomerStay.Rows[i].Cells["UpdateDate"].Value     = mCs.CommonInfo.UpdateDate;
                dgvCustomerStay.Rows[i].Cells["CustomerName"].Value   = mCs.CustomerList[0].Name;
                dgvCustomerStay.Rows[i].Cells["StartDate"].Value      = mCs.CommonInfo.StartDate;
                dgvCustomerStay.Rows[i].Cells["Deposit"].Value        = mCs.Deposit;
                dgvCustomerStay.Rows[i].Cells["NeedPay"].Value        = mCs.Total;
                dgvCustomerStay.Rows[i].Cells["Balance"].Value        = mCs.Deposit - mCs.Total;
                dgvCustomerStay.Rows[i].Cells["PayType"].Value        = GetPayDesc(mCs.PayType.ToString());
                dgvCustomerStay.Rows[i].Cells["Notice"].Value         = mCs.Notice;
                if (mCs.Deposit - mCs.Total <= 0 || ((mCs.Deposit > 0) && mCs.Total / mCs.Deposit >= double.Parse(hml.ToParameter(listSysParameter, "MAX_DEPOSIT_RATE").Value1)))
                {
                    dgvCustomerStay.Rows[i].DefaultCellStyle.ForeColor = Color.Red;
                }
                i++;
            }
        }
Ejemplo n.º 2
0
        private void BindDgv(List <CustomerStayModel> listCustomerStay)
        {
            dgvCustomerStay.Rows.Clear();
            int      i      = 0;
            DateTime dtmNow = cmn.DateBaseDate;

            foreach (CustomerStayModel mCs in listCustomerStay)
            {
                foreach (CustomerModel mc in mCs.CustomerList)
                {
                    dgvCustomerStay.Rows.Add();

                    dgvCustomerStay.Rows[i].Cells["StayNo"].Value = mCs.StayNo;
                    dgvCustomerStay.Rows[i].Cells["RoomNo"].Value = mCs.RoomInfo.RoomNo;
                    RoomStayType eRst = mCs.RoomStayType == 'D' ? RoomStayType.Day : RoomStayType.Hour;
                    if (mc.CustomerStayHisInfo.HisStatus == 'E')
                    {
                        dgvCustomerStay.Rows[i].Cells["StayStatus"].Value = "在住";

                        //dgvCustomerStay.Rows[i].Cells["Days"].Value = hml.GetCustomerStayDays(mc.CustomerStayHisInfo.CommonInfo.StartDate, mc.CustomerStayHisInfo.CommonInfo.EndDate, dtmNow, eRst, listSysParameter);
                        dgvCustomerStay.Rows[i].Cells["UpdateUserName"].Value = mCs.CommonInfo.UpateUserName;
                        dgvCustomerStay.Rows[i].Cells["UpdateDate"].Value     = mCs.CommonInfo.UpdateDate;
                        dgvCustomerStay.Rows[i].Cells["Days"].Value           = hml.GetCustomerStayDays(mc.CustomerStayHisInfo.CommonInfo.StartDate, dtmNow, dtmNow, eRst, listSysParameter);
                    }
                    else
                    {
                        dgvCustomerStay.Rows[i].Cells["StayStatus"].Value = "离店";
                        //RoomStayType eRst = mCs.RoomStayType == 'D' ? RoomStayType.Day : RoomStayType.Hour;
                        dgvCustomerStay.Rows[i].Cells["UpdateUserName"].Value = mCs.CommonInfo.UpateUserName;
                        dgvCustomerStay.Rows[i].Cells["UpdateDate"].Value     = mCs.CommonInfo.UpdateDate;
                        dgvCustomerStay.Rows[i].Cells["Days"].Value           = hml.GetCustomerStayDays(mc.CustomerStayHisInfo.CommonInfo.StartDate, mc.CustomerStayHisInfo.CommonInfo.EndDate, dtmNow, eRst, listSysParameter);

                        //dgvCustomerStay.Rows[i].Cells["StartDate"].Value = mc.CustomerStayHisInfo.CommonInfo.CreateDate;
                        //dgvCustomerStay.Rows[i].Cells["EndDate"].Value = mc.CustomerStayHisInfo.CommonInfo.UpdateDate;
                        //dgvCustomerStay.Rows[i].Cells["Days"].Value = hml.GetCustomerStayDays(mc.CustomerStayHisInfo.CommonInfo.CreateDate, mc.CustomerStayHisInfo.CommonInfo.UpdateDate, dtmNow, eRst, listSysParameter);
                    }
                    dgvCustomerStay.Rows[i].Cells["StartDate"].Value = mc.CustomerStayHisInfo.CommonInfo.StartDate;
                    dgvCustomerStay.Rows[i].Cells["EndDate"].Value   = mc.CustomerStayHisInfo.CommonInfo.EndDate;

                    dgvCustomerStay.Rows[i].Cells["CustomerName"].Value = mc.Name;
                    dgvCustomerStay.Rows[i].Cells["Sex"].Value          = mc.Sex;
                    dgvCustomerStay.Rows[i].Cells["CardID"].Value       = mc.IdCardNo;

                    dgvCustomerStay.Rows[i].Cells["Deposit"].Value = mCs.Deposit;
                    dgvCustomerStay.Rows[i].Cells["PayType"].Value = GetPayDesc(mCs.PayType.ToString());
                    dgvCustomerStay.Rows[i].Cells["Notice"].Value  = mCs.Notice;
                    i++;
                }
            }
        }
Ejemplo n.º 3
0
        private void BindDgv(List <CustomerStayModel> listCustomerStay)
        {
            dgvIncomeInfo.Rows.Clear();
            int    i           = 0;
            double dPaidMoney  = 0.0;
            double dTotalMoney = 0.0;

            foreach (CustomerStayModel mCs in listCustomerStay)
            {
                dgvIncomeInfo.Rows.Add();

                dgvIncomeInfo.Rows[i].Cells["StayId"].Value = mCs.StayId;
                dgvIncomeInfo.Rows[i].Cells["StayNo"].Value = mCs.StayNo;
                dgvIncomeInfo.Rows[i].Cells["RoomNo"].Value = mCs.RoomInfo.RoomNo;
                string sName = "";
                foreach (CustomerModel mc in mCs.CustomerList)
                {
                    sName += mc.Name + ";";
                }
                dgvIncomeInfo.Rows[i].Cells["CustomerName"].Value = sName.Remove(sName.Length - 1, 1);
                dgvIncomeInfo.Rows[i].Cells["StartDate"].Value    = mCs.CommonInfo.StartDate;
                dgvIncomeInfo.Rows[i].Cells["EndDate"].Value      = mCs.CommonInfo.EndDate;
                dgvIncomeInfo.Rows[i].Cells["PaidMoney"].Value    = mCs.PaidMoney;
                dgvIncomeInfo.Rows[i].Cells["PayType"].Value      = GetPayDesc(mCs.PayType.ToString());
                dgvIncomeInfo.Rows[i].Cells["Total"].Value        = mCs.Total;
                dgvIncomeInfo.Rows[i].Cells["Notice"].Value       = mCs.Notice;
                RoomStayType eRst = mCs.RoomStayType == 'D' ? RoomStayType.Day : RoomStayType.Hour;
                dgvIncomeInfo.Rows[i].Cells["Days"].Value           = hml.GetCustomerStayDays(mCs.CommonInfo.StartDate, mCs.CommonInfo.EndDate, mCs.CommonInfo.EndDate, eRst, listSysParameter);
                dgvIncomeInfo.Rows[i].Cells["UpdateUserName"].Value = mCs.CommonInfo.UpateUserName;
                dgvIncomeInfo.Rows[i].Cells["UpdateDate"].Value     = mCs.CommonInfo.UpdateDate;
                dPaidMoney  += mCs.PaidMoney;
                dTotalMoney += mCs.Total;
                i++;
            }
            tsslblTotal.Text = "合计收取现金:   " + dPaidMoney + "元" + "    合计应收金额:" + dTotalMoney + "元";
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 绑定DataGirdView
        /// </summary>
        /// <param name="listSource"></param>
        private void BindConsumeDetail(List <CustomerStayModel> listSource)
        {
            dgvConsumeDetail.Rows.Clear();
            if (cmn.CheckEOF(listSysParameter))
            {
                double dt = 0.0;
                int    i  = 0;
                if (IsCountPhone)
                {
                    listJf = GetPhoneList(listSource);
                }
                foreach (CustomerStayModel mCustomerStayTmp in listSource)
                {
                    dgvConsumeDetail.Rows.Add();
                    dgvConsumeDetail.Rows[i].Cells["RoomNo"].Value      = mCustomerStayTmp.RoomInfo.RoomNo;
                    dgvConsumeDetail.Rows[i].Cells["ConsumeName"].Value = "房间费";
                    dgvConsumeDetail.Rows[i].Cells["UnitPrice"].Value   = mCustomerStayTmp.RoomRate;

                    #region 结账时,统计房间使用时间需按照开房类型以及结账时间来计算.

                    RoomStayType eRst = mCustomerStayTmp.RoomStayType.Equals('D') ? RoomStayType.Day : RoomStayType.Hour;
                    dgvConsumeDetail.Rows[i].Cells["Number"].Value = hml.GetCustomerStayDays(mCustomerStayTmp.CommonInfo.StartDate, dtmNow, dtmNow, eRst, listSysParameter);
                    //单项目时,只计算房价,不计算消费的商品费用.


                    dgvConsumeDetail.Rows[i].Cells["TotalMoney"].Value = hml.GetTotalRates(mCustomerStayTmp, null, listSysParameter, dtmNow, 0.0);
                    dt += double.Parse(dgvConsumeDetail.Rows[i].Cells["TotalMoney"].Value.ToString());
                    #endregion

                    dgvConsumeDetail.Rows[i].Cells["Unit"].Value           = eRst == RoomStayType.Day ? "天" : "小时";
                    dgvConsumeDetail.Rows[i].Cells["ConsumeDate"].Value    = mCustomerStayTmp.CommonInfo.CreateDate;
                    dgvConsumeDetail.Rows[i].Cells["CreateUserName"].Value = mCustomerStayTmp.CommonInfo.CreateUserName;

                    #region 商品消费明细

                    if (cmn.CheckEOF(mCustomerStayTmp.ConSumeDetailList))
                    {
                        for (int j = 0; j < mCustomerStayTmp.ConSumeDetailList.Count; j++)
                        {
                            dgvConsumeDetail.Rows.Add();
                            dgvConsumeDetail.Rows[i + 1].Cells["RoomNo"].Value         = mCustomerStayTmp.RoomInfo.RoomNo;
                            dgvConsumeDetail.Rows[i + 1].Cells["ConsumeName"].Value    = mCustomerStayTmp.ConSumeDetailList[j].GoodsInfo.GoodsName;
                            dgvConsumeDetail.Rows[i + 1].Cells["UnitPrice"].Value      = mCustomerStayTmp.ConSumeDetailList[j].UnitPrice;
                            dgvConsumeDetail.Rows[i + 1].Cells["Unit"].Value           = mCustomerStayTmp.ConSumeDetailList[j].GoodsInfo.GoodsUnit;
                            dgvConsumeDetail.Rows[i + 1].Cells["Number"].Value         = mCustomerStayTmp.ConSumeDetailList[j].Number;
                            dgvConsumeDetail.Rows[i + 1].Cells["TotalMoney"].Value     = mCustomerStayTmp.ConSumeDetailList[j].Total;
                            dgvConsumeDetail.Rows[i + 1].Cells["ConsumeDate"].Value    = mCustomerStayTmp.ConSumeDetailList[j].CommonInfo.CreateDate.ToString("yyyy-MM-dd HH:mm:ss");
                            dgvConsumeDetail.Rows[i + 1].Cells["CreateUserName"].Value = mCustomerStayTmp.ConSumeDetailList[j].CommonInfo.CreateUserName;
                            dt += mCustomerStayTmp.ConSumeDetailList[j].Total;
                            i++;
                        }
                    }

                    #endregion

                    i++;
                    if (IsCountPhone)
                    {
                        #region 话费明细

                        var    query  = listJf.Where(c => c.PhoneNo == mCustomerStayTmp.RoomInfo.RoomPhone);
                        double dPhone = 0.0;
                        if (query.Count() > 0)
                        {
                            dPhone = hml.GetPhoneJF(query.ToList(), listCat);
                        }
                        else
                        {
                            JFModel mEmptyJf = new JFModel();
                            mEmptyJf.PhoneNo = mCustomerStayTmp.RoomInfo.RoomPhone;
                            listJf.Add(mEmptyJf);
                        }

                        if (dPhone > 0)
                        {
                            dgvConsumeDetail.Rows.Add();
                            dgvConsumeDetail.Rows[i].Cells["RoomNo"].Value      = mCustomerStayTmp.RoomInfo.RoomNo;
                            dgvConsumeDetail.Rows[i].Cells["ConsumeName"].Value = "电话费";
                            dgvConsumeDetail.Rows[i].Cells["UnitPrice"].Value   = "";
                            dgvConsumeDetail.Rows[i].Cells["TotalMoney"].Value  = dPhone;
                            dt += dPhone;
                            i++;
                        }

                        #endregion
                    }
                }
                lblSelectedRoom.Text      = listSource.Count > 1 ? "结账区内房间" : listSource[0].RoomInfo.RoomNo;
                lblSelectedRoomTotal.Text = dt.ToString();
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 换房逻辑,换房只能从一个已入住房间换到状态为可用的房间.
        /// </summary>
        /// <param name="mCustomerStay">入住信息</param>
        /// <param name="mNewRoomInfo">新房信息</param>
        /// <param name="dNewRoomRate">新房费用</param>
        /// <param name="mUserInfo">系统用户信息</param>
        /// <param name="listSysParameter">系统参数</param>
        public void ChangeRoom(CustomerStayModel mCustomerStay, BasRoomModel mNewRoomInfo, double dNewRoomRate, SysUserInfoModel mUserInfo, List <SysParameterModel> listSysParameter)
        {
            try
            {
                #region 将之前房间费用(光房间费用)加入到消费清单中.

                ConsumeDetailModel mConsume = new ConsumeDetailModel();
                BasGoodsModel      mGoods   = new BasGoodsModel();
                mGoods.Type = 'R';
                List <BasGoodsModel> listGoods = bGoods.GetGoodsInfo(mGoods, new ObjectControls(MCtrl.ByGoodsType));
                if (Cmn.CheckEOF(listGoods))
                {
                    mConsume.GoodsId = listGoods[0].GoodsId;
                }
                else
                {
                    throw new Exception("未定义类型的R的商品,该类型为房间费.");
                }
                mConsume.StayId    = mCustomerStay.StayId;
                mConsume.UnitPrice = mCustomerStay.RoomRate;
                RoomStayType eRst  = mCustomerStay.RoomStayType == 'D' ? RoomStayType.Day : RoomStayType.Hour;
                DateTime     dtNow = Cmn.DateBaseDate;
                mConsume.Number                  = GetCustomerStayDays(mCustomerStay.CommonInfo.StartDate, dtNow, dtNow, eRst, listSysParameter);
                mConsume.Total                   = GetTotalRates(mCustomerStay, null, listSysParameter, dtNow, 0.0);
                mConsume.CommonInfo              = new CommonModel();
                mConsume.CommonInfo.CreateDate   = mCustomerStay.CommonInfo.StartDate;
                mConsume.CommonInfo.CreateUserId = mUserInfo.UserId;
                mConsume.CommonInfo.UpdateUserId = mUserInfo.UserId;
                bConsume.InsertConsumeDetail(mConsume);

                #endregion

                #region 是否团队房间
                if (mCustomerStay.MainRoomId == mCustomerStay.RoomId)
                {
                    if (Cmn.Confirm(string.Format("{0}为主房间,变更后{1}将成为主房间,是否继续?", mCustomerStay.RoomInfo.RoomNo, mNewRoomInfo.RoomNo)))
                    {
                        #region 将团队房间的MainRoomId变为新ID
                        List <BasRoomModel> listTeamRoom = GetTeamRoomListByRoomId(mCustomerStay.RoomInfo, 'I');
                        if (Cmn.CheckEOF(listTeamRoom))
                        {
                            ObjectControls oCtrl = new ObjectControls();
                            oCtrl.Add(MCtrl.SetMainRoomId);
                            foreach (BasRoomModel mRoom in listTeamRoom)
                            {
                                CustomerStayModel mCs = new CustomerStayModel();
                                mCs.RoomId = mRoom.RoomId;
                                mCs.Status = 'I';
                                ObjectControls oc = new ObjectControls();
                                oc.Add(MCtrl.ByStayStatus);
                                oc.Add(MCtrl.ByRoomId);
                                mCs = bCustomerStay.GetCustomerStayInfo(mCs, oc);
                                if (mCs != null)
                                {
                                    mCs.MainRoomId = mNewRoomInfo.RoomId;
                                    bCustomerStay.UpdateCustomerStay(mCs, oCtrl);
                                }
                            }
                        }
                        #endregion
                    }
                }
                #endregion

                #region 将原来房间置为清理,将新房间设置为入住

                ObjectControls oCtrlMain = new ObjectControls();
                oCtrlMain.Add(MCtrl.SetRoomId);
                oCtrlMain.Add(MCtrl.SetStartDate);
                oCtrlMain.Add(MCtrl.SetHours);
                oCtrlMain.Add(MCtrl.SetRoomRate);
                mCustomerStay.RoomId = mNewRoomInfo.RoomId;
                mCustomerStay.CommonInfo.StartDate = Cmn.DateBaseDate;
                double dDays = GetCustomerStayDays(mCustomerStay.CommonInfo.StartDate, mCustomerStay.CommonInfo.EndDate, mCustomerStay.CommonInfo.StartDate, eRst, listSysParameter);

                mCustomerStay.Hours    = eRst == RoomStayType.Day ? Convert.ToInt32(dDays * 24) : Convert.ToInt32(dDays);
                mCustomerStay.RoomRate = dNewRoomRate;
                bCustomerStay.UpdateCustomerStay(mCustomerStay, oCtrlMain);

                mNewRoomInfo.Status = mCustomerStay.RoomInfo.Status;
                UpdateRoomStatusByRoomId(mNewRoomInfo, mUserInfo);

                mCustomerStay.RoomInfo.Status = 'C';
                UpdateRoomStatusByRoomId(mCustomerStay.RoomInfo, mUserInfo);

                #endregion
            }
            catch (Exception err)
            {
                throw err;
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 计算宾客入住天数.计算费用时用到.支持浮动时间以及超时计费.
        /// </summary>
        /// <param name="dtStartDate">开始时间</param>
        /// <param name="dtEndDate">离店时间</param>
        /// <param name="listSysParameter">系统参数</param>
        /// <returns></returns>
        public double GetCustomerStayDays(DateTime dtStartDate, DateTime dtEndDate, DateTime dtNow, RoomStayType eRst, List <SysParameterModel> listSysParameter)
        {
            int      nFloatTime     = Convert.ToInt32(ToParameter(listSysParameter, "FLOAT_TIME").Value1);
            DateTime dtMinStartDate = Convert.ToDateTime(ToParameter(listSysParameter, "MIN_START_DATE").Value1);
            DateTime dtOffDate1     = Convert.ToDateTime(ToParameter(listSysParameter, "OFF_DATE_1").Value1);
            //double dAddDays = Convert.ToDouble(ToParameter(listSysParameter, "OFF_DATE_1").Value2);
            DateTime dtOffDate2       = Convert.ToDateTime(ToParameter(listSysParameter, "OFF_DATE_2").Value1);
            int      nMinChargingTime = Convert.ToInt32(ToParameter(listSysParameter, "MIN_CHARGING_TIME").Value1);
            double   dNumber          = 0.0;

            if (dtNow.Subtract(dtStartDate).TotalMinutes <= nMinChargingTime)
            {
                return(dNumber);
            }
            if (eRst == RoomStayType.Day)
            {
                dNumber = double.Parse(dtEndDate.Date.Subtract(dtStartDate.Date).Days.ToString());
                if (DateTime.Parse(dtStartDate.ToShortTimeString()).AddMinutes(nFloatTime) < dtMinStartDate)
                {
                    dNumber += 1;
                }
                if (DateTime.Parse(dtEndDate.ToShortTimeString()).AddMinutes(-nFloatTime) >= dtOffDate1 && DateTime.Parse(dtEndDate.ToShortTimeString()).AddMinutes(-nFloatTime) < dtOffDate2)
                {
                    dNumber += double.Parse(ToParameter(listSysParameter, "OFF_DATE_1").Value2);
                }
                else if (DateTime.Parse(dtEndDate.ToShortTimeString()).AddMinutes(-nFloatTime) >= dtOffDate2)
                {
                    dNumber += double.Parse(ToParameter(listSysParameter, "OFF_DATE_1").Value2);
                }
                //如果入住时间在中午12点之前,退房时间也在当天中午12点之前,则以入住半天计算.
                if (dNumber == 0)
                {
                    dNumber += 0.5;
                }
            }
            else
            {
                dNumber = GetStayHours(dtStartDate, dtEndDate, listSysParameter);
            }
            return(dNumber);
        }
Ejemplo n.º 7
0
 /// <summary>
 /// 计算宾客入住天数.计算费用时用到.支持浮动时间以及超时计费.
 /// </summary>
 /// <param name="dtStartDate">开始时间</param>
 /// <param name="dtEndDate">离店时间</param>
 /// <param name="listSysParameter">系统参数</param>
 /// <returns></returns>
 public double GetCustomerStayDays(DateTime dtStartDate, DateTime dtEndDate,DateTime dtNow, RoomStayType eRst, List<SysParameterModel> listSysParameter)
 {
     int nFloatTime = Convert.ToInt32(ToParameter(listSysParameter, "FLOAT_TIME").Value1);
     DateTime dtMinStartDate = Convert.ToDateTime(ToParameter(listSysParameter, "MIN_START_DATE").Value1);
     DateTime dtOffDate1 = Convert.ToDateTime(ToParameter(listSysParameter, "OFF_DATE_1").Value1);
     //double dAddDays = Convert.ToDouble(ToParameter(listSysParameter, "OFF_DATE_1").Value2);
     DateTime dtOffDate2 = Convert.ToDateTime(ToParameter(listSysParameter, "OFF_DATE_2").Value1);
     int nMinChargingTime = Convert.ToInt32(ToParameter(listSysParameter, "MIN_CHARGING_TIME").Value1);
     double dNumber=0.0;
     if (dtNow.Subtract(dtStartDate).TotalMinutes <= nMinChargingTime)
     {
         return dNumber;
     }
     if (eRst == RoomStayType.Day)
     {
         dNumber = double.Parse(dtEndDate.Date.Subtract(dtStartDate.Date).Days.ToString());
         if (DateTime.Parse(dtStartDate.ToShortTimeString()).AddMinutes(nFloatTime) < dtMinStartDate)
         {
             dNumber += 1;
         }
         if (DateTime.Parse(dtEndDate.ToShortTimeString()).AddMinutes(-nFloatTime) >= dtOffDate1 && DateTime.Parse(dtEndDate.ToShortTimeString()).AddMinutes(-nFloatTime) < dtOffDate2)
         {
             dNumber += double.Parse(ToParameter(listSysParameter, "OFF_DATE_1").Value2);
         }
         else if (DateTime.Parse(dtEndDate.ToShortTimeString()).AddMinutes(-nFloatTime) >= dtOffDate2)
         {
             dNumber += double.Parse(ToParameter(listSysParameter, "OFF_DATE_1").Value2);
         }
         //如果入住时间在中午12点之前,退房时间也在当天中午12点之前,则以入住半天计算.
         if (dNumber == 0)
         {
             dNumber += 0.5;
         }
     }
     else
     {
         dNumber = GetStayHours(dtStartDate, dtEndDate, listSysParameter);
     }
     return dNumber;
 }