mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-09-07 14:15:44 +00:00
enhance contract management features
- Update ContractActionsToolbar to streamline contract generation and signing processes. - Introduce getStaffRowAction for improved action handling in contract list rows. - Implement auto-generation of contracts upon final approval in useContracts hook. - Refactor BookingDetailPage to remove unnecessary container type property. - Add action buttons in ContractRequestsPage for better user interaction. - Simplify container types configuration in resources. - Remove unused properties from booking types. - Introduce ContractViewPage for staff and customer contract signing. - Enhance NewContractPage to validate document uploads before proceeding. - Improve StepDocuments to ensure required documents are uploaded.
This commit is contained in:
@@ -16,6 +16,47 @@ export interface ContractListRow {
|
||||
validityDays?: number | null;
|
||||
isRenewal: boolean;
|
||||
createdAt: string;
|
||||
customsClearingEnabled: boolean;
|
||||
contractGeneratedAt?: string | null;
|
||||
}
|
||||
|
||||
/** The single most relevant next action for a contract row, for the table CTA. */
|
||||
export type ContractRowAction = {
|
||||
label: string;
|
||||
to: (id: string) => string;
|
||||
variant: "filled" | "light" | "default";
|
||||
};
|
||||
|
||||
/**
|
||||
* Map a contract status to its one primary staff action. Returns null when the
|
||||
* only action is "open the detail page" (the row click already does that).
|
||||
*/
|
||||
export function getStaffRowAction(
|
||||
row: Pick<ContractListRow, "status" | "customsClearingEnabled" | "contractGeneratedAt">,
|
||||
): ContractRowAction | null {
|
||||
const detail = (id: string) => `/dashboard/contract-requests/${id}`;
|
||||
const view = (id: string) => `/dashboard/contract-requests/${id}/view`;
|
||||
|
||||
switch (row.status) {
|
||||
case "SUBMITTED":
|
||||
return { label: "Review", to: detail, variant: "filled" };
|
||||
case "PENDING_APPROVAL":
|
||||
return { label: "Approve", to: detail, variant: "filled" };
|
||||
case "CONTRACT_READY":
|
||||
case "SIGNED_CUSTOMER":
|
||||
return row.contractGeneratedAt
|
||||
? { label: "View & sign", to: view, variant: "filled" }
|
||||
: { label: "Open", to: detail, variant: "light" };
|
||||
case "CLEARANCE_UNDER_REVIEW":
|
||||
case "AWAITING_CLEARANCE_DOCUMENTS":
|
||||
return { label: "Review clearance", to: detail, variant: "filled" };
|
||||
case "CLEARANCE_READY_FOR_BOOKING":
|
||||
return row.customsClearingEnabled
|
||||
? { label: "Create booking", to: detail, variant: "filled" }
|
||||
: { label: "Open", to: detail, variant: "light" };
|
||||
default:
|
||||
return { label: "Open", to: detail, variant: "default" };
|
||||
}
|
||||
}
|
||||
|
||||
function yardLabel(
|
||||
@@ -51,5 +92,7 @@ export function toContractListRow(contract: Freight.IContract): ContractListRow
|
||||
validityDays: contract.contractValidityDays,
|
||||
isRenewal: Boolean(contract.renewalOfId),
|
||||
createdAt: contract.createdAt,
|
||||
customsClearingEnabled: Boolean(contract.customsClearingEnabled),
|
||||
contractGeneratedAt: contract.contractGeneratedAt,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user