/// <summary> /// hàm tạo bảng danh sách các món có trong hoaDonOrder /// </summary> /// <param name="hoaDon">Hóa đơn cần xem chi tiết</param> /// <returns>html vùng table danh sách các món trên modal</returns> private string taoBangChiTietHoaDon(hoaDonOrder hoaDon) { string html = ""; html += "<table class=\"table table-hover\">"; html += " <thead>"; html += " <tr>"; html += " <th style=\"width:50%\">Tên món</th>"; html += " <th width=\"25%\">Số lượng</th>"; html += " <th width=\"25%\">Đơn giá</th>"; html += " </tr>"; html += " </thead>"; html += " <tbody>"; //-------Lặp qua danh sách các món trong ctHoaDonTam chưa pha chế foreach (ctHoaDonOrder ct in hoaDon.ctHoaDonOrders.ToList()) { html += " <tr>"; html += " <td>"; html += " <img width=\"50px;\" height=\"50px;\" src=\"" + xulyDuLieu.chuyenByteHinhThanhSrcImage(ct.sanPham.hinhAnh) + "\">"; html += " <b>" + xulyDuLieu.traVeKyTuGoc(ct.sanPham.tenSanPham) + "</b>"; html += " </td>"; html += " <td>" + ct.soLuong.ToString() + "</td>"; html += " <td>" + xulyDuLieu.doiVND(ct.donGia) + "</td>"; html += " </tr>"; } html += " </tbody>"; html += "</table>"; return(html); }
/// <summary> /// Hàm thêm mới dữ liệu cho bảng ctHoaDonOrder trong DATABASE /// </summary> /// <param name="hoaDon">Chi tiết cho hóa đơn</param> /// <param name="listChiTietTam">Danh sách các sản phẩm trong hóa đơn tạm</param> private void InsertCtHoaDonOrder(hoaDonOrder hoaDon, List <ctHoaDonTam> listChiTietTam, qlCaPheEntities db) { //--------Lặp qua danh sách ctHoaDonTam và thêm vào ctHoaDonOrder foreach (ctHoaDonTam ctTam in listChiTietTam.Where(c => c.trangThaiPhaChe != 4)) { //-----Nếu ctHoaDonOrder đã tồn tại sản phẩm trong ctTam thì cập nhật số lượng ctHoaDonOrder ctAdd = hoaDon.ctHoaDonOrders.SingleOrDefault(c => c.maSanPham == ctTam.maSP); if (ctAdd == null) { //-------Thêm mới chi tiết ctAdd = new ctHoaDonOrder(); ctAdd.maSanPham = ctTam.maSP; ctAdd.sanPham = ctTam.sanPham; ctAdd.donGia = ctTam.donGia; ctAdd.soLuong = ctTam.soLuong; ctAdd.hoaDonOrder = hoaDon; db.ctHoaDonOrders.Add(ctAdd); db.SaveChanges(); } else { //-----Cập nhật chi tiết ctAdd.soLuong += ctTam.soLuong; db.Entry(ctAdd).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } } }
/// <summary> /// Hàm tạo bill thanh toán cần in /// </summary> /// <param name="hoaDon">Hóa đơn cần hiển thị thông tin</param> /// <param name="cauHinh">Thông tin cấu hình của quán</param> /// <param name="tienMat">Số tiền khách đưa</param> /// <param name="tienTra">Số tiền trả lại cho khách</param> /// <returns></returns> private string scriptTaoHoaDon(hoaDonOrder hoaDon, cauHinh cauHinh, long tienMat, long tienTra) { string kq = ""; kq += " <div class=\"row text-center\">"; kq += " <h4>" + xulyDuLieu.traVeKyTuGoc(cauHinh.tenQuan) + "</h4>"; kq += " <label><i>Địa chỉ: " + xulyDuLieu.traVeKyTuGoc(cauHinh.diaChi) + "</i></label>"; kq += " <label><i>ĐT: " + xulyDuLieu.traVeKyTuGoc(cauHinh.hotLine) + "</i></label><br/>"; kq += " <label>*********************</label>"; kq += " </div>"; kq += " <div class=\"row\">"; kq += " <h4 class=\"text-center\">HÓA ĐƠN THANH TOÁN</h4>"; kq += " <p>Số TT: " + hoaDon.maHoaDon.ToString() + "</p>"; kq += " <p><b>Bàn: " + xulyDuLieu.traVeKyTuGoc(hoaDon.BanChoNgoi.tenBan) + "</b> - Ngày: " + hoaDon.ngayLap.ToString() + "</p>"; kq += " </div>"; kq += " <div class=\"row\">"; kq += " <table>"; kq += " <thead>"; kq += " <tr>"; kq += " <th width=\"40%\">Tên hàng</th>"; kq += " <th width=\"20%\">Đơn giá</th>"; kq += " <th width=\"20%\">T.Tiền</th>"; kq += " </tr>"; kq += " </thead>"; kq += " <tbody>"; foreach (ctHoaDonOrder ct in hoaDon.ctHoaDonOrders.ToList()) { kq += " <tr>"; kq += " <td>" + xulyDuLieu.traVeKyTuGoc(ct.sanPham.tenSanPham) + " (x" + ct.soLuong.ToString() + ")</td>"; kq += " <td>" + xulyDuLieu.doiVND(ct.donGia) + "</td>"; kq += " <td>" + (ct.soLuong * ct.donGia).ToString() + "</td>"; kq += " </tr>"; } kq += " </tbody>"; kq += " </table>"; kq += " </div>"; kq += " <br/>"; kq += " <div class=\"font-16 bold\">"; kq += " <label>T.Cộng:</label>"; kq += " <label class=\"pull-right\">" + xulyDuLieu.doiVND(hoaDon.tongTien) + "</label>"; kq += " </div>"; kq += " <div class=\"font-18 bold\">"; kq += " <label>Tạm tính:</label>"; kq += " <label class=\"pull-right\">" + xulyDuLieu.doiVND(hoaDon.tamTinh) + "</label>"; kq += " </div>"; kq += " <div class=\"font-14 bold\">"; kq += " <label>Nhận tiền mặt:</label>"; kq += " <label class=\"pull-right\">" + tienMat + "</label>"; kq += " </div>"; kq += " <div class=\"font-14 bold\">"; kq += " <label>Tiền trả:</label>"; kq += " <label class=\"pull-right\">" + tienTra + "</label>"; kq += " </div>"; kq += " <div class=\"font-11 text-center\">"; kq += " <label>Cám ơn quý khách - hẹn gặp lại !!!</label>"; kq += " </div>"; return(kq); }
/// <summary> /// Hàm thêm mới 1 hóa đơn vào csdl cho bảng hoDonOrder /// </summary> /// <param name="hoaDonTam">Hóa đơn tạm để gán dữ liệu</param> /// <param name="db"></param> /// <param name="f"></param> private hoaDonOrder InsertHoaDonOrder(hoaDonTam hoaDonTam, qlCaPheEntities db, FormCollection f) { int kqLuu = 0; hoaDonOrder hoaDonAdd = new hoaDonOrder(); hoaDonAdd.maBan = hoaDonTam.maBan; hoaDonAdd.trangThai = 1;//----Thiết lập trạng thái hóa đơn đã thanh toán hoaDonAdd.ngayLap = DateTime.Now; hoaDonAdd.thoiDiemDen = hoaDonTam.thoiDiemDen; hoaDonAdd.nguoiPhucVu = hoaDonTam.nguoiPhucVu; hoaDonAdd.BanChoNgoi = hoaDonTam.BanChoNgoi; hoaDonAdd.nguoiXuatHD = ((taiKhoan)Session["login"]).tenDangNhap; hoaDonAdd.chietKhau = xulyDuLieu.doiChuoiSangInteger(f["txtTienChietKhau"]); hoaDonAdd.tongTien = new bHoaDonTam().layTongTienSanPham(hoaDonTam); hoaDonAdd.tamTinh = hoaDonAdd.tongTien - hoaDonAdd.chietKhau; hoaDonAdd.ghiChu = hoaDonTam.ghiChu; db.hoaDonOrders.Add(hoaDonAdd); kqLuu = db.SaveChanges(); return(hoaDonAdd); }
/// <summary> /// Hàm hoàn tất thanh toán 1 hóa đơn. /// 1. Tạo hóa đơn order /// 2. Xóa hóa đơn tạm /// </summary> /// <param name="f"></param> /// <returns></returns> public ActionResult hd_ThucHienThanhToan(FormCollection f) { string modal = ""; int kqLuu = 0; hoaDonTam hoaDonThanhToan = new hoaDonTam(); hoaDonOrder hoaDonAdd = new hoaDonOrder(); if (xulyChung.duocCapNhat(idOfPage, "7")) { try { ////--------Lấy thông tin hóa đơn int maBan = this.layMaBanTuSession(); qlCaPheEntities db = new qlCaPheEntities(); hoaDonThanhToan = db.hoaDonTams.SingleOrDefault(s => s.maBan == maBan); if (hoaDonThanhToan != null) { //--------Thêm vào bảng hoaDonOrder hoaDonAdd = this.InsertHoaDonOrder(hoaDonThanhToan, db, f); if (hoaDonAdd != null) { //--------Thêm vào bảng ctHoaDonOrder this.InsertCtHoaDonOrder(hoaDonAdd, hoaDonThanhToan.ctHoaDonTams.ToList(), db); //--------Cập nhật trạng thái hóa đơn tạm thành 3 ĐÃ thanh toán => chờ reset this.UpdateHoaDonTam(hoaDonThanhToan, db); xulyChung.ghiNhatKyDtb(2, "Thêm mới hóa đơn có mã \" " + hoaDonAdd.maHoaDon.ToString() + " \""); } } modal = this.taoModalInBill(hoaDonAdd, db, f); } catch (Exception ex) { modal = createHTML.taoThongBaoLuu(ex.Message); xulyFile.ghiLoi("Class: HoaDonController - Function: hd_ThucHienThanhToan", ex.Message); return(RedirectToAction("PageNotFound", "Home")); } ViewBag.ModalBill = modal; } return(View(hoaDonThanhToan)); }
/// <summary> /// Hàm tạo modal in hóa đơn sau khi đã thanh toán /// </summary> /// <param name="hoaDon"></param> /// <returns></returns> private string taoModalInBill(hoaDonOrder hoaDon, qlCaPheEntities db, FormCollection f) { string kq = ""; cauHinh cauHinh = db.cauHinhs.First(); long tienMat = xulyDuLieu.doiChuoiSangLong(f["txtTienMat"]), tienTra = xulyDuLieu.doiChuoiSangLong(f["txtTienTra"]); kq += "<div class=\"modal fade in\" id=\"modalInHoaDon\" tabindex=\"-1\" role=\"dialog\" style=\"display: block;\">"; kq += " <div class=\"modal-dialog modal-sm\" role=\"document\">"; kq += " <div class=\"modal-content\">"; kq += " <div class=\"modal-header bg-blue\">"; kq += " <h4 class=\"modal-title\" id=\"smallModalLabel\">IN HÓA ĐƠN</h4>"; kq += " </div>"; kq += " <div class=\"modal-body\" id=\"printBill\">"; kq += " <div class=\"row text-center\">"; kq += " <h4>" + xulyDuLieu.traVeKyTuGoc(cauHinh.tenQuan) + "</h4>"; kq += " <label><i>Địa chỉ: " + xulyDuLieu.traVeKyTuGoc(cauHinh.diaChi) + "</i></label>"; kq += " <label><i>ĐT: " + xulyDuLieu.traVeKyTuGoc(cauHinh.hotLine) + "</i></label><br/>"; kq += " <label>*********************</label>"; kq += " </div>"; kq += " <div class=\"row\">"; kq += " <h4 class=\"text-center\">HÓA ĐƠN THANH TOÁN</h4>"; kq += " <p>Số TT: " + hoaDon.maHoaDon.ToString() + "</p>"; kq += " <p><b>Bàn: " + xulyDuLieu.traVeKyTuGoc(hoaDon.BanChoNgoi.tenBan) + "</b> - Ngày: " + hoaDon.ngayLap.ToString() + "</p>"; kq += " </div>"; kq += " <div class=\"row\">"; kq += " <table>"; kq += " <thead>"; kq += " <tr>"; kq += " <th width=\"40%\">Tên hàng</th>"; kq += " <th width=\"20%\">Đơn giá</th>"; kq += " <th width=\"20%\">T.Tiền</th>"; kq += " </tr>"; kq += " </thead>"; kq += " <tbody>"; foreach (ctHoaDonOrder ct in hoaDon.ctHoaDonOrders.ToList()) { kq += " <tr>"; kq += " <td>" + xulyDuLieu.traVeKyTuGoc(ct.sanPham.tenSanPham) + " (x" + ct.soLuong.ToString() + ")</td>"; kq += " <td>" + xulyDuLieu.doiVND(ct.donGia).Replace("VNĐ", "") + "</td>"; kq += " <td>" + xulyDuLieu.doiVND((ct.soLuong * ct.donGia)).Replace("VNĐ", "") + "</td>"; kq += " </tr>"; } kq += " </tbody>"; kq += " </table>"; kq += " </div>"; kq += " <br/>"; kq += " <div class=\"font-16 bold\">"; kq += " <label>T.Cộng:</label>"; kq += " <label class=\"pull-right\">" + xulyDuLieu.doiVND(hoaDon.tongTien) + "</label>"; kq += " </div>"; kq += " <div class=\"font-18 bold\">"; kq += " <label>Tạm tính:</label>"; kq += " <label class=\"pull-right\">" + xulyDuLieu.doiVND(hoaDon.tamTinh) + "</label>"; kq += " </div>"; kq += " <div class=\"font-14 bold\">"; kq += " <label>Nhận tiền mặt:</label>"; kq += " <label class=\"pull-right\">" + xulyDuLieu.doiVND(tienMat) + "</label>"; kq += " </div>"; kq += " <div class=\"font-14 bold\">"; kq += " <label>Tiền trả:</label>"; kq += " <label class=\"pull-right\">" + xulyDuLieu.doiVND(tienTra) + "</label>"; kq += " </div>"; kq += " <div class=\"font-11 text-center\">"; kq += " <label>Cám ơn quý khách - hẹn gặp lại !!!</label>"; kq += " </div>"; kq += " </div>"; kq += " <div class=\"modal-footer\">"; kq += "<button id=\"print\" class=\"btn btn-primary waves-effect\" onclick=\"printContent('printBill');\" ><i class=\"material-icons\">print</i>In hóa đơn</button>"; kq += " <a href=\"/HoaDon/hd_TableHoaDonChoThanhToan\" class=\"btn btn-link waves-effect\">CLOSE</a>"; kq += " </div>"; kq += " </div>"; kq += " </div>"; kq += "</div>"; return(kq); }