//Thêm mới chi tiết hàng mua private static void ThemHangMua(HangMuaPubLic _hangMua) { //Tính lại chiết khấu phần trăm int _TongTien = _hangMua.SoLuong * Convert.ToInt32(UntilitiesDataAccess.BoDauPhay(_hangMua.GiaBan_HM)); int _CkTienMat = Convert.ToInt32(UntilitiesDataAccess.BoDauPhay(_hangMua.ChietKhauTienMat)); _hangMua.ChietKhauPhanTram = ((float)_CkTienMat / (float)_TongTien) * 100; SqlCommand _cmd = new SqlCommand(); _cmd.CommandType = CommandType.StoredProcedure; _cmd.CommandText = "[Thêm chi tiết hàng mua - bán hàng]"; _cmd.Parameters.AddWithValue("@SoHD_HM", _hangMua.HoaDon.SoHD_HD); _cmd.Parameters.AddWithValue("@MaSP_HM", _hangMua.SanPham.MaSP_SP); _cmd.Parameters.AddWithValue("@SoLuong_HM", _hangMua.SoLuong); _cmd.Parameters.AddWithValue("@CKTienMat_HM", _hangMua.ChietKhauTienMat); _cmd.Parameters.AddWithValue("@GiaNhap_HM", _hangMua.GiaNhap_HM); _cmd.Parameters.AddWithValue("@GiaBan_HM", _hangMua.GiaBan_HM); _cmd.Parameters.AddWithValue("@CKPhanTram_HM", _hangMua.ChietKhauPhanTram); conn.Execute(_cmd); }
//Tính tiền cho một hóa đơn public static HoaDonPublic TinhTien1HoaDon(string _soHD) { HoaDonPublic _hoaDon = new HoaDonPublic(); #region 1.Lấy thông tin hóa đơn _hoaDon = LayHoaDon(_soHD); if (_hoaDon == null) { return(null); } #endregion #region 2.Tính tiền cho hóa đơn //Lấy danh sách hàng mua DataTable _dtHM; SqlCommand _cmd = new SqlCommand(); _cmd.CommandType = CommandType.StoredProcedure; _cmd.CommandText = "[Lấy danh sách hàng mua]"; _cmd.Parameters.AddWithValue("@SoHD_HM", _soHD); _dtHM = conn.GetDataSet2(_cmd).Tables[0]; int _TongGia = 0; int _TongCkTienMatSP = 0; int _TongTienNhap = 0; int _soLuong; int _giaBan; HangMuaPubLic _hm; if (_dtHM.Rows.Count > 0) { for (int i = 0; i < _dtHM.Rows.Count; i++) { _hm = new HangMuaPubLic(); _hm.SoLuong = (int)_dtHM.Rows[i]["SoLuong_HM"]; _hm.ChietKhauTienMat = _dtHM.Rows[i]["CKTienMat_HM"].ToString(); _hm.GiaNhap_HM = _dtHM.Rows[i]["GiaNhap_HM"].ToString(); _hm.GiaBan_HM = _dtHM.Rows[i]["GiaBan_HM"].ToString(); _soLuong = _hm.SoLuong; _giaBan = Convert.ToInt32(UntilitiesDataAccess.BoDauPhay(_hm.GiaBan_HM)); _TongTienNhap = _TongTienNhap + Convert.ToInt32(UntilitiesDataAccess.BoDauPhay(_hm.GiaNhap_HM)); _TongCkTienMatSP = _TongCkTienMatSP + Convert.ToInt32(UntilitiesDataAccess.BoDauPhay(_hm.ChietKhauTienMat)); _TongGia = _TongGia + (_soLuong * _giaBan); } } int _ckMaGiamGia = 0; if (!String.IsNullOrEmpty(_hoaDon.MaGiamGia.MaThe_MGG)) { //Lấy tiền mã giảm giá DataTable _dtMaGiamGia = BanHangDataAccess.LayMaGiamGiaTheoMa(_hoaDon.MaGiamGia.MaThe_MGG).Tables[0]; _ckMaGiamGia = Convert.ToInt32(UntilitiesDataAccess.BoDauPhay(_dtMaGiamGia.Rows[0]["ChietKhau_MGG"].ToString())); } _hoaDon.TienMaGiamGia = _TongGia * _ckMaGiamGia / 100; _hoaDon.TongTienNhap = _TongTienNhap; _hoaDon.TongCKSanPham = _TongCkTienMatSP; _hoaDon.TongTien_HD = _TongGia; _hoaDon.ThanhTien = _hoaDon.TongTien_HD - _hoaDon.TongCKSanPham - _hoaDon.TongCKHoaDon; _hoaDon.TienConLaiPhaiTra = _hoaDon.ThanhTien - _hoaDon.VouCher_HD - _hoaDon.TienMaGiamGia; _hoaDon.TienThuaTraLaiKhach = _hoaDon.TienKhachTra_HD - _hoaDon.TienConLaiPhaiTra; #endregion return(_hoaDon); }
//THỐNG KÊ THEO SẢN PHẨM public static List <ThongKeTheoSanPham> ThongKeTheoSanPham(string _MaNhomSP, DateTime _dtTuNgay, DateTime _dtDenNgay) { #region 1.Lấy thông tin sản phẩm, hàng mua DateTime _dtNgayBatDau = new DateTime(_dtTuNgay.Year, _dtTuNgay.Month, _dtTuNgay.Day, 0, 0, 0); DateTime _dtNgayKetThuc = new DateTime(_dtDenNgay.Year, _dtDenNgay.Month, _dtDenNgay.Day, 23, 59, 59); SqlCommand _cmd = new SqlCommand(); _cmd.CommandType = CommandType.StoredProcedure; _cmd.CommandText = "[Thống kê theo sản phẩm]"; _cmd.Parameters.AddWithValue("@TuNgay", _dtNgayBatDau); _cmd.Parameters.AddWithValue("@DenNgay", _dtNgayKetThuc); DataSet _dsThongKeTheoSP = conn.GetDataSet2(_cmd); _cmd.Dispose(); DataTable _dtSanPham = _dsThongKeTheoSP.Tables[0]; DataTable _dtHangMua = _dsThongKeTheoSP.Tables[1]; #endregion #region 2. Lọc thông tin theo điều kiện DataTable _dtSanPham_loc = new DataTable(); //Lọc sản phẩm theo nhóm sản phẩm if (String.IsNullOrEmpty(_MaNhomSP)) { _dtSanPham_loc = _dtSanPham; } else { string _strFilterSP = "MaNSP_SP = '" + _MaNhomSP + "'"; DataView _dvSanPhamloc = new DataView(_dtSanPham); _dvSanPhamloc.Sort = "MaSP_SP"; _dvSanPhamloc.RowFilter = _strFilterSP; _dtSanPham_loc = _dvSanPhamloc.ToTable(); } #endregion #region 3.Tính giá trị thống kê theo sản phẩm if (_dtSanPham_loc.Rows.Count == 0) { return(null); } List <ThongKeTheoSanPham> _lstKetQuaThongKeTheoSP = new List <ThongKeTheoSanPham>(); ThongKeTheoSanPham _thongKeTheoSP; for (int i = 0; i < _dtSanPham_loc.Rows.Count; i++) { _thongKeTheoSP = new ThongKeTheoSanPham(); //Lấy thông tin sản phẩm SanPhamPublic _sp = new SanPhamPublic(); _sp.MaSP_SP = _dtSanPham_loc.Rows[i]["MaSP_SP"].ToString(); _sp.TenSP_SP = _dtSanPham_loc.Rows[i]["TenSP_SP"].ToString(); _sp.GiaNhap_SP = _dtSanPham_loc.Rows[i]["GiaNhap_SP"].ToString(); _sp.GiaBanLe_SP = _dtSanPham_loc.Rows[i]["GiaBanLe_SP"].ToString(); _sp.GiaBanSi_SP = _dtSanPham_loc.Rows[i]["GiaBanSi_SP"].ToString(); _sp.NCC_SP.MaNCC_NCC = _dtSanPham_loc.Rows[i]["MaNCC_SP"].ToString(); _sp.NSP_SP.MaNSP_NSP = _dtSanPham_loc.Rows[i]["MaNSP_SP"].ToString(); _sp.DVT_SP.MaDVT_DVT = _dtSanPham_loc.Rows[i]["MaDVT_SP"].ToString(); _sp.GhiChu_SP = _dtSanPham_loc.Rows[i]["GhiChu_SP"].ToString(); _sp.SoLuong_SP = (int)_dtSanPham_loc.Rows[i]["SoLuong_SP"]; _sp.CKPhanTram_SP = float.Parse(_dtSanPham_loc.Rows[i]["CKPhanTram_SP"].ToString()); _sp.Anh_SP = _dtSanPham_loc.Rows[i]["Anh_SP"].ToString(); _sp.NgayTao_SP = Convert.ToDateTime(_dtSanPham_loc.Rows[i]["NgayTao_SP"].ToString()); _thongKeTheoSP.Sanpham = _sp; //Tính thu - lãi theo danh sách hàng mua int _TongThu = 0; int _TongLai = 0; int _TongSoLuongBan = 0; int _TongTienNhap = 0; string _strFilterHangMua = "MaSP_HM = '" + _thongKeTheoSP.Sanpham.MaSP_SP + "'"; DataView _dvHangMua = new DataView(_dtHangMua, _strFilterHangMua, "MaSP_HM", DataViewRowState.CurrentRows); if (_dvHangMua.Count > 0) { for (int j = 0; j < _dvHangMua.Count; j++) { int _soLuong = Convert.ToInt32(_dvHangMua[j]["SoLuong_HM"].ToString()); int _giaBan = Convert.ToInt32(UntilitiesDataAccess.BoDauPhay(_dvHangMua[j]["GiaBan_HM"].ToString())); int _giaNhap = Convert.ToInt32(UntilitiesDataAccess.BoDauPhay(_dvHangMua[j]["GiaNhap_HM"].ToString())); int _TienCKSP = Convert.ToInt32(UntilitiesDataAccess.BoDauPhay(_dvHangMua[j]["CKTienMat_HM"].ToString())); _TongTienNhap = _TongTienNhap + _giaNhap; _TongSoLuongBan = _TongSoLuongBan + _soLuong; _TongThu = _TongThu + (_soLuong * _giaBan - _TienCKSP); } _TongLai = _TongThu - _TongTienNhap; } _thongKeTheoSP.TongThu = UntilitiesDataAccess.ThemDauPhay(_TongThu.ToString()); _thongKeTheoSP.TongLai = UntilitiesDataAccess.ThemDauPhay(_TongLai.ToString()); _thongKeTheoSP.TongNhap = UntilitiesDataAccess.ThemDauPhay(_TongTienNhap.ToString()); _thongKeTheoSP.TongSoLuongBan = _TongSoLuongBan; _lstKetQuaThongKeTheoSP.Add(_thongKeTheoSP); } #endregion return(_lstKetQuaThongKeTheoSP); }
//Lấy danh sách hàng mua public static List <HangMuaPubLic> LayDsHangMua(string _soHD) { List <HangMuaPubLic> _lstHangMua = null; HangMuaPubLic _hangMua; DataTable _dtHM; SqlCommand _cmd = new SqlCommand(); _cmd.CommandType = CommandType.StoredProcedure; _cmd.CommandText = "[Lấy danh sách hàng mua]"; _cmd.Parameters.AddWithValue("@SoHD_HM", _soHD); _dtHM = conn.GetDataSet2(_cmd).Tables[0]; if (_dtHM.Rows.Count > 0) { _lstHangMua = new List <HangMuaPubLic>(); for (int i = 0; i < _dtHM.Rows.Count; i++) { //Lấy thông tin sản phẩm _hangMua = new HangMuaPubLic(); _hangMua.SanPham.MaSP_SP = _dtHM.Rows[i]["MaSP_SP"].ToString(); _hangMua.SanPham.TenSP_SP = _dtHM.Rows[i]["TenSP_SP"].ToString(); _hangMua.SanPham.GiaNhap_SP = _dtHM.Rows[i]["GiaNhap_SP"].ToString(); _hangMua.SanPham.GiaBanLe_SP = _dtHM.Rows[i]["GiaBanLe_SP"].ToString(); _hangMua.SanPham.GiaBanSi_SP = _dtHM.Rows[i]["GiaBanSi_SP"].ToString(); _hangMua.SanPham.NCC_SP.MaNCC_NCC = _dtHM.Rows[i]["MaNCC_SP"].ToString(); _hangMua.SanPham.NSP_SP.MaNSP_NSP = _dtHM.Rows[i]["MaNSP_SP"].ToString(); _hangMua.SanPham.DVT_SP.MaDVT_DVT = _dtHM.Rows[i]["MaDVT_SP"].ToString(); _hangMua.SanPham.GhiChu_SP = _dtHM.Rows[i]["GhiChu_SP"].ToString(); _hangMua.SanPham.SoLuong_SP = (int)_dtHM.Rows[i]["SoLuong_SP"]; _hangMua.SanPham.CKPhanTram_SP = float.Parse(_dtHM.Rows[i]["CKPhanTram_SP"].ToString()); _hangMua.SanPham.Anh_SP = _dtHM.Rows[i]["Anh_SP"].ToString(); _hangMua.SanPham.NgayTao_SP = (DateTime)_dtHM.Rows[i]["NgayTao_SP"]; _hangMua.SanPham.DVT_SP.TenDVT_DVT = _dtHM.Rows[i]["TenDVT_DVT"].ToString(); //Thông tin hàng mua _hangMua.SoLuong = (int)_dtHM.Rows[i]["SoLuong_HM"]; _hangMua.ChietKhauPhanTram = float.Parse(_dtHM.Rows[i]["CKPhanTram_HM"].ToString()); _hangMua.ChietKhauTienMat = _dtHM.Rows[i]["CKTienMat_HM"].ToString(); _hangMua.GiaNhap_HM = _dtHM.Rows[i]["GiaNhap_HM"].ToString(); _hangMua.GiaBan_HM = _dtHM.Rows[i]["GiaBan_HM"].ToString(); //lấy thông tin hóa đơn _hangMua.HoaDon.SoHD_HD = _dtHM.Rows[0]["SoHD_HD"].ToString(); _hangMua.HoaDon.NgayLap_HD = (DateTime)_dtHM.Rows[0]["NgayLap_HD"]; _hangMua.HoaDon.NguoiLap_HD.MaNV_NV = _dtHM.Rows[0]["NguoiLap_HD"].ToString(); _hangMua.HoaDon.BanLe_HD = (bool)_dtHM.Rows[0]["BanLe_HD"]; _hangMua.HoaDon.KhachHang_HD.MaKH_KH = _dtHM.Rows[0]["MaKH_HD"].ToString(); _hangMua.HoaDon.CKPhanTram_HD = float.Parse(_dtHM.Rows[0]["CKPhanTram_HD"].ToString()); _hangMua.HoaDon.TongCKHoaDon = Convert.ToInt32(_dtHM.Rows[0]["ChietKhauTienMat_HD"].ToString()); _hangMua.HoaDon.TienKhachTra_HD = Convert.ToInt32(_dtHM.Rows[0]["TienKhachTra_HD"].ToString()); _hangMua.HoaDon.VouCher_HD = Convert.ToInt32(_dtHM.Rows[0]["VouCher_HD"].ToString()); _hangMua.HoaDon.MaGiamGia.MaThe_MGG = _dtHM.Rows[0]["MaGiamGia_HD"].ToString(); //Tính thành tiền cho hàng mua (đang dùng ở thống kê báo cáo) int _TienckSP = Convert.ToInt32(UntilitiesDataAccess.BoDauPhay(_hangMua.ChietKhauTienMat)); //Tính tiền cho sản phẩm float _CkPhanTram = _hangMua.ChietKhauPhanTram; int _giaBan = Convert.ToInt32(UntilitiesDataAccess.BoDauPhay(_hangMua.GiaBan_HM)); int _soLuong = _hangMua.SoLuong; int _TongCKSanPham = (int)((_CkPhanTram * _giaBan / 100) * _soLuong); int _TongTien = _soLuong * _giaBan; int _ThanhTien = _TongTien - _TongCKSanPham; _hangMua.TongTienSP = _TongTien; _hangMua.ThanhTien = _ThanhTien; _hangMua.SanPham.ThanhTien_SP = UntilitiesDataAccess.ThemDauPhay((_hangMua.TongTienSP - _TienckSP).ToString()); _lstHangMua.Add(_hangMua); } } return(_lstHangMua); }
//Nhập vào mã hàng,Kho, số lượng, lẻ|buôn - trả về một đối tượng chứa mọi thông tin hàng public static HangMuaPubLic LayHangMua(string MaSP_SP, bool KieuBan, int SoLuong)// kiểu bán lẻ hoặc sỉ true = bán lẻ | false = bán sỉ { HangMuaPubLic hm = new HangMuaPubLic(); //Lấy ra thông tin sản phẩm string StoreprodureName = "LaySPTheoMa_BanHang"; SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = StoreprodureName; cmd.Parameters.AddWithValue("@MaSP_SP", MaSP_SP); DataSet ds = conn.GetDataSet2(cmd); SanPhamPublic sp = new SanPhamPublic();//Chứa thông tin sản phẩm cần lấy ra if (ds.Tables[0].Rows.Count > 0) { //Lấy thông tin DataRow dr = ds.Tables[0].Rows[0]; sp.MaSP_SP = dr["MaSP_SP"].ToString(); sp.TenSP_SP = dr["TenSP_SP"].ToString(); sp.GiaNhap_SP = UntilitiesDataAccess.BoDauPhay(dr["GiaNhap_SP"].ToString()); sp.GiaBanLe_SP = UntilitiesDataAccess.BoDauPhay(dr["GiaBanLe_SP"].ToString()); sp.GiaBanSi_SP = UntilitiesDataAccess.BoDauPhay(dr["GiaBanSi_SP"].ToString()); sp.NCC_SP.MaNCC_NCC = dr["MaNCC_NCC"].ToString(); sp.NCC_SP.TenNCC_NCC = dr["TenNCC_NCC"].ToString(); sp.NCC_SP.GhiChu_NCC = dr["GhiChu_NCC"].ToString(); sp.NSP_SP.MaNSP_NSP = dr["MaNSP_NSP"].ToString(); sp.NSP_SP.TenNSP_NSP = dr["TenNSP_NSP"].ToString(); sp.NSP_SP.GhiChu_NSP = dr["GhiChu_NSP"].ToString(); sp.NSP_SP.DangDung_NSP = dr["DangDung_NSP"].ToString() == "true" ? true : false; sp.NSP_SP.NgayTao_NSP = Convert.ToDateTime(dr["NgayTao_NSP"].ToString()); sp.DVT_SP.MaDVT_DVT = dr["MaDVT_DVT"].ToString(); sp.DVT_SP.TenDVT_DVT = dr["TenDVT_DVT"].ToString(); sp.DVT_SP.DangDung_DVT = dr["DangDung_DVT"].ToString() == "true" ? true : false; sp.GhiChu_SP = dr["GhiChu_SP"].ToString(); sp.SoLuong_SP = Convert.ToInt32(dr["SoLuong_SP"].ToString()); sp.CKPhanTram_SP = Convert.ToInt32(dr["CKPhanTram_SP"].ToString()); } else { return(hm = null); // Trả về null nếu không có sản phẩm nào } //Tính toán giá tiền sản phẩm - có thể viết một hàm tính tiền riêng để áp dụng chính sách khác nhau #region Tính toán giá tiền cho sản phẩm này hm.SanPham = sp; hm.ChietKhauPhanTram = hm.SanPham.CKPhanTram_SP; hm.SoLuong = SoLuong; // Số lượng mặc định ban đầu khi mua là 1 sp if (KieuBan == true) //Bán lẻ { //hm.ChietKhauTienMat = hm.SoLuong * (Convert.ToInt32(hm.ChietKhauPhanTram) * Convert.ToInt32(hm.SanPham.GiaBanLe_SP)) / 100; //hm.TongTienSP = hm.SoLuong * Convert.ToInt32(hm.SanPham.GiaBanLe_SP); //hm.ThanhTien = hm.TongTienSP - hm.ChietKhauTienMat;//Thành tiền gia bán lẻ } else//Bán sỉ { //hm.ChietKhauTienMat = hm.SoLuong * (Convert.ToInt32(hm.ChietKhauPhanTram) * Convert.ToInt32(hm.SanPham.GiaBanSi_SP)) / 100; //hm.TongTienSP = Convert.ToInt32(hm.SanPham.GiaBanSi_SP) * hm.SoLuong; //hm.ThanhTien = hm.TongTienSP - hm.ChietKhauTienMat; // Thành tiền giá bán sỉ } #endregion return(hm); }