| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- using System;
- namespace ProjectEntryLaborAdjust
- {
- // ===================== RULE (ALL SETTINGS LIVE HERE) =====================
- public sealed class L023PmLaborRule : LaborRuleBase
- {
- public L023PmLaborRule() : base("L023", "Auto-added PM Labor")
- {
- ExcludedBranchCDs.Add("301");
- ExcludedBranchCDs.Add("112");
- ExcludedTemplateCDs.Add("ENVIRONMENTAL");
- ExcludedTemplateCDs.Add("REST&M");
- ExcludedBillRules.Add("PROGRESS");
- ProjectDate = new DateTime(2025, 9, 5); // rule applies only to projects created on/after this date
- }
- // Leave null => use AR Sales Prices (no fixed rate)
- public override decimal? FixedUnitRate
- {
- get { return null; }
- }
- public override decimal GetHours(decimal jobSize, DateTime? projectCreatedDate)
- {
- if (jobSize < 0m) return 0m;
- // Decide matrix by date (unknown => new matrix)
- var pivot = ProjectDate?.Date;
- var created = projectCreatedDate?.Date;
- bool useOldMatrix = pivot.HasValue && created.HasValue && created.Value < pivot.Value;
- if (useOldMatrix)
- {
- // ---- OLD MATRIX ----
- if (jobSize <= 615m) return 0.5m;
- if (jobSize <= 1000m) return 1.0m;
- if (jobSize <= 2500m) return 1.5m;
- if (jobSize <= 5000m) return 3.0m;
- if (jobSize <= 7500m) return 3.5m;
- if (jobSize <= 10000m) return 5.0m;
- if (jobSize <= 25000m) return 6.0m;
- if (jobSize <= 50000m) return 7.0m;
- return 10.5m;
- }
- // ---- NEW MATRIX ----
- if (jobSize <= 616m) return 0.5m;
- if (jobSize <= 1000m) return 1.0m;
- if (jobSize <= 2500m) return 2.5m;
- if (jobSize <= 5000m) return 4.5m;
- if (jobSize <= 7500m) return 5.0m;
- if (jobSize <= 10000m) return 7.0m;
- if (jobSize <= 25000m) return 8.5m;
- if (jobSize <= 50000m) return 9.5m;
- return 15.0m;
- }
- }
- }
-
|