/// <summary> /// 开房以及修改房间信息逻辑.支持房间多人以及团体开房.支持房间人数变更以及宾客信息变更. /// </summary> /// <param name="listCustomerStayInfo"></param> /// <param name="listCustomerInfo"></param> /// <param name="eRmType"></param> /// <returns></returns> public bool OpendOrUpdateRoom(List <CustomerStayModel> listCustomerStayInfo, List <CustomerModel> listCustomerInfo, RoomLogicType eRmType) { try { if (listCustomerStayInfo[0].RoomStayType == 'D' && listCustomerStayInfo[0].Hours == 0) { throw new Exception("非钟点房,预住天数不能为零."); } if (eRmType == RoomLogicType.OpenRoom) { #region 开单 //如团体开房,则每个房间新增一个StayId foreach (CustomerStayModel mCustomerStay in listCustomerStayInfo) { int nStayId = bCustomerStay.InsertCustomerStay(mCustomerStay); BasRoomModel mRoom = new BasRoomModel(); mRoom.RoomId = mCustomerStay.RoomId; mRoom.Status = mCustomerStay.RoomInfo.Status; mRoom.CommonInfo = mCustomerStay.CommonInfo; UpdateRoomStatusByRoomId(mRoom, new SysUserInfoModel(mCustomerStay.CommonInfo.UpdateUserId)); //每个房间可能多个入住人员 foreach (CustomerModel mCustomer in listCustomerInfo) { //检查宾客信息是否存在,存在则更新较新的信息.姓名和证件号不更新 List <CustomerModel> listCustomerOld = GetExistCustomerInfo(mCustomer); int nCustomerId = 0; if (Cmn.CheckEOF(listCustomerOld)) { UpdateExsitCustomerInfo(mCustomer, listCustomerOld[0]); nCustomerId = listCustomerOld[0].CustomerId; } else { nCustomerId = bCustomer.InsertCustomer(mCustomer); } CustomerStayHisModel mHis = new CustomerStayHisModel(); mHis.StayId = nStayId; mHis.CustomerId = nCustomerId; mHis.StayType = mCustomer.CustomerStayHisInfo.StayType; mHis.HisStatus = 'E'; mHis.CommonInfo = new CommonModel(); mHis.CommonInfo.StartDate = mCustomerStay.CommonInfo.StartDate; mHis.CommonInfo.EndDate = mCustomerStay.CommonInfo.EndDate; mHis.CommonInfo.CreateDate = mCustomerStay.CommonInfo.CreateDate; mHis.CommonInfo.CreateUserId = mCustomerStay.CommonInfo.CreateUserId; bCustomerStay.InsertCustomerStayHis(mHis); } } #endregion } else { #region 修改房间信息 foreach (CustomerStayModel mCustomerStay in listCustomerStayInfo) { ObjectControls oCtrl = new ObjectControls(); oCtrl.Add(MCtrl.SetDeposit); oCtrl.Add(MCtrl.SetMainRoomId); oCtrl.Add(MCtrl.SetNotice); oCtrl.Add(MCtrl.SetPayType); oCtrl.Add(MCtrl.SetRoomId); oCtrl.Add(MCtrl.SetRoomRate); oCtrl.Add(MCtrl.SetCustomerStayStatus); oCtrl.Add(MCtrl.SetRoomStayType); oCtrl.Add(MCtrl.SetEndDate); oCtrl.Add(MCtrl.SetHours); //修改入住信息 bCustomerStay.UpdateCustomerStay(mCustomerStay, oCtrl); foreach (CustomerModel mCustomer in listCustomerInfo) { //检查宾客信息是否存在,存在则更新较新的信息.姓名和证件号不更新 List <CustomerModel> listCustomerOld = GetExistCustomerInfo(mCustomer); int nCustomerId = 0; if (Cmn.CheckEOF(listCustomerOld)) { mCustomer.CommonInfo.UpdateUserId = mCustomerStay.CommonInfo.UpdateUserId; UpdateExsitCustomerInfo(mCustomer, listCustomerOld[0]); nCustomerId = listCustomerOld[0].CustomerId; } else { nCustomerId = bCustomer.InsertCustomer(mCustomer); } CustomerStayHisModel mHis = new CustomerStayHisModel(); mHis.StayId = mCustomerStay.StayId; mHis.CustomerId = nCustomerId; oCtrl.Reset(); oCtrl.Add(MCtrl.ByStayId); oCtrl.Add(MCtrl.ByCustomerId); List <CustomerStayHisModel> listStayHis = bCustomerStay.GetStayHis(mHis, oCtrl); if (Cmn.CheckEOF(listStayHis)) { mHis.HisId = listStayHis[0].HisId; mHis.HisStatus = mCustomer.CustomerStayHisInfo.HisStatus; mHis.StayType = mCustomer.CustomerStayHisInfo.StayType; mHis.CommonInfo = new CommonModel(); mHis.CommonInfo.UpdateUserId = mCustomerStay.CommonInfo.UpdateUserId; oCtrl.Reset(); oCtrl.Add(MCtrl.SetHisStatus); oCtrl.Add(MCtrl.SetHisType); //如果用户选择将房间内某一宾客离店,则该宾客的离店时间为现在.开始时间不变 if (mHis.HisStatus == 'O') { mHis.CommonInfo.EndDate = Cmn.DateBaseDate; oCtrl.Add(MCtrl.SetEndDate); } bCustomerStay.UpdateStayHis(mHis, oCtrl); } else { mHis.StayType = mCustomer.CustomerStayHisInfo.StayType; mHis.HisStatus = mCustomer.CustomerStayHisInfo.HisStatus; mHis.CommonInfo = new CommonModel(); mHis.CommonInfo.CreateUserId = mCustomerStay.CommonInfo.UpdateUserId; mHis.CommonInfo.UpdateUserId = mCustomerStay.CommonInfo.UpdateUserId; //如宾客为新增加到该房间内的.则他的入住时间从现在开始,到该房间的预住结束时间为止. mHis.CommonInfo.StartDate = Cmn.DateBaseDate; mHis.CommonInfo.EndDate = mCustomerStay.CommonInfo.EndDate; bCustomerStay.InsertCustomerStayHis(mHis); } } } #endregion } return(true); } catch (Exception err) { throw err; } }
/// <summary> /// 开房以及修改房间信息逻辑.支持房间多人以及团体开房.支持房间人数变更以及宾客信息变更. /// </summary> /// <param name="listCustomerStayInfo"></param> /// <param name="listCustomerInfo"></param> /// <param name="eRmType"></param> /// <returns></returns> public bool OpendOrUpdateRoom(List<CustomerStayModel> listCustomerStayInfo, List<CustomerModel> listCustomerInfo, RoomLogicType eRmType) { try { if (listCustomerStayInfo[0].RoomStayType == 'D' && listCustomerStayInfo[0].Hours == 0) { throw new Exception("非钟点房,预住天数不能为零."); } if (eRmType == RoomLogicType.OpenRoom) { #region 开单 //如团体开房,则每个房间新增一个StayId foreach (CustomerStayModel mCustomerStay in listCustomerStayInfo) { int nStayId = bCustomerStay.InsertCustomerStay(mCustomerStay); BasRoomModel mRoom = new BasRoomModel(); mRoom.RoomId = mCustomerStay.RoomId; mRoom.Status = mCustomerStay.RoomInfo.Status; mRoom.CommonInfo = mCustomerStay.CommonInfo; UpdateRoomStatusByRoomId(mRoom, new SysUserInfoModel(mCustomerStay.CommonInfo.UpdateUserId)); //每个房间可能多个入住人员 foreach (CustomerModel mCustomer in listCustomerInfo) { //检查宾客信息是否存在,存在则更新较新的信息.姓名和证件号不更新 List<CustomerModel> listCustomerOld = GetExistCustomerInfo(mCustomer); int nCustomerId = 0; if (Cmn.CheckEOF(listCustomerOld)) { UpdateExsitCustomerInfo(mCustomer, listCustomerOld[0]); nCustomerId = listCustomerOld[0].CustomerId; } else { nCustomerId = bCustomer.InsertCustomer(mCustomer); } CustomerStayHisModel mHis = new CustomerStayHisModel(); mHis.StayId = nStayId; mHis.CustomerId = nCustomerId; mHis.StayType = mCustomer.CustomerStayHisInfo.StayType; mHis.HisStatus = 'E'; mHis.CommonInfo = new CommonModel(); mHis.CommonInfo.StartDate = mCustomerStay.CommonInfo.StartDate; mHis.CommonInfo.EndDate = mCustomerStay.CommonInfo.EndDate; mHis.CommonInfo.CreateDate = mCustomerStay.CommonInfo.CreateDate; mHis.CommonInfo.CreateUserId = mCustomerStay.CommonInfo.CreateUserId; bCustomerStay.InsertCustomerStayHis(mHis); } } #endregion } else { #region 修改房间信息 foreach (CustomerStayModel mCustomerStay in listCustomerStayInfo) { ObjectControls oCtrl = new ObjectControls(); oCtrl.Add(MCtrl.SetDeposit); oCtrl.Add(MCtrl.SetMainRoomId); oCtrl.Add(MCtrl.SetNotice); oCtrl.Add(MCtrl.SetPayType); oCtrl.Add(MCtrl.SetRoomId); oCtrl.Add(MCtrl.SetRoomRate); oCtrl.Add(MCtrl.SetCustomerStayStatus); oCtrl.Add(MCtrl.SetRoomStayType); oCtrl.Add(MCtrl.SetEndDate); oCtrl.Add(MCtrl.SetHours); //修改入住信息 bCustomerStay.UpdateCustomerStay(mCustomerStay, oCtrl); foreach (CustomerModel mCustomer in listCustomerInfo) { //检查宾客信息是否存在,存在则更新较新的信息.姓名和证件号不更新 List<CustomerModel> listCustomerOld = GetExistCustomerInfo(mCustomer); int nCustomerId = 0; if (Cmn.CheckEOF(listCustomerOld)) { mCustomer.CommonInfo.UpdateUserId = mCustomerStay.CommonInfo.UpdateUserId; UpdateExsitCustomerInfo(mCustomer, listCustomerOld[0]); nCustomerId = listCustomerOld[0].CustomerId; } else { nCustomerId = bCustomer.InsertCustomer(mCustomer); } CustomerStayHisModel mHis = new CustomerStayHisModel(); mHis.StayId = mCustomerStay.StayId; mHis.CustomerId = nCustomerId; oCtrl.Reset(); oCtrl.Add(MCtrl.ByStayId); oCtrl.Add(MCtrl.ByCustomerId); List<CustomerStayHisModel> listStayHis = bCustomerStay.GetStayHis(mHis, oCtrl); if (Cmn.CheckEOF(listStayHis)) { mHis.HisId = listStayHis[0].HisId; mHis.HisStatus = mCustomer.CustomerStayHisInfo.HisStatus; mHis.StayType = mCustomer.CustomerStayHisInfo.StayType; mHis.CommonInfo = new CommonModel(); mHis.CommonInfo.UpdateUserId = mCustomerStay.CommonInfo.UpdateUserId; oCtrl.Reset(); oCtrl.Add(MCtrl.SetHisStatus); oCtrl.Add(MCtrl.SetHisType); //如果用户选择将房间内某一宾客离店,则该宾客的离店时间为现在.开始时间不变 if (mHis.HisStatus == 'O') { mHis.CommonInfo.EndDate = Cmn.DateBaseDate; oCtrl.Add(MCtrl.SetEndDate); } bCustomerStay.UpdateStayHis(mHis, oCtrl); } else { mHis.StayType = mCustomer.CustomerStayHisInfo.StayType; mHis.HisStatus = mCustomer.CustomerStayHisInfo.HisStatus; mHis.CommonInfo = new CommonModel(); mHis.CommonInfo.CreateUserId = mCustomerStay.CommonInfo.UpdateUserId; mHis.CommonInfo.UpdateUserId = mCustomerStay.CommonInfo.UpdateUserId; //如宾客为新增加到该房间内的.则他的入住时间从现在开始,到该房间的预住结束时间为止. mHis.CommonInfo.StartDate = Cmn.DateBaseDate; mHis.CommonInfo.EndDate = mCustomerStay.CommonInfo.EndDate; bCustomerStay.InsertCustomerStayHis(mHis); } } } #endregion } return true; } catch (Exception err) { throw err; } }