示例#1
0
        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);
            }
        }
示例#2
0
        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);
                    }
                }
            }
        }
示例#3
0
        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);
        }