feature/IO-3497-Ant-Design-v5-to-v6 - Signed off Files
This commit is contained in:
153
client/package-lock.json
generated
153
client/package-lock.json
generated
@@ -11,7 +11,7 @@
|
||||
"dependencies": {
|
||||
"@amplitude/analytics-browser": "^2.33.1",
|
||||
"@ant-design/pro-layout": "^7.22.6",
|
||||
"@apollo/client": "^3.13.9",
|
||||
"@apollo/client": "^4.0.12",
|
||||
"@emotion/is-prop-valid": "^1.4.0",
|
||||
"@fingerprintjs/fingerprintjs": "^4.6.1",
|
||||
"@firebase/analytics": "^0.10.19",
|
||||
@@ -27,7 +27,7 @@
|
||||
"@splitsoftware/splitio-react": "^2.6.1",
|
||||
"@tanem/react-nprogress": "^5.0.56",
|
||||
"antd": "^6.1.4",
|
||||
"apollo-link-logger": "^2.0.1",
|
||||
"apollo-link-logger": "^3.0.0",
|
||||
"apollo-link-sentry": "^4.4.0",
|
||||
"autosize": "^6.0.1",
|
||||
"axios": "^1.13.2",
|
||||
@@ -51,7 +51,7 @@
|
||||
"normalize-url": "^8.1.1",
|
||||
"object-hash": "^3.0.0",
|
||||
"phone": "^3.1.69",
|
||||
"posthog-js": "^1.316.1",
|
||||
"posthog-js": "^1.318.2",
|
||||
"prop-types": "^15.8.1",
|
||||
"query-string": "^9.3.1",
|
||||
"raf-schd": "^4.0.3",
|
||||
@@ -84,7 +84,7 @@
|
||||
"reselect": "^5.1.1",
|
||||
"sass": "^1.97.2",
|
||||
"socket.io-client": "^4.8.3",
|
||||
"styled-components": "^6.2.0",
|
||||
"styled-components": "^6.3.5",
|
||||
"subscriptions-transport-ws": "^0.11.0",
|
||||
"use-memo-one": "^1.1.3",
|
||||
"vite-plugin-ejs": "^1.7.0",
|
||||
@@ -553,30 +553,30 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@apollo/client": {
|
||||
"version": "3.14.0",
|
||||
"resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.14.0.tgz",
|
||||
"integrity": "sha512-0YQKKRIxiMlIou+SekQqdCo0ZTHxOcES+K8vKB53cIDpwABNR0P0yRzPgsbgcj3zRJniD93S/ontsnZsCLZrxQ==",
|
||||
"version": "4.0.12",
|
||||
"resolved": "https://registry.npmjs.org/@apollo/client/-/client-4.0.12.tgz",
|
||||
"integrity": "sha512-CyDR+2A18TFH08rKvH3DaV63eRE0E4pj34gT8UZIQVP64bRRXnQiYuKTf/c6oJNY8+4FrCrcPwWEldnVbh02bA==",
|
||||
"license": "MIT",
|
||||
"workspaces": [
|
||||
"dist",
|
||||
"codegen",
|
||||
"scripts/codemods/ac3-to-ac4"
|
||||
],
|
||||
"dependencies": {
|
||||
"@graphql-typed-document-node/core": "^3.1.1",
|
||||
"@wry/caches": "^1.0.0",
|
||||
"@wry/equality": "^0.5.6",
|
||||
"@wry/trie": "^0.5.0",
|
||||
"graphql-tag": "^2.12.6",
|
||||
"hoist-non-react-statics": "^3.3.2",
|
||||
"optimism": "^0.18.0",
|
||||
"prop-types": "^15.7.2",
|
||||
"rehackt": "^0.1.0",
|
||||
"symbol-observable": "^4.0.0",
|
||||
"ts-invariant": "^0.10.3",
|
||||
"tslib": "^2.3.0",
|
||||
"zen-observable-ts": "^1.2.5"
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"graphql": "^15.0.0 || ^16.0.0",
|
||||
"graphql": "^16.0.0",
|
||||
"graphql-ws": "^5.5.5 || ^6.0.3",
|
||||
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc",
|
||||
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc",
|
||||
"react": "^17.0.0 || ^18.0.0 || >=19.0.0-rc",
|
||||
"react-dom": "^17.0.0 || ^18.0.0 || >=19.0.0-rc",
|
||||
"rxjs": "^7.3.0",
|
||||
"subscriptions-transport-ws": "^0.9.0 || ^0.11.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
@@ -4225,9 +4225,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@posthog/types": {
|
||||
"version": "1.316.1",
|
||||
"resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.316.1.tgz",
|
||||
"integrity": "sha512-rh8GSOnmnwd0fUIBYzQcXt4WYXMg9QPkY0tE46K0eneWYVyqNYXFXzcdf2U37g+ZYNiBq9ubLeCD7h0C0MDJgw==",
|
||||
"version": "1.318.2",
|
||||
"resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.318.2.tgz",
|
||||
"integrity": "sha512-/4m1DStpyaZStTJJ4b7RyftnFoSM/IWmVBTiWvdm2e2I8A8W3D4+YY7YkTpPtTinRZEhDQEZFjhlHdDgNCiNuA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@protobufjs/aspromise": {
|
||||
@@ -6805,7 +6805,7 @@
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
|
||||
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
|
||||
"dev": true,
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/unist": {
|
||||
@@ -7266,16 +7266,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/apollo-link-logger": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/apollo-link-logger/-/apollo-link-logger-2.0.1.tgz",
|
||||
"integrity": "sha512-4KkdwCqWtlOc0vx0W/5o+UfotyZtcJZicraKNyo2KTaCmAGSJ8vDnNRyDlv6o5XtSgdv4NA36cSe6dt49OkGWA==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-link-logger/-/apollo-link-logger-3.0.0.tgz",
|
||||
"integrity": "sha512-7j557AndpQXqmOg6MLERh9eCGrKdQSoIzHPSU+9Umw8EnkwU+CphCXb4p22Zx6yRnYxVV7fOrqbB+4lsfloATQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 10",
|
||||
"npm": "> 3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@apollo/client": "^3.0.0"
|
||||
"@apollo/client": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/apollo-link-sentry": {
|
||||
@@ -9156,6 +9156,15 @@
|
||||
"url": "https://bevry.me/fund"
|
||||
}
|
||||
},
|
||||
"node_modules/dompurify": {
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz",
|
||||
"integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==",
|
||||
"license": "(MPL-2.0 OR Apache-2.0)",
|
||||
"optionalDependencies": {
|
||||
"@types/trusted-types": "^2.0.7"
|
||||
}
|
||||
},
|
||||
"node_modules/dot-case": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
|
||||
@@ -14189,16 +14198,18 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/posthog-js": {
|
||||
"version": "1.316.1",
|
||||
"resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.316.1.tgz",
|
||||
"integrity": "sha512-4B0PHnMZwjV9aoQRQ5OqrPa40aCVlqRx1aZMCZCbZ4Z7c91bpOJDpENGGyxFvjUoNN+f8MP8LHZBdn5DPQyWTg==",
|
||||
"version": "1.318.2",
|
||||
"resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.318.2.tgz",
|
||||
"integrity": "sha512-M5C/3HYlyNaqmCIwgGkmJLcGt5MREwsllwGLAOO3nMYhrWSjEuJnEzenplHxa/4UgwvhR4121ErzRHgK67qq1A==",
|
||||
"license": "SEE LICENSE IN LICENSE",
|
||||
"dependencies": {
|
||||
"@posthog/core": "1.9.1",
|
||||
"@posthog/types": "1.316.1",
|
||||
"@posthog/types": "1.318.2",
|
||||
"core-js": "^3.38.1",
|
||||
"dompurify": "^3.3.1",
|
||||
"fflate": "^0.4.8",
|
||||
"preact": "^10.19.3",
|
||||
"query-selector-shadow-dom": "^1.0.1",
|
||||
"web-vitals": "^4.2.4"
|
||||
}
|
||||
},
|
||||
@@ -14411,6 +14422,12 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/query-selector-shadow-dom": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz",
|
||||
"integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/query-string": {
|
||||
"version": "9.3.1",
|
||||
"resolved": "https://registry.npmjs.org/query-string/-/query-string-9.3.1.tgz",
|
||||
@@ -15249,24 +15266,6 @@
|
||||
"regjsparser": "bin/parser"
|
||||
}
|
||||
},
|
||||
"node_modules/rehackt": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz",
|
||||
"integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"@types/react": "*",
|
||||
"react": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/react": {
|
||||
"optional": true
|
||||
},
|
||||
"react": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/remark-parse": {
|
||||
"version": "11.0.0",
|
||||
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
|
||||
@@ -16543,20 +16542,20 @@
|
||||
}
|
||||
},
|
||||
"node_modules/styled-components": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.2.0.tgz",
|
||||
"integrity": "sha512-ryFCkETE++8jlrBmC+BoGPUN96ld1/Yp0s7t5bcXDobrs4XoXroY1tN+JbFi09hV6a5h3MzbcVi8/BGDP0eCgQ==",
|
||||
"version": "6.3.5",
|
||||
"resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.3.5.tgz",
|
||||
"integrity": "sha512-f8jAunVw/r41o17+JlWVlMTsyBKyghCdQ84YCKPxgKSMOZJbK3CKPxeIhotz6hlXvHb0w62zG4yyOdGY0kaB3g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@emotion/is-prop-valid": "1.2.2",
|
||||
"@emotion/unitless": "0.8.1",
|
||||
"@emotion/is-prop-valid": "1.4.0",
|
||||
"@emotion/unitless": "0.10.0",
|
||||
"@types/stylis": "4.2.7",
|
||||
"css-to-react-native": "3.2.0",
|
||||
"csstype": "3.2.3",
|
||||
"postcss": "8.4.49",
|
||||
"shallowequal": "1.1.0",
|
||||
"stylis": "4.3.6",
|
||||
"tslib": "2.6.2"
|
||||
"tslib": "2.8.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 16"
|
||||
@@ -16570,33 +16569,12 @@
|
||||
"react-dom": ">= 16.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/styled-components/node_modules/@emotion/is-prop-valid": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz",
|
||||
"integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@emotion/memoize": "^0.8.1"
|
||||
}
|
||||
},
|
||||
"node_modules/styled-components/node_modules/@emotion/memoize": {
|
||||
"version": "0.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
|
||||
"integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/styled-components/node_modules/@emotion/unitless": {
|
||||
"version": "0.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
|
||||
"integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==",
|
||||
"version": "0.10.0",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
|
||||
"integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/styled-components/node_modules/tslib": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
|
||||
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
|
||||
"license": "0BSD"
|
||||
},
|
||||
"node_modules/stylis": {
|
||||
"version": "4.3.6",
|
||||
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz",
|
||||
@@ -16695,15 +16673,6 @@
|
||||
"react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/symbol-observable": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz",
|
||||
"integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/symbol-tree": {
|
||||
"version": "3.2.4",
|
||||
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
|
||||
@@ -17038,18 +17007,6 @@
|
||||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/ts-invariant": {
|
||||
"version": "0.10.3",
|
||||
"resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz",
|
||||
"integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/tslib": {
|
||||
"version": "2.8.1",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
"dependencies": {
|
||||
"@amplitude/analytics-browser": "^2.33.1",
|
||||
"@ant-design/pro-layout": "^7.22.6",
|
||||
"@apollo/client": "^3.13.9",
|
||||
"@apollo/client": "^4.0.12",
|
||||
"@emotion/is-prop-valid": "^1.4.0",
|
||||
"@fingerprintjs/fingerprintjs": "^4.6.1",
|
||||
"@firebase/analytics": "^0.10.19",
|
||||
@@ -26,7 +26,7 @@
|
||||
"@splitsoftware/splitio-react": "^2.6.1",
|
||||
"@tanem/react-nprogress": "^5.0.56",
|
||||
"antd": "^6.1.4",
|
||||
"apollo-link-logger": "^2.0.1",
|
||||
"apollo-link-logger": "^3.0.0",
|
||||
"apollo-link-sentry": "^4.4.0",
|
||||
"autosize": "^6.0.1",
|
||||
"axios": "^1.13.2",
|
||||
@@ -50,7 +50,7 @@
|
||||
"normalize-url": "^8.1.1",
|
||||
"object-hash": "^3.0.0",
|
||||
"phone": "^3.1.69",
|
||||
"posthog-js": "^1.316.1",
|
||||
"posthog-js": "^1.318.2",
|
||||
"prop-types": "^15.8.1",
|
||||
"query-string": "^9.3.1",
|
||||
"raf-schd": "^4.0.3",
|
||||
@@ -83,7 +83,7 @@
|
||||
"reselect": "^5.1.1",
|
||||
"sass": "^1.97.2",
|
||||
"socket.io-client": "^4.8.3",
|
||||
"styled-components": "^6.2.0",
|
||||
"styled-components": "^6.3.5",
|
||||
"subscriptions-transport-ws": "^0.11.0",
|
||||
"use-memo-one": "^1.1.3",
|
||||
"vite-plugin-ejs": "^1.7.0",
|
||||
|
||||
@@ -176,7 +176,7 @@ export function AccountingPayablesTableComponent({ bodyshop, loading, bills, ref
|
||||
<Table
|
||||
loading={loading}
|
||||
dataSource={dataSource}
|
||||
pagination={{ position: "top", pageSize: exportPageLimit }}
|
||||
pagination={{ placement: "top", pageSize: exportPageLimit }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
onChange={handleTableChange}
|
||||
|
||||
@@ -189,7 +189,7 @@ export function AccountingPayablesTableComponent({ bodyshop, loading, payments,
|
||||
<Table
|
||||
loading={loading}
|
||||
dataSource={dataSource}
|
||||
pagination={{ position: "top", pageSize: exportPageLimit }}
|
||||
pagination={{ placement: "top", pageSize: exportPageLimit }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
onChange={handleTableChange}
|
||||
|
||||
@@ -211,7 +211,7 @@ export function AccountingReceivablesTableComponent({ bodyshop, loading, jobs, r
|
||||
<Table
|
||||
loading={loading}
|
||||
dataSource={dataSource}
|
||||
pagination={{ position: "top", pageSize: exportPageLimit }}
|
||||
pagination={{ placement: "top", pageSize: exportPageLimit }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
onChange={handleTableChange}
|
||||
|
||||
@@ -65,7 +65,7 @@ export default function AuditTrailListComponent({ loading, data }) {
|
||||
<Table
|
||||
{...formItemLayout}
|
||||
loading={loading}
|
||||
pagination={{ position: "top", defaultPageSize: pageLimit }}
|
||||
pagination={{ placement: "top", defaultPageSize: pageLimit }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={data}
|
||||
|
||||
@@ -50,7 +50,7 @@ export default function EmailAuditTrailListComponent({ loading, data }) {
|
||||
<Table
|
||||
{...formItemLayout}
|
||||
loading={loading}
|
||||
pagination={{ position: "top", defaultPageSize: pageLimit }}
|
||||
pagination={{ placement: "top", defaultPageSize: pageLimit }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={data}
|
||||
|
||||
@@ -189,7 +189,7 @@ export function BillDetailEditcontainer({ insertAuditTrail, bodyshop }) {
|
||||
/>
|
||||
<Form form={form} onFinish={handleFinish} initialValues={transformData(data)} layout="vertical">
|
||||
<BillFormContainer form={form} billEdit disabled={exported} disableInHouse={isinhouse} />
|
||||
<Divider orientation="left">{t("general.labels.media")}</Divider>
|
||||
<Divider titlePlacement="left">{t("general.labels.media")}</Divider>
|
||||
{bodyshop.uselocalmediaserver ? (
|
||||
<JobsDocumentsLocalGallery
|
||||
job={{ id: data ? data.bills_by_pk.jobid : null }}
|
||||
|
||||
@@ -429,7 +429,7 @@ export function BillFormComponent({
|
||||
}}
|
||||
</Form.Item>
|
||||
</LayoutFormRow>
|
||||
<Divider orientation="left">{t("bills.labels.bill_lines")}</Divider>
|
||||
<Divider titlePlacement="left">{t("bills.labels.bill_lines")}</Divider>
|
||||
|
||||
{Extended_Bill_Posting.treatment === "on" ? (
|
||||
<BillFormLinesExtended
|
||||
@@ -449,7 +449,7 @@ export function BillFormComponent({
|
||||
billEdit={billEdit}
|
||||
/>
|
||||
)}
|
||||
<Divider orientation="left" style={{ display: billEdit ? "none" : null }}>
|
||||
<Divider titlePlacement="left" style={{ display: billEdit ? "none" : null }}>
|
||||
{t("documents.labels.upload")}
|
||||
</Divider>
|
||||
<Form.Item
|
||||
|
||||
@@ -89,7 +89,7 @@ export default function BillsVendorsList() {
|
||||
);
|
||||
}}
|
||||
dataSource={dataSource}
|
||||
pagination={{ position: "top" }}
|
||||
pagination={{ placement: "top" }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
onChange={handleTableChange}
|
||||
|
||||
@@ -104,7 +104,7 @@ export default function ContractsCarsComponent({ loading, data, selectedCarId, h
|
||||
>
|
||||
<Table
|
||||
loading={loading}
|
||||
pagination={{ position: "top" }}
|
||||
pagination={{ placement: "top" }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={filteredData}
|
||||
|
||||
@@ -128,11 +128,7 @@ export default function ContractsJobsComponent({ loading, data, selectedJob, han
|
||||
>
|
||||
<Table
|
||||
loading={loading}
|
||||
pagination={{
|
||||
position: "top",
|
||||
defaultPageSize: pageLimit,
|
||||
defaultCurrent: defaultCurrent
|
||||
}}
|
||||
pagination={{ placement: "top", defaultPageSize: pageLimit, defaultCurrent: defaultCurrent }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={filteredData}
|
||||
|
||||
@@ -172,12 +172,7 @@ export function ContractsList({ bodyshop, loading, contracts, refetch, total, se
|
||||
scroll={{
|
||||
x: "50%" //y: "40rem"
|
||||
}}
|
||||
pagination={{
|
||||
position: "top",
|
||||
pageSize: pageLimit,
|
||||
current: parseInt(page || 1, 10),
|
||||
total: total
|
||||
}}
|
||||
pagination={{ placement: "top", pageSize: pageLimit, current: parseInt(page || 1, 10), total: total }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={contracts}
|
||||
|
||||
@@ -75,12 +75,7 @@ export default function CourtesyCarContractListComponent({ contracts, totalContr
|
||||
<Card title={t("menus.header.courtesycars-contracts")}>
|
||||
<Table
|
||||
scroll={{ x: true }}
|
||||
pagination={{
|
||||
position: "top",
|
||||
pageSize: pageLimit,
|
||||
current: parseInt(page || 1),
|
||||
total: totalContracts
|
||||
}}
|
||||
pagination={{ placement: "top", pageSize: pageLimit, current: parseInt(page || 1), total: totalContracts }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={contracts}
|
||||
|
||||
@@ -278,7 +278,7 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) {
|
||||
>
|
||||
<Table
|
||||
loading={loading}
|
||||
pagination={{ position: "top" }}
|
||||
pagination={{ placement: "top" }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={tableData}
|
||||
|
||||
@@ -94,12 +94,7 @@ export default function CsiResponseListPaginated({ refetch, loading, responses,
|
||||
>
|
||||
<Table
|
||||
loading={loading}
|
||||
pagination={{
|
||||
position: "top",
|
||||
pageSize: pageLimit,
|
||||
current: parseInt(state.page || 1),
|
||||
total: total
|
||||
}}
|
||||
pagination={{ placement: "top", pageSize: pageLimit, current: parseInt(state.page || 1), total: total }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={responses}
|
||||
|
||||
@@ -105,7 +105,7 @@ export default function DashboardMonthlyJobCosting({ data, ...cardProps }) {
|
||||
<div style={{ height: "100%" }}>
|
||||
<Table
|
||||
onChange={handleTableChange}
|
||||
pagination={{ position: "top", defaultPageSize: pageLimit }}
|
||||
pagination={{ placement: "top", defaultPageSize: pageLimit }}
|
||||
columns={columns}
|
||||
scroll={{ x: true, y: "calc(100% - 4em)" }}
|
||||
rowKey="id"
|
||||
|
||||
@@ -2,14 +2,14 @@ import Icon, { SyncOutlined } from "@ant-design/icons";
|
||||
import { useMutation, useQuery } from "@apollo/client";
|
||||
import { Button, Dropdown, Space } from "antd";
|
||||
import { PageHeader } from "@ant-design/pro-layout";
|
||||
import { useMemo, useState, useEffect } from "react";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
import { Responsive, WidthProvider } from "react-grid-layout";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { MdClose } from "react-icons/md";
|
||||
import { connect } from "react-redux";
|
||||
import { createStructuredSelector } from "reselect";
|
||||
import { logImEXEvent } from "../../firebase/firebase.utils";
|
||||
import { UPDATE_DASHBOARD_LAYOUT, QUERY_USER_DASHBOARD_LAYOUT } from "../../graphql/user.queries";
|
||||
import { QUERY_USER_DASHBOARD_LAYOUT, UPDATE_DASHBOARD_LAYOUT } from "../../graphql/user.queries";
|
||||
import { QUERY_DASHBOARD_BODYSHOP } from "../../graphql/bodyshop.queries";
|
||||
import { selectCurrentUser } from "../../redux/user/user.selectors";
|
||||
import AlertComponent from "../alert/alert.component";
|
||||
|
||||
@@ -112,7 +112,7 @@ export function DmsAllocationsSummaryAp({ socket, bodyshop, billids, title }) {
|
||||
}
|
||||
>
|
||||
<Table
|
||||
pagination={{ position: "top", defaultPageSize: pageLimit }}
|
||||
pagination={{ placement: "top", defaultPageSize: pageLimit }}
|
||||
columns={columns}
|
||||
rowKey={(record) => `${record.InvoiceNumber}${record.Account}`}
|
||||
dataSource={allocationsSummary}
|
||||
|
||||
@@ -116,7 +116,7 @@ export function DmsAllocationsSummary({ mode, socket, bodyshop, jobId, title, on
|
||||
)}
|
||||
|
||||
<Table
|
||||
pagination={{ position: "top", defaultPageSize: pageLimit }}
|
||||
pagination={{ placement: "top", defaultPageSize: pageLimit }}
|
||||
columns={columns}
|
||||
rowKey="center"
|
||||
dataSource={allocationsSummary}
|
||||
|
||||
@@ -84,7 +84,7 @@ export default function CDKCustomerSelector({ bodyshop, socket }) {
|
||||
<Button onClick={onCreateNew}>{t("jobs.actions.dms.createnewcustomer")}</Button>
|
||||
</div>
|
||||
)}
|
||||
pagination={{ position: "top" }}
|
||||
pagination={{ placement: "top" }}
|
||||
columns={columns}
|
||||
rowKey={rowKey}
|
||||
dataSource={customerList}
|
||||
|
||||
@@ -90,7 +90,7 @@ export default function FortellisCustomerSelector({ bodyshop, jobid, socket }) {
|
||||
<Button onClick={onCreateNew}>{t("jobs.actions.dms.createnewcustomer")}</Button>
|
||||
</div>
|
||||
)}
|
||||
pagination={{ position: "top" }}
|
||||
pagination={{ placement: "top" }}
|
||||
columns={columns}
|
||||
rowKey={(r) => r.customerId}
|
||||
dataSource={customerList}
|
||||
|
||||
@@ -78,7 +78,7 @@ export default function PBSCustomerSelector({ bodyshop, socket }) {
|
||||
<Button onClick={onCreateNew}>{t("jobs.actions.dms.createnewcustomer")}</Button>
|
||||
</div>
|
||||
)}
|
||||
pagination={{ position: "top" }}
|
||||
pagination={{ placement: "top" }}
|
||||
columns={columns}
|
||||
rowKey={(r) => r.ContactId}
|
||||
dataSource={customerList}
|
||||
|
||||
@@ -251,7 +251,7 @@ export default function RRCustomerSelector({
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
pagination={{ position: "top" }}
|
||||
pagination={{ placement: "top" }}
|
||||
columns={columns}
|
||||
rowKey={(r) => r.custNo}
|
||||
dataSource={customerList}
|
||||
|
||||
@@ -74,13 +74,13 @@ export function DmsLogEvents({
|
||||
{/* Row 1: summary + inline "Details" toggle */}
|
||||
<Space wrap align="start">
|
||||
<Tag color={logLevelColor(level)}>{level}</Tag>
|
||||
<Divider type="vertical" />
|
||||
<Divider orientation="vertical" />
|
||||
<span>{dayjs(timestamp).format("MM/DD/YYYY HH:mm:ss")}</span>
|
||||
<Divider type="vertical" />
|
||||
<Divider orientation="vertical" />
|
||||
<span>{message}</span>
|
||||
{hasMeta && (
|
||||
<>
|
||||
<Divider type="vertical" />
|
||||
<Divider orientation="vertical" />
|
||||
<a
|
||||
role="button"
|
||||
aria-expanded={isOpen}
|
||||
|
||||
@@ -131,10 +131,7 @@ const DateTimePicker = ({
|
||||
if (timeValue) {
|
||||
// When time changes, combine it with the existing date
|
||||
const existingDate = dayjs(value);
|
||||
const newDateTime = existingDate
|
||||
.hour(timeValue.hour())
|
||||
.minute(timeValue.minute())
|
||||
.second(0);
|
||||
const newDateTime = existingDate.hour(timeValue.hour()).minute(timeValue.minute()).second(0);
|
||||
handleChange(newDateTime);
|
||||
} else {
|
||||
// If time is cleared, just update with null time but keep date
|
||||
|
||||
@@ -37,7 +37,7 @@ export default function GlobalSearch() {
|
||||
value: job.ro_number || "N/A",
|
||||
label: (
|
||||
<Link to={`/manage/jobs/${job.id}`}>
|
||||
<Space size="small" split={<Divider type="vertical" />}>
|
||||
<Space size="small" split={<Divider orientation="vertical" />}>
|
||||
<strong>{job.ro_number || t("general.labels.na")}</strong>
|
||||
<span>{`${job.status || ""}`}</span>
|
||||
<span>
|
||||
@@ -59,7 +59,7 @@ export default function GlobalSearch() {
|
||||
value: OwnerNameDisplayFunction(owner),
|
||||
label: (
|
||||
<Link to={`/manage/owners/${owner.id}`}>
|
||||
<Space size="small" split={<Divider type="vertical" />} wrap>
|
||||
<Space size="small" split={<Divider orientation="vertical" />} wrap>
|
||||
<span>
|
||||
<OwnerNameDisplay ownerObject={owner} />
|
||||
</span>
|
||||
@@ -79,7 +79,7 @@ export default function GlobalSearch() {
|
||||
value: `${vehicle.v_model_yr || ""} ${vehicle.v_make_desc || ""} ${vehicle.v_model_desc || ""}`,
|
||||
label: (
|
||||
<Link to={`/manage/vehicles/${vehicle.id}`}>
|
||||
<Space size="small" split={<Divider type="vertical" />}>
|
||||
<Space size="small" split={<Divider orientation="vertical" />}>
|
||||
<span>
|
||||
{`${vehicle.v_model_yr || ""} ${vehicle.v_make_desc || ""} ${vehicle.v_model_desc || ""}`}
|
||||
</span>
|
||||
@@ -101,7 +101,7 @@ export default function GlobalSearch() {
|
||||
value: `${payment.job.ro_number} ${payment.payer} ${payment.amount}`,
|
||||
label: (
|
||||
<Link to={`/manage/jobs/${payment.job.id}`}>
|
||||
<Space size="small" split={<Divider type="vertical" />}>
|
||||
<Space size="small" split={<Divider orientation="vertical" />}>
|
||||
<span>{payment.paymentnum}</span>
|
||||
<span>{payment.job.ro_number}</span>
|
||||
<span>{payment.memo || ""}</span>
|
||||
@@ -121,7 +121,7 @@ export default function GlobalSearch() {
|
||||
value: `${bill.invoice_number} - ${bill.vendor.name}`,
|
||||
label: (
|
||||
<Link to={`/manage/bills?billid=${bill.id}`}>
|
||||
<Space size="small" split={<Divider type="vertical" />}>
|
||||
<Space size="small" split={<Divider orientation="vertical" />}>
|
||||
<span>{bill.invoice_number}</span>
|
||||
<span>{bill.vendor.name}</span>
|
||||
<span>{bill.date}</span>
|
||||
@@ -139,7 +139,7 @@ export default function GlobalSearch() {
|
||||
value: `${pb.firstname || ""} ${pb.lastname || ""} ${pb.company || ""}`,
|
||||
label: (
|
||||
<Link to={`/manage/phonebook?phonebookentry=${pb.id}`}>
|
||||
<Space size="small" split={<Divider type="vertical" />}>
|
||||
<Space size="small" split={<Divider orientation="vertical" />}>
|
||||
<span>{`${pb.firstname || ""} ${pb.lastname || ""} ${pb.company || ""}`}</span>
|
||||
<PhoneNumberFormatter>{pb.phone1}</PhoneNumberFormatter>
|
||||
<span>{pb.email}</span>
|
||||
|
||||
@@ -183,12 +183,7 @@ export function JobsList({ refetch, loading, jobs, total, setInventoryUpsertCont
|
||||
>
|
||||
<Table
|
||||
loading={loading}
|
||||
pagination={{
|
||||
position: "top",
|
||||
pageSize: pageLimit,
|
||||
current: parseInt(page || 1),
|
||||
total: total
|
||||
}}
|
||||
pagination={{ placement: "top", pageSize: pageLimit, current: parseInt(page || 1), total: total }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={jobs}
|
||||
|
||||
@@ -55,8 +55,9 @@ export function JobBillsTotalComponent({
|
||||
);
|
||||
|
||||
if (pol.cm_received === null) {
|
||||
return; //TODO:AIO This was previously removed. Check if functionality impacted.
|
||||
//TODO:AIO This was previously removed. Check if functionality impacted.
|
||||
// Skip this calculation for bills posted prior to the CNR change.
|
||||
return;
|
||||
} else {
|
||||
if (pol.cm_received === false) {
|
||||
totalReturnsMarkedNotReceived = totalReturnsMarkedNotReceived.add(
|
||||
@@ -174,8 +175,10 @@ export function JobBillsTotalComponent({
|
||||
<BlurWrapperComponent featureName="bills" overrideValueFunction="RandomDinero">
|
||||
<Statistic
|
||||
title={t("bills.labels.discrepancy")}
|
||||
valueStyle={{
|
||||
color: discrepancy.getAmount() === 0 ? "green" : "red"
|
||||
styles={{
|
||||
content: {
|
||||
color: discrepancy.getAmount() === 0 ? "green" : "red"
|
||||
}
|
||||
}}
|
||||
value={discrepancy.toFormat()}
|
||||
/>
|
||||
@@ -208,8 +211,10 @@ export function JobBillsTotalComponent({
|
||||
<BlurWrapperComponent featureName="bills" overrideValueFunction="RandomDinero">
|
||||
<Statistic
|
||||
title={t("bills.labels.discrepancy")}
|
||||
valueStyle={{
|
||||
color: discrepWithLbrAdj.getAmount() === 0 ? "green" : "red"
|
||||
styles={{
|
||||
content: {
|
||||
color: discrepWithLbrAdj.getAmount() === 0 ? "green" : "red"
|
||||
}
|
||||
}}
|
||||
value={discrepWithLbrAdj.toFormat()}
|
||||
/>
|
||||
@@ -242,8 +247,10 @@ export function JobBillsTotalComponent({
|
||||
<BlurWrapperComponent featureName="bills" overrideValueFunction="RandomDinero">
|
||||
<Statistic
|
||||
title={t("bills.labels.discrepancy")}
|
||||
valueStyle={{
|
||||
color: discrepWithCms.getAmount() === 0 ? "green" : "red"
|
||||
styles={{
|
||||
content: {
|
||||
color: discrepWithCms.getAmount() === 0 ? "green" : "red"
|
||||
}
|
||||
}}
|
||||
value={discrepWithCms.toFormat()}
|
||||
/>
|
||||
@@ -290,8 +297,10 @@ export function JobBillsTotalComponent({
|
||||
<BlurWrapperComponent featureName="bills" overrideValueFunction="RandomDinero">
|
||||
<Statistic
|
||||
title={t("bills.labels.calculatedcreditsnotreceived")}
|
||||
valueStyle={{
|
||||
color: calculatedCreditsNotReceived.getAmount() <= 0 ? "green" : "red"
|
||||
styles={{
|
||||
content: {
|
||||
color: calculatedCreditsNotReceived.getAmount() <= 0 ? "green" : "red"
|
||||
}
|
||||
}}
|
||||
value={
|
||||
calculatedCreditsNotReceived.getAmount() >= 0
|
||||
@@ -313,8 +322,10 @@ export function JobBillsTotalComponent({
|
||||
<BlurWrapperComponent featureName="bills" overrideValueFunction="RandomDinero">
|
||||
<Statistic
|
||||
title={t("bills.labels.creditsnotreceived")}
|
||||
valueStyle={{
|
||||
color: totalReturnsMarkedNotReceived.getAmount() <= 0 ? "green" : "red"
|
||||
styles={{
|
||||
content: {
|
||||
color: totalReturnsMarkedNotReceived.getAmount() <= 0 ? "green" : "red"
|
||||
}
|
||||
}}
|
||||
value={
|
||||
totalReturnsMarkedNotReceived.getAmount() >= 0
|
||||
|
||||
@@ -84,7 +84,7 @@ export default function JobCostingPartsTable({ data, summaryData }) {
|
||||
x: "50%" //y: "40rem"
|
||||
}}
|
||||
onChange={handleTableChange}
|
||||
pagination={{ position: "top", defaultPageSize: pageLimit }}
|
||||
pagination={{ placement: "top", defaultPageSize: pageLimit }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={filteredData}
|
||||
|
||||
@@ -154,7 +154,7 @@ export function JobDetailCards({ bodyshop, setPrintCenterContext, insertAuditTra
|
||||
}
|
||||
>
|
||||
<JobsDetailHeader job={data ? data.jobs_by_pk : null} />
|
||||
<Divider type="horizontal" />
|
||||
<Divider orientation="horizontal" />
|
||||
<Row gutter={[16, 16]}>
|
||||
<Col {...span}>
|
||||
<JobDetailCardsInsuranceComponent loading={loading} data={data ? data.jobs_by_pk : null} />
|
||||
|
||||
@@ -147,7 +147,7 @@ export function JobsAvailableScan({ partnerVersion, refetch }) {
|
||||
>
|
||||
<Table
|
||||
loading={loading}
|
||||
pagination={{ position: "top" }}
|
||||
pagination={{ placement: "top" }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={data}
|
||||
|
||||
@@ -98,7 +98,7 @@ export default function JobsCreateOwnerInfoSearchComponent({ loading, owners })
|
||||
<Table
|
||||
loading={loading}
|
||||
scroll={{ x: true }}
|
||||
pagination={{ position: "top" }}
|
||||
pagination={{ placement: "top" }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={owners}
|
||||
|
||||
@@ -71,7 +71,7 @@ export default function JobsCreateVehicleInfoSearchComponent({ loading, vehicles
|
||||
<Table
|
||||
loading={loading}
|
||||
scroll={{ x: true }}
|
||||
pagination={{ position: "top" }}
|
||||
pagination={{ placement: "top" }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={vehicles}
|
||||
|
||||
@@ -133,7 +133,7 @@ export function JobsDetailRates({ jobRO, form, job, bodyshop }) {
|
||||
</FormRow>
|
||||
)
|
||||
})}
|
||||
<Divider orientation="left" type="horizontal" style={{ marginTop: ".8rem", float: "right" }}>
|
||||
<Divider titlePlacement="left" orientation="horizontal" style={{ marginTop: ".8rem", float: "right" }}>
|
||||
{t("jobs.forms.laborrates")}
|
||||
</Divider>
|
||||
<Space>
|
||||
@@ -217,7 +217,7 @@ export function JobsDetailRates({ jobRO, form, job, bodyshop }) {
|
||||
imex: <JobsDetailRatesParts form={form} />,
|
||||
rome: (
|
||||
<>
|
||||
<Divider orientation="left">Tax Profile</Divider>
|
||||
<Divider titlePlacement="left">Tax Profile</Divider>
|
||||
<JobsDetailRatesProfileOVerride form={form} />
|
||||
<JobsDetailRatesParts form={form} />
|
||||
<JobsDetailRatesLabor form={form} />
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useEffect, useState, useCallback } from "react";
|
||||
import { useCallback, useEffect, useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import LocalMediaGrid from "../jobs-documents-local-gallery/local-media-grid.component";
|
||||
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useEffect, useMemo, useState, useCallback } from "react";
|
||||
import { useCallback, useEffect, useMemo, useState } from "react";
|
||||
import LocalMediaGrid from "./local-media-grid.component";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { connect } from "react-redux";
|
||||
|
||||
@@ -60,7 +60,7 @@ export function JobsDocumentsLocalGalleryReassign({ bodyshop, jobid, allMedia, g
|
||||
]}
|
||||
name={"jobid"}
|
||||
>
|
||||
<JobSearchSelect notExported={false} notInvoiced={false}/>
|
||||
<JobSearchSelect notExported={false} notInvoiced={false} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
<Space>
|
||||
|
||||
@@ -190,7 +190,7 @@ export default function JobsFindModalComponent({
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
pagination={{ position: "bottom" }}
|
||||
pagination={{ placement: "bottom" }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
loading={jobsListLoading}
|
||||
|
||||
@@ -4,7 +4,7 @@ import "./layout-form-row.styles.scss";
|
||||
export default function LayoutFormRow({ header, children, grow = false, noDivider = false, ...restProps }) {
|
||||
const DividerHeader = () =>
|
||||
!noDivider && (
|
||||
<Divider orientation="left" type="horizontal" style={{ marginTop: ".8rem" }}>
|
||||
<Divider titlePlacement="left" orientation="horizontal" style={{ marginTop: ".8rem" }}>
|
||||
{header}
|
||||
</Divider>
|
||||
);
|
||||
|
||||
@@ -110,7 +110,7 @@ function OwnerDetailJobsComponent({ bodyshop, owner, isPartsEntry }) {
|
||||
}
|
||||
>
|
||||
<Table
|
||||
pagination={{ position: "bottom" }}
|
||||
pagination={{ placement: "bottom" }}
|
||||
columns={columns}
|
||||
scroll={{ x: true }}
|
||||
rowKey="id"
|
||||
|
||||
@@ -76,7 +76,7 @@ export default function OwnerFindModalComponent({
|
||||
return (
|
||||
<div>
|
||||
<Table
|
||||
pagination={{ position: "bottom" }}
|
||||
pagination={{ placement: "bottom" }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
loading={ownersListLoading}
|
||||
|
||||
@@ -116,12 +116,7 @@ export default function OwnersListComponent({ loading, owners, total, refetch })
|
||||
>
|
||||
<Table
|
||||
loading={loading}
|
||||
pagination={{
|
||||
position: "top",
|
||||
pageSize: pageLimit,
|
||||
current: parseInt(page || 1, 10),
|
||||
total: total
|
||||
}}
|
||||
pagination={{ placement: "top", pageSize: pageLimit, current: parseInt(page || 1, 10), total: total }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
scroll={{ x: true }}
|
||||
|
||||
@@ -116,7 +116,7 @@ export function PartsOrderModalComponent({
|
||||
</Radio.Group>
|
||||
</Form.Item>
|
||||
</LayoutFormRow>
|
||||
<Divider orientation="left">{t("parts_orders.labels.inthisorder")}</Divider>
|
||||
<Divider titlePlacement="left">{t("parts_orders.labels.inthisorder")}</Divider>
|
||||
<Form.List name={["parts_order_lines", "data"]}>
|
||||
{(fields, { remove, move }) => {
|
||||
return (
|
||||
|
||||
@@ -58,7 +58,7 @@ export default function PartsQueueDetailCard() {
|
||||
}
|
||||
>
|
||||
<JobsDetailHeader job={data ? data.jobs_by_pk : null} />
|
||||
<Divider type="horizontal" />
|
||||
<Divider orientation="horizontal" />
|
||||
<PartsQueueJobLinesComponent jobLines={data.jobs_by_pk ? data.jobs_by_pk.joblines : null} />
|
||||
</Card>
|
||||
) : null}
|
||||
|
||||
@@ -289,7 +289,7 @@ export function PartsQueueListComponent({ bodyshop }) {
|
||||
<Table
|
||||
loading={loading}
|
||||
pagination={{
|
||||
position: "top",
|
||||
placement: "top",
|
||||
pageSize: pageLimit
|
||||
// current: parseInt(page || 1),
|
||||
// total: data && data.jobs_aggregate.aggregate.count,
|
||||
|
||||
@@ -87,7 +87,7 @@ function ProductionBoardKanbanSettings({ associationSettings, parentLoading, bod
|
||||
};
|
||||
|
||||
const overlay = (
|
||||
<Card style={{ maxWidth: "80vw", width: "100%"}}>
|
||||
<Card style={{ maxWidth: "80vw", width: "100%" }}>
|
||||
<Form form={form} onFinish={handleFinish} layout="vertical" onValuesChange={handleValuesChange}>
|
||||
<Tabs
|
||||
defaultActiveKey="1"
|
||||
|
||||
@@ -127,7 +127,7 @@ export function ProductionListDetail({ bodyshop, jobs, setPrintCenterContext, te
|
||||
/>
|
||||
}
|
||||
placement="right"
|
||||
width={"50%"}
|
||||
width="50%"
|
||||
onClose={handleClose}
|
||||
open={selected}
|
||||
>
|
||||
@@ -199,7 +199,11 @@ export function ProductionListDetail({ bodyshop, jobs, setPrintCenterContext, te
|
||||
{!bodyshop.uselocalmediaserver && (
|
||||
<>
|
||||
<div style={{ height: "8px" }} />
|
||||
<JobDetailCardsDocumentsComponent loading={loading} data={data ? data.jobs_by_pk : null} bodyshop={bodyshop} />
|
||||
<JobDetailCardsDocumentsComponent
|
||||
loading={loading}
|
||||
data={data ? data.jobs_by_pk : null}
|
||||
bodyshop={bodyshop}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -178,7 +178,14 @@ export function ReportCenterModalComponent({ reportCenterModal, bodyshop }) {
|
||||
<BlurWrapperComponent
|
||||
featureName={groupExcludeKeyFilter.find((g) => g.key === key).featureName}
|
||||
>
|
||||
<ul style={{ listStyleType: "none", columns: grouped[key].length > 4 ? "2 auto" : "1", padding: 0, margin: 0 }}>
|
||||
<ul
|
||||
style={{
|
||||
listStyleType: "none",
|
||||
columns: grouped[key].length > 4 ? "2 auto" : "1",
|
||||
padding: 0,
|
||||
margin: 0
|
||||
}}
|
||||
>
|
||||
{grouped[key].map((item) => (
|
||||
<li key={item.key}>
|
||||
<Radio key={item.key} value={item.key}>
|
||||
@@ -189,7 +196,14 @@ export function ReportCenterModalComponent({ reportCenterModal, bodyshop }) {
|
||||
</ul>
|
||||
</BlurWrapperComponent>
|
||||
) : (
|
||||
<ul style={{ listStyleType: "none", columns: grouped[key].length > 4 ? "2 auto" : "1", padding: 0, margin: 0 }}>
|
||||
<ul
|
||||
style={{
|
||||
listStyleType: "none",
|
||||
columns: grouped[key].length > 4 ? "2 auto" : "1",
|
||||
padding: 0,
|
||||
margin: 0
|
||||
}}
|
||||
>
|
||||
{grouped[key].map((item) =>
|
||||
item.featureNameRestricted ? (
|
||||
<li key={item.key}>
|
||||
|
||||
@@ -224,7 +224,7 @@ export function ScheduleJobModalContainer({
|
||||
email: (job && job.ownr_ea) || "",
|
||||
// smartDates: [],
|
||||
start: context.scheduled_in,
|
||||
scheduled_completion: context.scheduled_completion ,
|
||||
scheduled_completion: context.scheduled_completion,
|
||||
color: context.color,
|
||||
alt_transport: context.alt_transport,
|
||||
note: context.note
|
||||
|
||||
@@ -30,12 +30,12 @@ export function ScoreboardDayStats({ bodyshop, date, entries }) {
|
||||
return (
|
||||
<Card title={dayjs(date).format("D - ddd")} className="ant-card-grid-hoverable" style={{ height: "100%" }}>
|
||||
<Statistic
|
||||
valueStyle={{ color: dailyBodyTarget > bodyHrs ? "red" : "green" }}
|
||||
styles={{ content: { color: dailyBodyTarget > bodyHrs ? "red" : "green" } }}
|
||||
label="Body"
|
||||
value={bodyHrs.toFixed(1)}
|
||||
/>
|
||||
<Statistic
|
||||
valueStyle={{ color: dailyPaintTarget > paintHrs ? "red" : "green" }}
|
||||
styles={{ content: { color: dailyPaintTarget > paintHrs ? "red" : "green" } }}
|
||||
label="Refinish"
|
||||
value={paintHrs.toFixed(1)}
|
||||
/>
|
||||
|
||||
@@ -149,7 +149,7 @@ export default function ScoreboardJobsList() {
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
onChange={(tableArgs) => setState((state) => ({ ...state, ...tableArgs }))}
|
||||
pagination={{
|
||||
position: "top",
|
||||
placement: "top",
|
||||
pageSize: state.pageSize || pageLimit,
|
||||
current: state.current || 1,
|
||||
total: data ? data.scoreboard_aggregate.aggregate.count : 0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Card, Col, Form, Row, Space, Statistic, Switch, Typography } from "antd";
|
||||
import { Card, Col, Row, Space, Statistic, Switch, Typography } from "antd";
|
||||
import dayjs from "../../utils/day";
|
||||
import { useEffect, useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
@@ -41,9 +41,10 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Card
|
||||
title={t("scoreboard.labels.productivestatistics")}
|
||||
extra={
|
||||
<Form.Item label={t("general.labels.tvmode")} valuePropName="checked" name={["tvmode"]}>
|
||||
<Space>
|
||||
<Typography.Text>{t("general.labels.tvmode")}</Typography.Text>
|
||||
<Switch onClick={() => setIsLarge(!isLarge)} defaultChecked={isLarge} />
|
||||
</Form.Item>
|
||||
</Space>
|
||||
}
|
||||
>
|
||||
<Row gutter={[16, 16]}>
|
||||
@@ -60,15 +61,17 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Col span={24}>
|
||||
<Statistic
|
||||
value={data.seperatedThisWeek[day].total}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.seperatedThisWeek[day].total) >=
|
||||
bodyshop.scoreboard_target.dailyBodyTarget +
|
||||
bodyshop.scoreboard_target.dailyPaintTarget
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.seperatedThisWeek[day].total) >=
|
||||
bodyshop.scoreboard_target.dailyBodyTarget +
|
||||
bodyshop.scoreboard_target.dailyPaintTarget
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -78,14 +81,16 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.body")}</Typography.Text>}
|
||||
value={data.seperatedThisWeek[day].lab}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.seperatedThisWeek[day].lab) >=
|
||||
bodyshop.scoreboard_target.dailyBodyTarget
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.seperatedThisWeek[day].lab) >=
|
||||
bodyshop.scoreboard_target.dailyBodyTarget
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -93,14 +98,16 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.refinish")}</Typography.Text>}
|
||||
value={data.seperatedThisWeek[day].lar}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.seperatedThisWeek[day].lar) >=
|
||||
bodyshop.scoreboard_target.dailyPaintTarget
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.seperatedThisWeek[day].lar) >=
|
||||
bodyshop.scoreboard_target.dailyPaintTarget
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -122,25 +129,27 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Col span={24}>
|
||||
<Statistic
|
||||
value={data.totalThisWeek}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalThisWeek) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyBodyTarget,
|
||||
dayjs().startOf("week"),
|
||||
dayjs().endOf("week"),
|
||||
bodyshop
|
||||
) +
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalThisWeek) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyPaintTarget,
|
||||
bodyshop.scoreboard_target.dailyBodyTarget,
|
||||
dayjs().startOf("week"),
|
||||
dayjs().endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
) +
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyPaintTarget,
|
||||
dayjs().startOf("week"),
|
||||
dayjs().endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -150,19 +159,21 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.body")}</Typography.Text>}
|
||||
value={data.totalThisWeekLAB}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalThisWeekLAB) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyBodyTarget,
|
||||
dayjs().startOf("week"),
|
||||
dayjs().endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalThisWeekLAB) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyBodyTarget,
|
||||
dayjs().startOf("week"),
|
||||
dayjs().endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -170,19 +181,21 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.refinish")}</Typography.Text>}
|
||||
value={data.totalThisWeekLAR}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalThisWeekLAR) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyPaintTarget,
|
||||
dayjs().startOf("week"),
|
||||
dayjs().endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalThisWeekLAR) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyPaintTarget,
|
||||
dayjs().startOf("week"),
|
||||
dayjs().endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -196,25 +209,27 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Col span={24}>
|
||||
<Statistic
|
||||
value={data.totalLastWeek}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalLastWeek) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyBodyTarget,
|
||||
dayjs().subtract(1, "week").startOf("week"),
|
||||
dayjs().subtract(1, "week").endOf("week"),
|
||||
bodyshop
|
||||
) +
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalLastWeek) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyPaintTarget,
|
||||
bodyshop.scoreboard_target.dailyBodyTarget,
|
||||
dayjs().subtract(1, "week").startOf("week"),
|
||||
dayjs().subtract(1, "week").endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
) +
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyPaintTarget,
|
||||
dayjs().subtract(1, "week").startOf("week"),
|
||||
dayjs().subtract(1, "week").endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -224,19 +239,21 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.body")}</Typography.Text>}
|
||||
value={data.totalLastWeekLAB}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalLastWeekLAB) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyBodyTarget,
|
||||
dayjs().subtract(1, "week").startOf("week"),
|
||||
dayjs().subtract(1, "week").endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalLastWeekLAB) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyBodyTarget,
|
||||
dayjs().subtract(1, "week").startOf("week"),
|
||||
dayjs().subtract(1, "week").endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -244,19 +261,21 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.refinish")}</Typography.Text>}
|
||||
value={data.totalLastWeekLAR}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalLastWeekLAR) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyPaintTarget,
|
||||
dayjs().subtract(1, "week").startOf("week"),
|
||||
dayjs().subtract(1, "week").endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalLastWeekLAR) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyPaintTarget,
|
||||
dayjs().subtract(1, "week").startOf("week"),
|
||||
dayjs().subtract(1, "week").endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -270,25 +289,27 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Col span={24}>
|
||||
<Statistic
|
||||
value={data.totalPriorWeek}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalPriorWeek) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyBodyTarget,
|
||||
dayjs().subtract(2, "week").startOf("week"),
|
||||
dayjs().subtract(2, "week").endOf("week"),
|
||||
bodyshop
|
||||
) +
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalPriorWeek) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyPaintTarget,
|
||||
bodyshop.scoreboard_target.dailyBodyTarget,
|
||||
dayjs().subtract(2, "week").startOf("week"),
|
||||
dayjs().subtract(2, "week").endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
) +
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyPaintTarget,
|
||||
dayjs().subtract(2, "week").startOf("week"),
|
||||
dayjs().subtract(2, "week").endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -298,19 +319,21 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.body")}</Typography.Text>}
|
||||
value={data.totalPriorWeekLAB}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalPriorWeekLAB) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyBodyTarget,
|
||||
dayjs().subtract(2, "week").startOf("week"),
|
||||
dayjs().subtract(2, "week").endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalPriorWeekLAB) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyBodyTarget,
|
||||
dayjs().subtract(2, "week").startOf("week"),
|
||||
dayjs().subtract(2, "week").endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -318,19 +341,21 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.refinish")}</Typography.Text>}
|
||||
value={data.totalPriorWeekLAR}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalPriorWeekLAR) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyPaintTarget,
|
||||
dayjs().subtract(2, "week").startOf("week"),
|
||||
dayjs().subtract(2, "week").endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalPriorWeekLAR) >=
|
||||
Util.WeeklyTargetHrsInPeriod(
|
||||
bodyshop.scoreboard_target.dailyPaintTarget,
|
||||
dayjs().subtract(2, "week").startOf("week"),
|
||||
dayjs().subtract(2, "week").endOf("week"),
|
||||
bodyshop
|
||||
)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -347,15 +372,17 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Col span={24}>
|
||||
<Statistic
|
||||
value={data.totalThisMonth}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalThisMonth) >=
|
||||
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop) +
|
||||
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalThisMonth) >=
|
||||
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop) +
|
||||
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -365,14 +392,16 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.body")}</Typography.Text>}
|
||||
value={data.totalThisMonthLAB}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalThisMonthLAB) >=
|
||||
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalThisMonthLAB) >=
|
||||
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -380,14 +409,16 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.refinish")}</Typography.Text>}
|
||||
value={data.totalThisMonthLAR}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalThisMonthLAR) >=
|
||||
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalThisMonthLAR) >=
|
||||
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -401,15 +432,17 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Col span={24}>
|
||||
<Statistic
|
||||
value={data.totalLastMonth}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalLastMonth) >=
|
||||
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop) +
|
||||
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalLastMonth) >=
|
||||
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop) +
|
||||
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -419,14 +452,16 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.body")}</Typography.Text>}
|
||||
value={data.totalLastMonthLAB}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalLastMonthLAB) >=
|
||||
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalLastMonthLAB) >=
|
||||
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -434,14 +469,16 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.refinish")}</Typography.Text>}
|
||||
value={data.totalLastMonthLAR}
|
||||
valueStyle={{
|
||||
color:
|
||||
parseFloat(data.totalLastMonthLAR) >=
|
||||
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
color:
|
||||
parseFloat(data.totalLastMonthLAR) >=
|
||||
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
|
||||
? "green"
|
||||
: "red",
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -455,9 +492,11 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Col span={24}>
|
||||
<Statistic
|
||||
value={`${data.totalEffieciencyOverPeriod || 0}%`}
|
||||
valueStyle={{
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -467,9 +506,11 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.body")}</Typography.Text>}
|
||||
value={`${data.totalEffieciencyOverPeriodLAB || 0}%`}
|
||||
valueStyle={{
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -477,9 +518,11 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.refinish")}</Typography.Text>}
|
||||
value={`${data.totalEffieciencyOverPeriodLAR || 0}%`}
|
||||
valueStyle={{
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -492,9 +535,11 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Col span={24}>
|
||||
<Statistic
|
||||
value={jobData.count}
|
||||
valueStyle={{
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
@@ -504,9 +549,11 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
|
||||
<Statistic
|
||||
title={<Typography.Text strong>{t("scoreboard.labels.totalhrs")}</Typography.Text>}
|
||||
value={jobData.tthrs}
|
||||
valueStyle={{
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
styles={{
|
||||
content: {
|
||||
fontSize: statisticSize,
|
||||
fontWeight: statisticWeight
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
|
||||
@@ -104,7 +104,7 @@ export default function ShopEmployeesListComponent({ loading, employees }) {
|
||||
);
|
||||
}}
|
||||
loading={loading}
|
||||
pagination={{ position: "top" }}
|
||||
pagination={{ placement: "top" }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={employees}
|
||||
|
||||
@@ -100,7 +100,7 @@ export function ShopInfoSchedulingComponent({ form, bodyshop }) {
|
||||
<Select mode="tags" />
|
||||
</Form.Item>
|
||||
</LayoutFormRow>
|
||||
<Divider orientation="left">{t("bodyshop.labels.workingdays")}</Divider>
|
||||
<Divider titlePlacement="left">{t("bodyshop.labels.workingdays")}</Divider>
|
||||
<Space wrap size="large" id="workingdays">
|
||||
<Form.Item label={t("general.labels.sunday")} name={["workingdays", "sunday"]} valuePropName="checked">
|
||||
<Switch />
|
||||
|
||||
@@ -10,9 +10,7 @@ export default function ShopInfoSpeedPrint() {
|
||||
const { t } = useTranslation();
|
||||
const allTemplates = TemplateList("job");
|
||||
const TemplateListGenerated = InstanceRenderManager({
|
||||
imex: Object.fromEntries(
|
||||
Object.entries(allTemplates).filter(([, { enhanced_payroll }]) => !enhanced_payroll)
|
||||
),
|
||||
imex: Object.fromEntries(Object.entries(allTemplates).filter(([, { enhanced_payroll }]) => !enhanced_payroll)),
|
||||
rome: allTemplates
|
||||
});
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ export default function ShopEmployeeTeamsListComponent({ loading, employee_teams
|
||||
);
|
||||
}}
|
||||
loading={loading}
|
||||
pagination={{ position: "top" }}
|
||||
pagination={{ placement: "top" }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={employee_teams}
|
||||
|
||||
@@ -68,7 +68,7 @@ export function ShopInfoUsersComponent({ bodyshop }) {
|
||||
<div>
|
||||
<Table
|
||||
loading={loading}
|
||||
pagination={{ position: "top" }}
|
||||
pagination={{ placement: "top" }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
dataSource={data && data.associations}
|
||||
|
||||
@@ -95,9 +95,9 @@ export function TechLookupJobsDrawer({ bodyshop, setPrintCenterContext }) {
|
||||
}
|
||||
>
|
||||
<JobsDetailHeader job={data.jobs_by_pk} disabled />
|
||||
<Divider type="horizontal" />
|
||||
<Divider orientation="horizontal" />
|
||||
<Tabs
|
||||
size="large"
|
||||
width="large"
|
||||
defaultActiveKey="lines"
|
||||
items={[
|
||||
{
|
||||
|
||||
@@ -189,12 +189,7 @@ export function TtApprovalsListComponent({
|
||||
scroll={{
|
||||
x: true
|
||||
}}
|
||||
pagination={{
|
||||
position: "top",
|
||||
pageSize: 25,
|
||||
current: parseInt(page || 1),
|
||||
total: total
|
||||
}}
|
||||
pagination={{ placement: "top", pageSize: 25, current: parseInt(page || 1), total: total }}
|
||||
dataSource={tt_approval_queue}
|
||||
onChange={handleTableChange}
|
||||
rowSelection={{
|
||||
|
||||
@@ -104,12 +104,7 @@ export default function VehiclesListComponent({ loading, vehicles, total, refetc
|
||||
>
|
||||
<Table
|
||||
loading={loading}
|
||||
pagination={{
|
||||
position: "top",
|
||||
pageSize: pageLimit,
|
||||
current: parseInt(page || 1),
|
||||
total: total
|
||||
}}
|
||||
pagination={{ placement: "top", pageSize: pageLimit, current: parseInt(page || 1), total: total }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
scroll={{ x: true }}
|
||||
|
||||
@@ -89,7 +89,7 @@ export default function VendorsListComponent({ handleNewVendor, loading, handleO
|
||||
>
|
||||
<Table
|
||||
loading={loading}
|
||||
pagination={{ position: "top" }}
|
||||
pagination={{ placement: "top" }}
|
||||
columns={columns}
|
||||
rowKey="id"
|
||||
onChange={handleTableChange}
|
||||
|
||||
@@ -537,17 +537,7 @@ const SocketProvider = ({ children, bodyshop, navigate, currentUser }) => {
|
||||
setIsConnected(false);
|
||||
}
|
||||
};
|
||||
}, [
|
||||
bodyshop,
|
||||
notification,
|
||||
userAssociationId,
|
||||
markNotificationRead,
|
||||
markAllNotificationsRead,
|
||||
navigate,
|
||||
currentUser,
|
||||
Realtime_Notifications_UI,
|
||||
t
|
||||
]);
|
||||
}, [bodyshop?.id, userAssociationId, Realtime_Notifications_UI?.treatment]);
|
||||
|
||||
return (
|
||||
<SocketContext.Provider
|
||||
|
||||
@@ -8,7 +8,7 @@ export default function CourtesyCarDetailPageComponent({ contracts, form, saveLo
|
||||
<Col span={24}>
|
||||
<CourtesyCarCreateFormComponent form={form} saveLoading={saveLoading} />
|
||||
</Col>
|
||||
<Divider type="horizontal" />
|
||||
<Divider orientation="horizontal" />
|
||||
<Col span={24}>
|
||||
<CourtesyCarContractListComponent contracts={contracts} totalContracts={totalContracts} />
|
||||
</Col>
|
||||
|
||||
@@ -190,7 +190,7 @@ export function ExportLogsPageComponent() {
|
||||
<Table
|
||||
loading={loading}
|
||||
pagination={{
|
||||
position: "top",
|
||||
placement: "top",
|
||||
pageSize: pageLimit,
|
||||
current: parseInt(page || 1, 10),
|
||||
total: data && data.search_exportlog_aggregate.aggregate.count
|
||||
|
||||
@@ -332,7 +332,7 @@ export function JobsDetailPage({
|
||||
extra={menuExtra}
|
||||
/>
|
||||
<JobsDetailHeader job={job} />
|
||||
<Divider type="horizontal" />
|
||||
<Divider orientation="horizontal" />
|
||||
<JobProfileDataWarning job={job} />
|
||||
<FormFieldsChanged form={form} />
|
||||
<Tabs
|
||||
|
||||
@@ -8,7 +8,7 @@ export default function OwnersDetailComponent({ owner, refetch }) {
|
||||
<Col span={24}>
|
||||
<OwnerDetailForm owner={owner} refetch={refetch} />
|
||||
</Col>
|
||||
<Divider type="horizontal" />
|
||||
<Divider orientation="horizontal" />
|
||||
<Col span={24}>
|
||||
<OwnerDetailJobsComponent owner={owner} />
|
||||
</Col>
|
||||
|
||||
@@ -176,7 +176,7 @@ export function PhonebookPageComponent({ bodyshop, authLevel }) {
|
||||
<Table
|
||||
loading={loading}
|
||||
pagination={{
|
||||
position: "top",
|
||||
placement: "top",
|
||||
pageSize: pageLimit,
|
||||
current: parseInt(page || 1, 10),
|
||||
total: data && data.search_phonebook_aggregate.aggregate.count
|
||||
|
||||
@@ -133,7 +133,7 @@ export function SimplifiedPartsJobDetailComponent({ setPrintCenterContext, jobRO
|
||||
|
||||
<PageHeader title={<Space>{job.ro_number || t("general.labels.na")}</Space>} extra={menuExtra} />
|
||||
<JobsDetailHeader job={job} />
|
||||
<Divider type="horizontal" />
|
||||
<Divider orientation="horizontal" />
|
||||
<FormFieldsChanged form={form} />
|
||||
<Tabs
|
||||
defaultActiveKey={search.tab}
|
||||
|
||||
@@ -9,7 +9,7 @@ export default function VehicleDetailComponent({ vehicle, refetch }) {
|
||||
<Col span={24}>
|
||||
<VehicleDetailFormContainer vehicle={vehicle} refetch={refetch} />
|
||||
</Col>
|
||||
<Divider type="horizontal" />
|
||||
<Divider orientation="horizontal" />
|
||||
<Col span={24}>
|
||||
<VehicleDetailJobsComponent vehicle={vehicle} />
|
||||
</Col>
|
||||
|
||||
Reference in New Issue
Block a user