Beispiel #1
0
        public List <CustomerReport> ReportForgetCardCustomer(ParameterCustomerCare para)
        {
            List <CustomerReport> result = new List <CustomerReport>();

            using (var ctx = new ERPContext())
            {
                try
                {
                    string strWhere = string.Empty;
                    string strQuery = string.Empty;
                    if (para.UnitCode != null)
                    {
                        strWhere += string.Format(" AND UNITCODE LIKE '%{0}%' ", para.UnitCode);
                    }
                    if (para.FromDate != null)
                    {
                        strWhere += string.Format(" AND NGAYCAPTHE >= TO_DATE('{0}/{1}/{2}','dd/MM/yyyy') ", para.FromDate.Day, para.FromDate.Month, para.FromDate.Year);
                    }
                    if (para.ToDate != null)
                    {
                        strWhere += string.Format(" AND NGAYCAPTHE < TO_DATE('{0}/{1}/{2}','dd/MM/yyyy') ", para.ToDate.Day, para.ToDate.Month, para.ToDate.Year);
                    }
                    if (para.QuenThe != null)
                    {
                        strWhere += string.Format(" AND QUENTHE = '{0}'  ", para.QuenThe);
                    }
                    if (para.MaKH != null)
                    {
                        strWhere += string.Format(" AND MAKH = '{0}' ", para.MaKH);
                    }
                    strQuery = @"SELECT ID,MAKH,TENKHAC,TENKH,DIACHI,MASOTHUE AS MASOTHUE,TRANGTHAI AS TRANGTHAI,CMTND AS CHUNGMINHTHU,
                                DIENTHOAI,EMAIL,TIENNGUYENGIA,SODIEM,TONGTIEN,HANGKHACHHANG,LOAIKHACHHANG,SODIEM,TIENNGUYENGIA,TIENSALE,NGAYHETHAN,GHICHU
                                MATHE,NGAYDACBIET,NGAYCAPTHE,NGAYSINH,HANGKHACHHANG,HANGKHACHHANGCU,QUENTHE,I_CREATE_DATE,I_CREATE_BY
                                FROM DMKHACHHANG WHERE 1=1 " + strWhere;

                    var data = ctx.Database.SqlQuery <CustomerReport>(strQuery);
                    result = data.ToList();
                    return(result);
                }
                catch
                {
                    throw new Exception("Lỗi không thể truy xuất khách hàng");
                }
            }
        }
Beispiel #2
0
        public List <MdCustomer> CustomerLevelUpCollection(ParameterCustomerCare para)
        {
            List <MdCustomer> result = new List <MdCustomer>();

            try
            {
                using (var ctx = new ERPContext())
                {
                    using (var dbContextTransaction = ctx.Database.BeginTransaction())
                    {
                        try
                        {
                            var pUnitCode          = new OracleParameter("pUnitCode", OracleDbType.NVarchar2, para.UnitCode, ParameterDirection.Input);
                            var pWareHouseCode     = new OracleParameter("pWareHouseCode", OracleDbType.NVarchar2, para.WareHouseCodes, ParameterDirection.Input);
                            var pFromDate          = new OracleParameter("pFromDate", OracleDbType.Date, para.FromDate.Date, ParameterDirection.Input);
                            var pToDate            = new OracleParameter("pToDate", OracleDbType.Date, para.ToDate.Date, ParameterDirection.Input);
                            var pStateTypeMoney    = new OracleParameter("pStateTypeMoney", OracleDbType.Int32, para.StateTypeMoney, ParameterDirection.Input);
                            var pFromMoney         = new OracleParameter("pFromMoney", OracleDbType.Decimal, para.FromMoney, ParameterDirection.Input);
                            var pToMoney           = new OracleParameter("pToMoney", OracleDbType.Decimal, para.ToMoney, ParameterDirection.Input);
                            var pStateCustomerCare = new OracleParameter("pStateCustomerCare", OracleDbType.Int32, para.StateCustomerCare, ParameterDirection.Input);

                            //var pNgayHetHan = new OracleParameter("pNgayHetHan", OracleDbType.Date, para.NgayHetHan.Date, ParameterDirection.Input);
                            var outRef = new OracleParameter("outRef", OracleDbType.RefCursor, ParameterDirection.Output);
                            var str    = "BEGIN TBNETERP.CUSTOMERCARE.CUSTOMER_LEVELUP(:pUnitCode, :pWareHouseCode, :pFromDate,:pToDate,:pStateTypeMoney, :pFromMoney,:pToMoney, :pStateCustomerCare, :outRef); END;";
                            ctx.Database.ExecuteSqlCommand(str, pUnitCode, pWareHouseCode, pFromDate, pToDate, pStateTypeMoney, pFromMoney, pToMoney, pStateCustomerCare, outRef);
                            OracleDataReader reader = ((OracleRefCursor)outRef.Value).GetDataReader();
                            while (reader.Read())
                            {
                                bool     care;
                                decimal  tienNguyenGia, tongTien, tienNguyenGiaCS, tongTienCS;
                                DateTime ngayDacBiet, ngaySinh, ngayCapThe, ngayHetHan, ngayChamSoc;
                                var      isTongTienCS      = decimal.TryParse(reader["tongTien_CHAMSOC"].ToString(), out tongTienCS);
                                var      istienNguyenGiaCS = decimal.TryParse(reader["tienNguyenGia_CHAMSOC"].ToString(), out tienNguyenGiaCS);
                                var      istienNguyenGia   = decimal.TryParse(reader["tienNguyenGia"].ToString(), out tienNguyenGia);
                                var      istongTien        = decimal.TryParse(reader["tongTien"].ToString(), out tongTien);
                                var      isNgayDb          = DateTime.TryParse(reader["NGAYDACBIET"].ToString(), out ngayDacBiet);
                                var      isNgaySn          = DateTime.TryParse(reader["NGAYSINH"].ToString(), out ngaySinh);
                                var      isNgayCT          = DateTime.TryParse(reader["NGAYCAPTHE"].ToString(), out ngayCapThe);
                                var      isNgayHH          = DateTime.TryParse(reader["NGAYHETHAN"].ToString(), out ngayHetHan);
                                var      isNgayChamSoc     = DateTime.TryParse(reader["NGAYCHAMSOC"].ToString(), out ngayChamSoc);
                                var      isCare            = bool.TryParse(reader["ISCARE"].ToString(), out care);
                                var      item = new MdCustomer()
                                {
                                    Id                    = reader["ID"].ToString(),
                                    MaKH                  = reader["MaKH"].ToString(),
                                    TenKH                 = reader["TenKH"].ToString(),
                                    DiaChi                = reader["DiaChi"].ToString(),
                                    DienThoai             = reader["DienThoai"].ToString(),
                                    Email                 = reader["Email"].ToString(),
                                    MaThe                 = reader["MATHE"].ToString(),
                                    GhiChu                = reader["GHICHU"].ToString(),
                                    GhiChuCu              = reader["GHICHUCU"].ToString(),
                                    IsCare                = isCare ? care : false,
                                    NgayDacBiet           = isNgayDb ? ngayDacBiet : new DateTime(0001, 1, 1),
                                    NgaySinh              = isNgaySn ? ngaySinh : new DateTime(0001, 1, 1),
                                    NgayCapThe            = isNgayCT ? ngayCapThe : new DateTime(0001, 1, 1),
                                    NgayHetHan            = isNgayHH ? ngayHetHan : new DateTime(0001, 1, 1),
                                    NgayChamSoc           = isNgayChamSoc ? ngayChamSoc : new DateTime(0001, 1, 1),
                                    TienNguyenGia         = istienNguyenGia ? tienNguyenGia : 0,
                                    TongTien              = istongTien ? tongTien : 0,
                                    TienNguyenGia_ChamSoc = istienNguyenGiaCS ? tienNguyenGiaCS : 0,
                                    TongTien_ChamSoc      = isTongTienCS ? tongTienCS : 0,
                                };
                                result.Add(item);
                            }


                            dbContextTransaction.Commit();
                            return(result);
                        }
                        catch
                        {
                            dbContextTransaction.Rollback();
                            throw new Exception("Xảy ra lỗi trong khi chạy Store_Procude. Tự động rollback!");
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Beispiel #3
0
        public List <MdCustomer> ReportLoyalCustomer(ParameterCustomerCare para)
        {
            List <MdCustomer> result = new List <MdCustomer>();

            try
            {
                using (var ctx = new ERPContext())
                {
                    using (var dbContextTransaction = ctx.Database.BeginTransaction())
                    {
                        try
                        {
                            var pUnitCode       = new OracleParameter("pUnitCode", OracleDbType.NVarchar2, para.UnitCode, ParameterDirection.Input);
                            var pWareHouseCode  = new OracleParameter("pWareHouseCode", OracleDbType.NVarchar2, para.WareHouseCodes, ParameterDirection.Input);
                            var pFromDate       = new OracleParameter("pFromDate", OracleDbType.Date, para.FromDate.Date, ParameterDirection.Input);
                            var pToDate         = new OracleParameter("pToDate", OracleDbType.Date, para.ToDate.Date, ParameterDirection.Input);
                            var pStateTypeMoney = new OracleParameter("pStateTypeMoney", OracleDbType.Int32, para.StateTypeMoney, ParameterDirection.Input);
                            var pFromMoney      = new OracleParameter("pFromMoney", OracleDbType.Decimal, para.FromMoney, ParameterDirection.Input);
                            var pToMoney        = new OracleParameter("pToMoney", OracleDbType.Decimal, para.ToMoney, ParameterDirection.Input);
                            var pMaThe          = new OracleParameter("pMaThe", OracleDbType.NVarchar2, para.MaThe, ParameterDirection.Input);
                            var pDiaChi         = new OracleParameter("pDiaChi", OracleDbType.NVarchar2, para.DiaChi, ParameterDirection.Input);
                            //var pNgayHetHan = new OracleParameter("pNgayHetHan", OracleDbType.Date, para.NgayHetHan.Date, ParameterDirection.Input);
                            var outRef = new OracleParameter("outRef", OracleDbType.RefCursor, ParameterDirection.Output);
                            var str    = "BEGIN TBNETERP.CUSTOMERCARE.REPORT_LOYAL_CUSTOMER(:pUnitCode, :pWareHouseCode, :pFromDate,:pToDate,:pStateTypeMoney, :pFromMoney,:pToMoney, :pMaThe,:pDiaChi, :outRef); END;";
                            ctx.Database.ExecuteSqlCommand(str, pUnitCode, pWareHouseCode, pFromDate, pToDate, pStateTypeMoney, pFromMoney, pToMoney, pMaThe, pDiaChi, outRef);
                            OracleDataReader reader = ((OracleRefCursor)outRef.Value).GetDataReader();
                            while (reader.Read())
                            {
                                decimal  tienNguyenGia, tongTien;
                                DateTime ngayDacBiet, ngaySinh, ngayCapThe, ngayHetHan;
                                var      istienNguyenGia = decimal.TryParse(reader["tienNguyenGia"].ToString(), out tienNguyenGia);
                                var      istongTien      = decimal.TryParse(reader["tongTien"].ToString(), out tongTien);
                                var      isNgayDb        = DateTime.TryParse(reader["NGAYDACBIET"].ToString(), out ngayDacBiet);
                                var      isNgaySn        = DateTime.TryParse(reader["NGAYSINH"].ToString(), out ngaySinh);
                                var      isNgayCT        = DateTime.TryParse(reader["NGAYCAPTHE"].ToString(), out ngayCapThe);
                                var      isNgayHH        = DateTime.TryParse(reader["NGAYHETHAN"].ToString(), out ngayHetHan);
                                var      item            = new MdCustomer()
                                {
                                    MaKH          = reader["MaKH"].ToString(),
                                    TenKH         = reader["TenKH"].ToString(),
                                    DiaChi        = reader["DiaChi"].ToString(),
                                    DienThoai     = reader["DienThoai"].ToString(),
                                    Email         = reader["Email"].ToString(),
                                    MaThe         = reader["MATHE"].ToString(),
                                    NgayDacBiet   = isNgayDb?ngayDacBiet:new DateTime(0001, 1, 1),
                                    NgaySinh      = isNgaySn ? ngaySinh : new DateTime(0001, 1, 1),
                                    NgayCapThe    = isNgayCT ? ngayCapThe : new DateTime(0001, 1, 1),
                                    NgayHetHan    = isNgayHH ? ngayHetHan : new DateTime(0001, 1, 1),
                                    TienNguyenGia = istienNguyenGia?tienNguyenGia:0,
                                    TongTien      = istongTien?tongTien:0,
                                };
                                result.Add(item);
                            }
                            if (para.StateExpiredCard != null && para.StateExpiredCard == 1 && para.NgayHetHan != null)
                            {
                                var lstItem = result.Where(x => x.NgayHetHan <= para.NgayHetHan).ToList();
                                if (lstItem.Count > 0)
                                {
                                    lstItem.ForEach(x => result.Remove(x));
                                }
                            }
                            if (para.StateGiveCard != null)
                            {
                                switch (para.StateGiveCard)
                                {
                                case 1:     // Chưa cấp thẻ => Delete (Ngay cap the != null || != 0001)
                                    var lst = result.Where(x => x.NgayCapThe != null).ToList();
                                    if (lst.Count > 0)
                                    {
                                        lst.ForEach(x => {
                                            if (x.NgayCapThe.Value.Year != 0001)
                                            {
                                                result.Remove(x);
                                            }
                                        });
                                    }
                                    break;

                                case 2:     // Đã cấp thẻ => Delete (Ngay cap the = null || = 0001)
                                    lst = result.Where(x => x.NgayCapThe == null || x.NgayCapThe.Value.Year == 0001).ToList();
                                    if (lst.Count > 0)
                                    {
                                        lst.ForEach(x => result.Remove(x));
                                    }
                                    break;
                                }
                            }

                            dbContextTransaction.Commit();
                            return(result);
                        }
                        catch
                        {
                            dbContextTransaction.Rollback();
                            throw new Exception("Xảy ra lỗi trong khi chạy Store_Procude. Tự động rollback!");
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }