/// <summary> /// Đổi phòng /// </summary> /// <param name="id"></param> /// <returns></returns> public JsonResult ChangeRoom(int id, int CheckInID, string Note, string tdate) { DateTime _tdate; var rs = new JsonRs(); DateTime.TryParse(tdate, CultureInfo.GetCultureInfo("vi-vn"), DateTimeStyles.None, out _tdate); if (new CommService().checkRoomNotAvailable(id, _tdate, _tdate.AddDays(1))) { rs = JsonRs.create(-1, "Không thể đổi phòng, vì phòng này đã có người ở từ " + _tdate.ToString("dd/MM/yyyy HH:mm") + " đến " + _tdate.AddDays(1).ToString("dd/MM/yyyy HH:mm")); } else { rs = _svustomerArrive.ChangeRoom(id, CheckInID, Note, _tdate); } return(Json(rs, JsonRequestBehavior.AllowGet)); }
public JsonRs PaymentCheckOut(int checkinID, string Tdate, int khunggio) { var rs = new JsonRs(); using (var db = _connectionData.OpenDbConnection()) { using (var tran = db.OpenTransaction()) { try { DateTime dateToLeave; DateTime.TryParse(Tdate, CultureInfo.GetCultureInfo("vi-vn"), DateTimeStyles.None, out dateToLeave); var check = db.Select <tbl_SaleOrder>(x => x.CheckInID == checkinID).FirstOrDefault(); if (check != null) { rs.Status = "00"; rs.Message = "Khách hàng này đã ghi nhận thanh toán lúc : " + check.DateCreated.GetValueOrDefault().ToString("dd/MM/yyyy mm:ss"); return(rs); } //lấy thời gian checkin var checkin = db.Single <tbl_CheckIn>(x => x.Id == checkinID); checkin.Leave_Date = dateToLeave; checkin.KhungGio = khunggio; if (checkin.Leave_Date.Value.CompareTo(DateTime.Now.AddMinutes(10)) > 0) { return(JsonRs.create(-1, "Thời gian đi không thể quá thời gian hiện tại")); } if (checkin.Leave_Date.Value.CompareTo(checkin.Arrive_Date) <= 0) { return(JsonRs.create(-1, "Thời gian đi không thể nhỏ hơn hoặc bằng thời gian đến")); } //khi doi phong capnhat trang thai cu ve5 va them 1 thằng mới Stt=2 var itemcheckin = GetCustomerRoomByCheckInID(checkinID); var usingroom = db.Single <tbl_RoomUsing>(x => x.CheckInID == checkinID); usingroom.status = 3; //cập nhật bảng đặt phòng là đã checkout /**/ var reservation = db.Select <tbl_Reservation_Room>().Where(e => e.BookingCode == itemcheckin.BookingCode).FirstOrDefault(); if (reservation != null) { reservation.ReservationStatus = ReservationStatus.CHECKOUT; var reservationRel = db.Select <tbl_Reservation_Customer_Rel>().Where(e => e.reservationID == reservation.Id).FirstOrDefault(); if (reservationRel != null) { reservationRel.status = ReservationStatus.CHECKOUT; db.Update(reservationRel); } db.Update(reservation); } #region lay lai chinh sach gia var Estimate = new EstimatePrice1Service().caculatePrice(itemcheckin.SysHotelID.GetValueOrDefault(), khunggio,// itemcheckin.KhungGio.GetValueOrDefault(0), itemcheckin.roomid.GetValueOrDefault(0), itemcheckin.Room_Type_ID.GetValueOrDefault(0), itemcheckin.Arrive_Date.GetValueOrDefault(), dateToLeave, -1, itemcheckin.Number_People, itemcheckin.Number_Children); #endregion var room = db.Single <tbl_Room>(x => x.Id == usingroom.roomid); room.status = 0; checkin.ReservationStatus = 3; if (itemcheckin == null) { rs.Status = "00"; rs.Message = "Lỗi không tìm thấy khách hàng đang ở!"; return(rs); } //đến việc xử lý các dịch vụ var product = GetListCustomerServices(checkinID); ////trừ tồn kho tương ứng ////tìm minibar ứng với phòng đang ở //var queryStore=db.From<tbl_Store>().Where(e=>e.roomid==usingroom.roomid); //var firstStore=db.Select(queryStore).FirstOrDefault();//nếu có kho //if (firstStore == null)//nếu ko có kho thì trừ từ kho tổng //{ // firstStore = db.Select(db.From<tbl_Store>() // .Where(e => e.typeStore==1 && e.SysHotelID==comm.GetHotelId())) // .FirstOrDefault(); //} //if (firstStore != null)//nếu có kho thì tiến hành trừ //{ // //duyệt qua các sản phẩm // foreach (var oProduct in product) // { // var queryProductStore = db.From<tbl_StoreProduct>() // .Where(e => e.productid == oProduct.productid && e.storeid == firstStore.Id) // .OrderBy(e => e.quantity); // var firstProductInStore = db.Select(queryProductStore).FirstOrDefault(); // if (firstProductInStore != null) // { // firstProductInStore.quantity = oProduct.Quantity - 1; // db.Update(firstProductInStore); // } // } //} var total = product.Sum(x => x.TotalSale); var totalroom = Estimate.Sum(x => x.price); //var totalquantity = product.Sum(x => x.Quantity); var saleorder = new tbl_SaleOrder() { SysHotelID = itemcheckin.SysHotelID, DateCreated = DateTime.Now, DatePayment = DateTime.Now, PaymentTypeID = 1, TotalAmount = total + totalroom, CheckInID = itemcheckin.CheckInID, CustomerID = itemcheckin.Id, CreatorID = 0, CustomerCode = "", TypeOrder = 1, Deposit = itemcheckin.Deposit.GetValueOrDefault(0), Deduction = itemcheckin.Deduction.GetValueOrDefault(0), Discount = itemcheckin.Discount.GetValueOrDefault(0), Tax = 0 }; db.Save(saleorder, true); var list = product.Select(t => new tbl_SaleOrderDetail() { SysHotelID = t.SysHotelID, DateCreated = DateTime.Now, DatePayment = DateTime.Now, PaymentTypeID = 1, TotalAmount = t.TotalSale, Price = 0, AmountNoTax = 0, Tax = 0, item = "", catalogitem = "", CreatorID = 0, quantity = t.Quantity, itemid = t.productid, StoreID = 0, TypeOrder = 2, // dịch vụ bằng 2 giá phòng bằng 1 catalogitemid = t.productid, OrderID = saleorder.Id }).ToList(); foreach (var price in Estimate) { list.Add(new tbl_SaleOrderDetail() { SysHotelID = itemcheckin.SysHotelID, DateCreated = DateTime.Now, DatePayment = DateTime.Now, PaymentTypeID = 1, TotalAmount = price.price, Price = price.quantiy, AmountNoTax = 0, Tax = 0, item = price.dtFrom.ToString("dd/MM/yyyy hh:mm") + "|" + price.dtTo.ToString("dd/MM/yyyy hh:mm"), catalogitem = "", CreatorID = 0, quantity = price.quantiy, itemid = price.roomid, StoreID = 0, TypeOrder = 1, // dịch vụ bằng 2 giá phòng bằng 1 catalogitemid = price.pricePolicyId, OrderID = saleorder.Id, }); } if (list.Count > 0) { db.InsertAll(list); } db.Update(room); db.Update(usingroom); db.Update(checkin); tran.Commit(); rs.Status = "01"; rs.Message = "Thanh toán thành công cho khách hàng :" + itemcheckin.CustomerName; return(rs); } catch (Exception e) { rs.Status = "00"; rs.Message = "Thanh toán thất bại. Vui lòng thực hiện lại!"; return(rs); } } } }