Esempio n. 1
0
        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);
        }
Esempio n. 3
0
        internal sealed override void Calculate(int deltaSoLuong)
        {
            base.Calculate(deltaSoLuong);

            if (TonKhoInfo.IdTonKho == 0)
            {
                if (TonKhoInfo.SoLuong > 0 || TonKhoInfo.TonAo > 0)
                {
                    HangTonKhoDataProvider.Insert(TonKhoInfo);
                }

                //else

                //    throw new ManagedException(
                //        String.Format("Sản phẩm không có trong kho, không thể thực hiện được giao dịch."));
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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;
            }
        }