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