sozsoft-platform/configs/seeds/postgres/object/Prj_V_PersonnelManMonth.sql
2026-10-14 22:26:03 +03:00

22 lines
1.3 KiB
SQL

CREATE OR REPLACE VIEW public."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", make_date(r."Year", r."Month", 1) AS "PeriodDate",
r."UserId",
r."Rate" AS "ManMonthValue",
COALESCE(u."Rate", 100)::numeric(18,4) AS "MonthlyRate",
(r."Rate" * COALESCE(u."Rate", 100) / 100.0)::numeric(18,4) AS "EffectiveRate",
COALESCE(pm."AvgMonthlyCost", 0)::numeric(18,4) AS "UnitCost",
(COALESCE(pm."AvgMonthlyCost", 0) * r."Rate" * COALESCE(u."Rate", 100) / 10000.0)::numeric(18,4) AS "TotalCost",
p."BranchId"
FROM public."Prj_T_WorkPackageMonthRate" r
INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = r."WorkPackageId" AND w."IsDeleted" = FALSE
INNER JOIN public."Prj_T_Project" p ON p."Id" = w."ProjectId" AND p."IsDeleted" = FALSE
LEFT JOIN public."Prj_T_UserMonthRate" u
ON u."UserId" = r."UserId" AND u."Year" = r."Year" AND u."Month" = r."Month"
AND u."TenantId" IS NOT DISTINCT FROM r."TenantId" AND u."IsDeleted" = FALSE
LEFT JOIN public."Prj_T_ProjectMember" pm
ON pm."ProjectId" = p."Id" AND pm."UserId" = r."UserId" AND pm."IsDeleted" = FALSE;