sozsoft-platform/configs/seeds/sql/object/Prj_V_PersonnelManMonth.sql
2026-10-08 13:51:14 +03:00

22 lines
1.3 KiB
Transact-SQL

CREATE OR ALTER VIEW [dbo].[Prj_V_PersonnelManMonth]
AS
SELECT
r.[Id], r.[TenantId], r.[IsDeleted],
p.[Id] AS [ProjectId], p.[ProjectNo], p.[Name] AS [ProjectName],
w.[Id] AS [WorkPackageId], w.[Code] AS [WorkPackageCode], w.[Name] AS [WorkPackageName],
r.[Year], r.[Month], DATEFROMPARTS(r.[Year], r.[Month], 1) AS [PeriodDate],
r.[UserId],
r.[Rate] AS [ManMonthValue],
CAST(ISNULL(u.[Rate], 100) AS decimal(18, 4)) AS [MonthlyRate],
CAST(r.[Rate] * ISNULL(u.[Rate], 100) / 100.0 AS decimal(18, 4)) AS [EffectiveRate],
CAST(ISNULL(pm.[AvgMonthlyCost], 0) AS decimal(18, 4)) AS [UnitCost],
CAST(ISNULL(pm.[AvgMonthlyCost], 0) * r.[Rate] * ISNULL(u.[Rate], 100) / 10000.0 AS decimal(18, 4)) AS [TotalCost]
FROM [dbo].[Prj_T_WorkPackageMonthRate] r
INNER JOIN [dbo].[Prj_T_WorkPackage] w ON w.[Id] = r.[WorkPackageId] AND w.[IsDeleted] = 0
INNER JOIN [dbo].[Prj_T_Project] p ON p.[Id] = w.[ProjectId] AND p.[IsDeleted] = 0
LEFT JOIN [dbo].[Prj_T_UserMonthRate] u
ON u.[UserId] = r.[UserId] AND u.[Year] = r.[Year] AND u.[Month] = r.[Month]
AND (u.[TenantId] = r.[TenantId] OR (u.[TenantId] IS NULL AND r.[TenantId] IS NULL)) AND u.[IsDeleted] = 0
LEFT JOIN [dbo].[Prj_T_ProjectMember] pm
ON pm.[ProjectId] = p.[Id] AND pm.[UserId] = r.[UserId] AND pm.[IsDeleted] = 0
GO