/// <summary>
        /// Hàm lấy dữ liệu từ giao diện gán cho các thuộc tính có trong bảng congThucPhaChe
        /// </summary>
        /// <param name="congThuc"></param>
        /// <param name="f"></param>
        private void layDuLieuTuViewCongThuc(congThucPhaChe congThuc, FormCollection f)
        {
            string loi = "";

            congThuc.maSanPham = this.xuLyRequestLayMaSanPham();
            if (congThuc.maSanPham <= 0)
            {
                loi += "Vui lòng chọn sản phẩm cần công thức pha chế <br/>";
            }
            congThuc.tenCongThuc = xulyDuLieu.xulyKyTuHTML(f["txtTenCongThuc"]);
            if (congThuc.tenCongThuc.Length <= 0)
            {
                loi += "Vui lòng nhập tên công thức <br/>";
            }
            congThuc.dienGiai = xulyDuLieu.xulyKyTuHTML(f["txtDienGiai"]);
            if (congThuc.dienGiai.Length <= 0)
            {
                loi += "Vui lòng nhập diễn giải về công thức <br/>";
            }
            congThuc.ghiChu    = xulyDuLieu.xulyKyTuHTML(f["txtGhiChu"]);
            congThuc.nguoiTao  = ((taiKhoan)Session["login"]).tenDangNhap;
            congThuc.ngayTao   = DateTime.Now;
            congThuc.trangThai = false; //-------Thiết lập trạng thái công thức chưa được sử dụng
            if (loi.Length > 0)
            {
                throw new Exception(loi);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Hàm kiểm tra sản phẩm có khả thi để tiếp nhận
        /// </summary>
        /// <param name="sp">Sản phẩm cần kiểm tra</param>
        /// <returns>True: Khả thi, False: không khả thi (hết nguyên liệu)</returns>
        public bool kiemTraSanPhamKhaThi(sanPham sp)
        {
            qlCaPheEntities db = new qlCaPheEntities();
            //------Lấy công thức của sản phẩm còn sử dụng
            congThucPhaChe congThucSanPham = sp.congThucPhaChes.SingleOrDefault(c => c.trangThai == true);

            //---------Kiểm tra công thức của sản phẩm
            if (congThucSanPham != null)
            {
                //--------------Lấy số lượng thực tế trong kho
                List <ctTonKho>   listThucTe       = new bTonKho().layDanhSachTon();
                List <ctCongThuc> listBuocCongThuc = congThucSanPham.ctCongThucs.Where(c => c.maNguyenLieu > 0).ToList();
                //-------------Lặp qua những bước có sử dụng nguyên liệu
                foreach (ctCongThuc ctCongThuc in listBuocCongThuc)
                {
                    double soLuongSuDung = (double)ctCongThuc.soLuongNguyenLieu;
                    //-------Lặp qua các nguyên liệu tồn kho cần sử dụng cho công thức
                    ctTonKho nguyenLieuTonThucTe = listThucTe.SingleOrDefault(ct => ct.maNguyenLieu == ctCongThuc.maNguyenLieu);
                    if (nguyenLieuTonThucTe != null)
                    {
                        if (nguyenLieuTonThucTe.soLuongCuoiKyLyThuyet < soLuongSuDung)
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        return(false);//-----Trả về khi không có nguyên liệu trong kho
                    }
                }
                return(true); //----Trả về khi đã kiểm tra số lượng nguyên liệu pha chế sản phẩm đủ
            }
            return(false);    //------Trả về khi không có công thức pha chế của sản phẩm
        }
        public ActionResult ct_TaoMoiCongThuc(congThucPhaChe ct, FormCollection f)
        {
            string          ndThongBao = ""; int kqLuu = 0;
            qlCaPheEntities db = new qlCaPheEntities();

            try
            {
                int maSP = this.xuLyRequestLayMaSanPham();
                this.layDuLieuTuViewCongThuc(ct, f);
                ct.sanPham = db.sanPhams.SingleOrDefault(s => s.maSanPham == maSP);
                //---Insert table lichSuGia
                this.themLichSuGiaVaoDatabase(db, f);
                //---Insert table congThucPhaChe
                db.congThucPhaChes.Add(ct);
                kqLuu = db.SaveChanges();
                if (kqLuu > 0)
                {
                    //---Insert table ctCongThuc
                    this.themChiTietVaoDatabase(ct.maCongThuc, db);
                    ndThongBao = createHTML.taoNoiDungThongBao("Công thức pha chế", xulyDuLieu.traVeKyTuGoc(ct.tenCongThuc), "/CongThuc/ct_TableCongThuc");
                    xulyChung.ghiNhatKyDtb(2, "Công thức pha chế của \" " + xulyDuLieu.traVeKyTuGoc(ct.sanPham.tenSanPham) + " \"");
                }
            }
            catch (Exception ex)
            {
                xulyFile.ghiLoi("Class CongThucController - Function: ct_TaoMoiCongThuc_Post", ex.Message);
                ndThongBao = ex.Message;
                this.doDuLieuCongThucLenView(ct, db);
            }
            this.resetData();
            ViewBag.ThongBao = createHTML.taoThongBaoLuu(ndThongBao);
            return(View());
        }
 /// <summary>
 /// Hàm thực hiện xóa một công thức khỏi CSDL
 /// </summary>
 /// <param name="maCongThuc"></param>
 public void xoaCongThuc(int maCongThuc)
 {
     try
     {
         int             kqLuu = 0;
         qlCaPheEntities db    = new qlCaPheEntities();
         congThucPhaChe  ctXoa = db.congThucPhaChes.SingleOrDefault(c => c.maCongThuc == maCongThuc);
         if (ctXoa != null)
         {
             //-----xóa dữ liệu trong bảng chi tiết trước
             this.xoaChiTiet(ctXoa.maCongThuc, db);
             //------Tiến hành xóa công thức
             db.congThucPhaChes.Remove(ctXoa);
             kqLuu = db.SaveChanges();
             if (kqLuu > 0)
             {
                 xulyChung.ghiNhatKyDtb(3, "Công thức pha chế của \"" + xulyDuLieu.traVeKyTuGoc(ctXoa.sanPham.tenSanPham) + " \"");
             }
         }
         else
         {
             throw new Exception("Công thức có mã " + maCongThuc.ToString() + " không tồn tại để xóa bỏ");
         }
     }
     catch (Exception ex)
     {
         xulyFile.ghiLoi("Class CongThucController - Function: xoaCongThuc", ex.Message);
     }
 }
        /// <summary>
        /// Hàm tạo html cho class body của modal nội dung công thức
        /// </summary>
        /// <param name="db"></param>
        /// <param name="congThuc"></param>
        /// <returns></returns>
        private string htmlTaoNoiDungTrongBodyChiTiet(congThucPhaChe congThuc)
        {
            string kq = "";

            kq += "                     <div class=\"wizard\">";
            kq += "                         <div class=\"wizard-inner\">";
            kq += "                             <div class=\"connecting-line\"></div>";
            kq += "                                 <ul class=\"nav nav-tabs\" role=\"tablist\">";
            //-----------Lặp qua chi tiết để hiện các bước chọn
            List <ctCongThuc> listChiTiet = congThuc.ctCongThucs.Where(c => c.maCongThuc == congThuc.maCongThuc).OrderBy(c => c.buocSo).ToList();
            int index = 0; //----Biến xác định. Nếu là phần tử đầu tiên thì add class active để chọn bước này

            foreach (ctCongThuc ct in listChiTiet)
            {
                //---------Gán danh sách các bước để người dùng chọn
                kq += this.htmlStepListModalChitietCongThuc(ct, index);
                index++;
            }
            kq += "                                   </ul></div>";         //-----Đóng ul và div cho khu vực danh sách các bước
            kq += "                           <div class=\"tab-content\">"; //------Khu vực nội dung bước
            int indexNoiDung = 0;

            foreach (ctCongThuc ct in listChiTiet)//----Lặp qua danh sách chi tiết để gán nội dung các bước thực hiện
            {
                kq += this.htmlNoiDungChoTungBuoc(ct, indexNoiDung);
                indexNoiDung++;
            }
            kq += "                          </div>";
            kq += "                    </div>";
            return(kq);
        }
        /// <summary>
        /// Hàm thực hiện đổ dữ liệu của công thức lên giao diện
        /// </summary>
        /// <param name="congThuc"></param>
        private void doDuLieuCongThucLenView(congThucPhaChe congThuc, qlCaPheEntities db)
        {
            ViewBag.txtMaCongThuc  = congThuc.maCongThuc.ToString();
            ViewBag.txtTenCongThuc = xulyDuLieu.traVeKyTuGoc(congThuc.tenCongThuc);
            ViewBag.txtDienGiai    = xulyDuLieu.traVeKyTuGoc(congThuc.dienGiai);
            ViewBag.txtGhiChu      = xulyDuLieu.traVeKyTuGoc(congThuc.ghiChu);

            ViewBag.TitleListCongThuc   = xulyChung.taoUrlCoTruyenThamSo("CongThuc/ct_TableCongThuc", congThuc.maSanPham.ToString());
            ViewBag.TitleCreateCongThuc = xulyChung.taoUrlCoTruyenThamSo("CongThuc/ct_TaoMoiCongThuc", congThuc.maSanPham.ToString());
            ViewBag.hinhSP = xulyDuLieu.chuyenByteHinhThanhSrcImage(db.sanPhams.SingleOrDefault(s => s.maSanPham == congThuc.maSanPham).hinhAnh);
        }
        /// <summary>
        /// Hàm tạo chuỗi html cho div modal nội dung các bước của công thức
        /// </summary>
        /// <param name="congThuc"></param>
        /// <returns></returns>
        private string htmlModalChiTietCongThuc(congThucPhaChe congThuc)
        {
            string kq = "";

            //-------Tạo tiêu đế cho modal và gán tên công thức pha chế
            kq += this.htmlHeaderModalChiTietCongthuc(xulyDuLieu.traVeKyTuGoc(congThuc.tenCongThuc));
            //-------Tạo body cho modal
            kq += this.htmlBodyModalChiTietCongThuc(congThuc);
            //-------Tạo footer cho modal
            kq += this.htmlFooterModalChiTietCongThuc(xulyDuLieu.traVeKyTuGoc(congThuc.ghiChu));
            return(kq);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Hàm gán dữ liệu của 1 object ctHoaDonTam vào 1 dòng trên bảng
        /// </summary>
        /// <param name="ct"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        private string ganDuLieuChiTietHoaDon(ctHoaDonTam ct)
        {
            string html = "";

            //----------Gán dữ liệu cho giao diện
            html += "<tr>";
            html += "   <td>";
            html += "       <div class=\"col-md-4 col-sm-4 col-xs-4 col-lg-4\">";
            html += "           <img width=\"50px;\" height=\"50px;\" src=\"" + xulyDuLieu.chuyenByteHinhThanhSrcImage(ct.sanPham.hinhAnh) + "\">";
            html += "       </div>";
            html += "       <div class=\"col-md-8 col-sm-8 col-xs-8 col-lg-8\">";
            html += "          <h4>" + xulyDuLieu.traVeKyTuGoc(ct.sanPham.tenSanPham) + "</h4>";
            html += "       </div>";
            html += "   </td>";
            html += "   <td>" + ct.soLuong.ToString() + "</td>";
            //----Kiểm tra trạng thái của hóa đơn để thiết lập các nút chức năng tương ứng
            if (ct.trangThaiPhaChe == 0) //-----Trạng thái đang pha chế --- CÓ CHỨC NĂNG PHA CHẾ SẢN PHẨM HOẶC HỦY
            {
                if (new bSanPham().kiemTraSanPhamKhaThi(ct.sanPham))
                {
                    html += "    <td><button type=\"button\" maCt=\"" + ct.maCtTam.ToString() + "\"  class=\"btnPhaChe btn btn-success btn-circle waves-effect waves-circle waves-float\"><i class=\"material-icons\">send</i></button></td>";
                }
                else
                {
                    html += "    <td><button type=\"button\" maCt=\"" + ct.maCtTam.ToString() + "\"  class=\"btnThayThe btn btn-warning btn-circle waves-effect waves-circle waves-float\"><i class=\"material-icons\">undo</i></button></td>";
                }
            }
            else if (ct.trangThaiPhaChe == 1) //----Trạng thái đã pha chế --- CÓ CHỨC NĂNG CẬP NHẬT TRẠNG THÁI PHA CHẾ XONG HOẶC XEM CÔNG THỨC
            {
                congThucPhaChe ctSanPham = ct.sanPham.congThucPhaChes.SingleOrDefault(c => c.trangThai == true);
                if (ctSanPham != null) //-----Tạo nút xem công thức
                {
                    html += "    <td><button type=\"button\" maCongThuc=\"" + ctSanPham.maCongThuc.ToString() + "\"  class=\"btnXemCongThuc btn btn-info btn-circle waves-effect waves-circle waves-float\"><i class=\"material-icons\">info_outline</i></button></td>";
                }
                else
                {
                    html += "   <td></td>";
                }
                html += "    <td><button type=\"button\" maCt=\"" + ct.maCtTam.ToString() + "\"  class=\"btnHoanTat btn btn-danger btn-circle waves-effect waves-circle waves-float\"><i class=\"material-icons\">done</i></button></td>";
            }
            html += "</tr>";
            return(html);
        }
 /// <summary>
 /// Hàm thực hiện cập nhật trạng thái của 1 công thức
 /// Trạng thái cập nhật sẽ ngược với trạng thái hiện tại
 /// </summary>
 /// <param name="maCongThuc">Mã công thức cần cập nhật</param>
 public void capNhatTrangThai()
 {
     try
     {
         string param = xulyChung.nhanThamSoTrongSession(); int kqLuu = 0;
         if (param.Length > 0)
         {
             int             maCongThuc  = xulyDuLieu.doiChuoiSangInteger(param);
             qlCaPheEntities db          = new qlCaPheEntities();
             congThucPhaChe  congThucSua = db.congThucPhaChes.SingleOrDefault(c => c.maCongThuc == maCongThuc);
             this.capNhatCacCongThucFalse(congThucSua.sanPham, db);
             if (congThucSua != null)
             {
                 bool trangThaiCu = (bool)congThucSua.trangThai; //Lưu lại trạng thái cũ để chuyển đến danh sách tương ứng
                 congThucSua.trangThai       = !trangThaiCu;     //Cập nhật trạng thái ngược với trạng thái cũ
                 congThucSua.nguoiDuyet      = ((taiKhoan)Session["login"]).tenDangNhap;
                 db.Entry(congThucSua).State = System.Data.Entity.EntityState.Modified;
                 kqLuu = db.SaveChanges();
                 if (kqLuu > 0)
                 {
                     xulyChung.ghiNhatKyDtb(4, "Cập nhật trạng thái công thức pha chế của \" " + xulyDuLieu.traVeKyTuGoc(congThucSua.sanPham.tenSanPham) + " \"");
                     //-------Thiết lập lại session để chuyển đến danh sách đúng nhất
                     Session["urlAction"] = "page=/CongThuc/ct_TableCongThuc|request=" + congThucSua.maSanPham.ToString();
                     Response.Redirect(xulyChung.layTenMien() + "/CongThuc/ct_TableCongThuc");
                 }
             }
             else
             {
                 throw new Exception("Slide có mã " + maCongThuc + " không tồn tại để cập nhật");
             }
         }
         else
         {
             throw new Exception("không nhận được tham số");
         }
     }
     catch (Exception ex)
     {
         xulyFile.ghiLoi("Class: CongThucController - Function: capNhatTrangThai", ex.Message);
         Response.Redirect(xulyChung.layTenMien() + "/Home/ServerError");
     }
 }
        /// <summary>
        /// Hàm tạo html body của modal xem chi tiết công thức.
        /// </summary>
        /// <param name="congThuc"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        private string htmlBodyModalChiTietCongThuc(congThucPhaChe congThuc)
        {
            string kq = "";

            kq += "<div class=\"modal-body\">";
            kq += "    <div class=\"row\">";
            kq += "        <div class=\"col-md-12 col-lg-12\">";
            kq += "            <div class=\"card\">";
            kq += "                <div class=\"header bg-cyan\">";
            kq += "                    <h2>Danh mục các bước thực hiện</h2>";
            kq += "                </div>";
            kq += "                <div class=\"body\">";
            //---------Gán nội dung danh sách các bước và nội dung của từng bước
            kq += this.htmlTaoNoiDungTrongBodyChiTiet(congThuc);
            kq += "                </div>";//End div body
            kq += "            </div>";
            kq += "        </div>";
            kq += "    </div>";
            kq += "</div>";
            return(kq);
        }
        public ActionResult ct_ChinhSuaCongThuc(FormCollection f)
        {
            int             kqLuu = 0;
            qlCaPheEntities db = new qlCaPheEntities(); congThucPhaChe ctSua = new congThucPhaChe();

            try
            {
                int maCT = xulyDuLieu.doiChuoiSangInteger(f["txtMaCongThuc"]);
                ctSua = db.congThucPhaChes.SingleOrDefault(c => c.maCongThuc == maCT);
                if (ctSua != null)
                {
                    //------Gán session dể chuyển đến danh sách  công thức của sản phẩm
                    Session["urlAction"] = "page=/CongThuc/ct_TableCongThuc|request=" + ctSua.maSanPham.ToString();
                    //-------Cập nhật thông tin công thức
                    this.layDuLieuTuViewCongThuc(ctSua, f);
                    //-------Cập nhât lịch sử giá
                    this.themLichSuGiaVaoDatabase(db, f);
                    db.Entry(ctSua).State = System.Data.Entity.EntityState.Modified;
                    kqLuu = db.SaveChanges();
                    if (kqLuu > 0)
                    {
                        xulyChung.ghiNhatKyDtb(4, "Công thức pha chế của \" " + xulyDuLieu.traVeKyTuGoc(ctSua.sanPham.tenSanPham) + " \"");
                        //-----Tiến hành xóa những chi tiết công thức và thêm lại
                        this.xoaChiTiet(ctSua.maCongThuc, db);
                        this.themChiTietVaoDatabase(ctSua.maCongThuc, db);
                        //Xóa session
                        Session.Remove("congThuc");
                        return(RedirectToAction("ct_TableCongThuc"));
                    }
                }
            }
            catch (Exception ex)
            {
                ViewBag.ThongBao = createHTML.taoThongBaoLuu(ex.Message);
                xulyFile.ghiLoi("Class CongThucController - Function: ct_ChinhSuaCongThuc_Post", ex.Message);
                this.doDuLieuCongThucLenView(ctSua, db);
            }
            return(View());
        }
Exemplo n.º 12
0
        /// <summary>
        /// Hàm tạo danh sách các nút chức năng tương ứng trên bảng
        /// </summary>
        /// <returns></returns>
        private string thietLapNutChucNangTable(sanPham sp)
        {
            string htmlTable = "";

            htmlTable += "          <div class=\"btn-group\">";
            htmlTable += "              <button type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-toggle=\"dropdown\">";
            htmlTable += "                  Chức năng <span class=\"caret\"></span>";
            htmlTable += "              </button>";
            htmlTable += "              <ul class=\"dropdown-menu\" role=\"menu\">";
            htmlTable += "                  <li><a task=\"" + xulyChung.taoUrlCoTruyenThamSo("/DoUong/du_ChinhSuaDoUong", sp.maSanPham.ToString()) + "\" class=\"guiRequest col-blue\"><i class=\"material-icons\">mode_edit</i>Chỉnh sửa</a></li>";
            if (sp.congThucPhaChes.Count() > 0)
            {
                congThucPhaChe ctSanPham = sp.congThucPhaChes.SingleOrDefault(c => c.trangThai == true);
                if (ctSanPham != null)
                {
                    htmlTable += "                  <li><a maCongThuc=\"" + ctSanPham.maCongThuc.ToString() + "\" class=\"goiYCongThuc col-blue\"><i class=\"material-icons\">search</i>Xem công thức</a></li>";
                }
            }

            switch (sp.trangThai) //-----Dựa vào trạng thái để hiện chức năng phù hợp
            {
            case 0:               //---Cho sản phẩm đang chờ duyệt. Cập nhật trạng thái thành 1
                htmlTable += "          <li><a task=\"" + xulyChung.taoUrlCoTruyenThamSo("/DoUong/capNhatTrangThai", sp.maSanPham.ToString() + "&1") + "\" class=\"guiRequest col-orange\"><i class=\"material-icons\">done</i>Duyệt</a></li>";
                break;

            case 1:    //---Cho sản phẩm đang được bán. Cập nhật trạng thái thành 2
                htmlTable += "          <li><a task=\"" + xulyChung.taoUrlCoTruyenThamSo("/DoUong/capNhatTrangThai", sp.maSanPham.ToString() + "&2") + "\" class=\"guiRequest col-orange\"><i class=\"material-icons\">clear</i>Ngưng bán</a></li>";
                break;

            case 2:    //---Cho sản phẩm ngưng bán. Cập nhật trạng thái thành 1
                htmlTable += "          <li><a task=\"" + xulyChung.taoUrlCoTruyenThamSo("/DoUong/capNhatTrangThai", sp.maSanPham.ToString() + "&1") + "\" class=\"guiRequest col-orange\"><i class=\"material-icons\">refresh</i>Bán lại</a></li>";
                break;
            }
            htmlTable += "                  <li><a  maXoa=\"" + sp.maSanPham.ToString() + "\" href=\"#\" class=\"xoa col-red\"><i class=\"material-icons\">delete</i>Xoá bỏ</a></li>";
            htmlTable += "              </ul>";
            htmlTable += "          </div>";
            return(htmlTable);
        }
Exemplo n.º 13
0
 /// <summary>
 /// Hàm thêm mới dữ liệu vào bảng ctPhieuXuatKho khi tiếp nhận pha chế 1 sản phẩm
 /// </summary>
 /// <param name="ct"></param>
 /// <param name="db"></param>
 private void insertNewCtPhieuXuat(ctHoaDonTam ct, qlCaPheEntities db)
 {
     try
     {
         //------Nhận mã phiếu xuất vửa thêm khi vào trang.
         int maPhieuXuat = this.layThamSoTrongSession(1);
         //---------DUYỆT QUA NGUYÊN LIỆU LÀM NÊN SẢN PHẨM ĐỂ THÊM VÀO PHIẾU XUẤT
         congThucPhaChe congThucSanPham = ct.sanPham.congThucPhaChes.SingleOrDefault(c => c.trangThai == true);
         if (congThucSanPham != null)
         {
             //----------Lặp qua từng nguyên liệu trong công thức pha chế sản phẩm
             foreach (ctCongThuc ctCongThuc in congThucSanPham.ctCongThucs.Where(c => c.maNguyenLieu > 0).ToList())
             {
                 //---------Lấy thông tin chi tiết để xem nguyên đang duyệt có trong phiếu chưa
                 ctPhieuXuatKho ctXuat = db.ctPhieuXuatKhoes.SingleOrDefault(c => c.maPhieu == maPhieuXuat && c.maNguyenLieu == ctCongThuc.maNguyenLieu);
                 if (ctXuat == null) //--------Chưa có nguyên liệu này trong phiếu => tạo mới
                 {
                     ctXuat              = new ctPhieuXuatKho();
                     ctXuat.maPhieu      = maPhieuXuat;
                     ctXuat.maNguyenLieu = (int)ctCongThuc.maNguyenLieu;
                     ctXuat.soLuongXuat  = ctCongThuc.soLuongNguyenLieu;
                     ctXuat.donGiaXuat   = new bTonKho().layDonGiaNguyenLieuTonKho(ctXuat.maNguyenLieu);
                     ctXuat.ghiChu       = "XUẤT NGUYÊN LIỆU KHI PHA CHẾ";
                     db.ctPhieuXuatKhoes.Add(ctXuat);
                     db.SaveChanges();
                 }
                 else //-------Cập nhật số lượng nguyên liệu
                 {
                     this.capNhatSoLuongNguyenLieuTrongChiTiet(db, ctXuat, (double)ctCongThuc.soLuongNguyenLieu);
                 }
             }
         }
     }
     catch (Exception ex)
     {
         xulyFile.ghiLoi("Class: PhaCheController - Function: insertCtPhieuXuatKho", ex.Message);
     }
 }
 /// <summary>
 /// Hàm tạo giao diện chỉnh sửa công thức
 /// </summary>
 /// <param name="maCongThuc"></param>
 /// <returns></returns>
 public ActionResult ct_ChinhSuaCongThuc()
 {
     this.resetData();
     try
     {
         string param = xulyChung.nhanThamSoTrongSession();
         if (param.Length > 0)
         {
             int             maCongThuc = xulyDuLieu.doiChuoiSangInteger(param);
             qlCaPheEntities db         = new qlCaPheEntities();
             congThucPhaChe  ctSua      = db.congThucPhaChes.SingleOrDefault(c => c.maCongThuc == maCongThuc);
             if (ctSua != null)
             {
                 this.doDuLieuCongThucLenView(ctSua, db);
                 //------Gán dữ liệu trong bảng chi tiết vào session
                 cartCongThuc cart = (cartCongThuc)Session["congThuc"];
                 foreach (ctCongThuc ct in db.ctCongThucs.ToList().Where(c => c.maCongThuc == ctSua.maCongThuc))
                 {
                     cart.addCart(ct);
                     Session["congThuc"] = cart;
                 }
                 xulyChung.ghiNhatKyDtb(1, "Chỉnh sửa công thức pha chế của \" " + xulyDuLieu.traVeKyTuGoc(ctSua.sanPham.tenSanPham) + " \"");
             }
         }
         else
         {
             throw new Exception("không nhận được tham số");
         }
     }
     catch (Exception ex)
     {
         xulyFile.ghiLoi("Class CongThucController - Function: ct_ChinhSuaCongThuc_Get", ex.Message);
         return(RedirectToAction("PageNotFound", "Home"));
     }
     return(View());
 }