Exemplo n.º 1
0
        //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);
        }
Exemplo n.º 5
0
        //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);
        }