This commit is contained in:
2026-06-25 09:14:11 +07:00
parent c36a2e17a7
commit f00734deb8
6 changed files with 3853 additions and 8 deletions

View File

@@ -168,7 +168,214 @@ SET NewQuantity = CASE
END;
-- ===========================================
-- 5. CREATE ASSET DEPARTMENTS TABLE
-- 5. CREATE CONSUMABLE INVENTORY TABLE
-- ===========================================
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'ConsumableInventory')
BEGIN
CREATE TABLE ConsumableInventory (
ConsumableId INT PRIMARY KEY IDENTITY(1,1),
RequestMonth NVARCHAR(50) NULL,
ConsumableCode NVARCHAR(100) NOT NULL UNIQUE,
ConsumableName NVARCHAR(255) NOT NULL,
Model NVARCHAR(255) NULL,
Unit NVARCHAR(50) NULL,
OpeningBalance INT NOT NULL DEFAULT 0,
ImportInPeriod INT NOT NULL DEFAULT 0,
ExportInPeriod INT NOT NULL DEFAULT 0,
EndingBalance INT NOT NULL DEFAULT 0,
ExportReason NVARCHAR(1000) NULL,
CreatedBy INT NULL,
CreatedDate DATETIME DEFAULT (DATEADD(HOUR, 7, SYSUTCDATETIME())),
UpdatedDate DATETIME DEFAULT (DATEADD(HOUR, 7, SYSUTCDATETIME())),
FOREIGN KEY (CreatedBy) REFERENCES Users(UserId) ON DELETE SET NULL
);
PRINT 'Table ConsumableInventory created successfully.';
END
IF COL_LENGTH('dbo.ConsumableInventory', 'RequestMonth') IS NULL
BEGIN
ALTER TABLE ConsumableInventory ADD RequestMonth NVARCHAR(50) NULL;
END
IF COL_LENGTH('dbo.ConsumableInventory', 'Model') IS NULL
BEGIN
ALTER TABLE ConsumableInventory ADD Model NVARCHAR(255) NULL;
END
IF COL_LENGTH('dbo.ConsumableInventory', 'Unit') IS NULL
BEGIN
ALTER TABLE ConsumableInventory ADD Unit NVARCHAR(50) NULL;
END
IF COL_LENGTH('dbo.ConsumableInventory', 'OpeningBalance') IS NULL
BEGIN
ALTER TABLE ConsumableInventory ADD OpeningBalance INT NOT NULL CONSTRAINT DF_ConsumableInventory_OpeningBalance DEFAULT(0);
END
IF COL_LENGTH('dbo.ConsumableInventory', 'ImportInPeriod') IS NULL
BEGIN
ALTER TABLE ConsumableInventory ADD ImportInPeriod INT NOT NULL CONSTRAINT DF_ConsumableInventory_ImportInPeriod DEFAULT(0);
END
IF COL_LENGTH('dbo.ConsumableInventory', 'ExportInPeriod') IS NULL
BEGIN
ALTER TABLE ConsumableInventory ADD ExportInPeriod INT NOT NULL CONSTRAINT DF_ConsumableInventory_ExportInPeriod DEFAULT(0);
END
IF COL_LENGTH('dbo.ConsumableInventory', 'EndingBalance') IS NULL
BEGIN
ALTER TABLE ConsumableInventory ADD EndingBalance INT NOT NULL CONSTRAINT DF_ConsumableInventory_EndingBalance DEFAULT(0);
END
IF COL_LENGTH('dbo.ConsumableInventory', 'ExportReason') IS NULL
BEGIN
ALTER TABLE ConsumableInventory ADD ExportReason NVARCHAR(1000) NULL;
END
-- ===========================================
-- 6. CREATE CONSUMABLE EXPORT HISTORY TABLE
-- ===========================================
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'ConsumableExportHistory')
BEGIN
CREATE TABLE ConsumableExportHistory (
ExportHistoryId INT PRIMARY KEY IDENTITY(1,1),
ConsumableId INT NOT NULL,
ConsumableCode NVARCHAR(100) NOT NULL,
ConsumableName NVARCHAR(255) NOT NULL,
Unit NVARCHAR(50) NULL,
ExportQuantity INT NOT NULL DEFAULT 1,
RecipientName NVARCHAR(100) NOT NULL,
ProjectName NVARCHAR(150) NULL,
ExportedByName NVARCHAR(100) NOT NULL,
ExportNote NVARCHAR(1000) NULL,
PreviousExportInPeriod INT NOT NULL DEFAULT 0,
NextExportInPeriod INT NOT NULL DEFAULT 0,
PreviousEndingBalance INT NOT NULL DEFAULT 0,
NextEndingBalance INT NOT NULL DEFAULT 0,
CreatedBy INT NULL,
ExportedDate DATETIME NOT NULL DEFAULT (DATEADD(HOUR, 7, SYSUTCDATETIME())),
CreatedDate DATETIME NOT NULL DEFAULT (DATEADD(HOUR, 7, SYSUTCDATETIME())),
UpdatedDate DATETIME NOT NULL DEFAULT (DATEADD(HOUR, 7, SYSUTCDATETIME())),
FOREIGN KEY (ConsumableId) REFERENCES ConsumableInventory(ConsumableId) ON DELETE CASCADE,
FOREIGN KEY (CreatedBy) REFERENCES Users(UserId) ON DELETE SET NULL
);
PRINT 'Table ConsumableExportHistory created successfully.';
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'ConsumableCode') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD ConsumableCode NVARCHAR(100) NULL;
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'ConsumableName') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD ConsumableName NVARCHAR(255) NULL;
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'Unit') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD Unit NVARCHAR(50) NULL;
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'ExportQuantity') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD ExportQuantity INT NOT NULL CONSTRAINT DF_ConsumableExportHistory_ExportQuantity DEFAULT(1);
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'RecipientName') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD RecipientName NVARCHAR(100) NULL;
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'ProjectName') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD ProjectName NVARCHAR(150) NULL;
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'ExportedByName') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD ExportedByName NVARCHAR(100) NULL;
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'ExportNote') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD ExportNote NVARCHAR(1000) NULL;
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'PreviousExportInPeriod') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD PreviousExportInPeriod INT NOT NULL CONSTRAINT DF_ConsumableExportHistory_PreviousExportInPeriod DEFAULT(0);
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'NextExportInPeriod') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD NextExportInPeriod INT NOT NULL CONSTRAINT DF_ConsumableExportHistory_NextExportInPeriod DEFAULT(0);
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'PreviousEndingBalance') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD PreviousEndingBalance INT NOT NULL CONSTRAINT DF_ConsumableExportHistory_PreviousEndingBalance DEFAULT(0);
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'NextEndingBalance') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD NextEndingBalance INT NOT NULL CONSTRAINT DF_ConsumableExportHistory_NextEndingBalance DEFAULT(0);
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'CreatedBy') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD CreatedBy INT NULL;
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'ExportedDate') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD ExportedDate DATETIME NOT NULL CONSTRAINT DF_ConsumableExportHistory_ExportedDate DEFAULT(DATEADD(HOUR, 7, SYSUTCDATETIME()));
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'CreatedDate') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD CreatedDate DATETIME NOT NULL CONSTRAINT DF_ConsumableExportHistory_CreatedDate DEFAULT(DATEADD(HOUR, 7, SYSUTCDATETIME()));
END
IF COL_LENGTH('dbo.ConsumableExportHistory', 'UpdatedDate') IS NULL
BEGIN
ALTER TABLE ConsumableExportHistory ADD UpdatedDate DATETIME NOT NULL CONSTRAINT DF_ConsumableExportHistory_UpdatedDate DEFAULT(DATEADD(HOUR, 7, SYSUTCDATETIME()));
END
IF NOT EXISTS (
SELECT 1
FROM sys.foreign_key_columns fkc
INNER JOIN sys.columns c
ON c.object_id = fkc.parent_object_id
AND c.column_id = fkc.parent_column_id
WHERE fkc.parent_object_id = OBJECT_ID('dbo.ConsumableExportHistory')
AND c.name = 'ConsumableId'
)
AND COL_LENGTH('dbo.ConsumableExportHistory', 'ConsumableId') IS NOT NULL
BEGIN
ALTER TABLE ConsumableExportHistory
ADD CONSTRAINT FK_ConsumableExportHistory_ConsumableId
FOREIGN KEY (ConsumableId) REFERENCES ConsumableInventory(ConsumableId) ON DELETE CASCADE;
END
IF NOT EXISTS (
SELECT 1
FROM sys.foreign_key_columns fkc
INNER JOIN sys.columns c
ON c.object_id = fkc.parent_object_id
AND c.column_id = fkc.parent_column_id
WHERE fkc.parent_object_id = OBJECT_ID('dbo.ConsumableExportHistory')
AND c.name = 'CreatedBy'
)
AND COL_LENGTH('dbo.ConsumableExportHistory', 'CreatedBy') IS NOT NULL
BEGIN
ALTER TABLE ConsumableExportHistory
ADD CONSTRAINT FK_ConsumableExportHistory_CreatedBy
FOREIGN KEY (CreatedBy) REFERENCES Users(UserId) ON DELETE SET NULL;
END
-- ===========================================
-- 7. CREATE ASSET DEPARTMENTS TABLE
-- ===========================================
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'AssetDepartments')
BEGIN
@@ -197,7 +404,7 @@ WHERE NOT EXISTS (
);
-- ===========================================
-- 6. CREATE ASSET PROJECTS TABLE
-- 8. CREATE ASSET PROJECTS TABLE
-- ===========================================
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'AssetProjects')
BEGIN
@@ -211,7 +418,7 @@ BEGIN
END
-- ===========================================
-- 7. CREATE ASSET BORROW REQUESTS TABLE
-- 9. CREATE ASSET BORROW REQUESTS TABLE
-- ===========================================
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'AssetBorrowRequests')
BEGIN
@@ -386,7 +593,7 @@ BEGIN
END
-- ===========================================
-- 8. CREATE ASSET EXPORT HISTORY TABLE
-- 10. CREATE ASSET EXPORT HISTORY TABLE
-- ===========================================
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'AssetExportHistory')
BEGIN
@@ -484,7 +691,7 @@ BEGIN
END
-- ===========================================
-- 9. CREATE ASSET DAMAGE/DISPOSAL HISTORY TABLE
-- 11. CREATE ASSET DAMAGE/DISPOSAL HISTORY TABLE
-- ===========================================
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'AssetDamageDisposalHistory')
BEGIN
@@ -522,7 +729,7 @@ BEGIN
END
-- ===========================================
-- 10. CREATE AUDIT LOG TABLE
-- 12. CREATE AUDIT LOG TABLE
-- ===========================================
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'AuditLog')
BEGIN
@@ -541,7 +748,7 @@ BEGIN
END
-- ===========================================
-- 11. CREATE INDEXES
-- 13. CREATE INDEXES
-- ===========================================
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_Users_Username')
BEGIN
@@ -573,6 +780,31 @@ BEGIN
CREATE INDEX IX_AssetInventory_Department ON AssetInventory(Department);
END
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_ConsumableInventory_ConsumableCode')
BEGIN
CREATE INDEX IX_ConsumableInventory_ConsumableCode ON ConsumableInventory(ConsumableCode);
END
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_ConsumableInventory_RequestMonth')
BEGIN
CREATE INDEX IX_ConsumableInventory_RequestMonth ON ConsumableInventory(RequestMonth);
END
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_ConsumableInventory_EndingBalance')
BEGIN
CREATE INDEX IX_ConsumableInventory_EndingBalance ON ConsumableInventory(EndingBalance);
END
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_ConsumableExportHistory_ConsumableId')
BEGIN
CREATE INDEX IX_ConsumableExportHistory_ConsumableId ON ConsumableExportHistory(ConsumableId);
END
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_ConsumableExportHistory_ExportedDate')
BEGIN
CREATE INDEX IX_ConsumableExportHistory_ExportedDate ON ConsumableExportHistory(ExportedDate DESC);
END
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'UX_AssetDepartments_DepartmentName')
BEGIN
CREATE UNIQUE INDEX UX_AssetDepartments_DepartmentName ON AssetDepartments(DepartmentName);