Smile PMS sử dụng SQL Server database, do đó, nếu có kỹ năng về quản lý SQL Server thì bạn sẽ tiết kiệm được rất nhiều thời gian trong quản trị hệ thống và hỗ trợ vận hành phần mềm.
Khuyến cáo: Làm việc trực tiếp với database rất nguy hiểm nếu có sai sót, do đó IT nên restore các bản backup để làm việc trên môi trường thử nghiệm.
Sau đây là một số tình huống và hướng dẫn xử lý, cập nhật thời điểm 03/2025:
- Tìm lỗi nhập liệu
Lỗi vì nhập liệu quá dài vượt quá phạm vi cho phép là lỗi rất phiền toái, rất hay xảy ra đối với Smile, đặc biệt là thời điểm sáng sớm, làm IT bị réo tên khi còn chưa mở mắt. Nguyên nhân là phía Smile lập trình không tốt, không có lồng điều kiện xác thực đầu vào để ngăn người dùng nhập quá kí tự, và Smile cũng thường đặt số kí tự cho phép khá nhỏ.
Phần note cho từng folio trước đây được thiết lập tối đa 760 kí tự rất hay bị lỗi, gần đây họ đã tăng lên 1500 kí tự đã thoải mái hơn trước.
Tuy nhiên, các trường khác có thể gặp lỗi như FirstName, LastName. Sau đây là các ví dụ để tìm các trường hay gặp lỗi nhập liệu vượt quá kí tự:
Tìm các folio có trường vượt quá số kí tự cho phép có ngày Arrival từ 08/03/2025 trở đi:
Đối với khách lẻ:
SELECT
FolioNum,ArrivalDate,DepartureDate,RoomCode,Notice,ConfirmNum,ReservationClerkID,LastName,FirstName
FROM SMILE_FO.dbo.Folio
WHERE ArrivalDate >= '2025-03-08'
AND (LEN(Notice) >= '1500'
OR LEN(FirstName) >= '100'
OR LEN(LastName) >= '100'
);
Đối với khách đoàn:
SELECT GroupCode,GroupName,FirstArrivalDate,PrivateRemark,CompanyName,CreateClerk
FROM SMILE_FO.dbo.GroupFolio
WHERE FirstArrivalDate >= '2025-03-08'
AND (Len(GroupName) >= '100'
OR Len(PrivateRemark) >= '1000'
);
2. Truy vấn các sai sót trong phân quyền
Vì việc phân quyền trên giao diện đồ họa của Smile hơi rườm rà và khó nhìn, do đó IT có thể xảy ra sai sót khi tiến hành phân quyền. Nhiều khi bảng phân quyền có sự thay đổi, hoặc IT mới vào thay IT cũ, việc rà soát lại các phân quyền là công việc thường xuyên phải làm.
Hiển thị phân quyền của một user:
SELECT *
FROM [SMILE_FO].[dbo].[ClerkPermission]
WHERE ClerkID = 'username'
Danh sách user (chỉ ID) đang hoạt động được phân các quyền cụ thể:
SELECT *
FROM [SMILE_FO].[dbo].[ClerkPermission]
WHERE FunctionID in ('ROverBookAll', 'CHTransactionAudit')
AND ClerkID IN (
SELECT [ClerkID]
FROM [SMILE_FO].[dbo].[Clerk]
WHERE DisabledFlag='0'
)
Lệnh trên sẽ liệt kê những user đang có quyền ROverBookAll hoặc CHTransactionAudit.
Danh sách user (hiển thị thêm LastName) đang hoạt động được phân các quyền cụ thể:
SELECT ClerkPermission.*, Clerk.LastName
FROM [SMILE_FO].[dbo].[ClerkPermission]
JOIN [SMILE_FO].[dbo].[Clerk]
ON ClerkPermission.ClerkID = Clerk.ClerkID
WHERE ClerkPermission.FunctionID in ('ROverBookAll', 'OverBookType')
AND Clerk.DisabledFlag='0'
hoặc
SELECT cp.*, c.LastName
FROM [SMILE_FO].[dbo].[ClerkPermission] cp
JOIN [SMILE_FO].[dbo].[Clerk] c
ON cp.ClerkID = c.ClerkID
WHERE cp.FunctionID in ('FDFutureAvailability', 'MONightAudit')
AND c.DisabledFlag='0'
Lịch sử thay đổi phân quyền của một user:
SELECT *
FROM [SMILE_FO].[dbo].[ClerkChanges]
WHERE ClerkID = 'username'
Lời kết: Từ những truy vấn trên, chúng ta có thể thực hiện các truy vấn khác tùy nhu cầu công việc, và sửa đổi lại thông tin trong database nếu có đủ quyền hạn và kỹ năng để đảm bảo an toàn cho dữ liệu.
Không có nhận xét nào:
Đăng nhận xét