Compare commits
15 Commits
release/20
...
feature/IO
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
784378a999 | ||
|
|
0d502d4dd4 | ||
|
|
8980d3716b | ||
|
|
764ec5f8f9 | ||
|
|
a7a7551dae | ||
|
|
571536a7ec | ||
|
|
20e56fff6a | ||
|
|
8f132ca14d | ||
|
|
99c002dac1 | ||
|
|
0cd30ccdec | ||
|
|
acd69276a5 | ||
|
|
faf5878bdf | ||
|
|
5a55798d2d | ||
|
|
c9e41ba72a | ||
|
|
522f2b9e26 |
@@ -10,14 +10,12 @@ import JobsCreateOwnerInfoContainer from "../../components/jobs-create-owner-inf
|
||||
import JobsCreateVehicleInfoContainer from "../../components/jobs-create-vehicle-info/jobs-create-vehicle-info.container";
|
||||
import JobCreateContext from "../../pages/jobs-create/jobs-create.context";
|
||||
|
||||
export default function JobsCreateComponent({ form }) {
|
||||
export default function JobsCreateComponent({ form, isSubmitting }) {
|
||||
const [pageIndex, setPageIndex] = useState(0);
|
||||
|
||||
const [errorMessage, setErrorMessage] = useState(null);
|
||||
|
||||
const [state] = useContext(JobCreateContext);
|
||||
|
||||
const { t } = useTranslation();
|
||||
|
||||
const steps = [
|
||||
{
|
||||
title: t("jobs.labels.create.vehicleinfo"),
|
||||
@@ -42,11 +40,9 @@ export default function JobsCreateComponent({ form }) {
|
||||
|
||||
const next = () => {
|
||||
setPageIndex(pageIndex + 1);
|
||||
console.log("Next");
|
||||
};
|
||||
const prev = () => {
|
||||
setPageIndex(pageIndex - 1);
|
||||
console.log("Previous");
|
||||
};
|
||||
|
||||
const ProgressButtons = ({ top }) => {
|
||||
@@ -79,17 +75,19 @@ export default function JobsCreateComponent({ form }) {
|
||||
{pageIndex === steps.length - 1 && (
|
||||
<Button
|
||||
type="primary"
|
||||
loading={isSubmitting}
|
||||
onClick={() => {
|
||||
form
|
||||
.validateFields()
|
||||
.then(() => {
|
||||
// NO OP
|
||||
form.submit();
|
||||
})
|
||||
.catch((error) => console.log("error", error));
|
||||
form.submit();
|
||||
.catch((error) => {
|
||||
console.log("error", error);
|
||||
});
|
||||
}}
|
||||
>
|
||||
Done
|
||||
{t("general.actions.done")}
|
||||
</Button>
|
||||
)}
|
||||
</Space>
|
||||
@@ -146,13 +144,11 @@ export default function JobsCreateComponent({ form }) {
|
||||
) : (
|
||||
<div>
|
||||
<ProgressButtons top />
|
||||
|
||||
{errorMessage ? (
|
||||
<div>
|
||||
<AlertComponent title={errorMessage} type="error" />
|
||||
</div>
|
||||
) : null}
|
||||
|
||||
{steps.map((item, idx) => (
|
||||
<div
|
||||
key={idx}
|
||||
|
||||
@@ -46,6 +46,7 @@ function JobsCreateContainer({ bodyshop, setBreadcrumbs, setSelectedHeader, curr
|
||||
});
|
||||
const [form] = Form.useForm();
|
||||
const [state, setState] = contextState;
|
||||
const [isSubmitting, setIsSubmitting] = useState(false);
|
||||
const [insertJob] = useMutation(INSERT_NEW_JOB);
|
||||
const [loadOwner, remoteOwnerData] = useLazyQuery(QUERY_OWNER_FOR_JOB_CREATION);
|
||||
|
||||
@@ -83,16 +84,19 @@ function JobsCreateContainer({ bodyshop, setBreadcrumbs, setSelectedHeader, curr
|
||||
newJobId: resp.data.insert_jobs.returning[0].id
|
||||
});
|
||||
logImEXEvent("manual_job_create_completed", {});
|
||||
setIsSubmitting(false);
|
||||
})
|
||||
.catch((error) => {
|
||||
notification.error({
|
||||
title: t("jobs.errors.creating", { error: error })
|
||||
});
|
||||
setState({ ...state, error: error });
|
||||
setIsSubmitting(false);
|
||||
});
|
||||
};
|
||||
|
||||
const handleFinish = (values) => {
|
||||
setIsSubmitting(true);
|
||||
let job = Object.assign(
|
||||
{},
|
||||
values,
|
||||
@@ -297,7 +301,7 @@ function JobsCreateContainer({ bodyshop, setBreadcrumbs, setSelectedHeader, curr
|
||||
})
|
||||
}}
|
||||
>
|
||||
<JobsCreateComponent form={form} />
|
||||
<JobsCreateComponent form={form} isSubmitting={isSubmitting} />
|
||||
</Form>
|
||||
</RbacWrapper>
|
||||
</JobCreateContext.Provider>
|
||||
|
||||
@@ -1295,6 +1295,7 @@
|
||||
"delete": "Delete",
|
||||
"deleteall": "Delete All",
|
||||
"deselectall": "Deselect All",
|
||||
"done": "Done",
|
||||
"download": "Download",
|
||||
"edit": "Edit",
|
||||
"gotoadmin": "Go to Admin Panel",
|
||||
|
||||
@@ -1295,6 +1295,7 @@
|
||||
"delete": "Borrar",
|
||||
"deleteall": "",
|
||||
"deselectall": "",
|
||||
"done": "",
|
||||
"download": "",
|
||||
"edit": "Editar",
|
||||
"gotoadmin": "",
|
||||
|
||||
@@ -1295,6 +1295,7 @@
|
||||
"delete": "Effacer",
|
||||
"deleteall": "",
|
||||
"deselectall": "",
|
||||
"done": "",
|
||||
"download": "",
|
||||
"edit": "modifier",
|
||||
"gotoadmin": "",
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -4,7 +4,7 @@
|
||||
* @returns {number|null}
|
||||
*/
|
||||
const parseVendorStatusCode = (err) => {
|
||||
// Prefer explicit numeric props when available
|
||||
// Prefer explicit numeric props when available.
|
||||
const codeProp = err?.code ?? err?.statusCode ?? err?.meta?.status?.StatusCode ?? err?.status?.StatusCode;
|
||||
const num = Number(codeProp);
|
||||
if (!Number.isNaN(num) && num > 0) return num;
|
||||
|
||||
@@ -12,7 +12,7 @@ const { createRRCustomer } = require("./rr-customers");
|
||||
const { ensureRRServiceVehicle } = require("./rr-service-vehicles");
|
||||
const { classifyRRVendorError } = require("./rr-errors");
|
||||
const { markRRExportSuccess, insertRRFailedExportLog } = require("./rr-export-logs");
|
||||
const { withRRRequestXml } = require("./rr-log-xml");
|
||||
const { withRRRequestXml, extractRRXmlPair } = require("./rr-log-xml");
|
||||
const {
|
||||
makeVehicleSearchPayloadFromJob,
|
||||
ownersFromVinBlocks,
|
||||
@@ -49,6 +49,21 @@ const resolveJobId = (explicit, payload, job) => explicit || payload?.jobId || j
|
||||
*/
|
||||
const resolveVin = ({ tx, job }) => tx?.jobData?.vin || job?.v_vin || null;
|
||||
|
||||
/**
|
||||
* Add request/response XML to socket event payloads when available.
|
||||
* @param rrObj
|
||||
* @param payload
|
||||
* @returns {*}
|
||||
*/
|
||||
const withRRXmlSocketPayload = (rrObj, payload = {}) => {
|
||||
const { requestXml, responseXml } = extractRRXmlPair(rrObj);
|
||||
return {
|
||||
...payload,
|
||||
...(requestXml ? { requestXml } : {}),
|
||||
...(responseXml ? { responseXml } : {})
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Sort vehicle owners first in the list, preserving original order otherwise.
|
||||
* @param list
|
||||
@@ -474,7 +489,14 @@ const registerRREvents = ({ socket, redisHelpers }) => {
|
||||
);
|
||||
|
||||
try {
|
||||
socket.emit("export-failed", { vendor: "rr", jobId: rid, error: error.message });
|
||||
socket.emit(
|
||||
"export-failed",
|
||||
withRRXmlSocketPayload(error, {
|
||||
vendor: "rr",
|
||||
jobId: rid,
|
||||
error: error.message
|
||||
})
|
||||
);
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
@@ -870,9 +892,11 @@ const registerRREvents = ({ socket, redisHelpers }) => {
|
||||
});
|
||||
|
||||
socket.emit("export-failed", {
|
||||
vendor: "rr",
|
||||
jobId: rid,
|
||||
error: cls?.friendlyMessage || result?.error || "RR early RO creation failed",
|
||||
...withRRXmlSocketPayload(result, {
|
||||
vendor: "rr",
|
||||
jobId: rid,
|
||||
error: cls?.friendlyMessage || result?.error || "RR early RO creation failed"
|
||||
}),
|
||||
...cls
|
||||
});
|
||||
|
||||
@@ -923,9 +947,11 @@ const registerRREvents = ({ socket, redisHelpers }) => {
|
||||
|
||||
try {
|
||||
socket.emit("export-failed", {
|
||||
vendor: "rr",
|
||||
jobId: rid,
|
||||
error: error.message,
|
||||
...withRRXmlSocketPayload(error, {
|
||||
vendor: "rr",
|
||||
jobId: rid,
|
||||
error: error.message
|
||||
}),
|
||||
...cls
|
||||
});
|
||||
socket.emit("rr-user-notice", { jobId: rid, ...cls });
|
||||
@@ -1173,7 +1199,14 @@ const registerRREvents = ({ socket, redisHelpers }) => {
|
||||
);
|
||||
|
||||
try {
|
||||
socket.emit("export-failed", { vendor: "rr", jobId: rid, error: error.message });
|
||||
socket.emit(
|
||||
"export-failed",
|
||||
withRRXmlSocketPayload(error, {
|
||||
vendor: "rr",
|
||||
jobId: rid,
|
||||
error: error.message
|
||||
})
|
||||
);
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
@@ -1538,9 +1571,11 @@ const registerRREvents = ({ socket, redisHelpers }) => {
|
||||
});
|
||||
|
||||
socket.emit("export-failed", {
|
||||
vendor: "rr",
|
||||
jobId: rid,
|
||||
error: cls?.friendlyMessage || result?.error || "RR export failed",
|
||||
...withRRXmlSocketPayload(result, {
|
||||
vendor: "rr",
|
||||
jobId: rid,
|
||||
error: cls?.friendlyMessage || result?.error || "RR export failed"
|
||||
}),
|
||||
...cls
|
||||
});
|
||||
|
||||
@@ -1591,9 +1626,11 @@ const registerRREvents = ({ socket, redisHelpers }) => {
|
||||
|
||||
try {
|
||||
socket.emit("export-failed", {
|
||||
vendor: "rr",
|
||||
jobId: rid,
|
||||
error: error.message,
|
||||
...withRRXmlSocketPayload(error, {
|
||||
vendor: "rr",
|
||||
jobId: rid,
|
||||
error: error.message
|
||||
}),
|
||||
...cls
|
||||
});
|
||||
socket.emit("rr-user-notice", { jobId: rid, ...cls });
|
||||
@@ -1725,9 +1762,11 @@ const registerRREvents = ({ socket, redisHelpers }) => {
|
||||
});
|
||||
|
||||
socket.emit("export-failed", {
|
||||
vendor: "rr",
|
||||
jobId: rid,
|
||||
error: cls?.friendlyMessage || finalizeResult?.error || "RR finalize failed",
|
||||
...withRRXmlSocketPayload(finalizeResult, {
|
||||
vendor: "rr",
|
||||
jobId: rid,
|
||||
error: cls?.friendlyMessage || finalizeResult?.error || "RR finalize failed"
|
||||
}),
|
||||
...cls
|
||||
});
|
||||
ack?.({ ok: false, error: cls.friendlyMessage || "RR finalize failed", classification: cls });
|
||||
@@ -1770,7 +1809,17 @@ const registerRREvents = ({ socket, redisHelpers }) => {
|
||||
});
|
||||
|
||||
try {
|
||||
socket.emit("export-failed", { vendor: "rr", jobId: rid, error: error.message, ...cls });
|
||||
socket.emit(
|
||||
"export-failed",
|
||||
{
|
||||
...withRRXmlSocketPayload(error, {
|
||||
vendor: "rr",
|
||||
jobId: rid,
|
||||
error: error.message
|
||||
}),
|
||||
...cls
|
||||
}
|
||||
);
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user