public void TestDeNghiXuatDieuChuyen() { //Lấy số tồn kho của một sản phẩm có mã là xxx (ví dụ ban đầu là 5) //Ma san pham: 06000178 - 279 HangTonKhoInfo hangTonKhoBanDau = HangTonKhoDataProvider.GetHangTonKhoById(Declare.IdKho, 279, 0); //tạo một chứng từ đề nghị xuất tiêu hao có số là ABC1, nhập sản phẩm xxx với số lượng nhập là 2 //số phiếu : PNNB0100070000001 deNghiXuatDieuChuyenInfor = new ChungTuDieuChuyenInfor() { SoChungTu = soPhieu, LoaiChungTu = Convert.ToInt32(TransactionType.DE_NGHI_XUAT_DIEU_CHUYEN), GhiChu = "Test Nghiệp Vụ", IdKho = Declare.IdKho }; DeNghiDieuChuyenBussiness deNghiDieuChuyenBussiness = new DeNghiDieuChuyenBussiness(deNghiXuatDieuChuyenInfor); deNghiDieuChuyenBussiness.ListChiTietChungTu.Add(new DeNghiDieuChuyenInfor { IdSanPham = 279, SoLuong = 2 }); deNghiDieuChuyenBussiness.SaveChungTu(); //Lấp số tồn kho của sản phẩm xxx (kết quả hy vọng olà 7) HangTonKhoInfo hangTonKhoSauKhiXuat = HangTonKhoDataProvider.GetHangTonKhoById(Declare.IdKho, 279, 0); //Kiểm tra có đúng là kết quả mong đợi - ban đầu có bằng 2 không? Assert.AreEqual(hangTonKhoBanDau.SoLuong, hangTonKhoSauKhiXuat.SoLuong); Assert.AreEqual(hangTonKhoBanDau.TonAo - 2, hangTonKhoSauKhiXuat.TonAo); }
private void TinhTonKho(int idKho, int idSanPham, int deltaLuong, int soLuong) { if (!Calculable(idSanPham)) { return; } //nếu có số tồn đầu kỳ thì chắc chắn đã có số tồn kho HangTonKhoInfo hangTonKhoInfo = HangTonKhoDataProvider.GetHangTonKhoById(idKho, idSanPham, IdTrungTam) ?? new HangTonKhoInfo { IdKho = idKho, IdSanPham = idSanPham, IdTrungTam = IdTrungTam }; TonKhoCalc.TheKhoNeeded = IsThuKho; CreateTonKhoCalc(hangTonKhoInfo); if (deltaLuong == 0) { if (!TonKhoCalc.HasTheKho && IsThuKho) { deltaLuong = soLuong; } } TonKhoCalc.IdChungTu = ChungTuInfo.IdChungTu; TonKhoCalc.Calculate(deltaLuong); }
public void TestXuatDieuChuyen() { TestDeNghiXuatDieuChuyen(); //Lấy số tồn kho của một sản phẩm có mã là xxx (ví dụ ban đầu là 5) //Ma san pham: 06000178 - 279 HangTonKhoInfo hangTonKhoBanDau = HangTonKhoDataProvider.GetHangTonKhoById(Declare.IdKho, 279, 0); //tạo một chứng từ xuất tiêu hao có số là ABC1, nhập sản phẩm xxx với số lượng nhập là 2 //số phiếu : PNNB0100070000001 xuatDieuChuyenInfor = new ChungTuDieuChuyenInfor() { IdChungTu = deNghiXuatDieuChuyenInfor.IdChungTu, SoChungTu = soPhieu, LoaiChungTu = Convert.ToInt32(TransactionType.XUAT_DIEU_CHUYEN), GhiChu = "Test Nghiệp Vụ", IdKho = Declare.IdKho }; XuatDieuChuyenBusiness xuatDieuChuyenBusiness = new XuatDieuChuyenBusiness(xuatDieuChuyenInfor); xuatDieuChuyenBusiness.ListChiTietChungTu.Add(new ChungTu_ChiTietInfo { IdSanPham = 279, SoLuong = 2 }); xuatDieuChuyenBusiness.ListChiTietHangHoa.Add(new ChungTu_ChiTietHangHoaBaseInfo { IdSanPham = 279, MaVach = "1234TESTNGHIEPVU", SoLuong = 1 }); xuatDieuChuyenBusiness.ListChiTietHangHoa.Add(new ChungTu_ChiTietHangHoaBaseInfo { IdSanPham = 279, MaVach = "5678TESTNGHIEPVU", SoLuong = 1 }); xuatDieuChuyenBusiness.SaveChungTu(); //Lấp số tồn kho của sản phẩm xxx (kết quả hy vọng olà 7) HangTonKhoInfo hangTonKhoSauKhiXuat = HangTonKhoDataProvider.GetHangTonKhoById(Declare.IdKho, 279, 0); //Kiểm tra có đúng là kết quả mong đợi - ban đầu có bằng 2 không? Assert.AreEqual(hangTonKhoBanDau.SoLuong - 4, hangTonKhoSauKhiXuat.SoLuong); Assert.AreEqual(hangTonKhoBanDau.TonAo, hangTonKhoSauKhiXuat.TonAo); }
public void TestXoaXuatNoiBo() { TestXuatNoiBo(); //Lấy số tồn kho của một sản phẩm có mã là xxx (ví dụ ban đầu là 5) //mã sản phẩm :06000166 - 279 HangTonKhoInfo hangTonKhoBanDau = HangTonKhoDataProvider.GetHangTonKhoById(Declare.IdKho, 279, 0); //xóa chứng từ xuất nội bộ có số là ABC2, xuất sản phẩm xxx với số lượng xuất là 2 XuatNoiBoBussiness xuatNoiBoBussiness = new XuatNoiBoBussiness(xuatNBInfo); xuatNoiBoBussiness.DeleteChungTu(); //Lấp số tồn kho của sản phẩm xxx (kết quả hy vọng là 7) HangTonKhoInfo hangTonKhoSauKhiXoa = HangTonKhoDataProvider.GetHangTonKhoById(Declare.IdKho, 279, 0); //Kiểm tra có đúng là kết quả mong đợi - ban đầu có bằng 2 không? Assert.AreEqual(hangTonKhoBanDau.SoLuong + 2, hangTonKhoSauKhiXoa.SoLuong); Assert.AreEqual(hangTonKhoBanDau.TonAo + 2, hangTonKhoSauKhiXoa.TonAo); }
public void TestXoaNhapNoiBo() { TestNhapNoiBo(); //Lấy số tồn kho của một sản phẩm có mã là xxx (ví dụ ban đầu là 7) //Mã sản phẩm :06000184 - 279 HangTonKhoInfo hangTonKhoBanDau = HangTonKhoDataProvider.GetHangTonKhoById(Declare.IdKho, 279, 0); //xóa chứng từ nhập nội bộ có số là ABC1, nhập sản phẩm xxx với số lượng nhập là 2 NhapNoiBoBussiness nhapBusiness = new NhapNoiBoBussiness(nhapNBInfo); nhapBusiness.DeleteChungTu(); //Lấp số tồn kho của sản phẩm xxx (kết quả mong đợi là 5) HangTonKhoInfo hangTonKhoSauKhiXoa = HangTonKhoDataProvider.GetHangTonKhoById(Declare.IdKho, 279, 0); //Kiểm tra có đúng là ban đầu - kết quả mong đợi có bằng 2 không? Assert.AreEqual(hangTonKhoBanDau.SoLuong - 2, hangTonKhoSauKhiXoa.SoLuong); }
public void TestNhapNoiBo() { //Lấy số tồn kho của một sản phẩm có mã là xxx (ví dụ ban đầu là 5) //Ma san pham: 06000178 - 279 HangTonKhoInfo hangTonKhoBanDau = HangTonKhoDataProvider.GetHangTonKhoById(Declare.IdKho, 270, 0); //tạo một chứng từ nhập nội bộ có số là ABC1, nhập sản phẩm xxx với số lượng nhập là 2 //số phiếu : PNNB0100070000001 nhapNBInfo = new ChungTuNhapNoiBoInfor { SoChungTu = soPhieu, LoaiChungTu = Convert.ToInt32(TransactionType.NHAP_NOIBO), GhiChu = "Test Nghiệp Vụ", IdKho = Declare.IdKho }; NhapNoiBoBussiness nhapBusiness = new NhapNoiBoBussiness(nhapNBInfo); nhapBusiness.ListChiTietChungTu.Add(new ChungTu_ChiTietInfo { IdSanPham = 270, SoLuong = 20 }); nhapBusiness.ListChiTietHangHoa.Add(new ChungTu_ChiTietHangHoaBaseInfo { IdSanPham = 270, MaVach = "MINHPN005", SoLuong = 10 }); nhapBusiness.ListChiTietHangHoa.Add(new ChungTu_ChiTietHangHoaBaseInfo { IdSanPham = 270, MaVach = "MINHPN006", SoLuong = 10 }); nhapBusiness.SaveChungTu(); //Lấp số tồn kho của sản phẩm xxx (kết quả hy vọng olà 7) HangTonKhoInfo hangTonKhoSauKhiNhap = HangTonKhoDataProvider.GetHangTonKhoById(Declare.IdKho, 270, 0); //Kiểm tra có đúng là kết quả mong đợi - ban đầu có bằng 2 không? Assert.AreEqual(hangTonKhoBanDau.SoLuong + 20, hangTonKhoSauKhiNhap.SoLuong); Assert.AreEqual(hangTonKhoBanDau.TonAo + 20, hangTonKhoSauKhiNhap.TonAo); }
public void TestXuatNoiBo() { //Lấy số tồn kho của một sản phẩm có mã là xxx (ví dụ ban đầu là 7) //Mã sản phẩm :06000178 - 279 HangTonKhoInfo hangTonKhoBanDau = HangTonKhoDataProvider.GetHangTonKhoById(Declare.IdKho, 279, 0); //tạo một chứng từ xuất nội bộ có số là ABC2, xuất sản phẩm xxx với số lượng xuất là 2 xuatNBInfo = new ChungTuXuatNoiBoInfor { SoChungTu = soPhieu, LoaiChungTu = Convert.ToInt32(TransactionType.XUAT_NOI_BO), GhiChu = "Test Nghiệp Vụ", IdKho = Declare.IdKho }; XuatNoiBoBussiness xuatNoiBoBussiness = new XuatNoiBoBussiness(xuatNBInfo); xuatNoiBoBussiness.ListChiTietChungTu.Add(new ChungTu_ChiTietInfo { IdSanPham = 279, SoLuong = 2 }); xuatNoiBoBussiness.ListChiTietHangHoa.Add(new ChungTu_ChiTietHangHoaBaseInfo { IdSanPham = 279, MaVach = "1234TESTNGHIEPVU", SoLuong = 1 }); xuatNoiBoBussiness.ListChiTietHangHoa.Add(new ChungTu_ChiTietHangHoaBaseInfo { IdSanPham = 279, MaVach = "5678TESTNGHIEPVU", SoLuong = 1 }); xuatNoiBoBussiness.SaveChungTu(); //Lấp số tồn kho của sản phẩm xxx (kết quả mong đợi là 5) HangTonKhoInfo hangTonKhoSauKhiXuat = HangTonKhoDataProvider.GetHangTonKhoById(Declare.IdKho, 279, 0); //Kiểm tra có đúng là ban đầu - kết quả mong đợi có bằng 2 không? Assert.AreEqual(hangTonKhoBanDau.SoLuong - 2, hangTonKhoSauKhiXuat.SoLuong); Assert.AreEqual(hangTonKhoBanDau.TonAo - 2, hangTonKhoSauKhiXuat.TonAo); }
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; } }