diff --git a/src/app/v/[token]/dispatch/_components/uplift-request-card.tsx b/src/app/v/[token]/dispatch/_components/uplift-request-card.tsx
index 053ca8d1..2d316578 100644
--- a/src/app/v/[token]/dispatch/_components/uplift-request-card.tsx
+++ b/src/app/v/[token]/dispatch/_components/uplift-request-card.tsx
@@ -32,6 +32,12 @@ function availableActions(request: VendorPortalUpliftRequest, locked: boolean, c
};
}
+// A vendor request stores the requested new NTE total; a work-order request stores the increase.
+function requestedTotal(request: VendorPortalUpliftRequest): number {
+ const requested = Number(request.requestedNTE);
+ return request.raisedByVendor === false ? Number(request.currentNTE ?? 0) + requested : requested;
+}
+
export function UpliftRequestCard({
request,
locked,
@@ -51,8 +57,7 @@ export function UpliftRequestCard({
Requested
- ${Number(request.requestedNTE).toFixed(2)} (was $
- {Number(request.currentNTE ?? 0).toFixed(2)})
+ ${requestedTotal(request).toFixed(2)} (was ${Number(request.currentNTE ?? 0).toFixed(2)})
diff --git a/src/test/app/v/uplift-request-card.test.tsx b/src/test/app/v/uplift-request-card.test.tsx
index e64693ef..c378a21c 100644
--- a/src/test/app/v/uplift-request-card.test.tsx
+++ b/src/test/app/v/uplift-request-card.test.tsx
@@ -46,6 +46,31 @@ describe("UpliftRequestCard actions", () => {
expect(screen.getByRole("button", { name: /revise/i })).toBeInTheDocument();
});
+ it("shows a work-order increase as the new NTE total", () => {
+ renderCard(request({ raisedByVendor: false, requestedNTE: 90, currentNTE: 600 }));
+
+ expect(screen.getByText("Requested").nextElementSibling).toHaveTextContent(
+ "$690.00 (was $600.00)",
+ );
+ });
+
+ it("shows a vendor request's requested total unchanged", () => {
+ renderCard(request({ raisedByVendor: true, requestedNTE: 900, currentNTE: 600 }));
+
+ expect(screen.getByText("Requested").nextElementSibling).toHaveTextContent(
+ "$900.00 (was $600.00)",
+ );
+ });
+
+ it("treats a request without the raised-by flag as vendor-raised", () => {
+ renderCard(request({ raisedByVendor: undefined, requestedNTE: 900, currentNTE: 600 }));
+
+ expect(screen.getByText("Requested").nextElementSibling).toHaveTextContent(
+ "$900.00 (was $600.00)",
+ );
+ expect(screen.getByRole("button", { name: /withdraw request/i })).toBeInTheDocument();
+ });
+
it.each(["Pending", "ChangesRequested"])(
"shows a %s request raised from the work order read-only",
(status) => {