Compare commits
21 Commits
feature/AI
...
feature/IO
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
168d4246af | ||
|
|
ee613db0cb | ||
|
|
55b892a74e | ||
|
|
16754d9657 | ||
|
|
33db67122c | ||
|
|
b9b88b0e23 | ||
|
|
992ad71910 | ||
|
|
51d1f926c2 | ||
|
|
c70447f337 | ||
|
|
dc367e1a30 | ||
|
|
ee7997ffbc | ||
|
|
2dbb5adbbb | ||
|
|
d6e3c54b68 | ||
|
|
52809cc849 | ||
|
|
e78b114544 | ||
|
|
bcdd32f92f | ||
|
|
8e623c71a9 | ||
|
|
5f2a5e1025 | ||
|
|
f2af78f056 | ||
|
|
71f3dbbeb4 | ||
|
|
c9b63be29f |
@@ -32,6 +32,7 @@ import React, { useEffect, useState } from "react";
|
|||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { BsKanban } from "react-icons/bs";
|
import { BsKanban } from "react-icons/bs";
|
||||||
import { FaCalendarAlt, FaCarCrash, FaCreditCard, FaFileInvoiceDollar, FaTasks } from "react-icons/fa";
|
import { FaCalendarAlt, FaCarCrash, FaCreditCard, FaFileInvoiceDollar, FaTasks } from "react-icons/fa";
|
||||||
|
import { FiLogOut } from "react-icons/fi";
|
||||||
import { GiPayMoney, GiPlayerTime, GiSettingsKnobs } from "react-icons/gi";
|
import { GiPayMoney, GiPlayerTime, GiSettingsKnobs } from "react-icons/gi";
|
||||||
import { IoBusinessOutline } from "react-icons/io5";
|
import { IoBusinessOutline } from "react-icons/io5";
|
||||||
import { RiSurveyLine } from "react-icons/ri";
|
import { RiSurveyLine } from "react-icons/ri";
|
||||||
@@ -42,7 +43,6 @@ import { selectRecentItems, selectSelectedHeader } from "../../redux/application
|
|||||||
import { setModalContext } from "../../redux/modals/modals.actions";
|
import { setModalContext } from "../../redux/modals/modals.actions";
|
||||||
import { signOutStart } from "../../redux/user/user.actions";
|
import { signOutStart } from "../../redux/user/user.actions";
|
||||||
import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors";
|
import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors";
|
||||||
import { FiLogOut } from "react-icons/fi";
|
|
||||||
import { checkBeta, handleBeta, setBeta } from "../../utils/betaHandler";
|
import { checkBeta, handleBeta, setBeta } from "../../utils/betaHandler";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
|
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
|
||||||
@@ -604,14 +604,22 @@ function Header({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// {
|
...(InstanceRenderManager({
|
||||||
// key: 'rescue',
|
imex: true,
|
||||||
// icon: <Icon component={CarFilled}/>,
|
rome: false,
|
||||||
// label: t("menus.header.rescueme"),
|
promanager: false
|
||||||
// onClick: () => {
|
})
|
||||||
// window.open("https://imexrescue.com/", "_blank");
|
? [
|
||||||
// }
|
{
|
||||||
// },
|
key: "rescue",
|
||||||
|
icon: <Icon component={CarFilled} />,
|
||||||
|
label: t("menus.header.rescueme"),
|
||||||
|
onClick: () => {
|
||||||
|
window.open("https://imexrescue.com/", "_blank");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
: []),
|
||||||
|
|
||||||
...(InstanceRenderManager({
|
...(InstanceRenderManager({
|
||||||
imex: true,
|
imex: true,
|
||||||
|
|||||||
@@ -18,8 +18,6 @@ import ChatOpenButton from "../chat-open-button/chat-open-button.component";
|
|||||||
import OwnerNameDisplay from "../owner-name-display/owner-name-display.component";
|
import OwnerNameDisplay from "../owner-name-display/owner-name-display.component";
|
||||||
import { setJoyRideSteps } from "../../redux/application/application.actions";
|
import { setJoyRideSteps } from "../../redux/application/application.actions";
|
||||||
import { OwnerNameDisplayFunction } from "./../owner-name-display/owner-name-display.component";
|
import { OwnerNameDisplayFunction } from "./../owner-name-display/owner-name-display.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop
|
bodyshop: selectBodyshop
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -30,227 +30,219 @@ export function ShopInfoRbacComponent({ form, bodyshop }) {
|
|||||||
return (
|
return (
|
||||||
<RbacWrapper action="shop:rbac">
|
<RbacWrapper action="shop:rbac">
|
||||||
<LayoutFormRow>
|
<LayoutFormRow>
|
||||||
{HasFeatureAccess({ featureName: "export", bodyshop }) && (
|
{...HasFeatureAccess({ featureName: "export", bodyshop }) ? [
|
||||||
<>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.accounting.exportlog")}
|
||||||
label={t("bodyshop.fields.rbac.accounting.exportlog")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "accounting:exportlog"]}
|
||||||
name={["md_rbac", "accounting:exportlog"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.accounting.payables")}
|
||||||
label={t("bodyshop.fields.rbac.accounting.payables")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "accounting:payables"]}
|
||||||
name={["md_rbac", "accounting:payables"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.accounting.payments")}
|
||||||
label={t("bodyshop.fields.rbac.accounting.payments")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "accounting:payments"]}
|
||||||
name={["md_rbac", "accounting:payments"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.accounting.receivables")}
|
||||||
label={t("bodyshop.fields.rbac.accounting.receivables")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "accounting:receivables"]}
|
||||||
name={["md_rbac", "accounting:receivables"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>
|
||||||
</Form.Item>
|
]:[]}
|
||||||
</>
|
{...HasFeatureAccess({ featureName: "bills", bodyshop }) ? [
|
||||||
)}
|
<Form.Item
|
||||||
{HasFeatureAccess({ featureName: "bills", bodyshop }) && (
|
label={t("bodyshop.fields.rbac.bills.delete")}
|
||||||
<>
|
rules={[
|
||||||
<Form.Item
|
{
|
||||||
label={t("bodyshop.fields.rbac.bills.delete")}
|
required: true
|
||||||
rules={[
|
//message: t("general.validation.required"),
|
||||||
{
|
}
|
||||||
required: true
|
]}
|
||||||
//message: t("general.validation.required"),
|
name={["md_rbac", "bills:delete"]}
|
||||||
}
|
>
|
||||||
]}
|
<InputNumber />
|
||||||
name={["md_rbac", "bills:delete"]}
|
</Form.Item>,
|
||||||
>
|
<Form.Item
|
||||||
<InputNumber />
|
label={t("bodyshop.fields.rbac.bills.enter")}
|
||||||
</Form.Item>
|
rules={[
|
||||||
<Form.Item
|
{
|
||||||
label={t("bodyshop.fields.rbac.bills.enter")}
|
required: true
|
||||||
rules={[
|
//message: t("general.validation.required"),
|
||||||
{
|
}
|
||||||
required: true
|
]}
|
||||||
//message: t("general.validation.required"),
|
name={["md_rbac", "bills:enter"]}
|
||||||
}
|
>
|
||||||
]}
|
<InputNumber />
|
||||||
name={["md_rbac", "bills:enter"]}
|
</Form.Item>,
|
||||||
>
|
<Form.Item
|
||||||
<InputNumber />
|
label={t("bodyshop.fields.rbac.bills.list")}
|
||||||
</Form.Item>
|
rules={[
|
||||||
<Form.Item
|
{
|
||||||
label={t("bodyshop.fields.rbac.bills.list")}
|
required: true
|
||||||
rules={[
|
//message: t("general.validation.required"),
|
||||||
{
|
}
|
||||||
required: true
|
]}
|
||||||
//message: t("general.validation.required"),
|
name={["md_rbac", "bills:list"]}
|
||||||
}
|
>
|
||||||
]}
|
<InputNumber />
|
||||||
name={["md_rbac", "bills:list"]}
|
</Form.Item>,
|
||||||
>
|
<Form.Item
|
||||||
<InputNumber />
|
label={t("bodyshop.fields.rbac.bills.reexport")}
|
||||||
</Form.Item>
|
rules={[
|
||||||
<Form.Item
|
{
|
||||||
label={t("bodyshop.fields.rbac.bills.reexport")}
|
required: true
|
||||||
rules={[
|
//message: t("general.validation.required"),
|
||||||
{
|
}
|
||||||
required: true
|
]}
|
||||||
//message: t("general.validation.required"),
|
name={["md_rbac", "bills:reexport"]}
|
||||||
}
|
>
|
||||||
]}
|
<InputNumber />
|
||||||
name={["md_rbac", "bills:reexport"]}
|
</Form.Item>,
|
||||||
>
|
<Form.Item
|
||||||
<InputNumber />
|
label={t("bodyshop.fields.rbac.bills.view")}
|
||||||
</Form.Item>
|
rules={[
|
||||||
<Form.Item
|
{
|
||||||
label={t("bodyshop.fields.rbac.bills.view")}
|
required: true
|
||||||
rules={[
|
//message: t("general.validation.required"),
|
||||||
{
|
}
|
||||||
required: true
|
]}
|
||||||
//message: t("general.validation.required"),
|
name={["md_rbac", "bills:view"]}
|
||||||
}
|
>
|
||||||
]}
|
<InputNumber />
|
||||||
name={["md_rbac", "bills:view"]}
|
</Form.Item>
|
||||||
>
|
]:[]}
|
||||||
<InputNumber />
|
|
||||||
</Form.Item>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{HasFeatureAccess({ featureName: "courtesycars", bodyshop }) && (
|
{...HasFeatureAccess({ featureName: "courtesycars", bodyshop }) ? [
|
||||||
<>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.contracts.create")}
|
||||||
label={t("bodyshop.fields.rbac.contracts.create")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "contracts:create"]}
|
||||||
name={["md_rbac", "contracts:create"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.contracts.detail")}
|
||||||
label={t("bodyshop.fields.rbac.contracts.detail")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "contracts:detail"]}
|
||||||
name={["md_rbac", "contracts:detail"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.contracts.list")}
|
||||||
label={t("bodyshop.fields.rbac.contracts.list")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "contracts:list"]}
|
||||||
name={["md_rbac", "contracts:list"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.courtesycar.create")}
|
||||||
label={t("bodyshop.fields.rbac.courtesycar.create")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "courtesycar:create"]}
|
||||||
name={["md_rbac", "courtesycar:create"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.courtesycar.detail")}
|
||||||
label={t("bodyshop.fields.rbac.courtesycar.detail")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "courtesycar:detail"]}
|
||||||
name={["md_rbac", "courtesycar:detail"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.courtesycar.list")}
|
||||||
label={t("bodyshop.fields.rbac.courtesycar.list")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "courtesycar:list"]}
|
||||||
name={["md_rbac", "courtesycar:list"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>
|
||||||
</Form.Item>
|
]:[]}
|
||||||
</>
|
{...HasFeatureAccess({ featureName: "csi", bodyshop }) ? [
|
||||||
)}
|
<Form.Item
|
||||||
{HasFeatureAccess({ featureName: "csi", bodyshop }) && (
|
label={t("bodyshop.fields.rbac.csi.export")}
|
||||||
<>
|
rules={[
|
||||||
<Form.Item
|
{
|
||||||
label={t("bodyshop.fields.rbac.csi.export")}
|
required: true
|
||||||
rules={[
|
//message: t("general.validation.required"),
|
||||||
{
|
}
|
||||||
required: true
|
]}
|
||||||
//message: t("general.validation.required"),
|
name={["md_rbac", "csi:export"]}
|
||||||
}
|
>
|
||||||
]}
|
<InputNumber />
|
||||||
name={["md_rbac", "csi:export"]}
|
</Form.Item>,
|
||||||
>
|
<Form.Item
|
||||||
<InputNumber />
|
label={t("bodyshop.fields.rbac.csi.page")}
|
||||||
</Form.Item>
|
rules={[
|
||||||
<Form.Item
|
{
|
||||||
label={t("bodyshop.fields.rbac.csi.page")}
|
required: true
|
||||||
rules={[
|
//message: t("general.validation.required"),
|
||||||
{
|
}
|
||||||
required: true
|
]}
|
||||||
//message: t("general.validation.required"),
|
name={["md_rbac", "csi:page"]}
|
||||||
}
|
>
|
||||||
]}
|
<InputNumber />
|
||||||
name={["md_rbac", "csi:page"]}
|
</Form.Item>
|
||||||
>
|
]:[]}
|
||||||
<InputNumber />
|
|
||||||
</Form.Item>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("bodyshop.fields.rbac.employees.page")}
|
label={t("bodyshop.fields.rbac.employees.page")}
|
||||||
rules={[
|
rules={[
|
||||||
@@ -569,130 +561,128 @@ export function ShopInfoRbacComponent({ form, bodyshop }) {
|
|||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
)}
|
)}
|
||||||
{HasFeatureAccess({ featureName: "timetickets", bodyshop }) && (
|
{...HasFeatureAccess({ featureName: "timetickets", bodyshop }) ? [
|
||||||
<>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.shiftclock.view")}
|
||||||
label={t("bodyshop.fields.rbac.shiftclock.view")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "shiftclock:view"]}
|
||||||
name={["md_rbac", "shiftclock:view"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.shop.config")}
|
||||||
label={t("bodyshop.fields.rbac.shop.config")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "shop:config"]}
|
||||||
name={["md_rbac", "shop:config"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.timetickets.edit")}
|
||||||
label={t("bodyshop.fields.rbac.timetickets.edit")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "timetickets:edit"]}
|
||||||
name={["md_rbac", "timetickets:edit"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.timetickets.shiftedit")}
|
||||||
label={t("bodyshop.fields.rbac.timetickets.shiftedit")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "timetickets:shiftedit"]}
|
||||||
name={["md_rbac", "timetickets:shiftedit"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.timetickets.editcommitted")}
|
||||||
label={t("bodyshop.fields.rbac.timetickets.editcommitted")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "timetickets:editcommitted"]}
|
||||||
name={["md_rbac", "timetickets:editcommitted"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.ttapprovals.view")}
|
||||||
label={t("bodyshop.fields.rbac.ttapprovals.view")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "ttapprovals:view"]}
|
||||||
name={["md_rbac", "ttapprovals:view"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.ttapprovals.approve")}
|
||||||
label={t("bodyshop.fields.rbac.ttapprovals.approve")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "ttapprovals:approve"]}
|
||||||
name={["md_rbac", "ttapprovals:approve"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.timetickets.enter")}
|
||||||
label={t("bodyshop.fields.rbac.timetickets.enter")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "timetickets:enter"]}
|
||||||
name={["md_rbac", "timetickets:enter"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.timetickets.list")}
|
||||||
label={t("bodyshop.fields.rbac.timetickets.list")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "timetickets:list"]}
|
||||||
name={["md_rbac", "timetickets:list"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.timetickets.shiftedit")}
|
||||||
label={t("bodyshop.fields.rbac.timetickets.shiftedit")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "timetickets:shiftedit"]}
|
||||||
name={["md_rbac", "timetickets:shiftedit"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>
|
||||||
</Form.Item>
|
]:[]}
|
||||||
</>
|
|
||||||
)}
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("bodyshop.fields.rbac.shop.vendors")}
|
label={t("bodyshop.fields.rbac.shop.vendors")}
|
||||||
rules={[
|
rules={[
|
||||||
|
|||||||
@@ -312,7 +312,14 @@ export function* SetAuthLevelFromShopDetails({ payload }) {
|
|||||||
|
|
||||||
const user = yield select((state) => state.user.currentUser);
|
const user = yield select((state) => state.user.currentUser);
|
||||||
if (payload.features.singleDeviceOnly) {
|
if (payload.features.singleDeviceOnly) {
|
||||||
if (!(user.email.includes("@imex.") || user.email.includes("@rome.") || user.email.includes("@promanager.")))
|
if (
|
||||||
|
!(
|
||||||
|
user.email.includes("@imex.") ||
|
||||||
|
user.email.includes("@rome.") ||
|
||||||
|
user.email.includes("@rometech.") ||
|
||||||
|
user.email.includes("@promanager.")
|
||||||
|
)
|
||||||
|
)
|
||||||
yield put(setInstanceId(user.uid));
|
yield put(setInstanceId(user.uid));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -324,11 +331,17 @@ export function* SetAuthLevelFromShopDetails({ payload }) {
|
|||||||
rome: () => {
|
rome: () => {
|
||||||
if (
|
if (
|
||||||
payload.imexshopid.toLowerCase().startsWith("pm_") &&
|
payload.imexshopid.toLowerCase().startsWith("pm_") &&
|
||||||
!(user.email.includes("@imex.") || user.email.includes("@rome.") || user.email.includes("@promanager."))
|
!(
|
||||||
|
user.email.includes("@imex.") ||
|
||||||
|
user.email.includes("@rome.") ||
|
||||||
|
user.email.includes("@rometech.") ||
|
||||||
|
user.email.includes("@promanager.")
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
throw new Error("You are not authorized to use this application.");
|
throw new Error("You are not authorized to use this application.");
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
promanager: () => {}
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
yield put(setInstanceConflict());
|
yield put(setInstanceConflict());
|
||||||
|
|||||||
@@ -718,6 +718,7 @@ function CalculateTaxesTotals(job, otherTotals) {
|
|||||||
|
|
||||||
const taxableAmounts = {
|
const taxableAmounts = {
|
||||||
PAA: Dinero(),
|
PAA: Dinero(),
|
||||||
|
PAE: Dinero(),
|
||||||
PAN: Dinero(),
|
PAN: Dinero(),
|
||||||
PAL: Dinero(),
|
PAL: Dinero(),
|
||||||
PAR: Dinero(),
|
PAR: Dinero(),
|
||||||
|
|||||||
Reference in New Issue
Block a user