protected TonKhoCalc(HangTonKhoInfo tonKhoInfo, string soChungTu, DateTime ngayChungTu) { TonKhoInfo = tonKhoInfo; if (TheKhoNeeded) { if (TheKhoInfo == null || TheKhoInfo.SoChungTu != soChungTu || TheKhoInfo.IdSanPham != tonKhoInfo.IdSanPham) { hasTheKho = null; } TheKhoInfo = TheKhoDataProvider.GetTheKhoBy(tonKhoInfo.IdKho, tonKhoInfo.IdSanPham, soChungTu, tonKhoInfo.IdTrungTam) ?? new TheKhoInfo { IdKho = tonKhoInfo.IdKho, IdSanPham = tonKhoInfo.IdSanPham, NgayChungTu = ngayChungTu, SoChungTu = soChungTu, IdTrungTam = tonKhoInfo.IdTrungTam }; TheKhoInfo.NgayChungTu = ngayChungTu; if (hasTheKho == null) { hasTheKho = TheKhoInfo.IdTheKho != 0; } CreateTheKho(TheKhoInfo); } }
internal virtual void Calculate(int deltaSoLuong) { try { TonKhoInfoBck = TonKhoInfo.Clone() as HangTonKhoInfo; Calculation(deltaSoLuong); //TonKhoInfoBck = TonKhoInfo.Clone() as HangTonKhoInfo; if (deltaSoLuong != 0 && (TonKhoInfo.SoLuong < 0 || TonKhoInfo.TonAo < 0)) { int soTon = TonKhoInfo.SoLuong < 0 ? TonKhoInfoBck.SoLuong : TonKhoInfoBck.TonAo; throw new TinhTonException(String.Format("{0}, không thể thực hiện được.", soTon > 0 ? "Số lượng tồn chỉ còn " + soTon : "Đã hết hàng")); } //if (TheKhoCalc == null || deltaSoLuong == 0) return; if (TheKhoCalc != null) { if (TheKhoInfo.IdTheKho == 0) { //dong lai tam thoi //if (deltaSoLuong < 0) // throw new TinhTonException("Không thể ghi thẻ có xuất/nhập âm"); } TheKhoCalc.GhiXuatNhap(deltaSoLuong); TheKhoDataProvider.WriteLog(TheKhoInfo); //hasTheKho = true; } if (deltaSoLuong == 0) { return; } if (TonKhoInfo.IdTonKho != 0) { while (HangTonKhoDataProvider.Update(TonKhoInfo, IdChungTu) == 0) { TonKhoInfo = HangTonKhoDataProvider.GetHangTonKhoById(TonKhoInfo.IdKho, TonKhoInfo.IdSanPham, TonKhoInfo.IdTrungTam); //TonKhoInfo.DeltaSoLuong = TonKhoInfoBck.DeltaSoLuong; //TonKhoInfo.DeltaTonAo = TonKhoInfoBck.DeltaTonAo; TonKhoInfoBck = TonKhoInfo.Clone() as HangTonKhoInfo; Calculation(deltaSoLuong); if (deltaSoLuong != 0 && (TonKhoInfo.SoLuong < 0 || TonKhoInfo.TonAo < 0)) { int soTon = TonKhoInfo.SoLuong < 0 ? TonKhoInfoBck.SoLuong : TonKhoInfoBck.TonAo; throw new TinhTonException(String.Format("{0}, không thể thực hiện được.", soTon > 0 ? "Số lượng tồn chỉ còn " + soTon : "Đã hết hàng")); } } } } catch (TinhTonException ex) { if (TonKhoInfo != null) { throw new TinhTonException(ex.Message + "\nIdTrungTam: " + TonKhoInfo.IdTrungTam + "\nIdKho: " + TonKhoInfo.IdKho); } throw; } }