Implemented the Plan Detail view to display consumption overages or forfeitures
This commit is contained in:
@@ -54,5 +54,30 @@ function createSpaConsumption({
|
||||
}
|
||||
}
|
||||
|
||||
return { requestConsumptionTrend };
|
||||
async function requestConsumptionPlanDetail(message) {
|
||||
const debugRequests = [];
|
||||
try {
|
||||
const subPlanNum = typeof message.subPlanNum === "string" ? message.subPlanNum.trim() : "";
|
||||
const authorization = normalizeMessageAuthorization(message.authorization, "g2m-authorization");
|
||||
if (!subPlanNum) throw new Error("Sub plan number is required for plan details.");
|
||||
if (!authorization.value) throw new Error("OCICONS-TS authorization is unavailable for plan details.");
|
||||
const url = `https://spa.oracle.com/oalcrm/web/api/provider-proxy/g2m-consumption/service/v1/plan/plandetail/${encodeURIComponent(subPlanNum)}?active=true`;
|
||||
const items = await fetchJson(url, {
|
||||
method: "GET", credentials: "include", cache: "no-store",
|
||||
headers: { Accept: "application/json", "G2m-Authorization": authorization.value }
|
||||
}, "requestConsumptionPlanDetail", debugRequests);
|
||||
const validLines = (lines, depth = 0) => Array.isArray(lines) && depth <= 20 && lines.every(line =>
|
||||
line && typeof line === "object" && !Array.isArray(line)
|
||||
&& (line.clines === undefined || line.clines === null || validLines(line.clines, depth + 1)));
|
||||
if (!validLines(items)) throw new Error("requestConsumptionPlanDetail returned invalid plan details.");
|
||||
return { ok: true, subPlanNum, items, debugRequests };
|
||||
} catch (error) {
|
||||
const entry = debugRequests[debugRequests.length - 1];
|
||||
if (entry && entry.status === "success") { entry.status = "failed"; entry.error = error.message; }
|
||||
error.debugRequests = debugRequests;
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
return { requestConsumptionTrend, requestConsumptionPlanDetail };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user