add quantity cap for GENERAL contracts and implement capacity tracking

- Updated ContractClearanceService and ContractsController to remove region parameter from queue method.
- Enhanced ContractsRepository to attach contract files for download and added attachContractFiles method.
- Modified ContractsService to persist cargo scope with quantity cap based on contract kind.
- Introduced quantityCap field in CreateContractCargoScopeDto and ContractCargoScope entity.
- Implemented capacity tracking in the frontend with ContractCapacityNotice component to display remaining bookable quantities.
- Updated various components and services to support new capacity features, including hooks and API calls.
- Added migration to include quantity_cap column in contract_cargo_scope table.
This commit is contained in:
Marshal
2026-06-28 17:32:18 +00:00
parent e1d54746c2
commit 11c7f1bb74
27 changed files with 512 additions and 74 deletions

View File

@@ -133,6 +133,20 @@ export interface IContractCargoScope {
containerSize?: string | null;
cargoTypeId?: string | null;
cargoFreeText?: string | null;
/**
* GENERAL contracts: total quantity bookable across all shipments on this line
* (containers per size, or tons/items for bulk). null = uncapped / ONE_TIME.
*/
quantityCap?: number | null;
}
/** Remaining bookable quantity per cargo-scope line (GENERAL contracts). */
export interface ContractCapacityLine {
containerSize?: string | null;
cargoTypeId?: string | null;
cap: number | null;
booked: number;
remaining: number | null;
}
export interface IContractRateSnapshot {
@@ -464,6 +478,8 @@ export interface CreateContractCargoScopeDto {
containerSize?: string | null;
cargoTypeId?: string | null;
cargoFreeText?: string | null;
/** GENERAL only: total bookable quantity for this line. Omit for uncapped. */
quantityCap?: number | null;
}
export interface CreateContractRouteInputDto {