Exemplo n.º 1
0
        protected ChungTuKhoBusinessBase(T chungTuBaseInfo)
            : base(chungTuBaseInfo)
        {
            if (ChungTuInfo.IdChungTu > 0)
            {
                ListChiTietHangHoa = BusinessKhoProvider.GetListChiTietHangHoaByIdChungTu(ChungTuInfo.IdChungTu);
            }
            else
            {
                ListChiTietHangHoa = new List <TL>();
            }

            IsThuKho = true;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Kiểm tra có cập nhật mới lưu.
        /// </summary>
        protected internal override void SaveChungTuInstance()
        {
            TL[] arrBackupChiTietHangHoa = new TL[ListChiTietHangHoa.Count];
            ListChiTietHangHoa.CopyTo(arrBackupChiTietHangHoa);

            try
            {
                if (ListChiTietHangHoa.Count == 0)
                {
                    throw new ManagedException("Không có line hàng!");
                }

                string sMaSanPham = String.Empty;

                foreach (var k in ListChiTietChungTu)
                {
                    if (String.IsNullOrEmpty(ToBaseInfo(k).MaSanPham))
                    {
                        throw new ManagedException("Không xác định được mã sản phẩm!");
                    }
                    if (!(sMaSanPham + ",").Contains("," + ToBaseInfo(k).MaSanPham + ","))
                    {
                        sMaSanPham += "," + ToBaseInfo(k).MaSanPham;
                    }
                }

                List <DMSanPhamInfo> listSanPham = DmSanPhamProvider.Instance.GetListSanPhamByCode(sMaSanPham);

                if (listSanPham.Count == 0)
                {
                    throw new ManagedException("Không xác định được mã sản phẩm!");
                }

                string message;

                ListChiTietHangHoa.Sort(
                    delegate(TL cthh1, TL cthh2)
                {
                    return(ToBaseInfo(cthh1).IdSanPham.CompareTo(ToBaseInfo(cthh2).IdSanPham));
                });

                for (int i = 0; i < ListChiTietHangHoa.Count; i++)
                {
                    message = String.Empty;
                    if (ListChiTietChungTu.Find(delegate(TK match)
                    {
                        message = ToBaseInfo(match).MaSanPham;
                        return(Conjunction(match, ListChiTietHangHoa[i]));
                        //return (match as ChungTuChiTietBaseInfo).IdSanPham == ToBaseInfo(ListChiTietHangHoa[i]).IdSanPham;
                    }) == null)
                    {
                        DMSanPhamInfo item = listSanPham.Find(delegate(DMSanPhamInfo match)
                        {
                            return(match.IdSanPham ==
                                   ToBaseInfo(ListChiTietHangHoa[i]).IdSanPham);
                        });
                        if (item == null || item.ChietKhau == 0)
                        {
                            throw new ManagedException(String.Format("Sản phẩm '{0}' không tìm thấy mã vạch '{1}' tương ứng.", message, ToBaseInfo(ListChiTietHangHoa[i]).MaVach));
                        }
                        //ListChiTietHangHoa.RemoveAt(i);
                        //i--;
                    }
                }

                for (int i = 0; i < ListChiTietChungTu.Count; i++)
                {
                    if (ToBaseInfo(ListChiTietChungTu[i]).IdSanPham == 0)
                    {
                        throw new ManagedException(String.Format("Mã sản phẩm '{0}' chưa tồn tại trên hệ thống!", ToBaseInfo(ListChiTietChungTu[i]).MaSanPham));
                    }

                    DMSanPhamInfo item = listSanPham.Find(delegate(DMSanPhamInfo match)
                    {
                        return(match.IdSanPham ==
                               ToBaseInfo(ListChiTietChungTu[i]).IdSanPham);
                    });

                    if (item.ChietKhau == 1)
                    {
                        continue;
                    }

                    message = String.Empty;
                    if (ListChiTietHangHoa.Find(delegate(TL match)
                    {
                        message = ToBaseInfo(match).MaVach;
                        return(Conjunction(ListChiTietChungTu[i], match));
                        //return (match as ChungTuChiTietBaseInfo).IdSanPham == ToBaseInfo(ListChiTietChungTu[i]).IdSanPham;
                    }) == null)
                    {
                        throw new ManagedException(String.Format("Mã vạch '{0}' không tìm thấy sản phẩm '{1}' tương ứng.", message, ToBaseInfo(ListChiTietChungTu[i]).MaSanPham));
                        //ListChiTietChungTu.RemoveAt(i);
                        //i--;
                    }
                }

                int slChiTietChungTu = 0;
                foreach (TK k in ListChiTietChungTu)
                {
                    DMSanPhamInfo item = listSanPham.Find(delegate(DMSanPhamInfo match)
                    {
                        return(match.IdSanPham ==
                               ToBaseInfo(k).IdSanPham);
                    });

                    if (item.ChietKhau == 1)
                    {
                        continue;
                    }

                    List <TL> listTmp = ListChiTietHangHoa.FindAll(delegate(TL match)
                    {
                        return(Conjunction(k, match));
                    });
                    slChiTietChungTu = 0;
                    foreach (TL l in listTmp)
                    {
                        slChiTietChungTu += ToBaseInfo(l).SoLuong;
                    }
                    if (slChiTietChungTu != ToBaseInfo(k).SoLuong)
                    {
                        throw new ManagedException(
                                  String.Format("Số lượng hàng '{0}' trong phiếu không khớp với số lượng mã vạch.",
                                                ToBaseInfo(k).MaSanPham)
                                  );
                    }
                }

                slChiTietChungTu = 0;
                foreach (TK k in ListChiTietChungTu)
                {
                    DMSanPhamInfo item = listSanPham.Find(delegate(DMSanPhamInfo match)
                    {
                        return(match.IdSanPham ==
                               ToBaseInfo(k).IdSanPham);
                    });

                    if (item.ChietKhau == 1)
                    {
                        continue;
                    }

                    slChiTietChungTu += ToBaseInfo(k).SoLuong;
                }

                int slChiTietMaVach = 0;
                foreach (TL l in ListChiTietHangHoa)
                {
                    DMSanPhamInfo item = listSanPham.Find(delegate(DMSanPhamInfo match)
                    {
                        return(match.IdSanPham ==
                               ToBaseInfo(l).IdSanPham);
                    });

                    if (item.ChietKhau == 1)
                    {
                        continue;
                    }

                    slChiTietMaVach += ToBaseInfo(l).SoLuong;
                }

                if (slChiTietChungTu != slChiTietMaVach)
                {
                    throw new ManagedException("Số lượng hàng trong phiếu không khớp với số lượng mã vạch.");
                }

                slChiTietMaVach = 0;
                foreach (TL l in ListChiTietHangHoa)
                {
                    DMSanPhamInfo item = listSanPham.Find(delegate(DMSanPhamInfo match)
                    {
                        return(match.IdSanPham ==
                               ToBaseInfo(l).IdSanPham);
                    });

                    if (item.ChietKhau == 1 || item.TrungMaVach == 1)
                    {
                        continue;
                    }

                    slChiTietMaVach = 0;
                    ListChiTietHangHoa.ForEach(
                        delegate(TL match)
                    {
                        if (ToBaseInfo(l).MaVach == ToBaseInfo(match).MaVach)
                        {
                            slChiTietMaVach += ToBaseInfo(match).SoLuong;
                        }
                    });
                    if (item.TrungMaVach == 0 && slChiTietMaVach > 1)
                    {
                        throw new ManagedException(String.Format("Mã vạch {0} đã bị nhập trùng.", ToBaseInfo(l).MaVach));
                    }
                }

                base.SaveChungTuInstance();

                List <TL> listOrigin = BusinessKhoProvider.GetListChiTietHangHoaByIdChungTu(ChungTuInfo.IdChungTu);

                SaveChiTietHangHoa(listOrigin, ListChiTietHangHoa);
            }
            catch (Exception ex)
            {
                ListChiTietHangHoa.Clear();
                ListChiTietHangHoa.AddRange(arrBackupChiTietHangHoa);
                var description = String.Empty;
                ListChiTietHangHoa.ForEach(delegate(TL ctct)
                {
                    description += ToBaseInfo(ctct).IdSanPham + " " + ToBaseInfo(ctct).MaVach + " " + ToBaseInfo(ctct).SoLuong + "\r\n";
                });

                description += ex.ToString();

                EventLogProvider.Instance.WriteOfflineLog(String.Format("{0}\r\n{1}", ChungTuInfo.SoChungTu, description), "Loi luu chung tu");
                throw;
            }
        }
Exemplo n.º 3
0
        protected internal override void Prepare()
        {
            base.Prepare();

            ListChiTietHangHoa = BusinessKhoProvider.GetListChiTietHangHoaByIdChungTu(ChungTuInfo.IdChungTu);
        }