feat: complete client billing UI and staff benefits display (#524, #527)

- Client App: Built dedicated ShiftCompletionReviewPage  and InvoiceReadyPage
- Client App: Wired up invoice summary mapping and parsing logic from Data Connect
- Staff App: Added dynamic BenefitsOverviewPage tracking worker limits matching client mockup
- Staff App: Display progress ring values wired to real VendorBenefitPlan & BenefitsData balances
This commit is contained in:
2026-02-24 16:17:19 +05:30
parent 98c0b8a644
commit 7e26b54c50
35 changed files with 2038 additions and 199 deletions

View File

@@ -0,0 +1,26 @@
import 'package:equatable/equatable.dart';
/// Represents a staff member's benefit balance.
class Benefit extends Equatable {
/// The title of the benefit (e.g., Sick Leave, Holiday, Vacation).
final String title;
/// The total entitlement in hours.
final double entitlementHours;
/// The hours used so far.
final double usedHours;
/// The hours remaining.
double get remainingHours => entitlementHours - usedHours;
/// Creates a [Benefit].
const Benefit({
required this.title,
required this.entitlementHours,
required this.usedHours,
});
@override
List<Object?> get props => [title, entitlementHours, usedHours];
}