{
return (
-
+
{fields.map((field, index) => (
@@ -386,7 +386,7 @@ export function ShopInfoROStatusComponent({ bodyshop, form }) {
))}
-
+
- }
- />
- );
+ return ;
}
diff --git a/client/src/pages/shop/shop.page.component.jsx b/client/src/pages/shop/shop.page.component.jsx
index 19991f62f..97f34ea95 100644
--- a/client/src/pages/shop/shop.page.component.jsx
+++ b/client/src/pages/shop/shop.page.component.jsx
@@ -72,10 +72,17 @@ export function ShopPage({ bodyshop, setSelectedHeader, setBreadcrumbs }) {
});
}
- items.push({
- key: "licensing",
- label: t("bodyshop.labels.licensing"),
- children:
+ InstanceRenderManager({
+ executeFunction: true,
+ args: [],
+ imex: () => {
+ items.push({
+ key: "licensing",
+ label: t("bodyshop.labels.licensing"),
+ children:
+ });
+ },
+ rome: "USE_IMEX"
});
if (HasFeatureAccess({ featureName: "csi", bodyshop })) {
diff --git a/client/src/redux/user/user.sagas.js b/client/src/redux/user/user.sagas.js
index 0c5aae651..283d8c48e 100644
--- a/client/src/redux/user/user.sagas.js
+++ b/client/src/redux/user/user.sagas.js
@@ -15,6 +15,7 @@ import { getToken } from "firebase/messaging";
import i18next from "i18next";
import LogRocket from "logrocket";
import { all, call, delay, put, select, takeLatest } from "redux-saga/effects";
+import { Userpilot } from "userpilot";
import { factory } from "../../App/App.container";
import {
analytics,
@@ -25,6 +26,10 @@ import {
messaging,
updateCurrentUser
} from "../../firebase/firebase.utils";
+import { QUERY_EULA } from "../../graphql/bodyshop.queries";
+import client from "../../utils/GraphQLClient";
+import day from "../../utils/day";
+import InstanceRenderManager from "../../utils/instanceRenderMgr";
import {
checkInstanceId,
sendPasswordResetFailure,
@@ -43,11 +48,6 @@ import {
validatePasswordResetSuccess
} from "./user.actions";
import UserActionTypes from "./user.types";
-import client from "../../utils/GraphQLClient";
-import { QUERY_EULA } from "../../graphql/bodyshop.queries";
-import day from "../../utils/day";
-import InstanceRenderManager from "../../utils/instanceRenderMgr";
-import { Userpilot } from "userpilot";
const fpPromise = FingerprintJS.load();
@@ -310,10 +310,28 @@ export function* SetAuthLevelFromShopDetails({ payload }) {
updateUserDetailsSuccess(authRecord[0] ? { validemail: authRecord[0].user.validemail } : { validemail: false })
);
+ const user = yield select((state) => state.user.currentUser);
if (payload.features.singleDeviceOnly) {
- const user = yield select((state) => state.user.currentUser);
+ if (!(user.email.includes("@imex.") || user.email.includes("@rome.") || user.email.includes("@promanager.")))
+ yield put(setInstanceId(user.uid));
+ }
- if (!(user.email.includes("@imex.") || user.email.includes("@rome."))) yield put(setInstanceId(user.uid));
+ //For Rome, check to make sure it's not a PM shop.
+ try {
+ InstanceRenderManager({
+ executeFunction: true,
+ args: [],
+ rome: () => {
+ if (
+ payload.imexshopid.toLowerCase().startsWith("pm_") &&
+ !(user.email.includes("@imex.") || user.email.includes("@rome.") || user.email.includes("@promanager."))
+ ) {
+ throw new Error("You are not authorized to use this application.");
+ }
+ }
+ });
+ } catch (error) {
+ yield put(setInstanceConflict());
}
try {
diff --git a/server/job/job-totals-USA.js b/server/job/job-totals-USA.js
index 7617099ff..c8bcdf2a8 100644
--- a/server/job/job-totals-USA.js
+++ b/server/job/job-totals-USA.js
@@ -718,6 +718,7 @@ function CalculateTaxesTotals(job, otherTotals) {
const taxableAmounts = {
PAA: Dinero(),
+ PAE: Dinero(),
PAN: Dinero(),
PAL: Dinero(),
PAR: Dinero(),