Compare commits
17 Commits
feature/IO
...
feature/IO
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fdc06e79a6 | ||
|
|
163819809c | ||
|
|
70b6aa63ed | ||
|
|
844a879f1c | ||
|
|
f3513a80c5 | ||
|
|
3c38d9daeb | ||
|
|
27b9c3f342 | ||
|
|
23ce1c42d1 | ||
|
|
55dd0c6e14 | ||
|
|
d30e03a184 | ||
|
|
aef04ec29e | ||
|
|
69e57195d3 | ||
|
|
883c7257db | ||
|
|
92fd5b0315 | ||
|
|
54ce0e1802 | ||
|
|
be2df79555 | ||
|
|
9c733702e4 |
@@ -695,25 +695,25 @@ export function ShopInfoResponsibilityCenterComponent({ bodyshop, form }) {
|
||||
>
|
||||
<Input onBlur={handleBlur} />
|
||||
</Form.Item>
|
||||
{!hasDMSKey && (
|
||||
<Form.Item
|
||||
label={t("bodyshop.fields.responsibilitycenter_accountitem")}
|
||||
key={`${index}accountitem`}
|
||||
name={[field.name, "accountitem"]}
|
||||
rules={[{ required: true }]}
|
||||
>
|
||||
<Input onBlur={handleBlur} />
|
||||
</Form.Item>
|
||||
)}
|
||||
{hasDMSKey && !bodyshop.rr_dealerid && (
|
||||
<>
|
||||
<Form.Item
|
||||
label={t("bodyshop.fields.responsibilitycenter_accountitem")}
|
||||
key={`${index}accountitem`}
|
||||
name={[field.name, "accountitem"]}
|
||||
rules={[{ required: true }]}
|
||||
>
|
||||
<Input onBlur={handleBlur} />
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={t("bodyshop.fields.dms.dms_acctnumber")}
|
||||
key={`${index}dms_acctnumber`}
|
||||
name={[field.name, "dms_acctnumber"]}
|
||||
rules={[{ required: true }]}
|
||||
>
|
||||
<Input onBlur={handleBlur} />
|
||||
</Form.Item>
|
||||
</>
|
||||
<Form.Item
|
||||
label={t("bodyshop.fields.dms.dms_acctnumber")}
|
||||
key={`${index}dms_acctnumber`}
|
||||
name={[field.name, "dms_acctnumber"]}
|
||||
rules={[{ required: true }]}
|
||||
>
|
||||
<Input onBlur={handleBlur} />
|
||||
</Form.Item>
|
||||
)}
|
||||
{bodyshop.cdk_dealerid && (
|
||||
<Form.Item
|
||||
|
||||
@@ -306,8 +306,7 @@ async function FortellisSelectedCustomer({ socket, redisHelpers, selectedCustome
|
||||
CreateFortellisLogEvent(socket, "ERROR", `{7.1} Error posting vehicle service history. ${error.message}`);
|
||||
}
|
||||
|
||||
//TODO: IF THE VEHICLE SERVICE HISTORY FAILS, WE NEED TO MARK IT AS SUCH AND NOT DELETE THE TRANSACTION.
|
||||
//socket.emit("export-success", JobData.id);
|
||||
socket.emit("export-success", JobData.id);
|
||||
} else {
|
||||
//There was something wrong. Throw an error to trigger clean up.
|
||||
//throw new Error("Error posting DMS Batch Transaction");
|
||||
@@ -431,10 +430,10 @@ async function QueryDmsCustomerByName({ socket, redisHelpers, JobData }) {
|
||||
const ownerName =
|
||||
JobData.ownr_co_nm && JobData.ownr_co_nm.trim() !== ""
|
||||
//? [["firstName", JobData.ownr_co_nm.replace(replaceSpecialRegex, "").toUpperCase()]] // Commented out until we receive direction.
|
||||
? [["email", JobData.ownr_ea.toUpperCase()]]
|
||||
? [["phone", JobData.ownr_ph1?.replace(replaceSpecialRegex, "")]]
|
||||
: [
|
||||
["firstName", JobData.ownr_fn.replace(replaceSpecialRegex, "").toUpperCase()],
|
||||
["lastName", JobData.ownr_ln.replace(replaceSpecialRegex, "").toUpperCase()]
|
||||
["firstName", JobData.ownr_fn?.replace(replaceSpecialRegex, "").toUpperCase()],
|
||||
["lastName", JobData.ownr_ln?.replace(replaceSpecialRegex, "").toUpperCase()]
|
||||
];
|
||||
try {
|
||||
const result = await MakeFortellisCall({
|
||||
|
||||
@@ -304,6 +304,7 @@ function GenerateCostingData(job) {
|
||||
if (
|
||||
job.cieca_pfl &&
|
||||
job.cieca_pfl[val.mod_lbr_ty.toUpperCase()] &&
|
||||
typeof job.cieca_pfl[val.mod_lbr_ty.toUpperCase()].lbr_adjp === "number" &&
|
||||
job.cieca_pfl[val.mod_lbr_ty.toUpperCase()].lbr_adjp !== 0
|
||||
) {
|
||||
let adjp = 0;
|
||||
@@ -338,7 +339,7 @@ function GenerateCostingData(job) {
|
||||
if (!acc.labor[laborProfitCenter]) acc.labor[laborProfitCenter] = Dinero();
|
||||
acc.labor[laborProfitCenter] = acc.labor[laborProfitCenter].add(laborAmount);
|
||||
|
||||
if (val.mod_lb_hrs === 0 && val.act_price > 0 && val.lbr_op === "OP14") {
|
||||
if (val.act_price > 0 && val.lbr_op === "OP14") {
|
||||
//Scenario where SGI may pay out hours using a part price.
|
||||
acc.labor[laborProfitCenter] = acc.labor[laborProfitCenter].add(
|
||||
Dinero({
|
||||
@@ -469,10 +470,7 @@ function GenerateCostingData(job) {
|
||||
}
|
||||
|
||||
//Additional Profit Center
|
||||
if (
|
||||
(!val.part_type && !val.mod_lbr_ty) ||
|
||||
(!val.part_type && val.mod_lbr_ty && val.act_price > 0 && val.lbr_op !== "OP14")
|
||||
) {
|
||||
if ((!val.part_type && !val.mod_lbr_ty) || (!val.part_type && val.mod_lbr_ty && val.lbr_op !== "OP14")) {
|
||||
//Does it already have a defined profit center?
|
||||
//If so, use it, otherwise try to use the same from the auto-allocate logic in IO app jobs-close-auto-allocate.
|
||||
const partsProfitCenter = val.profitcenter_part || getAdditionalCostCenter(val, defaultProfits) || "Unknown";
|
||||
@@ -524,7 +522,12 @@ function GenerateCostingData(job) {
|
||||
}).multiply(materialsHours.mapaHrs || 0)
|
||||
);
|
||||
let adjp = 0;
|
||||
if (job.materials["MAPA"] && job.materials["MAPA"].mat_adjp) {
|
||||
if (
|
||||
job.materials["MAPA"] &&
|
||||
job.materials["MAPA"].mat_adjp &&
|
||||
typeof job.materials["MAPA"].mat_adjp === "number" &&
|
||||
job.materials["MAPA"].mat_adjp !== 0
|
||||
) {
|
||||
adjp =
|
||||
Math.abs(job.materials["MAPA"].mat_adjp) > 1
|
||||
? job.materials["MAPA"].mat_adjp
|
||||
@@ -551,7 +554,12 @@ function GenerateCostingData(job) {
|
||||
}).multiply(materialsHours.mashHrs || 0)
|
||||
);
|
||||
let adjp = 0;
|
||||
if (job.materials["MASH"] && job.materials["MASH"].mat_adjp) {
|
||||
if (
|
||||
job.materials["MASH"] &&
|
||||
job.materials["MASH"].mat_adjp &&
|
||||
typeof job.materials["MASH"].mat_adjp === "number" &&
|
||||
job.materials["MASH"].mat_adjp !== 0
|
||||
) {
|
||||
adjp =
|
||||
Math.abs(job.materials["MASH"].mat_adjp) > 1
|
||||
? job.materials["MASH"].mat_adjp
|
||||
@@ -575,7 +583,7 @@ function GenerateCostingData(job) {
|
||||
jobLineTotalsByProfitCenter.additional[defaultProfits["TOW"]] = Dinero();
|
||||
|
||||
jobLineTotalsByProfitCenter.additional[defaultProfits["TOW"]] = stlTowing
|
||||
? Dinero({ amount: Math.round(stlTowing.ttl_amt * 100) })
|
||||
? Dinero({ amount: Math.round((stlTowing.ttl_amt || 0) * 100) })
|
||||
: Dinero({
|
||||
amount: Math.round((job.towing_payable || 0) * 100)
|
||||
});
|
||||
@@ -584,7 +592,7 @@ function GenerateCostingData(job) {
|
||||
jobLineTotalsByProfitCenter.additional[defaultProfits["STO"]] = Dinero();
|
||||
|
||||
jobLineTotalsByProfitCenter.additional[defaultProfits["STO"]] = stlStorage
|
||||
? Dinero({ amount: Math.round(stlStorage.ttl_amt * 100) })
|
||||
? Dinero({ amount: Math.round((stlStorage.ttl_amt || 0) * 100) })
|
||||
: Dinero({
|
||||
amount: Math.round((job.storage_payable || 0) * 100)
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user