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); }
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); }
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); }