Compare commits
8 Commits
feature/IO
...
feature/IO
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e6071709be | ||
|
|
c95c11fd0e | ||
|
|
1351fbb814 | ||
|
|
dcd3a078ef | ||
|
|
bf11e10676 | ||
|
|
7ec8a73c30 | ||
|
|
b9b3e2c2aa | ||
|
|
7e5363f911 |
@@ -25,6 +25,7 @@ const Eula = ({ currentEula, currentUser, acceptEula }) => {
|
||||
|
||||
const handleScroll = useCallback(
|
||||
(e) => {
|
||||
if (!e.target) return;
|
||||
const bottom = e.target.scrollHeight - 100 <= e.target.scrollTop + e.target.clientHeight;
|
||||
if (bottom && !hasEverScrolledToBottom) {
|
||||
setHasEverScrolledToBottom(true);
|
||||
@@ -36,7 +37,9 @@ const Eula = ({ currentEula, currentUser, acceptEula }) => {
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
handleScroll({ target: markdownCardRef.current });
|
||||
if (markdownCardRef.current) {
|
||||
handleScroll({ target: markdownCardRef.current });
|
||||
}
|
||||
}, [handleScroll]);
|
||||
|
||||
const handleChange = useCallback(() => {
|
||||
|
||||
@@ -144,11 +144,18 @@ export default function JobTotalsTableLabor({ job }) {
|
||||
{t("jobs.labels.mapa")}
|
||||
{InstanceRenderManager({
|
||||
imex:
|
||||
(job.materials?.mapa ?? job.materials?.MAPA)?.cal_maxdlr > 0 &&
|
||||
t("jobs.labels.threshhold", { amount: (job.materials.mapa ?? job.materials.MAPA).cal_maxdlr }),
|
||||
job.materials?.mapa &&
|
||||
job.materials.mapa.cal_maxdlr &&
|
||||
job.materials.mapa.cal_maxdlr > 0 &&
|
||||
t("jobs.labels.threshhold", {
|
||||
amount: job.materials.mapa.cal_maxdlr
|
||||
}),
|
||||
rome:
|
||||
job.materials?.MAPA?.cal_maxdlr !== undefined &&
|
||||
t("jobs.labels.threshhold", { amount: job.materials.MAPA.cal_maxdlr })
|
||||
job.materials?.MAPA &&
|
||||
job.materials.MAPA.cal_maxdlr !== undefined &&
|
||||
t("jobs.labels.threshhold", {
|
||||
amount: job.materials.MAPA.cal_maxdlr
|
||||
})
|
||||
})}
|
||||
</Space>
|
||||
</ResponsiveTable.Summary.Cell>
|
||||
@@ -183,11 +190,18 @@ export default function JobTotalsTableLabor({ job }) {
|
||||
{t("jobs.labels.mash")}
|
||||
{InstanceRenderManager({
|
||||
imex:
|
||||
(job.materials?.mash ?? job.materials?.MASH)?.cal_maxdlr > 0 &&
|
||||
t("jobs.labels.threshhold", { amount: (job.materials.mash ?? job.materials.MASH).cal_maxdlr }),
|
||||
job.materials?.mash &&
|
||||
job.materials.mash.cal_maxdlr &&
|
||||
job.materials.mash.cal_maxdlr > 0 &&
|
||||
t("jobs.labels.threshhold", {
|
||||
amount: job.materials.mash.cal_maxdlr
|
||||
}),
|
||||
rome:
|
||||
job.materials?.MASH?.cal_maxdlr !== undefined &&
|
||||
t("jobs.labels.threshhold", { amount: job.materials.MASH.cal_maxdlr })
|
||||
job.materials?.MASH &&
|
||||
job.materials.MASH.cal_maxdlr !== undefined &&
|
||||
t("jobs.labels.threshhold", {
|
||||
amount: job.materials.MASH.cal_maxdlr
|
||||
})
|
||||
})}
|
||||
</Space>
|
||||
</ResponsiveTable.Summary.Cell>
|
||||
|
||||
@@ -142,13 +142,13 @@ export function ExportLogsPageComponent() {
|
||||
<div>
|
||||
<ul>
|
||||
{message.map((m, idx) => (
|
||||
<li key={idx}>{m}</li>
|
||||
<li key={idx}>{typeof m === "object" ? JSON.stringify(m) : m}</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
);
|
||||
} else {
|
||||
return <div>{record.message}</div>;
|
||||
return <div>{typeof message === "object" ? JSON.stringify(message) : message}</div>;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,7 +66,12 @@ exports.default = async function ReloadCdkMakes(req, res) {
|
||||
} catch (error) {
|
||||
logger.log("cdk-replace-makes-models-error", "ERROR", req.user.email, null, {
|
||||
cdk_dealerid,
|
||||
error
|
||||
error: {
|
||||
message: error?.message,
|
||||
stack: error?.stack,
|
||||
name: error?.name,
|
||||
code: error?.code
|
||||
}
|
||||
});
|
||||
res.status(500).json(error);
|
||||
}
|
||||
@@ -105,7 +110,12 @@ async function GetCdkMakes(req, cdk_dealerid) {
|
||||
} catch (error) {
|
||||
logger.log("cdk-replace-makes-models-error", "ERROR", req.user.email, null, {
|
||||
cdk_dealerid,
|
||||
error
|
||||
error: {
|
||||
message: error?.message,
|
||||
stack: error?.stack,
|
||||
name: error?.name,
|
||||
code: error?.code
|
||||
}
|
||||
});
|
||||
|
||||
throw new Error(error);
|
||||
@@ -141,7 +151,12 @@ async function GetFortellisMakes(req, cdk_dealerid) {
|
||||
} catch (error) {
|
||||
logger.log("fortellis-replace-makes-models-error", "ERROR", req.user.email, null, {
|
||||
cdk_dealerid,
|
||||
error
|
||||
error: {
|
||||
message: error?.message,
|
||||
stack: error?.stack,
|
||||
name: error?.name,
|
||||
code: error?.code
|
||||
}
|
||||
});
|
||||
|
||||
throw new Error(error);
|
||||
|
||||
@@ -959,7 +959,7 @@ async function UpdateDmsVehicle({ socket, redisHelpers, JobData, DMSVeh, DMSCust
|
||||
delete DMSVehToSend.inventoryAccount;
|
||||
|
||||
!DMSVehToSend.vehicle.engineNumber && delete DMSVehToSend.vehicle.engineNumber;
|
||||
!DMSVehToSend.vehicle.saleClassValue && DMSVehToSend.vehicle.saleClassValue === "MISC";
|
||||
!DMSVehToSend.vehicle.saleClassValue && (DMSVehToSend.vehicle.saleClassValue = "MISC");
|
||||
!DMSVehToSend.vehicle.exteriorColor && delete DMSVehToSend.vehicle.exteriorColor;
|
||||
|
||||
const result = await MakeFortellisCall({
|
||||
|
||||
@@ -315,12 +315,7 @@ function CalculateRatesTotals(ratesList) {
|
||||
if (item.mod_lbr_ty) {
|
||||
//Check to see if it has 0 hours and a price instead.
|
||||
//Extend for when there are hours and a price.
|
||||
if (
|
||||
item.lbr_op === "OP14" &&
|
||||
item.act_price > 0 &&
|
||||
(!item.part_type || item.mod_lb_hrs === 0) &&
|
||||
!IsAdditionalCost(item)
|
||||
) {
|
||||
if (item.lbr_op === "OP14" && item.act_price > 0 && (!item.part_type || item.mod_lb_hrs === 0) && !IsAdditionalCost(item)) {
|
||||
//Scenario where SGI may pay out hours using a part price.
|
||||
if (!ret[item.mod_lbr_ty.toLowerCase()].total) {
|
||||
ret[item.mod_lbr_ty.toLowerCase()].total = Dinero();
|
||||
@@ -344,30 +339,38 @@ function CalculateRatesTotals(ratesList) {
|
||||
let subtotal = Dinero({ amount: 0 });
|
||||
let rates_subtotal = Dinero({ amount: 0 });
|
||||
|
||||
for (const [property, values] of Object.entries(ret)) {
|
||||
for (const property in ret) {
|
||||
//Skip calculating mapa and mash if we got the amounts.
|
||||
const shouldSkipCalculation = (property === "mapa" && hasMapaLine) || (property === "mash" && hasMashLine);
|
||||
|
||||
if (!shouldSkipCalculation) {
|
||||
values.total ??= Dinero();
|
||||
|
||||
//Check if there is a max for this type and apply it.
|
||||
const maxDollar =
|
||||
ratesList.materials?.[property]?.cal_maxdlr || ratesList.materials?.[property.toUpperCase()]?.cal_maxdlr;
|
||||
const threshold = maxDollar > 0 ? Dinero({ amount: Math.round(maxDollar * 100) }) : null;
|
||||
if (!((property === "mapa" && hasMapaLine) || (property === "mash" && hasMashLine))) {
|
||||
if (!ret[property].total) {
|
||||
ret[property].total = Dinero();
|
||||
}
|
||||
let threshold;
|
||||
//Check if there is a max for this type.
|
||||
if (ratesList.materials && ratesList.materials[property]) {
|
||||
//
|
||||
if (ratesList.materials[property].cal_maxdlr && ratesList.materials[property].cal_maxdlr > 0) {
|
||||
//It has an upper threshhold.
|
||||
threshold = Dinero({
|
||||
amount: Math.round(ratesList.materials[property].cal_maxdlr * 100)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const total = Dinero({
|
||||
amount: Math.round((values.rate || 0) * 100)
|
||||
}).multiply(values.hours);
|
||||
amount: Math.round((ret[property].rate || 0) * 100)
|
||||
}).multiply(ret[property].hours);
|
||||
|
||||
values.total = values.total.add(threshold && total.greaterThanOrEqual(threshold) ? threshold : total);
|
||||
if (threshold && total.greaterThanOrEqual(threshold)) {
|
||||
ret[property].total = ret[property].total.add(threshold);
|
||||
} else {
|
||||
ret[property].total = ret[property].total.add(total);
|
||||
}
|
||||
}
|
||||
|
||||
subtotal = subtotal.add(values.total);
|
||||
subtotal = subtotal.add(ret[property].total);
|
||||
|
||||
if (property !== "mapa" && property !== "mash") {
|
||||
rates_subtotal = rates_subtotal.add(values.total);
|
||||
}
|
||||
if (property !== "mapa" && property !== "mash") rates_subtotal = rates_subtotal.add(ret[property].total);
|
||||
}
|
||||
|
||||
ret.subtotal = subtotal;
|
||||
|
||||
Reference in New Issue
Block a user