Exemple #1
0
        /// <summary>
        /// Hàm gán dữ liệu cho object cttonkho để thêm vào danh sách hiện lên giao diện
        /// </summary>
        /// <param name="itemNhap">ctPhieuNhap để lấy thông tin nguyên liệu, số lượng nhập.</param>
        /// <param name="db"></param>
        /// <param name="soLuongXuat">Tổng số lượng nguyên liệu đã xuất trong kỳ.</param>
        /// <returns></returns>
        private ctTonKho addCtTonKhoToList(ctPhieuNhapKho itemNhap, qlCaPheEntities db, double soLuongXuat)
        {
            int soLuongCuoiKyTruoc = 0;//, maKyTruoc=0;
            //--------Lấy thông tin tồn kho kỳ trước để xác định SỐ LƯỢNG TỒN CUỒI KỲ TRƯỚC
            TonKho tonKhoKyTruoc = db.TonKhoes.OrderByDescending(t => t.maSoKy).FirstOrDefault();

            if (tonKhoKyTruoc != null)
            {
                ctTonKho ctTonTruoc = tonKhoKyTruoc.ctTonKhoes.SingleOrDefault(c => c.TonKho.maSoKy == tonKhoKyTruoc.maSoKy && c.maNguyenLieu == itemNhap.maNguyenLieu);
                if (ctTonTruoc != null)
                {
                    //----------Lấy số lượng tồn kho cuối kỳ trước làm đầu kỳ này. (Số lượng cuối kỳ trước là số lượng thực tế).
                    soLuongCuoiKyTruoc = (int)ctTonTruoc.soLuongThucTe;
                }
            }

            ctTonKho ctTon = new ctTonKho();

            ctTon.maNguyenLieu          = itemNhap.maNguyenLieu;
            ctTon.donGia                = itemNhap.donGiaNhap;
            ctTon.soLuongDauKy          = soLuongCuoiKyTruoc;
            ctTon.soLuongCuoiKyLyThuyet = itemNhap.soLuongNhap - soLuongXuat;
            ctTon.soLuongThucTe         = itemNhap.soLuongNhap - soLuongXuat;
            ctTon.nguyenLieu            = itemNhap.nguyenLieu;
            ctTon.tyLeHaoHut            = 0;
            return(ctTon);
        }
Exemple #2
0
        /// <summary>
        /// Hàm lấy danh sách nguyên liệu tồn kho thực tế
        /// </summary>
        /// <returns>Trả về danh sách các nguyên liệu tồn kho thực tế</returns>
        public List <ctTonKho> layDanhSachTon()
        {
            List <ctTonKho> kq = new List <ctTonKho>();

            try
            {
                qlCaPheEntities db = new qlCaPheEntities();
                //------Lấy thông tin đợt kiểm kho gần nhất
                TonKho tonKho = db.TonKhoes.OrderByDescending(t => t.maSoKy).FirstOrDefault();
                if (tonKho != null)
                {
                    List <ctPhieuNhapKho> listNguyenLieuNhapTrongKy = new bNguyenLieu().layDanhSachNguyenLieuNhapTrongKy(db, tonKho.ngayKiem);
                    List <NguyenLieuXuat> listNguyenLieuXuat        = new bNguyenLieu().layDanhSachNguyenLieuXuat(db, tonKho.ngayKiem);
                    //-------Đọc tất cả các nguyên liệu
                    foreach (nguyenLieu nlItem in db.nguyenLieux.Where(n => n.trangThai == true).ToList())
                    {
                        double   soLuongXuat = 0, soLuongNhap = 0, soLuongThucTe = 0, soLuongDauKy = 0, donGiaNhap = 0;
                        ctTonKho ctKQ = new ctTonKho();
                        ctKQ.nguyenLieu = nlItem;
                        ctPhieuNhapKho nguyenLieuNhap = listNguyenLieuNhapTrongKy.SingleOrDefault(s => s.maNguyenLieu == nlItem.maNguyenLieu);
                        if (nguyenLieuNhap != null)
                        {
                            soLuongNhap       = (double)nguyenLieuNhap.soLuongNhap;
                            donGiaNhap        = nguyenLieuNhap.donGiaNhap;
                            ctKQ.maNguyenLieu = nguyenLieuNhap.maNguyenLieu;
                        }
                        //--------Kiểm tra để nguyên liệu đang duyệt có trong sổ kho trước đây
                        ctTonKho itemSoKho = tonKho.ctTonKhoes.SingleOrDefault(t => t.maNguyenLieu == nlItem.maNguyenLieu);
                        if (itemSoKho != null)
                        {
                            ctKQ.maNguyenLieu = itemSoKho.maNguyenLieu;
                            //------Số lượng dầu kỳ này là số lượng thực tế cuối kỳ trước
                            soLuongDauKy  = (double)itemSoKho.soLuongThucTe;
                            soLuongThucTe = (double)itemSoKho.soLuongThucTe;
                            donGiaNhap    = itemSoKho.donGia;
                            //----Kiểm tra nguyên liệu đang duyệt cần kiểm tra có được xuất chưa.
                            NguyenLieuXuat nguyenLieuXuat = listNguyenLieuXuat.SingleOrDefault(s => s.maNguyenLieu == itemSoKho.maNguyenLieu);
                            if (nguyenLieuXuat != null)
                            {
                                soLuongXuat = nguyenLieuXuat.soLuongXuat;
                            }
                        }
                        ctKQ.donGia        = (long)donGiaNhap;
                        ctKQ.soLuongDauKy  = soLuongDauKy;
                        ctKQ.soLuongThucTe = soLuongThucTe;
                        //-------------Số lượng THỰC TẾ TRÊN LÝ THUYẾT là số lượng (CUỐI KỲ TRƯỚC + SỐ LƯỢNG NHẬP(Trong kỳ)) - SỐ LƯỢNG ĐÃ XUẤT(trong kỳ) //=============Trong kỳ: từ ngày kiểm kê cuối cùng đến nay
                        ctKQ.soLuongCuoiKyLyThuyet = (soLuongThucTe + soLuongNhap) - soLuongXuat;
                        ctKQ.tyLeHaoHut            = ctKQ.soLuongDauKy - ctKQ.soLuongCuoiKyLyThuyet;
                        kq.Add(ctKQ);
                    }
                }
            }
            catch (Exception ex)
            {
                xulyFile.ghiLoi("Class: bTonKho - Function: layDanhSachTon", ex.Message);
            }
            return(kq);
        }
Exemple #3
0
        /// <summary>
        /// Lấy danh sách các nguyên liệu đã nhập trong kỳ. TỪ NGÀY KIỂM KHO TRƯỚC ĐẾN NGÀY HIỆN TẠI
        /// </summary>
        /// <param name="db"></param>
        /// <param name="ngayKiemKyTruoc">Ngày kiểm kê kho gần nhất</param>
        /// <returns>Danh sách chứa các object có các thuộc tính nguyên liệu nhập</returns>
        public List <ctPhieuNhapKho> layDanhSachNguyenLieuNhapTrongKy(qlCaPheEntities db, DateTime ngayKiemKyTruoc)
        {
            List <ctPhieuNhapKho> kq = new List <ctPhieuNhapKho>();
            //------Lấy danh sách nguyên liệu đã xuất từ ngày đã kiểm kho đến ngày hiện tại
            IEnumerable <object> listNguyenLieuNhapStore = db.laySuongLuongNguyenLieuNhapTrongKy(ngayKiemKyTruoc);

            //-----Đọc dữ liệu đã lấy và thêm vảo listobject nguyên liệu xuất
            foreach (object itemXuat in listNguyenLieuNhapStore)
            {
                int            maNguyenLieuGet = xulyDuLieu.doiChuoiSangInteger(xulyDuLieu.layThuocTinhTrongMotObject(itemXuat, "maNguyenLieu"));
                int            soLuongNhapGet  = xulyDuLieu.doiChuoiSangInteger(xulyDuLieu.layThuocTinhTrongMotObject(itemXuat, "soLuongNhap"));
                long           tongTienNhapGet = xulyDuLieu.doiChuoiSangLong(xulyDuLieu.layThuocTinhTrongMotObject(itemXuat, "tongTienNhap"));
                ctPhieuNhapKho ctAdd           = new ctPhieuNhapKho();
                ctAdd.maNguyenLieu = maNguyenLieuGet;
                ctAdd.soLuongNhap  = soLuongNhapGet;
                ctAdd.donGiaNhap   = tongTienNhapGet / soLuongNhapGet;
                kq.Add(ctAdd);
            }
            return(kq);
        }
Exemple #4
0
        /// <summary>
        /// Hàm thêm dữ liệu từ giao diện cho object ctPhieuNhapKho
        /// </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(ctPhieuNhapKho 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]); int maNhaCC = xulyDuLieu.doiChuoiSangInteger(duLieu.Split('|')[1]);
            double soLuongNhap = xulyDuLieu.doiChuoiSangDouble(duLieu.Split('|')[2]); long donGiaNhap = xulyDuLieu.doiChuoiSangLong(duLieu.Split('|')[3]);
            string ghiChu = xulyDuLieu.xulyKyTuHTML(duLieu.Split('|')[4]);

            //--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/>";
            }
            chiTiet.maNhaCC = maNhaCC;
            if (chiTiet.maNhaCC <= 0)
            {
                loi += "Vui lòng chọn nhà cung cấp cho nguyên liệu này <br/>";
            }

            //------Gán các giá trị references nguyenLieu, nhaCungCap cho chi tiết
            chiTiet.nhaCungCap = db.nhaCungCaps.SingleOrDefault(s => s.maNhaCC == chiTiet.maNhaCC);
            chiTiet.nguyenLieu = db.nguyenLieux.SingleOrDefault(s => s.maNguyenLieu == chiTiet.maNguyenLieu);

            //----------Lưu số lượng nguyên liệu với đơn vị nhỏ nhất của nguyên liệu (1kg=>1000g)
            chiTiet.soLuongNhap = new bNguyenLieu().chuyenDoiDonViTuLonSangNho(soLuongNhap, chiTiet.nguyenLieu);
            if (chiTiet.soLuongNhap <= 0)
            {
                loi += "Vui lòng nhập số lượng nguyên liệu nhập vào kho <br/>";
            }
            chiTiet.donGiaNhap = donGiaNhap;
            if (chiTiet.donGiaNhap <= 0)
            {
                loi += "Vui lòng nhập đơn giá 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);
            }
        }
Exemple #5
0
        /// <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 = ""; long tongTienNhap = 0;
            cartNhapKho cart = (cartNhapKho)Session["ctNhapKho"];

            try
            {
                ctPhieuNhapKho chiTietAdd = new ctPhieuNhapKho();
                this.layDuLieuTuViewChiTiet(chiTietAdd, duLieu);
                //------Thêm chi tiết vào session
                cart.addCart(chiTietAdd);
                //Cập nhật lại session
                Session["ctNhapKho"] = cart;
                tongTienNhap         = cart.getTotalPrice();
            }
            catch (Exception ex)
            {
                xulyFile.ghiLoi("Class NhapKhoController - Function: AjaxThemChiTietVaTraVeBang", 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
        }
Exemple #6
0
 /// <summary>
 /// Hàm thêm chi tiết phiếu nhập đã chọn vào Session
 /// </summary>
 public void addCart(ctPhieuNhapKho 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
             this.removeItem(x.maNguyenLieu);
             this.Item.Add(x.maNguyenLieu, x);
         }
     }
     catch (Exception ex)
     {
         xulyFile.ghiLoi("Class: cartNhapKho - Function: addCart", ex.Message);
     }
 }
Exemple #7
0
        private void themctPhieuNhapKhoTrongDatabase(int maPhieu, qlCaPheEntities db)
        {
            cartNhapKho cart = (cartNhapKho)Session["ctNhapKho"];

            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 (ctPhieuNhapKho ctTam in cart.getListForTable())
            {
                ctPhieuNhapKho ctAdd = new ctPhieuNhapKho();
                ctAdd.maPhieu      = maPhieu;
                ctAdd.maNguyenLieu = ctTam.maNguyenLieu;
                ctAdd.maNhaCC      = ctTam.maNhaCC;
                ctAdd.ghiChu       = ctTam.ghiChu;
                ctAdd.donGiaNhap   = ctTam.donGiaNhap;
                ctAdd.soLuongNhap  = ctTam.soLuongNhap;
                db.ctPhieuNhapKhoes.Add(ctAdd);
                db.SaveChanges();
                //-------Tạo thông báo gửi đến người quản trị sản phẩm cập nhật lại giá cả
                this.taoThongBaoDieuChinhGia(ctAdd.maNguyenLieu);
            }
        }