merge aio
This commit is contained in:
@@ -41,9 +41,8 @@ jobs:
|
||||
imex-app-build:
|
||||
docker:
|
||||
- image: cimg/node:18.18.2
|
||||
|
||||
resource_class: large
|
||||
working_directory: ~/repo/client
|
||||
|
||||
steps:
|
||||
- checkout:
|
||||
path: ~/repo
|
||||
@@ -63,6 +62,31 @@ jobs:
|
||||
to: "s3://imex-online-production/"
|
||||
arguments: "--exclude '*.map'"
|
||||
|
||||
imex-app-beta-build:
|
||||
docker:
|
||||
- image: cimg/node:18.18.2
|
||||
resource_class: large
|
||||
working_directory: ~/repo/client
|
||||
|
||||
steps:
|
||||
- checkout:
|
||||
path: ~/repo
|
||||
- run:
|
||||
name: Install Dependencies
|
||||
command: npm i
|
||||
|
||||
- run: npm run build:production:imex
|
||||
|
||||
- aws-cli/setup:
|
||||
aws_access_key_id: AWS_ACCESS_KEY_ID
|
||||
aws_secret_access_key: AWS_SECRET_ACCESS_KEY
|
||||
region: AWS_REGION
|
||||
|
||||
- aws-s3/sync:
|
||||
from: dist
|
||||
to: "s3://imex-online-beta/"
|
||||
arguments: "--exclude '*.map'"
|
||||
|
||||
rome-api-deploy:
|
||||
docker:
|
||||
- image: "cimg/base:stable"
|
||||
@@ -181,7 +205,7 @@ jobs:
|
||||
|
||||
imex-test-app-build:
|
||||
docker:
|
||||
- image: cimg/node:16.15.0
|
||||
- image: cimg/node:18.18.2
|
||||
resource_class: large
|
||||
working_directory: ~/repo/client
|
||||
|
||||
@@ -199,6 +223,32 @@ jobs:
|
||||
to: "s3://imex-online-test/"
|
||||
arguments: "--exclude '*.map'"
|
||||
|
||||
imex-test-app-beta-build:
|
||||
docker:
|
||||
- image: cimg/node:18.18.2
|
||||
resource_class: large
|
||||
working_directory: ~/repo/client
|
||||
|
||||
steps:
|
||||
- checkout:
|
||||
path: ~/repo
|
||||
|
||||
- run:
|
||||
name: Install Dependencies
|
||||
command: npm i
|
||||
|
||||
- run: npm run build:test:imex
|
||||
|
||||
- aws-cli/setup:
|
||||
aws_access_key_id: AWS_ACCESS_KEY_ID
|
||||
aws_secret_access_key: AWS_SECRET_ACCESS_KEY
|
||||
region: AWS_REGION
|
||||
|
||||
- aws-s3/sync:
|
||||
from: build
|
||||
to: "s3://imex-online-test-beta/"
|
||||
arguments: "--exclude '*.map'"
|
||||
|
||||
|
||||
admin-app-build:
|
||||
docker:
|
||||
@@ -236,12 +286,16 @@ workflows:
|
||||
- imex-api-deploy:
|
||||
filters:
|
||||
branches:
|
||||
only: master
|
||||
only: master-AIO
|
||||
- imex-app-build:
|
||||
filters:
|
||||
branches:
|
||||
only: master
|
||||
- hasura-migrate:
|
||||
- imex-app-beta-build:
|
||||
filters:
|
||||
branches:
|
||||
only: master-AIO
|
||||
- imex-hasura-migrate:
|
||||
secret: ${HASURA_PROD_SECRET}
|
||||
filters:
|
||||
branches:
|
||||
@@ -263,7 +317,10 @@ workflows:
|
||||
filters:
|
||||
branches:
|
||||
only: test
|
||||
|
||||
- imex-test-app-beta-build:
|
||||
filters:
|
||||
branches:
|
||||
only: test-AIO
|
||||
- test-hasura-migrate:
|
||||
secret: ${HASURA_TEST_SECRET}
|
||||
filters:
|
||||
|
||||
@@ -37126,6 +37126,27 @@
|
||||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
<concept_node>
|
||||
<name>parts</name>
|
||||
<definition_loaded>false</definition_loaded>
|
||||
<description></description>
|
||||
<comment></comment>
|
||||
<default_text></default_text>
|
||||
<translations>
|
||||
<translation>
|
||||
<language>en-US</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>es-MX</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>fr-CA</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
<concept_node>
|
||||
<name>partssublet</name>
|
||||
<definition_loaded>false</definition_loaded>
|
||||
|
||||
288
client/package-lock.json
generated
288
client/package-lock.json
generated
@@ -20,7 +20,7 @@
|
||||
"@splitsoftware/splitio-react": "^1.11.0",
|
||||
"@tanem/react-nprogress": "^5.0.51",
|
||||
"@vitejs/plugin-react": "^4.2.1",
|
||||
"antd": "^5.14.2",
|
||||
"antd": "^5.15.3",
|
||||
"apollo-link-logger": "^2.0.1",
|
||||
"apollo-link-sentry": "^3.3.0",
|
||||
"axios": "^1.6.7",
|
||||
@@ -54,6 +54,7 @@
|
||||
"react-joyride": "^2.7.4",
|
||||
"react-markdown": "^9.0.1",
|
||||
"react-number-format": "^5.3.3",
|
||||
"react-product-fruits": "^2.2.6",
|
||||
"react-redux": "^9.1.0",
|
||||
"react-resizable": "^3.0.5",
|
||||
"react-router-dom": "^6.22.2",
|
||||
@@ -71,6 +72,7 @@
|
||||
"styled-components": "^6.1.8",
|
||||
"subscriptions-transport-ws": "^0.11.0",
|
||||
"terser-webpack-plugin": "^5.3.10",
|
||||
"userpilot": "^1.3.1",
|
||||
"vite-plugin-ejs": "^1.7.0",
|
||||
"web-vitals": "^3.5.2",
|
||||
"workbox-core": "^7.0.0",
|
||||
@@ -186,8 +188,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/icons": {
|
||||
"version": "5.3.0",
|
||||
"license": "MIT",
|
||||
"version": "5.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.3.4.tgz",
|
||||
"integrity": "sha512-U5eTSeSFr2V9SeJzYOo5mybAZfsoNuiIA8bvFoZUe+h9LBLs8UwrVaVwcMQC4AhBuojXkLMlmtnIlvUczXXHaQ==",
|
||||
"dependencies": {
|
||||
"@ant-design/colors": "^7.0.0",
|
||||
"@ant-design/icons-svg": "^4.4.0",
|
||||
@@ -2104,8 +2107,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@babel/runtime": {
|
||||
"version": "7.23.9",
|
||||
"license": "MIT",
|
||||
"version": "7.24.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz",
|
||||
"integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==",
|
||||
"dependencies": {
|
||||
"regenerator-runtime": "^0.14.0"
|
||||
},
|
||||
@@ -4970,6 +4974,32 @@
|
||||
"version": "2.0.4",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@ndhoule/each": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@ndhoule/each/-/each-2.0.1.tgz",
|
||||
"integrity": "sha512-wHuJw6x+rF6Q9Skgra++KccjBozCr9ymtna0FhxmV/8xT/hZ2ExGYR8SV8prg8x4AH/7mzDYErNGIVHuzHeybw==",
|
||||
"dependencies": {
|
||||
"@ndhoule/keys": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ndhoule/includes": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@ndhoule/includes/-/includes-2.0.1.tgz",
|
||||
"integrity": "sha512-Q8zN6f3yIhxgBwZ5ldLozHqJlc/fRQ5+hFFsPMFeC9SJvz0nq8vG9hoRXL1c1iaNFQd7yAZIy2igQpERoFqxqg==",
|
||||
"dependencies": {
|
||||
"@ndhoule/each": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@ndhoule/keys": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@ndhoule/keys/-/keys-2.0.0.tgz",
|
||||
"integrity": "sha512-vtCqKBC1Av6dsBA8xpAO+cgk051nfaI+PnmTZep2Px0vYrDvpUmLxv7z40COlWH5yCpu3gzNhepk+02yiQiZNw=="
|
||||
},
|
||||
"node_modules/@ndhoule/pick": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@ndhoule/pick/-/pick-2.0.0.tgz",
|
||||
"integrity": "sha512-xkYtpf1pRd8egwvl5tJcdGu+GBd6ZZH3S/zoIQ9txEI+pHF9oTIlxMC9G4CB3sRugAeLgu8qYJGl3tnxWq74Qw=="
|
||||
},
|
||||
"node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
|
||||
"version": "5.1.1-v1",
|
||||
"license": "MIT",
|
||||
@@ -5150,8 +5180,9 @@
|
||||
"integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
|
||||
},
|
||||
"node_modules/@rc-component/color-picker": {
|
||||
"version": "1.5.2",
|
||||
"license": "MIT",
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-1.5.3.tgz",
|
||||
"integrity": "sha512-+tGGH3nLmYXTalVe0L8hSZNs73VTP5ueSHwUlDC77KKRaN7G4DS4wcpG5DTDzdcV/Yas+rzA6UGgIyzd8fS4cw==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.23.6",
|
||||
"@ctrl/tinycolor": "^3.6.1",
|
||||
@@ -5165,7 +5196,8 @@
|
||||
},
|
||||
"node_modules/@rc-component/context": {
|
||||
"version": "1.4.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/@rc-component/context/-/context-1.4.0.tgz",
|
||||
"integrity": "sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"rc-util": "^5.27.0"
|
||||
@@ -5203,7 +5235,8 @@
|
||||
},
|
||||
"node_modules/@rc-component/portal": {
|
||||
"version": "1.1.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/@rc-component/portal/-/portal-1.1.2.tgz",
|
||||
"integrity": "sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"classnames": "^2.3.2",
|
||||
@@ -5218,12 +5251,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rc-component/tour": {
|
||||
"version": "1.12.3",
|
||||
"license": "MIT",
|
||||
"version": "1.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@rc-component/tour/-/tour-1.14.2.tgz",
|
||||
"integrity": "sha512-A75DZ8LVvahBIvxooj3Gvf2sxe+CGOkmzPNX7ek0i0AJHyKZ1HXe5ieIGo3m0FMdZfVOlbCJ952Duq8VKAHk6g==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"@rc-component/portal": "^1.0.0-9",
|
||||
"@rc-component/trigger": "^1.3.6",
|
||||
"@rc-component/trigger": "^2.0.0",
|
||||
"classnames": "^2.3.2",
|
||||
"rc-util": "^5.24.4"
|
||||
},
|
||||
@@ -5236,8 +5270,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rc-component/trigger": {
|
||||
"version": "1.18.3",
|
||||
"license": "MIT",
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-2.0.0.tgz",
|
||||
"integrity": "sha512-niwKADPdY5dhdIblV6uwSayVivwo2uUISfJqri+/ovYQcH/omxDYBJKo755QKeoIIsWptxnRpgr7reEnNEZGFg==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.23.2",
|
||||
"@rc-component/portal": "^1.1.0",
|
||||
@@ -7522,54 +7557,56 @@
|
||||
}
|
||||
},
|
||||
"node_modules/antd": {
|
||||
"version": "5.14.2",
|
||||
"license": "MIT",
|
||||
"version": "5.15.3",
|
||||
"resolved": "https://registry.npmjs.org/antd/-/antd-5.15.3.tgz",
|
||||
"integrity": "sha512-53dpdGbfwipHVbqITmppp8N16i+BscMzz8NUNwaJgxwSvO9VQh/NfC/90lqGq3I2oBmxQ8TzRIxzFVKD/9OhlQ==",
|
||||
"dependencies": {
|
||||
"@ant-design/colors": "^7.0.2",
|
||||
"@ant-design/cssinjs": "^1.18.4",
|
||||
"@ant-design/icons": "^5.3.0",
|
||||
"@ant-design/icons": "^5.3.3",
|
||||
"@ant-design/react-slick": "~1.0.2",
|
||||
"@babel/runtime": "^7.24.0",
|
||||
"@ctrl/tinycolor": "^3.6.1",
|
||||
"@rc-component/color-picker": "~1.5.2",
|
||||
"@rc-component/color-picker": "~1.5.3",
|
||||
"@rc-component/mutate-observer": "^1.1.0",
|
||||
"@rc-component/tour": "~1.12.3",
|
||||
"@rc-component/trigger": "^1.18.3",
|
||||
"@rc-component/tour": "~1.14.2",
|
||||
"@rc-component/trigger": "^2.0.0",
|
||||
"classnames": "^2.5.1",
|
||||
"copy-to-clipboard": "^3.3.3",
|
||||
"dayjs": "^1.11.10",
|
||||
"qrcode.react": "^3.1.0",
|
||||
"rc-cascader": "~3.21.2",
|
||||
"rc-checkbox": "~3.1.0",
|
||||
"rc-cascader": "~3.24.0",
|
||||
"rc-checkbox": "~3.2.0",
|
||||
"rc-collapse": "~3.7.2",
|
||||
"rc-dialog": "~9.3.4",
|
||||
"rc-drawer": "~7.0.0",
|
||||
"rc-dropdown": "~4.1.0",
|
||||
"rc-field-form": "~1.41.0",
|
||||
"rc-image": "~7.5.1",
|
||||
"rc-input": "~1.4.3",
|
||||
"rc-dialog": "~9.4.0",
|
||||
"rc-drawer": "~7.1.0",
|
||||
"rc-dropdown": "~4.2.0",
|
||||
"rc-field-form": "~1.42.1",
|
||||
"rc-image": "~7.6.0",
|
||||
"rc-input": "~1.4.5",
|
||||
"rc-input-number": "~9.0.0",
|
||||
"rc-mentions": "~2.10.1",
|
||||
"rc-menu": "~9.12.4",
|
||||
"rc-mentions": "~2.11.1",
|
||||
"rc-menu": "~9.13.0",
|
||||
"rc-motion": "^2.9.0",
|
||||
"rc-notification": "~5.3.0",
|
||||
"rc-pagination": "~4.0.4",
|
||||
"rc-picker": "~4.1.4",
|
||||
"rc-picker": "~4.3.0",
|
||||
"rc-progress": "~3.5.1",
|
||||
"rc-rate": "~2.12.0",
|
||||
"rc-resize-observer": "^1.4.0",
|
||||
"rc-segmented": "~2.3.0",
|
||||
"rc-select": "~14.11.0",
|
||||
"rc-select": "~14.13.0",
|
||||
"rc-slider": "~10.5.0",
|
||||
"rc-steps": "~6.0.1",
|
||||
"rc-switch": "~4.1.0",
|
||||
"rc-table": "~7.39.0",
|
||||
"rc-tabs": "~14.0.0",
|
||||
"rc-table": "~7.42.0",
|
||||
"rc-tabs": "~14.1.1",
|
||||
"rc-textarea": "~1.6.3",
|
||||
"rc-tooltip": "~6.1.3",
|
||||
"rc-tooltip": "~6.2.0",
|
||||
"rc-tree": "~5.8.5",
|
||||
"rc-tree-select": "~5.17.0",
|
||||
"rc-tree-select": "~5.19.0",
|
||||
"rc-upload": "~4.5.2",
|
||||
"rc-util": "^5.38.2",
|
||||
"rc-util": "^5.39.1",
|
||||
"scroll-into-view-if-needed": "^3.1.0",
|
||||
"throttle-debounce": "^5.0.0"
|
||||
},
|
||||
@@ -7698,7 +7735,8 @@
|
||||
},
|
||||
"node_modules/array-tree-filter": {
|
||||
"version": "2.1.0",
|
||||
"license": "MIT"
|
||||
"resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz",
|
||||
"integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw=="
|
||||
},
|
||||
"node_modules/array-union": {
|
||||
"version": "2.1.0",
|
||||
@@ -7887,7 +7925,8 @@
|
||||
},
|
||||
"node_modules/async-validator": {
|
||||
"version": "4.2.5",
|
||||
"license": "MIT"
|
||||
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
|
||||
"integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
|
||||
},
|
||||
"node_modules/asynciterator.prototype": {
|
||||
"version": "1.0.0",
|
||||
@@ -9625,6 +9664,11 @@
|
||||
"version": "1.0.1",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/component-indexof": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz",
|
||||
"integrity": "sha512-puDQKvx/64HZXb4hBwIcvQLaLgux8o1CbWl39s41hrIIZDl1lJiD5jc22gj3RBeGK0ovxALDYpIbyjqDUUl0rw=="
|
||||
},
|
||||
"node_modules/compressible": {
|
||||
"version": "2.0.18",
|
||||
"license": "MIT",
|
||||
@@ -14347,6 +14391,14 @@
|
||||
"node": ">= 10"
|
||||
}
|
||||
},
|
||||
"node_modules/is": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz",
|
||||
"integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==",
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/is-alphabetical": {
|
||||
"version": "2.0.1",
|
||||
"license": "MIT",
|
||||
@@ -18809,6 +18861,11 @@
|
||||
"version": "2.2.7",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/obj-case": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/obj-case/-/obj-case-0.2.1.tgz",
|
||||
"integrity": "sha512-PquYBBTy+Y6Ob/O2574XHhDtHJlV1cJHMCgW+rDRc9J5hhmRelJB3k5dTK/3cVmFVtzvAKuENeuLpoyTzMzkOg=="
|
||||
},
|
||||
"node_modules/object-assign": {
|
||||
"version": "4.1.1",
|
||||
"license": "MIT",
|
||||
@@ -20836,6 +20893,11 @@
|
||||
"version": "2.0.1",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/product-fruits": {
|
||||
"version": "1.0.25",
|
||||
"resolved": "https://registry.npmjs.org/product-fruits/-/product-fruits-1.0.25.tgz",
|
||||
"integrity": "sha512-w//YC14ZBv3AJ9Ki/XEYPPltodXGJYLue/Wkv/E0Q6BnB/mZ4UvFZMcVYqTCMKUJWdsaeqwO840JC0BGaG3g1w=="
|
||||
},
|
||||
"node_modules/progress": {
|
||||
"version": "2.0.3",
|
||||
"license": "MIT",
|
||||
@@ -21136,13 +21198,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-cascader": {
|
||||
"version": "3.21.2",
|
||||
"license": "MIT",
|
||||
"version": "3.24.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.24.0.tgz",
|
||||
"integrity": "sha512-NwkYsVULA61S085jbOYbq8Z7leyIxVmLwf+71mWLjA3kCfUf/rAKC0WfjQbqBDaLGlU9d4z1EzyPaHBKLYWv6A==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"array-tree-filter": "^2.1.0",
|
||||
"classnames": "^2.3.1",
|
||||
"rc-select": "~14.11.0",
|
||||
"rc-select": "~14.13.0",
|
||||
"rc-tree": "~5.8.1",
|
||||
"rc-util": "^5.37.0"
|
||||
},
|
||||
@@ -21152,8 +21215,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-checkbox": {
|
||||
"version": "3.1.0",
|
||||
"license": "MIT",
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-3.2.0.tgz",
|
||||
"integrity": "sha512-8inzw4y9dAhZmv/Ydl59Qdy5tdp9CKg4oPVcRigi+ga/yKPZS5m5SyyQPtYSgbcqHRYOdUhiPSeKfktc76du1A==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"classnames": "^2.3.2",
|
||||
@@ -21179,8 +21243,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-dialog": {
|
||||
"version": "9.3.4",
|
||||
"license": "MIT",
|
||||
"version": "9.4.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.4.0.tgz",
|
||||
"integrity": "sha512-AScCexaLACvf8KZRqCPz12BJ8olszXOS4lKlkMyzDQHS1m0zj1KZMYgmMCh39ee0Dcv8kyrj8mTqxuLyhH+QuQ==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"@rc-component/portal": "^1.0.0-8",
|
||||
@@ -21194,14 +21259,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-drawer": {
|
||||
"version": "7.0.0",
|
||||
"license": "MIT",
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-7.1.0.tgz",
|
||||
"integrity": "sha512-nBE1rF5iZvpavoyqhSSz2mk/yANltA7g3aF0U45xkx381n3we/RKs9cJfNKp9mSWCedOKWt9FLEwZDaAaOGn2w==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"@babel/runtime": "^7.23.9",
|
||||
"@rc-component/portal": "^1.1.1",
|
||||
"classnames": "^2.2.6",
|
||||
"rc-motion": "^2.6.1",
|
||||
"rc-util": "^5.36.0"
|
||||
"rc-util": "^5.38.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.9.0",
|
||||
@@ -21209,11 +21275,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-dropdown": {
|
||||
"version": "4.1.0",
|
||||
"license": "MIT",
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.2.0.tgz",
|
||||
"integrity": "sha512-odM8Ove+gSh0zU27DUj5cG1gNKg7mLWBYzB5E4nNLrLwBmYEgYP43vHKDGOVZcJSVElQBI0+jTQgjnq0NfLjng==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3",
|
||||
"@rc-component/trigger": "^1.7.0",
|
||||
"@rc-component/trigger": "^2.0.0",
|
||||
"classnames": "^2.2.6",
|
||||
"rc-util": "^5.17.0"
|
||||
},
|
||||
@@ -21223,8 +21290,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-field-form": {
|
||||
"version": "1.41.0",
|
||||
"license": "MIT",
|
||||
"version": "1.42.1",
|
||||
"resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.42.1.tgz",
|
||||
"integrity": "sha512-SqiEmWNP+I61Lt80+ofPvT+3l8Ij6vb35IS+x14gheVnCJN0SRnOwEgsqCEB5FslT7xqjUqDnU845hRZ1jzlAA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"async-validator": "^4.1.0",
|
||||
@@ -21271,13 +21339,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-image": {
|
||||
"version": "7.5.1",
|
||||
"license": "MIT",
|
||||
"version": "7.6.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-image/-/rc-image-7.6.0.tgz",
|
||||
"integrity": "sha512-tL3Rvd1sS+frZQ01i+tkeUPaOeFz2iG9/scAt/Cfs0hyCRVA/w0Pu1J/JxIX8blalvmHE0bZQRYdOmRAzWu4Hg==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"@rc-component/portal": "^1.0.2",
|
||||
"classnames": "^2.2.6",
|
||||
"rc-dialog": "~9.3.4",
|
||||
"rc-dialog": "~9.4.0",
|
||||
"rc-motion": "^2.6.2",
|
||||
"rc-util": "^5.34.1"
|
||||
},
|
||||
@@ -21287,8 +21356,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-input": {
|
||||
"version": "1.4.3",
|
||||
"license": "MIT",
|
||||
"version": "1.4.5",
|
||||
"resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.4.5.tgz",
|
||||
"integrity": "sha512-AjzykhwnwYTRSwwgCu70CGKBIAv6bP2nqnFptnNTprph/TF1BAs0Qxl91mie/BR6n827WIJB6ZjaRf9iiMwAfw==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.1",
|
||||
"classnames": "^2.2.1",
|
||||
@@ -21315,14 +21385,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-mentions": {
|
||||
"version": "2.10.1",
|
||||
"license": "MIT",
|
||||
"version": "2.11.1",
|
||||
"resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-2.11.1.tgz",
|
||||
"integrity": "sha512-upb4AK1SRFql7qGnbLEvJqLMugVVIyjmwBJW9L0eLoN9po4JmJZaBzmKA4089fNtsU8k6l/tdZiVafyooeKnLw==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.22.5",
|
||||
"@rc-component/trigger": "^1.5.0",
|
||||
"@rc-component/trigger": "^2.0.0",
|
||||
"classnames": "^2.2.6",
|
||||
"rc-input": "~1.4.0",
|
||||
"rc-menu": "~9.12.0",
|
||||
"rc-menu": "~9.13.0",
|
||||
"rc-textarea": "~1.6.1",
|
||||
"rc-util": "^5.34.1"
|
||||
},
|
||||
@@ -21332,11 +21403,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-menu": {
|
||||
"version": "9.12.4",
|
||||
"license": "MIT",
|
||||
"version": "9.13.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.13.0.tgz",
|
||||
"integrity": "sha512-1l8ooCB3HcYJKCltC/s7OxRKRjgymdl9htrCeGZcXNaMct0RxZRK6OPV3lPhVksIvAGMgzPd54ClpZ5J4b8cZA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"@rc-component/trigger": "^1.17.0",
|
||||
"@rc-component/trigger": "^2.0.0",
|
||||
"classnames": "2.x",
|
||||
"rc-motion": "^2.4.3",
|
||||
"rc-overflow": "^1.3.1",
|
||||
@@ -21379,7 +21451,8 @@
|
||||
},
|
||||
"node_modules/rc-overflow": {
|
||||
"version": "1.3.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.3.2.tgz",
|
||||
"integrity": "sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.1",
|
||||
"classnames": "^2.2.1",
|
||||
@@ -21405,11 +21478,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-picker": {
|
||||
"version": "4.1.4",
|
||||
"license": "MIT",
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-4.3.0.tgz",
|
||||
"integrity": "sha512-bQNB/+NdW55jlQ5lPnNqF5J90Tq4SihLbAF7tzPBvGDJyoYmDgwLm4FN0ZB3Ot9i1v6vJY/1mgqZZTT9jbYc5w==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"@rc-component/trigger": "^1.5.0",
|
||||
"@rc-component/trigger": "^2.0.0",
|
||||
"classnames": "^2.2.1",
|
||||
"rc-overflow": "^1.3.2",
|
||||
"rc-resize-observer": "^1.4.0",
|
||||
@@ -21499,11 +21573,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-select": {
|
||||
"version": "14.11.0",
|
||||
"license": "MIT",
|
||||
"version": "14.13.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.13.0.tgz",
|
||||
"integrity": "sha512-ew34FsaqHokK4dxVrcIxSYrgWJ2XJYlkk32eiOIiEo3GkHUExdCzmozMYaUc2P67c5QJRUvvY0uqCs3QG67h5A==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"@rc-component/trigger": "^1.5.0",
|
||||
"@rc-component/trigger": "^2.0.0",
|
||||
"classnames": "2.x",
|
||||
"rc-motion": "^2.0.1",
|
||||
"rc-overflow": "^1.3.1",
|
||||
@@ -21564,8 +21639,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-table": {
|
||||
"version": "7.39.0",
|
||||
"license": "MIT",
|
||||
"version": "7.42.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.42.0.tgz",
|
||||
"integrity": "sha512-GwHV9Zs3HvWxBkoXatO/IeKoElzy3Ojf3dcyw1Rj3cyQVb+ZHtexslKdyzsrKRPJ0mUa62BoX+ZAg3zgTEql8w==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"@rc-component/context": "^1.4.0",
|
||||
@@ -21583,13 +21659,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-tabs": {
|
||||
"version": "14.0.0",
|
||||
"license": "MIT",
|
||||
"version": "14.1.1",
|
||||
"resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-14.1.1.tgz",
|
||||
"integrity": "sha512-5nOr9PVpJy2SWHTLgv1+kESDOb0tFzl0cYU9r9d8LfL0Wg9i/n1B558rmkxdQHgBwMqxmwoyPSAbQROxMQe8nw==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"classnames": "2.x",
|
||||
"rc-dropdown": "~4.1.0",
|
||||
"rc-menu": "~9.12.0",
|
||||
"rc-dropdown": "~4.2.0",
|
||||
"rc-menu": "~9.13.0",
|
||||
"rc-motion": "^2.6.2",
|
||||
"rc-resize-observer": "^1.0.0",
|
||||
"rc-util": "^5.34.1"
|
||||
@@ -21604,7 +21681,8 @@
|
||||
},
|
||||
"node_modules/rc-textarea": {
|
||||
"version": "1.6.3",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.6.3.tgz",
|
||||
"integrity": "sha512-8k7+8Y2GJ/cQLiClFMg8kUXOOdvcFQrnGeSchOvI2ZMIVvX5a3zQpLxoODL0HTrvU63fPkRmMuqaEcOF9dQemA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"classnames": "^2.2.1",
|
||||
@@ -21618,11 +21696,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-tooltip": {
|
||||
"version": "6.1.3",
|
||||
"license": "MIT",
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.2.0.tgz",
|
||||
"integrity": "sha512-iS/3iOAvtDh9GIx1ulY7EFUXUtktFccNLsARo3NPgLf0QW9oT0w3dA9cYWlhqAKmD+uriEwdWz1kH0Qs4zk2Aw==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"@rc-component/trigger": "^1.18.0",
|
||||
"@rc-component/trigger": "^2.0.0",
|
||||
"classnames": "^2.3.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
@@ -21632,7 +21711,8 @@
|
||||
},
|
||||
"node_modules/rc-tree": {
|
||||
"version": "5.8.5",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.8.5.tgz",
|
||||
"integrity": "sha512-PRfcZtVDNkR7oh26RuNe1hpw11c1wfgzwmPFL0lnxGnYefe9lDAO6cg5wJKIAwyXFVt5zHgpjYmaz0CPy1ZtKg==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"classnames": "2.x",
|
||||
@@ -21649,12 +21729,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-tree-select": {
|
||||
"version": "5.17.0",
|
||||
"license": "MIT",
|
||||
"version": "5.19.0",
|
||||
"resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.19.0.tgz",
|
||||
"integrity": "sha512-f4l5EsmSGF3ggj76YTzKNPY9SnXfFaer7ZccTSGb3urUf54L+cCqyT+UsPr+S5TAr8mZSxJ7g3CgkCe+cVQ6sw==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"classnames": "2.x",
|
||||
"rc-select": "~14.11.0-0",
|
||||
"rc-select": "~14.13.0",
|
||||
"rc-tree": "~5.8.1",
|
||||
"rc-util": "^5.16.1"
|
||||
},
|
||||
@@ -21677,8 +21758,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-util": {
|
||||
"version": "5.38.2",
|
||||
"license": "MIT",
|
||||
"version": "5.39.1",
|
||||
"resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.39.1.tgz",
|
||||
"integrity": "sha512-OW/ERynNDgNr4y0oiFmtes3rbEamXw7GHGbkbNd9iRr7kgT03T6fT0b9WpJ3mbxKhyOcAHnGcIoh5u/cjrC2OQ==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3",
|
||||
"react-is": "^18.2.0"
|
||||
@@ -21694,7 +21776,8 @@
|
||||
},
|
||||
"node_modules/rc-virtual-list": {
|
||||
"version": "3.11.4",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.11.4.tgz",
|
||||
"integrity": "sha512-NbBi0fvyIu26gP69nQBiWgUMTPX3mr4FcuBQiVqagU0BnuX8WQkiivnMs105JROeuUIFczLrlgUhLQwTWV1XDA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.20.0",
|
||||
"classnames": "^2.2.6",
|
||||
@@ -22225,6 +22308,17 @@
|
||||
"react-dom": ">=16.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-product-fruits": {
|
||||
"version": "2.2.6",
|
||||
"resolved": "https://registry.npmjs.org/react-product-fruits/-/react-product-fruits-2.2.6.tgz",
|
||||
"integrity": "sha512-f57m1rCD+Cu8QfFQSpkHJjLaWauPbD01GNrbh4icQaOHA/6bHJGpcoSSEQfAtk3g2PyQBpsDdRvL9jC+hyxhhQ==",
|
||||
"dependencies": {
|
||||
"product-fruits": "^1.0.25"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">= 17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-redux": {
|
||||
"version": "9.1.0",
|
||||
"license": "MIT",
|
||||
@@ -25941,6 +26035,18 @@
|
||||
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/userpilot": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/userpilot/-/userpilot-1.3.1.tgz",
|
||||
"integrity": "sha512-HwOqRhTY829m++tx76E/4wMHLpqG39JPAESXnC54zdYIBASoX1wOO8ItaqpBlf5sH1rdIxU8/dUFa8nMQ60KYQ==",
|
||||
"dependencies": {
|
||||
"@ndhoule/includes": "^2.0.1",
|
||||
"@ndhoule/pick": "^2.0.0",
|
||||
"component-indexof": "0.0.3",
|
||||
"is": "^3.1.0",
|
||||
"obj-case": "^0.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/util": {
|
||||
"version": "0.12.5",
|
||||
"dev": true,
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"@splitsoftware/splitio-react": "^1.11.0",
|
||||
"@tanem/react-nprogress": "^5.0.51",
|
||||
"@vitejs/plugin-react": "^4.2.1",
|
||||
"antd": "^5.14.2",
|
||||
"antd": "^5.15.3",
|
||||
"apollo-link-logger": "^2.0.1",
|
||||
"apollo-link-sentry": "^3.3.0",
|
||||
"axios": "^1.6.7",
|
||||
@@ -54,6 +54,7 @@
|
||||
"react-joyride": "^2.7.4",
|
||||
"react-markdown": "^9.0.1",
|
||||
"react-number-format": "^5.3.3",
|
||||
"react-product-fruits": "^2.2.6",
|
||||
"react-redux": "^9.1.0",
|
||||
"react-resizable": "^3.0.5",
|
||||
"react-router-dom": "^6.22.2",
|
||||
@@ -71,6 +72,7 @@
|
||||
"styled-components": "^6.1.8",
|
||||
"subscriptions-transport-ws": "^0.11.0",
|
||||
"terser-webpack-plugin": "^5.3.10",
|
||||
"userpilot": "^1.3.1",
|
||||
"vite-plugin-ejs": "^1.7.0",
|
||||
"web-vitals": "^3.5.2",
|
||||
"workbox-core": "^7.0.0",
|
||||
@@ -121,6 +123,9 @@
|
||||
"resolutions": {
|
||||
"react-error-overlay": "6.0.9"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@rollup/rollup-linux-x64-gnu": "4.6.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
||||
"@babel/preset-react": "^7.23.3",
|
||||
|
||||
@@ -12,6 +12,12 @@ import App from "./App";
|
||||
import * as Sentry from "@sentry/react";
|
||||
|
||||
import themeProvider from "./themeProvider";
|
||||
import { Userpilot } from 'userpilot'
|
||||
|
||||
// Initialize Userpilot
|
||||
if(import.meta.env.DEV){
|
||||
Userpilot.initialize('NX-69145f08');
|
||||
}
|
||||
|
||||
dayjs.locale("en");
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@ import "./App.styles.scss";
|
||||
import handleBeta from "../utils/betaHandler";
|
||||
import Eula from "../components/eula/eula.component";
|
||||
import InstanceRenderMgr from "../utils/instanceRenderMgr";
|
||||
import { ProductFruits } from 'react-product-fruits';
|
||||
|
||||
const ResetPassword = lazy(() =>
|
||||
import("../pages/reset-password/reset-password.component")
|
||||
);
|
||||
@@ -149,6 +151,7 @@ export function App({
|
||||
|
||||
// Any route that is not assigned and matched will default to the Landing Page component
|
||||
return (
|
||||
|
||||
<Suspense
|
||||
fallback={
|
||||
<LoadingSpinner
|
||||
@@ -159,7 +162,13 @@ export function App({
|
||||
})}
|
||||
/>
|
||||
}
|
||||
>
|
||||
>
|
||||
<ProductFruits //workspaceCode="aoJoEifvezYI0Z0P"
|
||||
language="en" user={{
|
||||
email: currentUser.email,
|
||||
username: currentUser.email,
|
||||
}} />
|
||||
|
||||
<Routes>
|
||||
<Route
|
||||
path="*"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {useMutation, useQuery} from "@apollo/client";
|
||||
import {Button, Form, Popconfirm, Space} from "antd";
|
||||
import {Button, Divider, Form, Popconfirm, Space} from "antd";
|
||||
import dayjs from "../../utils/day";
|
||||
import queryString from "query-string";
|
||||
import React, {useState} from "react";
|
||||
@@ -203,7 +203,7 @@ export function BillDetailEditcontainer({setPartsOrderContext, insertAuditTrail,
|
||||
layout="vertical"
|
||||
>
|
||||
<BillFormContainer form={form} billEdit disabled={exported}/>
|
||||
|
||||
<Divider orientation="left">{t("general.labels.media")}</Divider>
|
||||
{bodyshop.uselocalmediaserver ? (
|
||||
<JobsDocumentsLocalGallery
|
||||
job={{id: data ? data.bills_by_pk.jobid : null}}
|
||||
|
||||
@@ -173,7 +173,11 @@ export function BillDetailEditReturn({
|
||||
</Form>
|
||||
</Modal>
|
||||
<Button
|
||||
disabled={data.bills_by_pk.is_credit_memo || disabled}
|
||||
disabled={
|
||||
data.bills_by_pk.is_credit_memo ||
|
||||
data.bills_by_pk.isinhouse ||
|
||||
disabled
|
||||
}
|
||||
onClick={() => {
|
||||
setOpen(true);
|
||||
}}
|
||||
|
||||
@@ -172,6 +172,7 @@ function BillEnterModalContainer({
|
||||
],
|
||||
},
|
||||
refetchQueries: ["QUERY_PARTS_BILLS_BY_JOBID", "GET_JOB_BY_PK"],
|
||||
awaitRefetchQueries: true
|
||||
});
|
||||
|
||||
await Promise.all(
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -12,6 +12,7 @@ import "./chat-affix.styles.scss";
|
||||
export function ChatAffixContainer({bodyshop, chatVisible}) {
|
||||
const {t} = useTranslation();
|
||||
const client = useApolloClient();
|
||||
|
||||
useEffect(() => {
|
||||
if (!bodyshop || !bodyshop.messagingservicesid) return;
|
||||
|
||||
@@ -31,6 +32,7 @@ export function ChatAffixContainer({bodyshop, chatVisible}) {
|
||||
error
|
||||
);
|
||||
notification.open({
|
||||
key: 'fcm',
|
||||
type: "warning",
|
||||
message: t("general.errors.fcm"),
|
||||
btn: (
|
||||
@@ -62,7 +64,7 @@ export function ChatAffixContainer({bodyshop, chatVisible}) {
|
||||
|
||||
SubscribeToTopic();
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
}, [bodyshop]);
|
||||
|
||||
useEffect(() => {
|
||||
function handleMessage(payload) {
|
||||
|
||||
@@ -61,6 +61,10 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) {
|
||||
value: "courtesycars.status.in",
|
||||
},
|
||||
{
|
||||
text: t("courtesycars.status.inservice"),
|
||||
value: "courtesycars.status.inservice",
|
||||
},
|
||||
{
|
||||
text: t("courtesycars.status.out"),
|
||||
value: "courtesycars.status.out",
|
||||
},
|
||||
@@ -73,7 +77,7 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) {
|
||||
value: "courtesycars.status.leasereturn",
|
||||
},
|
||||
],
|
||||
onFilter: (value, record) => value.includes(record.status),
|
||||
onFilter: (value, record) => record.status === value,
|
||||
sortOrder:
|
||||
state.sortedInfo.columnKey === "status" && state.sortedInfo.order,
|
||||
render: (text, record) => {
|
||||
@@ -176,7 +180,7 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) {
|
||||
title: t("courtesycars.fields.fuel"),
|
||||
dataIndex: "fuel",
|
||||
key: "fuel",
|
||||
sorter: (a, b) => alphaSort(a.fuel, b.fuel),
|
||||
sorter: (a, b) => a.fuel - b.fuel,
|
||||
sortOrder:
|
||||
state.sortedInfo.columnKey === "fuel" && state.sortedInfo.order,
|
||||
render: (text, record) => {
|
||||
@@ -185,12 +189,14 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) {
|
||||
return t("courtesycars.labels.fuel.full");
|
||||
case 88:
|
||||
return t("courtesycars.labels.fuel.78");
|
||||
case 63:
|
||||
case 75:
|
||||
return t("courtesycars.labels.fuel.34");
|
||||
case 63:
|
||||
return t("courtesycars.labels.fuel.58");
|
||||
case 50:
|
||||
return t("courtesycars.labels.fuel.12");
|
||||
case 38:
|
||||
return t("courtesycars.labels.fuel.34");
|
||||
return t("courtesycars.labels.fuel.38");
|
||||
case 25:
|
||||
return t("courtesycars.labels.fuel.14");
|
||||
case 13:
|
||||
|
||||
@@ -23,7 +23,6 @@ export function JobEmployeeAssignments({
|
||||
jobRO,
|
||||
body,
|
||||
refinish,
|
||||
|
||||
prep,
|
||||
csr,
|
||||
handleAdd,
|
||||
@@ -78,7 +77,7 @@ export function JobEmployeeAssignments({
|
||||
setVisibility(false);
|
||||
}}
|
||||
>
|
||||
Assign
|
||||
{t("allocations.actions.assign")}
|
||||
</Button>
|
||||
<Button onClick={() => setVisibility(false)}>Close</Button>
|
||||
</Space>
|
||||
|
||||
@@ -44,13 +44,13 @@ export function JobEmployeeAssignmentsContainer({
|
||||
});
|
||||
if (refetch) refetch();
|
||||
|
||||
insertAuditTrail({
|
||||
jobid: job.id,
|
||||
operation: AuditTrailMapping.jobassignmentchange(operation, name),
|
||||
type: "jobassignmentchange",
|
||||
});
|
||||
|
||||
if (!!result.errors) {
|
||||
if (!!!result.errors) {
|
||||
insertAuditTrail({
|
||||
jobid: job.id,
|
||||
operation: AuditTrailMapping.jobassignmentchange(operation, name),
|
||||
type: "jobassignmentchange",
|
||||
});
|
||||
} else {
|
||||
notification["error"]({
|
||||
message: t("jobs.errors.assigning", {
|
||||
message: JSON.stringify(result.errors),
|
||||
@@ -68,19 +68,21 @@ export function JobEmployeeAssignmentsContainer({
|
||||
variables: {jobId: job.id, job: {[empAssignment]: null}},
|
||||
});
|
||||
|
||||
if (!!result.errors) {
|
||||
notification["error"]({
|
||||
message: t("jobs.errors.assigning", {
|
||||
message: JSON.stringify(result.errors),
|
||||
}),
|
||||
});
|
||||
}
|
||||
insertAuditTrail({
|
||||
jobid: job.id,
|
||||
operation: AuditTrailMapping.jobassignmentremoved(operation),
|
||||
type: "jobassignmentremoved",});
|
||||
setLoading(false);
|
||||
};
|
||||
if (!!!result.errors) {
|
||||
insertAuditTrail({
|
||||
jobid: job.id,
|
||||
operation: AuditTrailMapping.jobassignmentremoved(operation),
|
||||
type: "jobassignmentremoved",
|
||||
});
|
||||
} else {
|
||||
notification["error"]({
|
||||
message: t("jobs.errors.assigning", {
|
||||
message: JSON.stringify(result.errors),
|
||||
}),
|
||||
});
|
||||
}
|
||||
setLoading(false);
|
||||
};
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
||||
@@ -82,7 +82,7 @@ export default function JobReconciliationBillsTable({
|
||||
state.sortedInfo.order,
|
||||
|
||||
render: (text, record) => (
|
||||
<Checkbox disabled checked={record.bill.is_credit_memo}/>
|
||||
<Checkbox checked={record.bill.is_credit_memo}/>
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
@@ -217,6 +217,12 @@ export function JobsDetailHeader({job, bodyshop, disabled}) {
|
||||
{job.owner?.tax_number || ""}
|
||||
</DataLabel>
|
||||
)}
|
||||
<DataLabel
|
||||
label={t("owners.fields.note")}
|
||||
valueStyle={{ overflow: "hidden", textOverflow: "ellipsis" }}
|
||||
>
|
||||
{job.owner?.note || ""}
|
||||
</DataLabel>
|
||||
</div>
|
||||
</Card>
|
||||
</Col>
|
||||
|
||||
@@ -327,7 +327,7 @@ const {Enhanced_Payroll} = treatments;
|
||||
onFilter: (value, record) =>
|
||||
value.includes(record.special_coverage_policy),
|
||||
render: (text, record) => (
|
||||
<Checkbox disabled checked={record.special_coverage_policy} />
|
||||
<Checkbox checked={record.special_coverage_policy} />
|
||||
),
|
||||
},
|
||||
|
||||
|
||||
@@ -241,17 +241,17 @@ export function ShopInfoResponsibilityCenterComponent({bodyshop, form}) {
|
||||
</Select>
|
||||
</Form.Item>
|
||||
|
||||
<Space align="center">
|
||||
d
|
||||
onClick={() => {
|
||||
remove(field.name);
|
||||
}}
|
||||
/>
|
||||
<FormListMoveArrows
|
||||
move={move}
|
||||
index={index}
|
||||
total={fields.length}
|
||||
/>
|
||||
<Space align="center">
|
||||
<DeleteFilled
|
||||
onClick={() => {
|
||||
remove(field.name);
|
||||
}}
|
||||
/>
|
||||
<FormListMoveArrows
|
||||
move={move}
|
||||
index={index}
|
||||
total={fields.length}
|
||||
/>
|
||||
</Space>
|
||||
</LayoutFormRow>
|
||||
</Form.Item>
|
||||
|
||||
@@ -1,92 +1,91 @@
|
||||
import {HeartOutlined} from "@ant-design/icons";
|
||||
import {Select, Space, Tag} from "antd";
|
||||
import React, {forwardRef, useEffect, useState} from "react";
|
||||
import PhoneNumberFormatter from "../../utils/PhoneFormatter";
|
||||
import { HeartOutlined } from '@ant-design/icons';
|
||||
import { Select, Space, Tag } from 'antd';
|
||||
import React, { forwardRef, useEffect, useState } from 'react';
|
||||
import PhoneNumberFormatter from '../../utils/PhoneFormatter';
|
||||
|
||||
const {Option} = Select;
|
||||
const { Option } = Select;
|
||||
|
||||
//To be used as a form element only.
|
||||
|
||||
const VendorSearchSelect = (
|
||||
{value, onChange, options, onSelect, disabled, preferredMake, showPhone},
|
||||
ref
|
||||
{ value, onChange, options, onSelect, disabled, preferredMake, showPhone },
|
||||
ref
|
||||
) => {
|
||||
const [option, setOption] = useState(value);
|
||||
const [option, setOption] = useState(value);
|
||||
|
||||
useEffect(() => {
|
||||
if (value !== option && onChange) {
|
||||
onChange(option);
|
||||
}
|
||||
}, [value, option, onChange]);
|
||||
useEffect(() => {
|
||||
if (value !== option && onChange) {
|
||||
onChange(option);
|
||||
}
|
||||
}, [value, option, onChange]);
|
||||
|
||||
const favorites =
|
||||
preferredMake && options
|
||||
? options.filter(
|
||||
(o) =>
|
||||
o.favorite.filter(
|
||||
(f) => f.toLowerCase() === preferredMake.toLowerCase()
|
||||
).length > 0
|
||||
)
|
||||
: [];
|
||||
const favorites =
|
||||
preferredMake && options
|
||||
? options.filter(
|
||||
(o) =>
|
||||
o.favorite.filter((f) => f.toLowerCase() === preferredMake.toLowerCase()).length > 0
|
||||
)
|
||||
: [];
|
||||
|
||||
return (
|
||||
<Select
|
||||
ref={ref}
|
||||
showSearch
|
||||
value={option}
|
||||
style={{
|
||||
width: "100%",
|
||||
}}
|
||||
popupMatchSelectWidth={false}
|
||||
onChange={setOption}
|
||||
optionFilterProp="name"
|
||||
onSelect={onSelect}
|
||||
disabled={disabled || false}
|
||||
optionLabelProp={"name"}
|
||||
>
|
||||
{favorites
|
||||
? favorites.map((o) => (
|
||||
<Option
|
||||
key={`favorite-${o.id}`}
|
||||
value={o.id}
|
||||
name={o.name}
|
||||
discount={o.discount}
|
||||
>
|
||||
<div className="imex-flex-row">
|
||||
<div style={{flex: 1}}>{o.name}</div>
|
||||
<Space style={{marginLeft: "1rem"}}>
|
||||
<HeartOutlined style={{color: "red"}}/>
|
||||
{o.phone && showPhone && (
|
||||
<PhoneNumberFormatter>{o.phone}</PhoneNumberFormatter>
|
||||
)}
|
||||
{o.discount && o.discount !== 0 ? (
|
||||
<Tag color="green">{`${o.discount * 100}%`}</Tag>
|
||||
) : null}
|
||||
</Space>
|
||||
</div>
|
||||
</Option>
|
||||
))
|
||||
: null}
|
||||
{options
|
||||
? options.map((o) => (
|
||||
<Option key={o.id} value={o.id} name={o.name} discount={o.discount}>
|
||||
<div className="imex-flex-row" style={{width: "100%"}}>
|
||||
<div style={{flex: 1}}>{o.name}</div>
|
||||
return (
|
||||
<Select
|
||||
ref={ref}
|
||||
showSearch
|
||||
value={option}
|
||||
style={{
|
||||
width: '100%',
|
||||
}}
|
||||
labelRender={({ label, value, ...rest }) => {
|
||||
if (!value || !options) return label;
|
||||
const discount = options?.find((o) => o.id === value)?.discount;
|
||||
return (
|
||||
<div className="imex-flex-row" style={{ width: '100%' }}>
|
||||
<div style={{ flex: 1 }}>{label}</div>
|
||||
|
||||
<Space style={{marginLeft: "1rem"}}>
|
||||
{o.phone && showPhone && (
|
||||
<PhoneNumberFormatter>{o.phone}</PhoneNumberFormatter>
|
||||
)}
|
||||
{o.discount && o.discount !== 0 ? (
|
||||
<Tag color="green">{`${o.discount * 100}%`}</Tag>
|
||||
) : null}
|
||||
</Space>
|
||||
</div>
|
||||
</Option>
|
||||
{discount && discount !== 0 ? <Tag color="green">{`${discount * 100}%`}</Tag> : null}
|
||||
</div>
|
||||
);
|
||||
}}
|
||||
popupMatchSelectWidth={false}
|
||||
onChange={setOption}
|
||||
optionFilterProp="name"
|
||||
onSelect={onSelect}
|
||||
disabled={disabled || false}
|
||||
optionLabelProp={'name'}
|
||||
>
|
||||
{favorites
|
||||
? favorites.map((o) => (
|
||||
<Option key={`favorite-${o.id}`} value={o.id} name={o.name} discount={o.discount}>
|
||||
<div className="imex-flex-row">
|
||||
<div style={{ flex: 1 }}>{o.name}</div>
|
||||
<Space style={{ marginLeft: '1rem' }}>
|
||||
<HeartOutlined style={{ color: 'red' }} />
|
||||
{o.phone && showPhone && <PhoneNumberFormatter>{o.phone}</PhoneNumberFormatter>}
|
||||
{o.discount && o.discount !== 0 ? (
|
||||
<Tag color="green">{`${o.discount * 100}%`}</Tag>
|
||||
) : null}
|
||||
</Space>
|
||||
</div>
|
||||
</Option>
|
||||
))
|
||||
: null}
|
||||
{options
|
||||
? options.map((o) => (
|
||||
<Option key={o.id} value={o.id} name={o.name} discount={o.discount}>
|
||||
<div className="imex-flex-row" style={{ width: '100%' }}>
|
||||
<div style={{ flex: 1 }}>{o.name}</div>
|
||||
|
||||
))
|
||||
: null}
|
||||
</Select>
|
||||
);
|
||||
<Space style={{ marginLeft: '1rem' }}>
|
||||
{o.phone && showPhone && <PhoneNumberFormatter>{o.phone}</PhoneNumberFormatter>}
|
||||
{o.discount && o.discount !== 0 ? (
|
||||
<Tag color="green">{`${o.discount * 100}%`}</Tag>
|
||||
) : null}
|
||||
</Space>
|
||||
</div>
|
||||
</Option>
|
||||
))
|
||||
: null}
|
||||
</Select>
|
||||
);
|
||||
};
|
||||
export default forwardRef(VendorSearchSelect);
|
||||
|
||||
@@ -721,6 +721,7 @@ export const GET_JOB_BY_PK = gql`
|
||||
other_amount_payable
|
||||
owner {
|
||||
id
|
||||
note
|
||||
ownr_addr1
|
||||
ownr_addr2
|
||||
ownr_city
|
||||
|
||||
@@ -126,7 +126,7 @@ export function BillsListPage({
|
||||
state.sortedInfo.columnKey === "is_credit_memo" &&
|
||||
state.sortedInfo.order,
|
||||
render: (text, record) => (
|
||||
<Checkbox disabled checked={record.is_credit_memo}/>
|
||||
<Checkbox checked={record.is_credit_memo}/>
|
||||
),
|
||||
},
|
||||
{
|
||||
@@ -136,7 +136,7 @@ export function BillsListPage({
|
||||
sorter: (a, b) => a.exported - b.exported,
|
||||
sortOrder:
|
||||
state.sortedInfo.columnKey === "exported" && state.sortedInfo.order,
|
||||
render: (text, record) => <Checkbox disabled checked={record.exported}/>,
|
||||
render: (text, record) => <Checkbox checked={record.exported}/>,
|
||||
},
|
||||
{
|
||||
title: t("general.labels.actions"),
|
||||
|
||||
@@ -162,26 +162,24 @@ sorter: (a, b) => alphaSort(a.ro_number, b.ro_number),
|
||||
{ text: "False", value: false },
|
||||
],
|
||||
onFilter: (value, record) => record.successful === value,
|
||||
render: (text, record) => (
|
||||
<Checkbox disabled checked={record.successful}/>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: t("general.labels.message"),
|
||||
dataIndex: "message",
|
||||
key: "message",
|
||||
render: (text, record) =>
|
||||
record.message && (
|
||||
<div>
|
||||
<ul>
|
||||
{JSON.parse(record.message).map((m, idx) => (
|
||||
<li key={idx}>{m}</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
),
|
||||
},
|
||||
];
|
||||
render: (text, record) => <Checkbox checked={record.successful} />,
|
||||
},
|
||||
{
|
||||
title: t("general.labels.message"),
|
||||
dataIndex: "message",
|
||||
key: "message",
|
||||
render: (text, record) =>
|
||||
record.message && (
|
||||
<div>
|
||||
<ul>
|
||||
{JSON.parse(record.message).map((m, idx) => (
|
||||
<li key={idx}>{m}</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
<Card
|
||||
|
||||
@@ -371,8 +371,9 @@ export function JobsCloseComponent({job, bodyshop, jobRO, insertAuditTrail}) {
|
||||
</Form.Item>
|
||||
)}
|
||||
</LayoutFormRow>
|
||||
<Divider>{t("jobs.labels.multipayers")}</Divider>
|
||||
|
||||
{Qb_Multi_Ar.treatment === "on" && (
|
||||
<><Divider>{t("jobs.labels.multipayers")}</Divider>
|
||||
<Row gutter={[16, 16]}>
|
||||
<Col lg={8} md={24}>
|
||||
<Form.List
|
||||
@@ -451,7 +452,9 @@ export function JobsCloseComponent({job, bodyshop, jobRO, insertAuditTrail}) {
|
||||
<DeleteFilled
|
||||
disabled={jobRO}
|
||||
onClick={() => {
|
||||
if(!jobRO){
|
||||
remove(field.name);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Space>
|
||||
@@ -529,6 +532,7 @@ export function JobsCloseComponent({job, bodyshop, jobRO, insertAuditTrail}) {
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
</>
|
||||
)}
|
||||
<Divider/>
|
||||
<JobsCloseLines job={job}/>
|
||||
|
||||
@@ -332,7 +332,7 @@ export function JobsDetailPage({
|
||||
{
|
||||
key: "partssublet",
|
||||
icon: <ToolFilled/>,
|
||||
label: t("menus.jobsdetail.partssublet"),
|
||||
label: HasFeatureAccess({featureName: "bills", bodyshop}) ? t("menus.jobsdetail.partssublet") : t("menus.jobsdetail.parts"),
|
||||
children: <JobsDetailPliContainer job={job}/>,
|
||||
},
|
||||
...InstanceRenderManager({ imex: true, rome: true, promanager: HasFeatureAccess({ featureName: 'timetickets', bodyshop }) }) ? [ {
|
||||
|
||||
@@ -541,13 +541,12 @@ export function Manage({conflict, bodyshop,enableJoyRide,joyRideSteps,setJoyRide
|
||||
}}
|
||||
>
|
||||
<div style={{ display: 'flex' }}>
|
||||
{`Joy Ride Status: ${enableJoyRide}`}
|
||||
<div>
|
||||
{`${InstanceRenderManager({
|
||||
imex: t('titles.imexonline'),
|
||||
rome: t('titles.romeonline'),
|
||||
promanager: t('titles.promanager'),
|
||||
})} ${import.meta.env.VITE_APP_GIT_SHA || 'Local Build'} - ${
|
||||
})} - ${
|
||||
import.meta.env.VITE_APP_GIT_SHA_DATE
|
||||
}`}
|
||||
</div>
|
||||
|
||||
@@ -47,6 +47,7 @@ import client from "../../utils/GraphQLClient";
|
||||
import {QUERY_EULA} from "../../graphql/bodyshop.queries";
|
||||
import day from "../../utils/day";
|
||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||
import { Userpilot } from "userpilot";
|
||||
|
||||
const fpPromise = FingerprintJS.load();
|
||||
|
||||
@@ -227,6 +228,15 @@ export function* signInSuccessSaga({payload}) {
|
||||
window.$crisp.push(['set', 'user:nickname', [payload.displayName || payload.email]]);
|
||||
window.$crisp.push(['set', 'session:segments', [['user']]]);
|
||||
},
|
||||
promanager: () =>{
|
||||
Userpilot.identify(
|
||||
payload.email,
|
||||
{
|
||||
email: payload.email,
|
||||
}
|
||||
);
|
||||
console.log("*** Userpilot identified.")
|
||||
}
|
||||
|
||||
});
|
||||
} catch (error) {
|
||||
|
||||
@@ -1165,6 +1165,7 @@
|
||||
"loadingshop": "Loading shop data...",
|
||||
"loggingin": "Authorizing...",
|
||||
"markedexported": "Manually marked as exported.",
|
||||
"media": "Media",
|
||||
"message": "Message",
|
||||
"monday": "Monday",
|
||||
"na": "N/A",
|
||||
@@ -2174,6 +2175,7 @@
|
||||
"insurance": "Insurance Information",
|
||||
"labor": "Labor",
|
||||
"lifecycle": "Lifecycle",
|
||||
"parts": "Parts",
|
||||
"partssublet": "Parts & Bills",
|
||||
"rates": "Rates",
|
||||
"repairdata": "Repair Data",
|
||||
|
||||
@@ -2174,6 +2174,7 @@
|
||||
"insurance": "",
|
||||
"labor": "Labor",
|
||||
"lifecycle": "",
|
||||
"parts": "",
|
||||
"partssublet": "Piezas / Subarrendamiento",
|
||||
"rates": "",
|
||||
"repairdata": "Datos de reparación",
|
||||
|
||||
@@ -2174,6 +2174,7 @@
|
||||
"insurance": "",
|
||||
"labor": "La main d'oeuvre",
|
||||
"lifecycle": "",
|
||||
"parts": "",
|
||||
"partssublet": "Pièces / Sous-location",
|
||||
"rates": "",
|
||||
"repairdata": "Données de réparation",
|
||||
|
||||
@@ -105,6 +105,9 @@ export default defineConfig({
|
||||
react(),
|
||||
// CompressionPlugin(), //Cloudfront already compresses assets, so not needed.
|
||||
],
|
||||
define:{
|
||||
"APP_VERSION": JSON.stringify(process.env.npm_package_version)
|
||||
},
|
||||
server: {
|
||||
host: true,
|
||||
port: 3000,
|
||||
|
||||
@@ -832,6 +832,13 @@
|
||||
table:
|
||||
name: ioevents
|
||||
schema: public
|
||||
- name: ioevents
|
||||
using:
|
||||
foreign_key_constraint_on:
|
||||
column: bodyshopid
|
||||
table:
|
||||
name: ioevents
|
||||
schema: public
|
||||
- name: jobs
|
||||
using:
|
||||
foreign_key_constraint_on:
|
||||
@@ -867,6 +874,13 @@
|
||||
table:
|
||||
name: tasks
|
||||
schema: public
|
||||
- name: tasks
|
||||
using:
|
||||
foreign_key_constraint_on:
|
||||
column: bodyshopid
|
||||
table:
|
||||
name: tasks
|
||||
schema: public
|
||||
- name: timetickets
|
||||
using:
|
||||
foreign_key_constraint_on:
|
||||
@@ -3353,6 +3367,13 @@
|
||||
table:
|
||||
name: tasks
|
||||
schema: public
|
||||
- name: tasks
|
||||
using:
|
||||
foreign_key_constraint_on:
|
||||
column: jobid
|
||||
table:
|
||||
name: tasks
|
||||
schema: public
|
||||
- name: timetickets
|
||||
using:
|
||||
foreign_key_constraint_on:
|
||||
@@ -5057,6 +5078,13 @@
|
||||
table:
|
||||
name: tasks
|
||||
schema: public
|
||||
- name: tasks
|
||||
using:
|
||||
foreign_key_constraint_on:
|
||||
column: partsorderid
|
||||
table:
|
||||
name: tasks
|
||||
schema: public
|
||||
insert_permissions:
|
||||
- role: user
|
||||
permission:
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
DROP TABLE "public"."tasks";
|
||||
@@ -0,0 +1,18 @@
|
||||
CREATE TABLE "public"."tasks" ("id" uuid NOT NULL DEFAULT gen_random_uuid(), "created_at" timestamptz NOT NULL DEFAULT now(), "updated_at" timestamptz NOT NULL DEFAULT now(), "title" text NOT NULL, "description" Text, "deleted" boolean NOT NULL DEFAULT false, "deleted_at" timestamptz, "due_date" timestamptz, "created_by" text NOT NULL, "assigned_to" Text, "completed" boolean NOT NULL DEFAULT false, "completed_at" timestamptz, "remind_at" timestamptz, "priority" numeric, "bodyshopid" UUID NOT NULL, "jobid" UUID NOT NULL, "joblineid" UUID, "partsorderid" UUID, "billid" UUID, PRIMARY KEY ("id") , FOREIGN KEY ("created_by") REFERENCES "public"."users"("email") ON UPDATE restrict ON DELETE restrict, FOREIGN KEY ("assigned_to") REFERENCES "public"."users"("email") ON UPDATE restrict ON DELETE restrict, FOREIGN KEY ("bodyshopid") REFERENCES "public"."bodyshops"("id") ON UPDATE restrict ON DELETE restrict, FOREIGN KEY ("jobid") REFERENCES "public"."jobs"("id") ON UPDATE cascade ON DELETE cascade, FOREIGN KEY ("joblineid") REFERENCES "public"."joblines"("id") ON UPDATE set null ON DELETE set null, FOREIGN KEY ("partsorderid") REFERENCES "public"."parts_orders"("id") ON UPDATE set null ON DELETE set null, FOREIGN KEY ("billid") REFERENCES "public"."bills"("id") ON UPDATE set null ON DELETE set null);
|
||||
CREATE OR REPLACE FUNCTION "public"."set_current_timestamp_updated_at"()
|
||||
RETURNS TRIGGER AS $$
|
||||
DECLARE
|
||||
_new record;
|
||||
BEGIN
|
||||
_new := NEW;
|
||||
_new."updated_at" = NOW();
|
||||
RETURN _new;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
CREATE TRIGGER "set_public_tasks_updated_at"
|
||||
BEFORE UPDATE ON "public"."tasks"
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE "public"."set_current_timestamp_updated_at"();
|
||||
COMMENT ON TRIGGER "set_public_tasks_updated_at" ON "public"."tasks"
|
||||
IS 'trigger to set value of column "updated_at" to current timestamp on row update';
|
||||
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||
@@ -16,7 +16,7 @@ const CalculateAllocations =
|
||||
const CdkBase = require("../../web-sockets/web-socket");
|
||||
const moment = require("moment-timezone");
|
||||
const Dinero = require("dinero.js");
|
||||
const { default: InstanceManager } = require("../../utils/instanceMgr").default;
|
||||
const InstanceManager = require("../../utils/instanceMgr").default;
|
||||
const axios = AxiosLib.create();
|
||||
|
||||
axios.interceptors.request.use((x) => {
|
||||
@@ -661,7 +661,7 @@ async function InsertAccountPostingData(socket) {
|
||||
.toISOString(), //"0001-01-01T00:00:00.0000000Z",
|
||||
Description: socket.txEnvelope.story,
|
||||
//AdditionalInfo: "String",
|
||||
Source: InstanceManager({imex: t("titles.imexonline"), rome:t("titles.romeonline")}),
|
||||
Source: InstanceManager({imex: "ImEX Online", rome:"Rome Online"}),
|
||||
Lines: wips,
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user