/// <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); }
/// <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> /// 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); }
/// <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); } }
/// <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 }
/// <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); } }
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); } }