/// <summary>
        /// Hàm thực hiện thêm nguyên liệu vào Session chứa chi tiết phiếu nhập kho
        /// </summary>
        /// <param name="duLieu">Chuỗi dữ liệu nhận từ giao diện</param>
        /// <returns></returns>
        public string AjaxThemChiTietVaTraVeBang(string duLieu)
        {
            string kq = ""; double tongTienNhap = 0;

            if (xulyChung.duocCapNhat(idOfPage, "7"))
            {
                cartXuatKho cart = (cartXuatKho)Session["ctXuatKho"];
                try
                {
                    ctPhieuXuatKho chiTietAdd = new ctPhieuXuatKho();
                    this.layDuLieuTuViewChiTiet(chiTietAdd, duLieu);
                    //------Thêm chi tiết vào session
                    cart.addCart(chiTietAdd);
                    //Cập nhật lại session
                    Session["ctXuatKho"] = cart;
                    tongTienNhap         = cart.getTotalPrice();
                }
                catch (Exception ex)
                {
                    xulyFile.ghiLoi("Class XuatKhoController - Function: themChiTietVaTraVeBang", ex.Message);
                }
                kq += taoBangChiTietTuSession();        //------Tạo lại bảng danh sách các bước có trong session và hiện lên giao diện
            }
            return(kq + "|" + tongTienNhap.ToString()); //-------Trả về chuỗi html tạo nên bảng và chuỗi nội dung thông báo. Sau đó cắt ra và hiện lên giao diện
        }
Example #2
0
        /// <summary>
        /// Thực hiện xóa ct cũ và cập nhật lại để thực hiện trigger
        /// </summary>
        /// <param name="db"></param>
        /// <param name="ctXuat">Số lượng nguyên liệu</param>
        private void capNhatSoLuongNguyenLieuTrongChiTiet(qlCaPheEntities db, ctPhieuXuatKho ctXuat, double soLuong)
        {
            ctPhieuXuatKho ctNew = new ctPhieuXuatKho();

            ctNew = ctXuat;
            //--------Cộng dồn số lượng nguyên liệu
            ctNew.soLuongXuat += soLuong;
            db.ctPhieuXuatKhoes.Remove(ctXuat);
            db.SaveChanges();
            //----Thêm mới
            db.ctPhieuXuatKhoes.Add(ctNew);
            db.SaveChanges();
        }
        /// <summary>
        /// Hàm thêm dữ liệu vào bảng ctPhieuXuatKho và cập nhật lại số lượng tồn kho
        /// </summary>
        /// <param name="maPhieu"></param>
        /// <param name="db"></param>
        private void insertCtXuatKhoAndUpdateTonKho(int maPhieu, qlCaPheEntities db)
        {
            cartXuatKho cart = (cartXuatKho)Session["ctXuatKho"];

            if (cart.Item.Count <= 0)
            {
                throw new Exception("Vui lòng nhập hàng vào phiếu <br/>");
            }
            //----Lặp qua từng phần tử có trong session
            foreach (ctPhieuXuatKho ctTam in cart.getList())
            {
                ctPhieuXuatKho ctAdd = new ctPhieuXuatKho();
                ctAdd.maPhieu      = maPhieu;
                ctAdd.maNguyenLieu = ctTam.maNguyenLieu;
                ctAdd.ghiChu       = ctTam.ghiChu;
                ctAdd.donGiaXuat   = ctTam.donGiaXuat;
                ctAdd.soLuongXuat  = ctTam.soLuongXuat;
                //ctAdd.nguyenLieu = ctTam.nguyen0Lieu;
                db.ctPhieuXuatKhoes.Add(ctAdd);
                db.SaveChanges();
            }
        }
 /// <summary>
 /// Hàm thêm chi tiết phiếu xuất đã chọn vào Session
 /// </summary>
 public void addCart(ctPhieuXuatKho x)
 {
     try
     {
         ///--------Kiểm tra xem có trùng mã nguyên liệu, nếu không thì mới cho thêm vào
         if (!this.Item.ContainsKey(x.maNguyenLieu))
         {
             this.Item.Add(x.maNguyenLieu, x);
         }
         //---Nếu như nguyên liệu đã có trong session thì xóa và cập nhật nguyên liệu mới
         else
         {
             //-----Xóa nguyên liệu trong cart
             this.removeItem(x.maNguyenLieu);
             this.Item.Add(x.maNguyenLieu, x);
         }
     }
     catch (Exception ex)
     {
         xulyFile.ghiLoi("Class: cartNhapKho - Function: addCart", ex.Message);
     }
 }
Example #5
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 thêm dữ liệu từ giao diện cho object ctPhieuXuatKho
        /// </summary>
        /// <param name="chiTiet"></param>
        /// <param name="duLieu">Chuỗi dữ liệu được lấy khi ajax gửi về. Dữ liệu là các giá trị trong textbox nhập vào chi tiết
        /// có dạng: maNguyenLieu|maNhaCungCap|soLuongNhap|donGiaNhap|ghiChu</param>
        private void layDuLieuTuViewChiTiet(ctPhieuXuatKho chiTiet, string duLieu)
        {
            string loi = ""; qlCaPheEntities db = new qlCaPheEntities();
            //------Thực hiện xử lý cắt chuỗi duLieu để lấy giá trị của các thuộc tính
            int  maNguyenLieu = xulyDuLieu.doiChuoiSangInteger(duLieu.Split('|')[0]); double soLuong = xulyDuLieu.doiChuoiSangDouble(duLieu.Split('|')[1]);
            long donGia = xulyDuLieu.doiChuoiSangLong(duLieu.Split('|')[2]); string ghiChu = xulyDuLieu.xulyKyTuHTML(duLieu.Split('|')[3]);

            //--Gán giá trị cho các thuộc tính
            chiTiet.maNguyenLieu = maNguyenLieu;
            if (chiTiet.maNguyenLieu <= 0)
            {
                loi += "Vui lòng chọn nguyên liệu cần nhập <br/>";
            }
            //------Gán các giá trị references nguyenLieu, nhaCungCap cho chi tiết
            chiTiet.nguyenLieu = db.nguyenLieux.SingleOrDefault(s => s.maNguyenLieu == chiTiet.maNguyenLieu);
            //---------Chuyển đổi số lượng ra đơn vị pha chế: VD: 1 kg = 1000g (soLuongNhapVao * tyLeChuyenDoi)
            double soLuongXuatChuyenDoi = new bNguyenLieu().chuyenDoiDonViTuLonSangNho(soLuong, chiTiet.nguyenLieu);
            double soLuongTon           = new bTonKho().laySoLuongNguyenLieuTonThucTeTrongKho(chiTiet.maNguyenLieu, db);

            chiTiet.soLuongXuat = soLuongXuatChuyenDoi;
            if (chiTiet.soLuongXuat <= 0 || soLuongXuatChuyenDoi > soLuongTon)
            {
                loi += "Số lượng nguyên liệu xuất kho không hợp lệ hoặc số lượng xuất lớn hơn số lượng tồn kho <br/>";
            }

            chiTiet.donGiaXuat = donGia;
            if (chiTiet.donGiaXuat <= 0)
            {
                loi += "Vui lòng nhập đơn giá của nguyên liệu tại thời điểm nhập vào phiếu <br/>";
            }

            chiTiet.ghiChu = ghiChu;
            if (loi.Length > 0)
            {
                throw new Exception(loi);
            }
        }