Exemple #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);
            }
        }
Exemple #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);
                    }
                }
            }
        }
Exemple #3
0
        protected override void Check()
        {
            if (TblHangHoaChiTietDataProvider.IsUsedForAnotherProduct(txtMaVach.Text.Trim(), idSanPham))
            {
                throw new ManagedException("Mã vạch đã sử dụng cho 1 sản phẩm khác. Xin hãy kiểm tra lại !");
            }
            int soluong = 0;

            for (int i = 0; i < liChiTiet.Count; i++)
            {
                soluong = soluong + liChiTiet[i].SoLuong;
            }
            if (soluong >= Convert.ToInt32(lblSoLuongTon.Text))
            {
                throw new ManagedException("Số lượng mã vạch đã đủ. Không thể nhập thêm !");
            }
        }
        protected override void Check()
        {
            if (KhoXuatNccDataProvider.Instance.CheckSoLuong(Declare.IdKho, HangHoa.IdSanPham, txtMaVach.Text.Trim()))
            {
                throw new ManagedException("Mã vạch hiện không có trong kho. Xin hãy kiểm tra lại !");
            }
            if (TblHangHoaChiTietDataProvider.IsUsedForAnotherProduct(txtMaVach.Text.Trim(), idSanPham))
            {
                throw new ManagedException("Mã vạch đã sử dụng cho 1 sản phẩm khác. Xin hãy kiểm tra lại !");
            }
            int soluong = 0;

            for (int i = 0; i < liChiTiet.Count; i++)
            {
                soluong = soluong + liChiTiet[i].SoLuong;
            }
            if (soluong >= Convert.ToInt32(lblSoLuongTon.Text))
            {
                throw new InvalidOperationException("Số lượng mã vạch đã đủ. Không thể nhập thêm !");
            }
        }
Exemple #5
0
        protected override void DeleteInstance()
        {
            if (dgvList.CurrentRow == null)
            {
                return;
            }

            ChungTuNhapNccChiTietHangHoaInfo chiTietHangHoaInfo =
                (ChungTuNhapNccChiTietHangHoaInfo)dgvList.CurrentRow.DataBoundItem;

            if (TblHangHoaChiTietDataProvider.DaDungChoGiaoDichKhac(chiTietHangHoaInfo.IdChiTietHangHoa))
            {
                throw new ManagedException("Mã vạch đã được sử dụng. Không thể thay đổi!");
            }

            dgvList.Rows.Remove(dgvList.CurrentRow);
            count--;
            SoLuongTong = count * HangHoa.DonGia;
            //btnXoaDong.Enabled = false;
            lblTongSoLuong.Text = "";
            lblthanhtien.Text   = "";
            lblTongSoLuong.Text = count.ToString();
            lblthanhtien.Text   = SoLuongTong.ToString();
        }
Exemple #6
0
 private void Save()
 {
     if (txtMaVachTP.Text == "")
     {
         throw new ManagedException("Mã vạch cho thành phẩm không được để trống !");
     }
     for (int i = 0; i < lisx.Count; i++)
     {
         if (lisx[i].SoLuongDaQuet < lisx[i].SoLuongTrenTPham)
         {
             throw new ManagedException("Linh kiện " + lisx[i].TenLinhKien + " chưa nhập đủ số lượng mã vạch !");
         }
     }
     if (check == 0)
     {
         int SoLuongCT = SanXuatLenhProvier.GetSoLuongDNSanXuatLenh(
             Convert.ToInt32(TransactionType.NHAP_THANH_PHAM_SX), txtMaLenh.Text.Trim(), Declare.MaTrungTam);
         if (Convert.ToInt32(txtSoLuongYC.Text) <= SoLuongCT)
         {
             throw new ManagedException("Số lượng yêu cầu đã đủ, bạn không thể nhập thêm");
         }
     }
     if (check == 0 && isXuatLoi == false)
     {
         if (TblHangHoaChiTietDataProvider.IsUsedForAnotherProduct(txtMaVachTP.Text.Trim(), frm.idThanhPham))
         {
             throw new ManagedException("Mã vạch đã sử dụng cho 1 sản phẩm khác. Xin hãy kiểm tra lại !");
         }
         if (NhapThanhPhamSanXuatDataProvider.Instance.CheckMaVachNTP(frm.idThanhPham, txtMaVachTP.Text.Trim()) > 0)
         {
             throw new ManagedException("Mã vạch đã sử dụng cho 1 sản phẩm khác. Xin hãy kiểm tra lại !");
         }
         if (NhapThanhPhamSanXuatDataProvider.Instance.CheckMaVach(frm.idThanhPham, txtMaVachTP.Text.Trim()) > 0)
         {
             throw new ManagedException("Mã vạch đã sử dụng cho 1 sản phẩm khác. Xin hãy kiểm tra lại !");
         }
     }
     for (int i = 0; i < lisx.Count; i++)
     {
         if (lisx[i].SoLuongDaQuet < lisx[i].SoLuongTrenTPham)
         {
             throw new ManagedException("Bạn chưa nhập đủ số lượng mã vạch cho linh kiện " + lisx[i].MaLinhKien + " !");
         }
     }
     if (string.IsNullOrEmpty(dtNgayLap.Text))
     {
         dtNgayLap.Focus();
         throw new ManagedException("Bạn chưa chọn ngày lập !");
     }
     if (Convert.ToDateTime(dtNgayLap.EditValue) < frm.NgayLap)
     {
         dtNgayLap.Focus();
         throw new ManagedException("Ngày xuất linh kiện không được nhỏ hơn ngày lập của mã lệnh !");
     }
     try
     {
         ConnectionUtil.Instance.BeginTransaction();
         if (check == 0)
         {
             SaveXuatLinhKien(SaveNhapThanhPham());
             SLCT++;
         }
         else
         {
             XLKBussiness.SaveChungTu();
         }
         txtSoLuongCT.Text = SLCT.ToString();
         UpdateSoLuongDaXuat();
         if (SanXuatLenhProvier.GetSoLuongSanXuatLenh(Declare.IdKho, Convert.ToInt32(TransactionType.NHAP_THANH_PHAM_SX), txtMaLenh.Text.Trim(), 0) > 0)
         {
             SanXuatLenhProvier.UpdateTrangThai(new SanXuatLenhInfo {
                 MaLenh = txtMaLenh.Text.Trim(), MaThanhPham = txtMaThanhPham.Text.Trim(), TrangThai = Convert.ToInt32(TrangThaiSanXuat.DangSX)
             });
         }
         if (check == 0)
         {
             int SoLuongCT = SanXuatLenhProvier.GetSoLuongDNSanXuatLenh(
                 Convert.ToInt32(TransactionType.NHAP_THANH_PHAM_SX), txtMaLenh.Text.Trim(), Declare.MaTrungTam);
             if (Convert.ToInt32(txtSoLuongYC.Text) < SoLuongCT)
             {
                 throw new ManagedException("Số lượng yêu cầu đã đủ,bạn không thể nhập thêm");
             }
         }
         ConnectionUtil.Instance.CommitTransaction();
         clsUtils.MsgThongBao("Xuất thành công !");
         if (clsUtils.MsgXoa("Bạn có muốn in phiếu bảo hành cho bộ linh kiện không ?") == System.Windows.Forms.DialogResult.Yes)
         {
             List <ChungTuNhapNccChiTietHangHoaInfo> lst = new List <ChungTuNhapNccChiTietHangHoaInfo>();
             lst.AddRange(liMaVach);
             frmChonBaoCao frm1 = new frmChonBaoCao(true);
             frm1.ShowDialog();
             if (frm1.DialogResult == DialogResult.OK)
             {
                 if (frm1.Value == 1)
                 {
                     DMSanPhamInfo sp = DmSanPhamProvider.Instance.GetSanPhamByMa(txtMaThanhPham.Text.Trim());
                     foreach (ChungTuNhapNccChiTietHangHoaInfo pt in lst)
                     {
                         pt.ThoiHanBH = sp.BaoHanhHang;
                     }
                     rptInPhieuBHSX rpt = new rptInPhieuBHSX(txtTenThanhPham.Text.Trim(), txtMaLenh.Text.Trim(), txtMaVachTP.Text.Trim());
                     rpt.DataSource = lst;
                     rpt.ShowPreview();
                 }
                 else
                 {
                     rptInPhieuBHSX rpt = new rptInPhieuBHSX(txtTenThanhPham.Text.Trim(), txtMaLenh.Text.Trim(), txtMaVachTP.Text.Trim());
                     rpt.DataSource = lst;
                     rpt.ShowPreview();
                 }
             }
         }
         Clear();
         frm.LoadDuLieu();
     }
     catch (Exception ex)
     {
         ConnectionUtil.Instance.RollbackTransaction();
         throw ex;
     }
 }
Exemple #7
0
        private void GenSerial()
        {
            var result = new List <string>();

            var ngayThang = sysDate.ToString("yyMMdd");

            if (!(ChungTuChiTietInfo is ChungTuChiTietBaseInfo))
            {
                throw new ManagedException("Không đúng kiểu dữ liệu!");
            }

            sanPhamInfo = DmSanPhamProvider.Instance.GetSanPhamById((ChungTuChiTietInfo as ChungTuChiTietBaseInfo).IdSanPham);

            var sanPham = sanPhamInfo.MaSanPham.Substring(sanPhamInfo.MaSanPham.LastIndexOf(".") + 1);

            if (sanPhamInfo.TrungMaVach == 1)
            {
                var s = String.Format("{0} {1} {2}", sanPham, MaTrungTam, ngayThang);

                var count = 0;

                while (!TblHangHoaChiTietDataProvider.IsNotInUniqueSerial(s) || lstChiTiet.Exists(delegate(T1 match)
                {
                    return(match is ChungTuChiTietHangHoaBaseInfo &&

                           (match as ChungTuChiTietHangHoaBaseInfo).MaVach == s &&

                           (match as ChungTuChiTietHangHoaBaseInfo).IdSanPham != sanPhamInfo.IdSanPham);
                }))
                {
                    s = String.Format("{0} {1} {2}-{3}", sanPham, MaTrungTam, ngayThang, count);

                    count++;
                }

                lstChiTiet.Add(CreateSerial(s));

                frmProgress.Instance.Value += 1;

                return;
            }

            //kiểm tra xem nhân viên này đã dùng hết số serial tự sinh chưa
            //nếu chưa, nếu số lượng serial chưa dùng >= số lượng cần sinh thì không sinh thêm nữa,
            //  ngược lại thì tính lại số lượng serial cần sinh

            bool isNotUnique;

            do
            {
                isNotUnique = false;

                var soLuongCanSinhThem = (ChungTuChiTietInfo as ChungTuChiTietBaseInfo).SoLuong -

                                         AutoGenSerialProvider.Instance.CountNotUsed(sanPham, MaTrungTam, ngayThang, IdNhanVien);

                if (soLuongCanSinhThem > 0)
                {
                    for (var i = 0; i < soLuongCanSinhThem; i++)
                    {
                        var success = false;

                        while (!success)
                        {
                            try
                            {
                                //tăng số nhảy
                                var seqNum = AutoGenSerialProvider.Instance.IncreaseCount(sanPham, MaTrungTam);

                                var serial = String.Format("{0} {1} {2} {3}", sanPham, MaTrungTam, ngayThang, seqNum);

                                if (!TblHangHoaChiTietDataProvider.IsUniqueSerial(serial) || lstChiTiet.Exists(delegate(T1 match)
                                {
                                    return(match is ChungTuChiTietHangHoaBaseInfo &&

                                           (match as ChungTuChiTietHangHoaBaseInfo).MaVach == serial);
                                }))
                                {
                                    throw new ManagedException("Mã vạch này đã được sử dụng!");
                                }

                                //lưu vào bảng quản lý
                                AutoGenSerialProvider.Instance.SaveToManaged(sanPham, MaTrungTam, ngayThang, IdNhanVien, seqNum, 0);

                                frmProgress.Instance.Value += 1;

                                success = true;
                            }
                            catch (Exception)
                            {
                                success = false;
                            }
                        }
                    }

                    foreach (var genCodeInfo in AutoGenSerialProvider.Instance.GetListGenCodeInfo(sanPham, MaTrungTam, IdNhanVien))
                    {
                        result.Add(String.Format("{0} {1} {2} {3}", genCodeInfo.SanPham, genCodeInfo.TrungTam,

                                                 genCodeInfo.NgayTao, genCodeInfo.GenCode));
                    }
                }
                else
                {
                    foreach (var genCodeInfo in AutoGenSerialProvider.Instance.GetListGenCodeInfoInNumRow(sanPham, MaTrungTam, IdNhanVien,

                                                                                                          (ChungTuChiTietInfo as ChungTuChiTietBaseInfo).SoLuong))
                    {
                        result.Add(String.Format("{0} {1} {2} {3}", genCodeInfo.SanPham, genCodeInfo.TrungTam,

                                                 genCodeInfo.NgayTao, genCodeInfo.GenCode));
                    }
                }

                foreach (var s in result)
                {
                    if (TblHangHoaChiTietDataProvider.IsUniqueSerial(s))
                    {
                        continue;
                    }

                    isNotUnique = true;

                    AutoGenSerialProvider.Instance.DeleteSerial(s);

                    frmProgress.Instance.Value -= 1;
                }
            } while (isNotUnique);

            foreach (var s in result)
            {
                lstChiTiet.Add(CreateSerial(s));
            }
        }
Exemple #8
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);
        }