internal override void Calculate(int soLuong) { Plus(soLuong); if (TonChiTietInfo.IdChiTiet != 0) { var tonChiTietBckInfo = TonChiTietInfo.Clone() as HangHoa_ChiTietInfo; while (TblHangHoaChiTietDataProvider.Update(TonChiTietInfo) == 0) { TonChiTietInfo = TblHangHoaChiTietDataProvider. GetHangHoaChiTietByMaVach(TonChiTietInfo.IdKho, TonChiTietInfo.IdSanPham, TonChiTietInfo.MaVach, TonChiTietInfo.IdTrungTam); Plus(soLuong); //TonChiTietInfo.DeltaSoLuong = tonChiTietBckInfo.DeltaSoLuong; } } else //if (TonChiTietInfo.SoLuong > 0) { if (TblHangHoaChiTietDataProvider.IsUsedForAnotherProduct(TonChiTietInfo.MaVach, TonChiTietInfo.IdSanPham)) { throw new Exception(String.Format("Mã vạch '{0}' đã được sử dụng cho loại sản phẩm khác!", TonChiTietInfo.MaVach)); } TonChiTietInfo.IdChiTiet = TblHangHoaChiTietDataProvider.Insert(TonChiTietInfo); } }
internal override void Calculate(int soLuong) { var tonChiTietTmpInfo = TonChiTietInfo.Clone() as HangHoa_ChiTietInfo; Minus(soLuong); if (soLuong != 0 && (TonChiTietInfo.SoLuong < 0)) { var soTon = tonChiTietTmpInfo == null ? 0 : tonChiTietTmpInfo.SoLuong; var message = String.Format("Số lượng mã vạch '{0}' {1}, không thể thực hiện được.", tonChiTietTmpInfo.MaVach, soTon > 0 ? "chỉ còn " + soTon : "đã hết"); message += "\nIdSanPham: " + tonChiTietTmpInfo.IdSanPham; message += "\nIdKho: " + tonChiTietTmpInfo.IdKho; message += "\nIdTrungTam: " + tonChiTietTmpInfo.IdTrungTam; message += "\nIdChiTiet: " + tonChiTietTmpInfo.IdChiTiet; throw new TinhTonException(message); } if (soLuong == 0) { return; } if (TonChiTietInfo.IdChiTiet != 0) { while (TblHangHoaChiTietDataProvider.Update(TonChiTietInfo) == 0) { TonChiTietInfo = TblHangHoaChiTietDataProvider. GetHangHoaChiTietByMaVach(TonChiTietInfo.IdKho, TonChiTietInfo.IdSanPham, TonChiTietInfo.MaVach, TonChiTietInfo.IdTrungTam); tonChiTietTmpInfo = TonChiTietInfo.Clone() as HangHoa_ChiTietInfo; //TonChiTietInfo.DeltaSoLuong = tonChiTietTmpInfo.DeltaSoLuong; Minus(soLuong); if (soLuong != 0 && (TonChiTietInfo.SoLuong < 0)) { var soTon = tonChiTietTmpInfo == null ? 0 : tonChiTietTmpInfo.SoLuong; var message = String.Format("Số lượng mã vạch '{0}' {1}, không thể thực hiện được.", tonChiTietTmpInfo.MaVach, soTon > 0 ? "chỉ còn " + soTon : "đã hết"); message += "\nIdSanPham: " + tonChiTietTmpInfo.IdSanPham; message += "\nIdKho: " + tonChiTietTmpInfo.IdKho; message += "\nIdTrungTam: " + tonChiTietTmpInfo.IdTrungTam; message += "\nIdChiTiet: " + tonChiTietTmpInfo.IdChiTiet; throw new TinhTonException(message); } } } }
private int TinhTonKho(int idKho, int idSanPham, int soLuong, string maVach) { var dmSanPhamInfo = DmSanPhamProvider.Instance.GetSanPhamById(idSanPham); if (String.IsNullOrEmpty(maVach)) { throw new ManagedException(String.Format("Sản phẩm '{0}' không có mã vạch!", dmSanPhamInfo.MaSanPham)); } var hangHoaInfo = TblHangHoaChiTietDataProvider.GetHangHoaChiTietByMaVach(idKho, idSanPham, maVach, IdTrungTam) ?? new HangHoa_ChiTietInfo { IdKho = idKho, IdSanPham = idSanPham, MaVach = maVach, IdTrungTam = IdTrungTam }; if (soLuong > 0 && BusinessType == BusinessType.REAL_IN) { if (dmSanPhamInfo.TrungMaVach == 0) { if (!TblHangHoaChiTietDataProvider.IsUniqueSerial(hangHoaInfo.MaVach)) { throw new ManagedException(String.Format("Mã vạch '{0}' đã tồn tại trong hệ thống!", hangHoaInfo.MaVach)); } if (soLuong > 1) { throw new ManagedException(String.Format("Mã vạch '{0}' không được phép trùng, số lượng không được lớn hơn 1!", hangHoaInfo.MaVach)); } } else { if (!TblHangHoaChiTietDataProvider.IsNotInUniqueSerial(hangHoaInfo.MaVach)) { throw new ManagedException(String.Format("Mã vạch '{0}' đã tồn tại trong hệ thống!", hangHoaInfo.MaVach)); } } //if(Chit) } if (dmSanPhamInfo == null || dmSanPhamInfo.ChietKhau != 0) { return(hangHoaInfo.IdChiTiet); } if (soLuong == 0) { return(hangHoaInfo.IdChiTiet); //MINHPN cần nhập với số lượng = 0 } var soTon = hangHoaInfo.SoLuong; //if (hangHoaInfo.IdChiTiet == 0) //có thể trong hệ thống đã có mã vạch này { //ChungTuInfo.LoaiChungTu == Convert.ToInt32(TransactionType.NHAP_PO) || //ChungTuInfo.LoaiChungTu == Convert.ToInt32(TransactionType.NHAP_NOIBO) if (ThietLapBaoHanhHang()) { hangHoaInfo.BaoHanhHangTu = ChungTuInfo.NgayLap; hangHoaInfo.BaoHanhHangDen = hangHoaInfo.BaoHanhHangTu.AddMonths(dmSanPhamInfo.BaoHanhHang); } else { hangHoaInfo.BaoHanhHangTu = TblHangHoaChiTietDataProvider.GetNgayBaoHanhByMaVach(maVach, idSanPham); hangHoaInfo.BaoHanhHangDen = hangHoaInfo.BaoHanhHangTu.AddMonths(dmSanPhamInfo.BaoHanhHang); } if (BusinessType == BusinessType.REAL_IN) { if (!ThietLapTuoiTon(hangHoaInfo)) { TblHangHoaChiTietDataProvider.UpdateTuoiTonBaseInfo(maVach, ChungTuInfo.IdChungTu, hangHoaInfo); } if (hangHoaInfo.IdPhieuNhap == 0 && hangHoaInfo.NgayNhapKho_DK == DateTime.MinValue) { TblHangHoaChiTietDataProvider.PendingXacDinhNguonGoc(maVach, ChungTuInfo.IdChungTu, ChungTuInfo.SoChungTu, idSanPham); } } } CreateTonMaVachCalc(hangHoaInfo); TonMaVachCalc.Calculate(soLuong); if (hangHoaInfo.SoLuong < 0) { var message = String.Format("Số lượng mã vạch '{0}' {1}, không thể thực hiện được.", maVach, soTon > 0 ? "chỉ còn " + soTon : "đã hết"); message += "\nIdSanPham: " + idSanPham; message += "\nIdKho: " + idKho; message += "\nIdTrungTam: " + IdTrungTam; throw new TinhTonException(message); } if (dmSanPhamInfo.TrungMaVach == 0 && BusinessType == BusinessType.REAL_IN) { if (soLuong > 0 && hangHoaInfo.SoLuong > 1) { var message = String.Format("Mã vạch '{0}' đã tồn tại.", maVach); message += "\nIdSanPham: " + idSanPham; message += "\nIdKho: " + idKho; message += "\nIdTrungTam: " + IdTrungTam; throw new TinhTonException(message); } } return(hangHoaInfo.IdChiTiet); }