/// <summary> /// Hàm tạo thông báo gửi đến nhóm tài khoản quản lý /// </summary> /// <param name="maNguyenLieu"></param> private void taoThongBaoDieuChinhGia(int maNguyenLieu) { try { qlCaPheEntities db = new qlCaPheEntities(); //---------Lấy danh sách sản phẩm cập nhật giá List <NguyenLieuOfSanPham> listSanPhamCapNhat = new bNguyenLieu().laySanPhamSuDungNguyenLieu(maNguyenLieu); //---------Lấy danh sách tài khoản cần tạo thông báo List <taiKhoan> listTaiKhoan = db.taiKhoans.Where(t => t.nhomTaiKhoan.quyenHan.Contains(":402")).ToList(); foreach (NguyenLieuOfSanPham itemSanPham in listSanPhamCapNhat) { foreach (taiKhoan taiKhoanNhanThongBao in listTaiKhoan) { thongBao tbAdd = new thongBao(); tbAdd.daXem = false; tbAdd.ghiChu = "Thông báo đổi giá cả sản phẩm"; tbAdd.ndThongBao = "Đơn giá nhập nguyên liệu cho sản phẩm " + itemSanPham.tenSanPham + " đã thay đổi."; tbAdd.ngayTao = DateTime.Now; tbAdd.taiKhoan = taiKhoanNhanThongBao.tenDangNhap; db.thongBaos.Add(tbAdd); db.SaveChanges(); } } } catch (Exception ex) { xulyFile.ghiLoi("Class: NhapKhoController - Function: taoThongBaoDieuChinhGia", ex.Message); } }
/// <summary> /// hàm thực hiện lấy tổng số tiền xuất nguyên liệu có trong session /// </summary> /// <returns></returns> public double getTotalPrice() { double kq = 0; bNguyenLieu bNguyenLieu = new bNguyenLieu(); foreach (ctPhieuXuatKho i in this.Item.Values) { //--------Chuyển đổi ra đơn vị chính để tính tiền double soLuongXuat = (double)bNguyenLieu.chuyenDoiDonViNhoSangLon((double)i.soLuongXuat, i.nguyenLieu); kq += i.donGiaXuat * soLuongXuat; } return(kq); }
/// <summary> /// hàm thực hiện lấy tổng số tiền nhập nguyên liệu có trong session /// </summary> /// <returns></returns> public long getTotalPrice() { long kq = 0; foreach (ctPhieuNhapKho i in this.Item.Values) { //kq += i.donGiaNhap * (int)(i.soLuongNhap / i.nguyenLieu.tyLeChuyenDoi); //------tổng tiền = đơn giá * số lượng gốc (đơn vị hiển thị kg, lit....) double soLuongNhap = new bNguyenLieu().chuyenDoiDonViNhoSangLon(i.soLuongNhap, i.nguyenLieu); kq += (long)(i.donGiaNhap * soLuongNhap); } return(kq); }
/// <summary> /// hàm thực hiện lấy tổng số tiền của nguyên liệu tại thời điểm lập công thứccó trong session /// </summary> /// <returns></returns> public long getTotalPriceNguyenLieu() { long kq = 0; foreach (ctCongThuc i in this.Item.Values) { if (i.maNguyenLieu > 0) //--Nếu bước này có dùng nguyên liêu { qlCaPheEntities db = new qlCaPheEntities(); //--------Sửa lại khi có bNhapKho double donGiaNguyenLieu = new bNhapKho().tinhTienBinhQuanNguyenLieuNhap(i.maNguyenLieu); //----Cộng dồn tổng tiền nguyên liệu = Số lượng sử dụng (với đơn vị lớn nhất (kg, lit)) * với đơn giá nguyên liệu double soLuongSuDung = new bNguyenLieu().chuyenDoiDonViNhoSangLon(i.soLuongNguyenLieu, i.nguyenLieu); kq += (long)(soLuongSuDung * donGiaNguyenLieu); } } return(kq); }
/// <summary> /// Hàm thực hiện cập nhật lại tổng tiền tồn kho. /// </summary> /// <param name="ct">Object chi tiết tồn kho để lấy các thuộc tính cần thiết</param> /// <param name="db"></param> /// <returns>1: Cập nhật thành công - 2: thất bại</returns> public int capNhatTongTienTonKho(ctTonKho ct, qlCaPheEntities db) { int kq = 0; try { TonKho tkUpdate = db.TonKhoes.SingleOrDefault(s => s.maSoKy == ct.maSoKy); if (tkUpdate != null) { ct.nguyenLieu = db.nguyenLieux.SingleOrDefault(s => s.maNguyenLieu == ct.maNguyenLieu); double soLuongTinh = new bNguyenLieu().chuyenDoiDonViNhoSangLon(ct.soLuongThucTe, ct.nguyenLieu); tkUpdate.tongTien += (long)(ct.donGia * soLuongTinh); db.Entry(tkUpdate).State = System.Data.Entity.EntityState.Modified; kq = db.SaveChanges(); } } catch (Exception ex) { xulyFile.ghiLoi("Class: bKiemKho - Function: capNhatTongTienTonKho", ex.Message); } return(kq); }
/// <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); } }