Contracted Rates
Introduction
The Contracted Rates module maintains contracted unit rates, rate history, wages register linkage, and billing rate settings used by client invoicing and payroll-related calculations. It centralizes rate tables that must stay consistent across Billing and Payroll for manpower supply organizations.
Purpose
Contracted Rates enables finance and contracts teams to:
- Define unit rates effective by date (as-on-date pricing)
- Maintain rate revision history for audit
- Link unit wages register data for compliance reporting
- Configure salary billing rates and supporting masters (client, designation, ESI/PF/PTax)
- Feed downstream billing and payroll processes with authoritative rate data
When to Use
Use Contracted Rates when you:
- Negotiate new client unit pricing effective from a specific date
- Maintain wages register submissions tied to contracted sites
- Align billing particulars with contracted rate cards
- Set up statutory group masters in the contracted-rates context
Overview / Architecture
ContractedRates Area reuses many Payroll DAL services (for example PayrollReportService) rather than a separate DAL/ContractedRates folder. Controllers wrap rate maintenance UI; persistence goes through payroll and report service SPs.
Entry URL: /ContractedRates/ContractedDashboard/Index
PageID: ContractedRates
Module flag: ContractedRates
Controllers
Dashboard & rates
| Controller | Primary responsibility |
|---|---|
| ContractedDashboard | Module home |
| ContractedRate | Contracted rate definitions |
| UnitRateAsOnDate | Effective-dated unit rates |
| UnitRateHistory | Historical rate audit |
| UnitWagesRegister | Wages register maintenance |
| SalaryBillingRate | Billing rate linkage |
Masters
| Controller | Primary responsibility |
|---|---|
| UnitMaster | Unit reference |
| ClientMaster | Client reference |
| ClientSegmentMaster | Client segments |
| DesignationMaster | Designations |
| StateMaster | States |
| PFChallanGroup | PF groups |
| ESIZoneMaster | ESI zones |
| PTaxMaster | Professional tax master |
Views / Layout
| Asset | Role |
|---|---|
_ContractedRatesLayout.cshtml | Module shell |
| UnitRateAsOnDate views | Rate grid and Excel export |
| Wages register views | Register entry and listing |
ClosedXML Excel export is used on select rate screens (for example unit rate as-on-date downloads).
DAL
Contracted Rates delegates to existing payroll/report infrastructure:
| DAL / service | Role |
|---|---|
| PayrollReportService | Rate reports and as-on-date Excel datasets |
| Client_DAL / UnitMaster_DAL (Payroll) | Shared masters |
| UnitRateReviseMaster_DAL (Payroll) | Rate revision persistence |
When tracing code, start at the Area controller and follow using DAL.Payroll references.
Business Objects
Primarily BO.Payroll types:
| BO type | Role |
|---|---|
| UnitMaster_BO | Unit context |
| Client_BO | Client context |
| UnitRateReviseMaster_BO | Rate revision rows |
| DesignationMaster_BO | Designation linkage |
Contracted-specific filter models may be anonymous in controller actions before SP calls.
Typical Workflow
New contracted rate effective date:
Data Flow
- Masters (client, unit, designation, statutory groups) maintained under ContractedRates controllers.
- UnitRateAsOnDate captures rate rows for a effective date → write SP via report service or payroll DAL.
- UnitRateHistory provides read-only trail for disputes and client audits.
- UnitWagesRegister stores register submissions linked to units and periods.
- SalaryBillingRate connects contracted rates to billing rate tables consumed by Bills module.
- Payroll unit rate revision and salary process read the same underlying tables when calculating chargeable vs payable amounts.
Reports
| Output | Source |
|---|---|
| Unit rate as-on-date Excel | UnitRateAsOnDate + ClosedXML |
| Wages register listings | UnitWagesRegister views / SP grids |
| Embedded payroll reports | PayrollReportService from contracted context |
Crystal MIS for contracted billing may also be triggered through shared report service methods.
Permissions
| Gate | Requirement |
|---|---|
| Module flag | dtVerifyUser.ContractedRates == true |
| Session | Valid CompID |
| Sensitivity | Rate data is commercially sensitive—limit flag to finance/contracts |
| Menu permissions | Per-screen DB permissions |
Common Issues
| Symptom | Likely cause |
|---|---|
| Bill rate mismatch | As-on-date not effective for invoice period |
| Excel export empty | Unit filter or missing rate rows |
| Wages register rejected | Unit not linked in UnitMaster |
| Duplicate rate rows | Overlapping effective dates |
Related Pages
Important Notes
There is no DAL/ContractedRates namespace—always trace into Payroll DAL and PayrollReportService.
Rates are date-sensitive. Billing and payroll both resolve “current” rate by as-on-date logic in SPs—verify effective date before client invoicing.
Common Mistakes
| Mistake | Consequence |
|---|---|
| Updating rates only in Bills parameters | Divergence from contracted master |
| Skipping UnitRateHistory review | Audit gaps on client disputes |
| Wages register without unit master | Orphan register rows |
Next Steps
- Complete client/unit/designation masters in ContractedRates.
- Enter as-on-date rates for a pilot unit and verify in UnitRateHistory.
- Raise a test bill in Bills and reconcile rate lines against SalaryBillingRate.