/// <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); }
/// <summary> /// Hàm lấy tất cả các nguyên liệu đã xuất kho từ ngày ... đến ngày hiện tại /// </summary> /// <param name="db"></param> /// <param name="ngayLay">Ngày bắt đầu cần lấy</param> /// <returns>List object chứa các nguyên liệu đã xuất</returns> public List <NguyenLieuXuat> layDanhSachNguyenLieuXuat(qlCaPheEntities db, DateTime ngayLay) { List <NguyenLieuXuat> listNguyenLieuXuat = new List <NguyenLieuXuat>(); //------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> listNguyenLieuXuatStore = db.laySoLuongNguyenLieuXuatTuNgay(ngayLay); //-----Đọc dữ liệu đã lấy và thêm vảo listobject nguyên liệu xuất foreach (object itemXuat in listNguyenLieuXuatStore) { int maNguyenLieuGet = xulyDuLieu.doiChuoiSangInteger(xulyDuLieu.layThuocTinhTrongMotObject(itemXuat, "maNguyenLieu")); int soLuongXuatGet = xulyDuLieu.doiChuoiSangInteger(xulyDuLieu.layThuocTinhTrongMotObject(itemXuat, "soLuongXuat")); long tongTienXuatGet = xulyDuLieu.doiChuoiSangLong(xulyDuLieu.layThuocTinhTrongMotObject(itemXuat, "tongTienXuat")); NguyenLieuXuat nguyenLieuXuatGet = new NguyenLieuXuat(maNguyenLieuGet, soLuongXuatGet, tongTienXuatGet); listNguyenLieuXuat.Add(nguyenLieuXuatGet); } return(listNguyenLieuXuat); }