sozsoft-platform/configs/seeds/host/sql/object/Hr_T_LeaveRequest.sql
2026-10-04 22:17:16 +03:00

65 lines
3.1 KiB
Transact-SQL

IF OBJECT_ID(N'[dbo].[Hr_T_LeaveRequest]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Hr_T_LeaveRequest]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[RequestNo] nvarchar(32) NULL,
[EmployeeId] uniqueidentifier NOT NULL,
[EmployeeName] nvarchar(256) NULL,
[DepartmentId] uniqueidentifier NULL,
[JobPositionId] uniqueidentifier NULL,
[LeaveTypeId] uniqueidentifier NOT NULL,
[StartDate] datetime2 NOT NULL,
[EndDate] datetime2 NOT NULL,
[IsHalfDay] bit NOT NULL DEFAULT 0,
[HalfDayPart] nvarchar(16) NULL,
[Days] decimal(5, 1) NOT NULL DEFAULT 0,
[Description] nvarchar(1024) NULL,
[DocumentFileName] nvarchar(256) NULL,
[DocumentContent] nvarchar(MAX) NULL,
[BalanceWarning] nvarchar(512) NULL,
[SickLeaveId] uniqueidentifier NULL,
[ManagerIds] nvarchar(1024) NULL,
[ManagerUserNames] nvarchar(1024) NULL,
[RequiresManagerApproval] int NOT NULL DEFAULT 1,
[ApprovalStatus] nvarchar(50) NULL,
[ApprovalUser] nvarchar(1024) NULL,
[ApprovalDate] datetime2 NULL,
[ApprovalDescription] nvarchar(512) NULL,
[LastNotifiedStatus] nvarchar(50) NULL,
[IsActive] bit NOT NULL DEFAULT 1,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Hr_T_LeaveRequest] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF COL_LENGTH(N'dbo.Hr_T_LeaveRequest', N'RequiresManagerApproval') IS NULL
ALTER TABLE [dbo].[Hr_T_LeaveRequest] ADD [RequiresManagerApproval] int NOT NULL DEFAULT 1
GO
IF OBJECT_ID(N'[dbo].[CK_Hr_T_LeaveRequest_Dates]', 'C') IS NULL
ALTER TABLE [dbo].[Hr_T_LeaveRequest] ADD CONSTRAINT [CK_Hr_T_LeaveRequest_Dates] CHECK ([EndDate] >= [StartDate])
GO
IF OBJECT_ID(N'[dbo].[CK_Hr_T_LeaveRequest_HalfDayPart]', 'C') IS NULL
ALTER TABLE [dbo].[Hr_T_LeaveRequest] ADD CONSTRAINT [CK_Hr_T_LeaveRequest_HalfDayPart] CHECK ([HalfDayPart] IS NULL OR [HalfDayPart] IN ('Morning', 'Afternoon'))
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Hr_T_LeaveRequest_Employee' AND object_id = OBJECT_ID(N'[dbo].[Hr_T_LeaveRequest]'))
CREATE NONCLUSTERED INDEX [IX_Hr_T_LeaveRequest_Employee] ON [dbo].[Hr_T_LeaveRequest] ([TenantId], [EmployeeId], [StartDate]) WHERE [IsDeleted] = 0
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Hr_T_LeaveRequest_SickLeave' AND object_id = OBJECT_ID(N'[dbo].[Hr_T_LeaveRequest]'))
CREATE NONCLUSTERED INDEX [IX_Hr_T_LeaveRequest_SickLeave] ON [dbo].[Hr_T_LeaveRequest] ([SickLeaveId]) WHERE [SickLeaveId] IS NOT NULL
GO