Esempio n. 1
0
        private int GetTonConLai(BangGiaBanChiTietInfor spb)
        {
            int ton = spb.TonKho;

            foreach (ChungTuBanHangChiTietInfor ct in (BindingList <ChungTuBanHangChiTietInfor>)gSanPham.DataSource)
            {
                if (ct.IdSanPham == spb.IdSanPham)
                {
                    ton = ton - ct.SoLuong;
                }
            }
            return(ton);
        }
Esempio n. 2
0
        private void InputDataFromCode(string code)
        {
            try
            {
                if (!code.Equals(""))
                {
                    SanPhamDoi = BangGiaDataProvider.Instance.GetGiaBan(IdTrungTam, IdKho, code);
                }
                if (SanPhamDoi == null)
                {
                    frmLookUp_HangHoa frm = new frmLookUp_HangHoa(false,
                                                                  (Common.Int2Bool(nguoiDung.SupperUser)
                                                                       ? -1
                                                                       : nguoiDung.IdNhomNguoiDung), 1, -1,
                                                                  IdKho, 1);
                    if (frm.ShowDialog() == DialogResult.OK)
                    {
                        SanPhamDoi = BangGiaDataProvider.Instance.GetGiaBan(IdTrungTam, IdKho, frm.SelectedItem.MaSanPham);
                    }
                    else
                    {
                        return;
                    }
                }

                if (SanPhamDoi == null)
                {
                    MessageBox.Show("Giá chưa thiết lập!");
                    return;
                }
                txtComment.Text = SanPhamDoi.TenSanPham;
            }
            catch (Exception ex)
            {
                EventLogProvider.Instance.WriteLog(ex.ToString()
                                                   + "\nUser: "******"\nMay: " + Declare.TenMay,
                                                   this.Name);
#if DEBUG
                MessageBox.Show("Lỗi ngoại lệ: " + ex.ToString(), Declare.titleError, MessageBoxButtons.OK, MessageBoxIcon.Error);
#else
                MessageBox.Show("Lỗi ngoại lệ: " + ex.Message, Declare.titleError, MessageBoxButtons.OK, MessageBoxIcon.Error);
#endif
            }
        }
        private void UpdateTienKM()
        {
            double tienKM = 0;

            if (liResult != null && liResult.Count > 0)
            {
                string maSanPham  = bteSanPham.Text;
                int    idTrungTam = bteTrungTam.Tag != null
                                     ? ((DMTrungTamInfor)bteTrungTam.Tag).IdTrungTam
                                     : Declare.IdTrungTam;
                DateTime thoiGian = mstThoiGian.Value;

                BangGiaBanChiTietInfor bgia = BangGiaDataProvider.Instance.GetGiaBanTheoThoiGian(idTrungTam, thoiGian, maSanPham);
                int    idSanPham            = bgia != null ? bgia.IdSanPham : 0;
                double giaCoVAT             = bgia != null ? bgia.DonGiaCoVAT : 0;
                double tyleVAT = bgia != null ? bgia.TyLeVAT : 0;

                txtSanPham.Visible = true;
                txtSanPham.Text    = String.Format("Sản phẩm: {0}", bgia.TenSanPham);
                txtDonGia.Visible  = true;
                txtDonGia.Text     = String.Format("Đơn giá có VAT: {0} -  VAT: {1}", Common.Double2Str(giaCoVAT), tyleVAT);

                foreach (BangGiaChinhSachInfor chinhSach in liResult)
                {
                    string idSanPhamKADs = String.Format(",{0},", chinhSach.MatHangKhongApDung);
                    if (idSanPhamKADs.Contains(String.Format(",{0},", idSanPham)))
                    {
                        continue;
                    }

                    double km = 0;
                    List <BangGiaADDKMuaInfor> liDKMua = KhuyenMaiDataProvider.Instance.GetBangGiaADDKMuaInforsById(chinhSach.IdDKMua);
                    foreach (BangGiaADDKMuaInfor dkm in liDKMua)
                    {
                        if (dkm.TyLeChietKhau != 0 || dkm.TienChietKhau != 0)
                        {
                            km = Common.MaxValues(km, dkm.TienChietKhau, dkm.TyLeChietKhau * giaCoVAT / 100);
                        }
                    }
                    List <BangGiaADKhuyenMaiInfor> lstKM = KhuyenMaiDataProvider.Instance.GetAllBangGiaKhuyenMaiADInfors(chinhSach.IdDKMua);
                    for (int i = 0; i < lstKM.Count; i++)
                    {
                        double km2 = km;
                        lstKM[i].ListKhuyenMaiChiTiet = KhuyenMaiDataProvider.Instance.GetAllKhuyenMaiChiTietADTTInfors(lstKM[i].IdKhuyenMai, 0, giaCoVAT);
                        foreach (BangGiaADKhuyenMaiChiTietInfor kmct in lstKM[i].ListKhuyenMaiChiTiet)
                        {
                            km2 += Common.MaxValues(kmct.SoTienKM, kmct.TyLeKM * giaCoVAT / 100, kmct.GiaVon * kmct.SoLuong);
                        }
                        if (tienKM < km2)
                        {
                            tienKM = km2;
                        }
                    }
                }

                tienKM = Math.Round(tienKM / (1 + tyleVAT / 100), 5);//tien KM chua co vat
            }
            else
            {
                txtSanPham.Visible = false;
                txtDonGia.Visible  = false;
            }

            txtSoTienKM.Text = Common.Double2Str(tienKM);
        }
Esempio n. 4
0
        private bool ValidKhuyenMai()
        {
            this.SoVoucherSelected = 1;
            if (txtSoVoucher.Visible)
            {
                int soVoucher = Common.IntValue(txtSoVoucher.Text);
                if (soVoucher == 0 || soVoucher > this.SoVoucherMax)
                {
                    MessageBox.Show(String.Format("Số Voucher phải trong khoảng từ 1 đến {0}.", this.SoVoucherMax));
                    txtSoVoucher.Focus();
                    return(false);
                }
                else
                {
                    this.SoVoucherSelected = soVoucher;
                }
            }
            if (CTu.SoLuong > 1 && (CTu.ChinhSach != null && CTu.ChinhSach.IdChinhSach != ChinhSachSelected.IdChinhSach || CTu.ChinhSach == null))
            {
                MessageBox.Show("Trên một đơn hàng không thể áp dụng 2 chính sách giá khác nhau được!");
                return(false);
            }
            //kiem tra san pham mua kem
            if (gSanPhamKem.DataSource != null)
            {
                //kiem tra gia tri hang chinh + hang kem
                //List<BangGiaChinhSachInfor> lstCS = new List<BangGiaChinhSachInfor>();
                //if (ChinhSachSelected != null) lstCS.Add(ChinhSachSelected);
                //if (liChinhSachDefault != null && liChinhSachDefault.Count > 0)
                //    lstCS.AddRange(liChinhSachDefault);

                double tongTien = CTu.ThanhTien;//san pham chinh
                foreach (BangGiaADSPKemInfor spk in (BindingList <BangGiaADSPKemInfor>)gSanPhamKem.DataSource)
                {
                    int count = 0;
                    foreach (ChungTuBanHangChiTietInfor ct in liSanPhamSelected)
                    {
                        if ((ct.LoaiHangKem == 1) &&
                            (spk.GiaMuaTu == 0 || (spk.GiaMuaTu > 0) && (spk.GiaMuaTu <= ct.DonGiaCoVat)) &&
                            (spk.GiaMuaDen == 0 || (spk.GiaMuaDen > 0) && (spk.GiaMuaDen >= ct.DonGiaCoVat)) &&
                            (spk.MaHangKem == null ||
                             spk.LoaiHangKem == 0 && spk.MaHangKem.Equals(ct.LinhVuc) && (String.IsNullOrEmpty(spk.MaHangSX) || spk.MaHangSX.Equals(ct.Hang)) ||
                             spk.LoaiHangKem == 1 && spk.MaHangKem.Equals(ct.Nganh) && (String.IsNullOrEmpty(spk.MaHangSX) || spk.MaHangSX.Equals(ct.Hang)) ||
                             spk.LoaiHangKem == 2 && spk.MaHangKem.Equals(ct.Loai) && (String.IsNullOrEmpty(spk.MaHangSX) || spk.MaHangSX.Equals(ct.Hang)) ||
                             spk.LoaiHangKem == 3 && spk.MaHangKem.Equals(ct.Chung) && (String.IsNullOrEmpty(spk.MaHangSX) || spk.MaHangSX.Equals(ct.Hang)) ||
                             spk.LoaiHangKem == 4 && spk.MaHangKem.Equals(ct.Nhom) && (String.IsNullOrEmpty(spk.MaHangSX) || spk.MaHangSX.Equals(ct.Hang)) ||
                             spk.LoaiHangKem == 5 && spk.MaHangKem.Equals(ct.Model) && (String.IsNullOrEmpty(spk.MaHangSX) || spk.MaHangSX.Equals(ct.Hang)) ||
                             spk.LoaiHangKem == 6 && spk.MaHangKem.Equals(ct.MaSanPham)))/* &&
                                                                                          * (spk.MaHangSX == null || spk.MaHangSX.Equals("") || !spk.MaHangSX.Equals("") &&
                                                                                          * spk.MaHangSX.Equals(ct.Hang)))*/
                        {
                            count += ct.SoLuong;
                            if (ChinhSachSelected == null || !String.Format(",{0},", ChinhSachSelected.MatHangKhongApDung).Contains(String.Format(",{0},", ct.IdSanPham)))
                            {
                                tongTien += ct.ThanhTien;//san pham kem
                            }
                            ct.TyleChietKhau = spk.TyLeChietKhau;
                            double tienKM = spk.TyLeChietKhau == 0
                                                ? spk.TienChietKhau
                                                : spk.TyLeChietKhau * ct.DonGiaCoVat * ct.SoLuong / 100;
                            double tienCK = spk.TienChietKhau == 0
                                                   ? tienKM
                                                   : Common.MinValues(spk.TienChietKhau, tienKM);
                            ct.TienChietKhau    = tienCK /** ct.SoLuong*/ / (1 + ct.TyleVAT / 100);
                            ct.TienSauChietKhau = ct.DonGia * ct.SoLuong - ct.TienChietKhau;
                            ct.TienVAT          = ct.TienSauChietKhau * ct.TyleVAT / 100;
                            ct.ThanhTien        = ct.DonGiaCoVat * ct.SoLuong - tienCK;
                            ct.TyLePhanBo       = spk.TyLePhanBo / 100;//lay ty le phan bo
                            if (!DatTruoc)
                            {
                                BangGiaBanChiTietInfor bg = liBangGiaBan.Find(delegate(BangGiaBanChiTietInfor match)
                                {
                                    return
                                    (match.MaSanPham.Equals(
                                         ct.MaSanPham));
                                });
                                if (bg != null && bg.ChietKhau != 1 && GetTonConLai(bg) < 0)
                                {
                                    MessageBox.Show(string.Format("Mã hàng {0} không có đủ hàng trong kho!",
                                                                  ct.MaSanPham));
                                    return(false);
                                    //bg.TonKho -= ct.SoLuong;
                                    //if (bg.TonKho < 0)
                                    //{
                                    //    MessageBox.Show(string.Format("Mã hàng {0} không có đủ hàng trong kho!",
                                    //                                  ct.MaSanPham));
                                    //    return false;
                                    //}
                                }
                            }
                        }
                    }
                    if (spk.SoLuong > 0 && count != spk.SoLuong)
                    {
                        MessageBox.Show("Phải nhập đầy đủ mã sản phẩm mua kèm");
                        return(false);
                    }
                }

                if (ChinhSachSelected != null && tongTien < ChinhSachSelected.GiaTriMuaToiThieu)
                {
                    MessageBox.Show(
                        String.Format(
                            "Tổng giá trị mua hàng được tính là [{0}].\nChưa đạt giá trị mua tối thiểu [{1}]",
                            Common.Double2Str(tongTien), Common.Double2Str(ChinhSachSelected.GiaTriMuaToiThieu)));
                    return(false);
                }
            }

            foreach (ChungTuBanHangChiTietInfor ct in liSanPhamSelected)
            {
                ct.DaInHoaDon = 0;
            }
            //Kiem tra san pham khuyen mai
            if (gKMChiTiet.DataSource != null)
            {
                foreach (BangGiaADKhuyenMaiChiTietInfor kmct in (BindingList <BangGiaADKhuyenMaiChiTietInfor>)gKMChiTiet.DataSource)
                {
                    int count = 0;
                    List <ChungTuBanHangChiTietInfor> lct =
                        liSanPhamSelected.FindAll(delegate(ChungTuBanHangChiTietInfor match)
                    {
                        return((match.LoaiHangKem == 0) &&
                               (kmct.MaHangKM == null ||
                                kmct.LoaiHangKM == 0 && kmct.MaHangKM.Equals(match.LinhVuc) && (String.IsNullOrEmpty(kmct.MaHangSX) || kmct.MaHangSX.Equals(match.Hang)) ||
                                kmct.LoaiHangKM == 1 && kmct.MaHangKM.Equals(match.Nganh) && (String.IsNullOrEmpty(kmct.MaHangSX) || kmct.MaHangSX.Equals(match.Hang)) ||
                                kmct.LoaiHangKM == 2 && kmct.MaHangKM.Equals(match.Loai) && (String.IsNullOrEmpty(kmct.MaHangSX) || kmct.MaHangSX.Equals(match.Hang)) ||
                                kmct.LoaiHangKM == 3 && kmct.MaHangKM.Equals(match.Chung) && (String.IsNullOrEmpty(kmct.MaHangSX) || kmct.MaHangSX.Equals(match.Hang)) ||
                                kmct.LoaiHangKM == 4 && kmct.MaHangKM.Equals(match.Nhom) && (String.IsNullOrEmpty(kmct.MaHangSX) || kmct.MaHangSX.Equals(match.Hang)) ||
                                kmct.LoaiHangKM == 5 && kmct.MaHangKM.Equals(match.Model) && (String.IsNullOrEmpty(kmct.MaHangSX) || kmct.MaHangSX.Equals(match.Hang)) ||
                                kmct.LoaiHangKM == 6 && kmct.MaHangKM.Equals(match.MaSanPham)));/* &&
                                                                                                 * (kmct.MaHangSX == null || kmct.MaHangSX.Equals("") ||
                                                                                                 * !kmct.MaHangSX.Equals("") &&
                                                                                                 * kmct.MaHangSX.Equals(match.Hang));*/
                    });
                    bool datruKM = false;
                    foreach (ChungTuBanHangChiTietInfor ct in lct)
                    {
                        ct.DaInHoaDon           = 1;//danh dau da kiem tra
                        ct.CungDongDonHangChinh = kmct.InKemHD;
                        count += ct.SoLuong;
                        //BangGiaBanChiTietInfor bg = liBangGiaBan.Find(delegate(BangGiaBanChiTietInfor match)
                        //{
                        //    return match.MaSanPham.Equals(ct.MaSanPham);
                        //});
                        //if (bg != null)
                        //{
                        //    ct.NoKhuyenMai = bg.TonKho > ct.SoLuong ? 0 : (ct.SoLuong - bg.TonKho);
                        //}
                        if (!datruKM)
                        {
                            ct.TyleChietKhau = kmct.TyLeKM;
                            double tienKM = kmct.TyLeKM == 0 ? kmct.SoTienKM : kmct.TyLeKM * CTu.DonGiaCoVat / 100;
                            double tienCK = kmct.SoTienKM == 0 ? tienKM : Common.MinValues(kmct.SoTienKM, tienKM);
                            ct.TienChietKhau    = Common.Int2Bool(kmct.ChietKhau) ? -tienCK / (1 + ct.TyleVAT / 100) : 0;
                            ct.TienSauChietKhau = ct.TienChietKhau;
                            ct.ThanhTien        = Common.Int2Bool(kmct.ChietKhau) ? -tienCK : tienCK;
                            ct.TienVAT          = ct.TyleVAT * ct.ThanhTien / (100 + ct.TyleVAT);
                            ct.TyLeThanhToan    = kmct.TyLeThanhToan;
                            ct.ThanhTien        = ct.ThanhTien * kmct.TyLeThanhToan / 100;
                            datruKM             = true;
                        }
                    }
                    if ((count != kmct.SoLuong && kmct.NoKhuyenMai == 0 || count != kmct.TonKho && kmct.NoKhuyenMai > 0) && !DatTruoc)
                    {
                        MessageBox.Show("Sản phẩm khuyến mại không phù hợp!");
                        return(false);
                    }
                }
                foreach (ChungTuBanHangChiTietInfor ct in liSanPhamSelected)
                {
                    if (ct.DaInHoaDon != 1 && ct.LoaiHangKem == 0)
                    {
                        MessageBox.Show(String.Format("Sản phẩm [{0} - {1}] không nằm trong danh sách khuyến mại", ct.MaSanPham, ct.TenSanPham));
                        return(false);
                    }
                }
            }

            return(true);
        }