diff --git a/client/package-lock.json b/client/package-lock.json index ef55704f8..baf7a2326 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -16,13 +16,13 @@ "@fingerprintjs/fingerprintjs": "^4.2.1", "@jsreport/browser-client": "^3.1.0", "@reduxjs/toolkit": "^2.0.1", - "@sentry/react": "^7.91.0", - "@sentry/tracing": "^7.91.0", + "@sentry/react": "^7.92.0", + "@sentry/tracing": "^7.92.0", "@splitsoftware/splitio-react": "^1.10.2", "@tanem/react-nprogress": "^5.0.51", - "antd": "^5.12.5", + "antd": "^5.12.8", "apollo-link-logger": "^2.0.1", - "axios": "^1.6.3", + "axios": "^1.6.4", "craco-less": "^3.0.1", "dayjs": "^1.11.10", "dayjs-business-days2": "^1.2.2", @@ -33,7 +33,7 @@ "exifr": "^7.1.3", "firebase": "^10.7.1", "graphql": "^16.6.0", - "i18next": "^23.7.12", + "i18next": "^23.7.16", "i18next-browser-languagedetector": "^7.0.2", "jsoneditor": "^10.0.0", "jsreport-browser-client-dist": "^1.3.0", @@ -41,7 +41,7 @@ "logrocket": "^7.0.0", "markerjs2": "^2.31.4", "normalize-url": "^8.0.0", - "phone": "^3.1.41", + "phone": "^3.1.42", "preval.macro": "^5.0.0", "prop-types": "^15.8.1", "query-string": "^8.1.0", @@ -50,7 +50,7 @@ "react": "^18.2.0", "react-big-calendar": "^1.8.5", "react-color": "^2.19.3", - "react-cookie": "^6.1.1", + "react-cookie": "^7.0.0", "react-dom": "^18.2.0", "react-drag-listview": "^2.0.0", "react-grid-gallery": "^1.0.0", @@ -70,11 +70,11 @@ "recharts": "^2.4.3", "redux": "^5.0.1", "redux-persist": "^6.0.0", - "redux-saga": "^1.2.3", + "redux-saga": "^1.3.0", "redux-state-sync": "^3.1.4", - "reselect": "^5.0.1", - "sass": "^1.58.3", - "socket.io-client": "^4.7.2", + "reselect": "^5.1.0", + "sass": "^1.69.7", + "socket.io-client": "^4.7.3", "styled-components": "^6.1.6", "subscriptions-transport-ws": "^0.11.0", "terser-webpack-plugin": "^5.3.10", @@ -136,11 +136,11 @@ } }, "node_modules/@ant-design/colors": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.0.0.tgz", - "integrity": "sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.0.2.tgz", + "integrity": "sha512-7KJkhTiPiLHSu+LmMJnehfJ6242OCxSlR3xHVBecYxnMW8MS/878NXct1GqYARyL59fyeFdKRxXTfvR9SnDgJg==", "dependencies": { - "@ctrl/tinycolor": "^3.4.0" + "@ctrl/tinycolor": "^3.6.1" } }, "node_modules/@ant-design/compatible": { @@ -168,15 +168,15 @@ "integrity": "sha512-LrX0OGZtW+W6iLnTAqnTaoIsRelYeuLZWsrmBJFUXDALQphPsN8cE5DCsmoSlL0QYb94BQxINiuS70Ar/8BNgA==" }, "node_modules/@ant-design/cssinjs": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.18.1.tgz", - "integrity": "sha512-1JURAPrsjK1GwpqByTq3bJ7nF7lbMKDZpehqeR2n8/IR5O58/W1U4VcOeaw5ZyTHri3tEMcom7dyP2tvxpW54g==", + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.18.2.tgz", + "integrity": "sha512-514V9rjLaFYb3v4s55/8bg2E6fb81b99s3crDZf4nSwtiDLLXs8axnIph+q2TVkY2hbJPZOn/cVsVcnLkzFy7w==", "dependencies": { "@babel/runtime": "^7.11.1", "@emotion/hash": "^0.8.0", "@emotion/unitless": "^0.7.5", "classnames": "^2.3.1", - "csstype": "3.1.2", + "csstype": "^3.1.3", "rc-util": "^5.35.0", "stylis": "^4.0.13" }, @@ -185,6 +185,11 @@ "react-dom": ">=16.0.0" } }, + "node_modules/@ant-design/cssinjs/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, "node_modules/@ant-design/icons": { "version": "5.2.6", "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.2.6.tgz", @@ -4203,14 +4208,14 @@ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "node_modules/@rc-component/color-picker": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-1.4.1.tgz", - "integrity": "sha512-vh5EWqnsayZa/JwUznqDaPJz39jznx/YDbyBuVJntv735tKXKwEUZZb2jYEldOg+NKWZwtALjGMrNeGBmqFoEw==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-1.5.1.tgz", + "integrity": "sha512-onyAFhWKXuG4P162xE+7IgaJkPkwM94XlOYnQuu69XdXWMfxpeFi6tpJBsieIMV7EnyLV5J3lDzdLiFeK0iEBA==", "dependencies": { - "@babel/runtime": "^7.10.1", - "@ctrl/tinycolor": "^3.6.0", + "@babel/runtime": "^7.23.6", + "@ctrl/tinycolor": "^3.6.1", "classnames": "^2.2.6", - "rc-util": "^5.30.0" + "rc-util": "^5.38.1" }, "peerDependencies": { "react": ">=16.9.0", @@ -4315,9 +4320,9 @@ } }, "node_modules/@redux-saga/core": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.2.3.tgz", - "integrity": "sha512-U1JO6ncFBAklFTwoQ3mjAeQZ6QGutsJzwNBjgVLSWDpZTRhobUzuVDS1qH3SKGJD8fvqoaYOjp6XJ3gCmeZWgA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.3.0.tgz", + "integrity": "sha512-L+i+qIGuyWn7CIg7k1MteHGfttKPmxwZR5E7OsGikCL2LzYA0RERlaUY00Y3P3ZV2EYgrsYlBrGs6cJP5OKKqA==", "dependencies": { "@babel/runtime": "^7.6.3", "@redux-saga/deferred": "^1.2.1", @@ -4325,7 +4330,6 @@ "@redux-saga/is": "^1.1.3", "@redux-saga/symbols": "^1.1.3", "@redux-saga/types": "^1.2.1", - "redux": "^4.0.4", "typescript-tuple": "^2.2.1" }, "funding": { @@ -4333,14 +4337,6 @@ "url": "https://opencollective.com/redux-saga" } }, - "node_modules/@redux-saga/core/node_modules/redux": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", - "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", - "dependencies": { - "@babel/runtime": "^7.9.2" - } - }, "node_modules/@redux-saga/deferred": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@redux-saga/deferred/-/deferred-1.2.1.tgz", @@ -4512,44 +4508,44 @@ "integrity": "sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA==" }, "node_modules/@sentry-internal/feedback": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.91.0.tgz", - "integrity": "sha512-SJKTSaz68F5YIwF79EttBm915M2LnacgZMYRnRumyTmMKnebGhYQLwWbZdpaDvOa1U18dgRajDX8Qed/8A3tXw==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.92.0.tgz", + "integrity": "sha512-/jEALRtVqboxB9kcK2tag8QCO6XANTlGBb9RV3oeGXJe0DDNJXRq6wVZbfgztXJRrfgx4XVDcNt1pRVoGGG++g==", "dependencies": { - "@sentry/core": "7.91.0", - "@sentry/types": "7.91.0", - "@sentry/utils": "7.91.0" + "@sentry/core": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/feedback/node_modules/@sentry/core": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.91.0.tgz", - "integrity": "sha512-tu+gYq4JrTdrR+YSh5IVHF0fJi/Pi9y0HZ5H9HnYy+UMcXIotxf6hIEaC6ZKGeLWkGXffz2gKpQLe/g6vy/lPA==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz", + "integrity": "sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==", "dependencies": { - "@sentry/types": "7.91.0", - "@sentry/utils": "7.91.0" + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry-internal/feedback/node_modules/@sentry/types": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.91.0.tgz", - "integrity": "sha512-bcQnb7J3P3equbCUc+sPuHog2Y47yGD2sCkzmnZBjvBT0Z1B4f36fI/5WjyZhTjLSiOdg3F2otwvikbMjmBDew==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz", + "integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==", "engines": { "node": ">=8" } }, "node_modules/@sentry-internal/feedback/node_modules/@sentry/utils": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.91.0.tgz", - "integrity": "sha512-fvxjrEbk6T6Otu++Ax9ntlQ0sGRiwSC179w68aC3u26Wr30FAIRKqHTCCdc2jyWk7Gd9uWRT/cq+g8NG/8BfSg==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz", + "integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==", "dependencies": { - "@sentry/types": "7.91.0" + "@sentry/types": "7.92.0" }, "engines": { "node": ">=8" @@ -4570,60 +4566,60 @@ } }, "node_modules/@sentry/browser": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.91.0.tgz", - "integrity": "sha512-lJv3x/xekzC/biiyAsVCioq2XnKNOZhI6jY3ZzLJZClYV8eKRi7D3KCsHRvMiCdGak1d/6sVp8F4NYY+YiWy1Q==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.92.0.tgz", + "integrity": "sha512-loMr02/zQ38u8aQhYLtIBg0i5n3ps2e3GUXrt3CdsJQdkRYfa62gcrE7SzvoEpMVHTk7VOI4fWGht8cWw/1k3A==", "dependencies": { - "@sentry-internal/feedback": "7.91.0", - "@sentry-internal/tracing": "7.91.0", - "@sentry/core": "7.91.0", - "@sentry/replay": "7.91.0", - "@sentry/types": "7.91.0", - "@sentry/utils": "7.91.0" + "@sentry-internal/feedback": "7.92.0", + "@sentry-internal/tracing": "7.92.0", + "@sentry/core": "7.92.0", + "@sentry/replay": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser/node_modules/@sentry-internal/tracing": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.91.0.tgz", - "integrity": "sha512-JH5y6gs6BS0its7WF2DhySu7nkhPDfZcdpAXldxzIlJpqFkuwQKLU5nkYJpiIyZz1NHYYtW5aum2bV2oCOdDRA==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.92.0.tgz", + "integrity": "sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA==", "dependencies": { - "@sentry/core": "7.91.0", - "@sentry/types": "7.91.0", - "@sentry/utils": "7.91.0" + "@sentry/core": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser/node_modules/@sentry/core": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.91.0.tgz", - "integrity": "sha512-tu+gYq4JrTdrR+YSh5IVHF0fJi/Pi9y0HZ5H9HnYy+UMcXIotxf6hIEaC6ZKGeLWkGXffz2gKpQLe/g6vy/lPA==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz", + "integrity": "sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==", "dependencies": { - "@sentry/types": "7.91.0", - "@sentry/utils": "7.91.0" + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser/node_modules/@sentry/types": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.91.0.tgz", - "integrity": "sha512-bcQnb7J3P3equbCUc+sPuHog2Y47yGD2sCkzmnZBjvBT0Z1B4f36fI/5WjyZhTjLSiOdg3F2otwvikbMjmBDew==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz", + "integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==", "engines": { "node": ">=8" } }, "node_modules/@sentry/browser/node_modules/@sentry/utils": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.91.0.tgz", - "integrity": "sha512-fvxjrEbk6T6Otu++Ax9ntlQ0sGRiwSC179w68aC3u26Wr30FAIRKqHTCCdc2jyWk7Gd9uWRT/cq+g8NG/8BfSg==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz", + "integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==", "dependencies": { - "@sentry/types": "7.91.0" + "@sentry/types": "7.92.0" }, "engines": { "node": ">=8" @@ -4821,13 +4817,13 @@ } }, "node_modules/@sentry/react": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.91.0.tgz", - "integrity": "sha512-7JH2rWaX3WKHHvBcZQ4f/KnkYIXTf7hMojRFncUwPocdtDlhJw/JUvjAYNpEysixXIgsMes3B32lmtZjGjRhwQ==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.92.0.tgz", + "integrity": "sha512-lTvrLuvxtGEZbkW6NHru03K6eyixKyBliwiLwO+k37FK7Ha8Bwat2m77weyizWCdQ6DKlVazJNppkNeAlACIvQ==", "dependencies": { - "@sentry/browser": "7.91.0", - "@sentry/types": "7.91.0", - "@sentry/utils": "7.91.0", + "@sentry/browser": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -4838,132 +4834,132 @@ } }, "node_modules/@sentry/react/node_modules/@sentry/types": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.91.0.tgz", - "integrity": "sha512-bcQnb7J3P3equbCUc+sPuHog2Y47yGD2sCkzmnZBjvBT0Z1B4f36fI/5WjyZhTjLSiOdg3F2otwvikbMjmBDew==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz", + "integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==", "engines": { "node": ">=8" } }, "node_modules/@sentry/react/node_modules/@sentry/utils": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.91.0.tgz", - "integrity": "sha512-fvxjrEbk6T6Otu++Ax9ntlQ0sGRiwSC179w68aC3u26Wr30FAIRKqHTCCdc2jyWk7Gd9uWRT/cq+g8NG/8BfSg==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz", + "integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==", "dependencies": { - "@sentry/types": "7.91.0" + "@sentry/types": "7.92.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/replay": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.91.0.tgz", - "integrity": "sha512-XwbesnLLNtaVXKtDoyBB96GxJuhGi9zy3a662Ba/McmumCnkXrMQYpQPh08U7MgkTyDRgjDwm7PXDhiKpcb03g==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.92.0.tgz", + "integrity": "sha512-G1t9Uvc9cR8VpNkElwvHIMGzykjIKikb10n0tfVd3e+rBPMCCjCPWOduwG6jZYxcvCjTpqmJh6NSLXxL/Mt4JA==", "dependencies": { - "@sentry-internal/tracing": "7.91.0", - "@sentry/core": "7.91.0", - "@sentry/types": "7.91.0", - "@sentry/utils": "7.91.0" + "@sentry-internal/tracing": "7.92.0", + "@sentry/core": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/replay/node_modules/@sentry-internal/tracing": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.91.0.tgz", - "integrity": "sha512-JH5y6gs6BS0its7WF2DhySu7nkhPDfZcdpAXldxzIlJpqFkuwQKLU5nkYJpiIyZz1NHYYtW5aum2bV2oCOdDRA==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.92.0.tgz", + "integrity": "sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA==", "dependencies": { - "@sentry/core": "7.91.0", - "@sentry/types": "7.91.0", - "@sentry/utils": "7.91.0" + "@sentry/core": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/replay/node_modules/@sentry/core": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.91.0.tgz", - "integrity": "sha512-tu+gYq4JrTdrR+YSh5IVHF0fJi/Pi9y0HZ5H9HnYy+UMcXIotxf6hIEaC6ZKGeLWkGXffz2gKpQLe/g6vy/lPA==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz", + "integrity": "sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==", "dependencies": { - "@sentry/types": "7.91.0", - "@sentry/utils": "7.91.0" + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/replay/node_modules/@sentry/types": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.91.0.tgz", - "integrity": "sha512-bcQnb7J3P3equbCUc+sPuHog2Y47yGD2sCkzmnZBjvBT0Z1B4f36fI/5WjyZhTjLSiOdg3F2otwvikbMjmBDew==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz", + "integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==", "engines": { "node": ">=8" } }, "node_modules/@sentry/replay/node_modules/@sentry/utils": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.91.0.tgz", - "integrity": "sha512-fvxjrEbk6T6Otu++Ax9ntlQ0sGRiwSC179w68aC3u26Wr30FAIRKqHTCCdc2jyWk7Gd9uWRT/cq+g8NG/8BfSg==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz", + "integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==", "dependencies": { - "@sentry/types": "7.91.0" + "@sentry/types": "7.92.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/tracing": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.91.0.tgz", - "integrity": "sha512-IlSAMvqfCL/2TwwN4Tmk6bGMgilGruv5oIJ1GMenVZk53bHwjpjzMbd0ms8+S5zJwAgTQXoCbRhaFFrNmptteQ==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.92.0.tgz", + "integrity": "sha512-1+TFFPVEdax4dNi68gin6MENiyGe9mOuNXfjulrP5eCzUEByus5HAxeDI/LLQ1hArfn048AzwSwKUsS2fO5sbg==", "dependencies": { - "@sentry-internal/tracing": "7.91.0" + "@sentry-internal/tracing": "7.92.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/tracing/node_modules/@sentry-internal/tracing": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.91.0.tgz", - "integrity": "sha512-JH5y6gs6BS0its7WF2DhySu7nkhPDfZcdpAXldxzIlJpqFkuwQKLU5nkYJpiIyZz1NHYYtW5aum2bV2oCOdDRA==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.92.0.tgz", + "integrity": "sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA==", "dependencies": { - "@sentry/core": "7.91.0", - "@sentry/types": "7.91.0", - "@sentry/utils": "7.91.0" + "@sentry/core": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/tracing/node_modules/@sentry/core": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.91.0.tgz", - "integrity": "sha512-tu+gYq4JrTdrR+YSh5IVHF0fJi/Pi9y0HZ5H9HnYy+UMcXIotxf6hIEaC6ZKGeLWkGXffz2gKpQLe/g6vy/lPA==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz", + "integrity": "sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==", "dependencies": { - "@sentry/types": "7.91.0", - "@sentry/utils": "7.91.0" + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/tracing/node_modules/@sentry/types": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.91.0.tgz", - "integrity": "sha512-bcQnb7J3P3equbCUc+sPuHog2Y47yGD2sCkzmnZBjvBT0Z1B4f36fI/5WjyZhTjLSiOdg3F2otwvikbMjmBDew==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz", + "integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==", "engines": { "node": ">=8" } }, "node_modules/@sentry/tracing/node_modules/@sentry/utils": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.91.0.tgz", - "integrity": "sha512-fvxjrEbk6T6Otu++Ax9ntlQ0sGRiwSC179w68aC3u26Wr30FAIRKqHTCCdc2jyWk7Gd9uWRT/cq+g8NG/8BfSg==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz", + "integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==", "dependencies": { - "@sentry/types": "7.91.0" + "@sentry/types": "7.92.0" }, "engines": { "node": ">=8" @@ -5478,9 +5474,9 @@ } }, "node_modules/@types/cookie": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.4.tgz", - "integrity": "sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" }, "node_modules/@types/d3-array": { "version": "3.2.1", @@ -6544,23 +6540,22 @@ } }, "node_modules/antd": { - "version": "5.12.5", - "resolved": "https://registry.npmjs.org/antd/-/antd-5.12.5.tgz", - "integrity": "sha512-m9r9VhTmANS4kdBwHcxI4QWIGoZh3LspXNb2SxoezRSUZ9RUFpf+gO0AjPx8EPeO/nLKsHAoCSLza9r041bAgw==", + "version": "5.12.8", + "resolved": "https://registry.npmjs.org/antd/-/antd-5.12.8.tgz", + "integrity": "sha512-R2CRcB+aaVZurb3J0IKpBRWq5kW4CLcSqDF58/QBsqYdzK7XjSvM8+eF3rWVRUDbSJfGmyW7I80ywNRYpW1+vA==", "dependencies": { - "@ant-design/colors": "^7.0.0", - "@ant-design/cssinjs": "^1.18.1", + "@ant-design/colors": "^7.0.2", + "@ant-design/cssinjs": "^1.18.2", "@ant-design/icons": "^5.2.6", "@ant-design/react-slick": "~1.0.2", - "@babel/runtime": "^7.23.4", "@ctrl/tinycolor": "^3.6.1", - "@rc-component/color-picker": "~1.4.1", + "@rc-component/color-picker": "~1.5.1", "@rc-component/mutate-observer": "^1.1.0", "@rc-component/tour": "~1.11.1", "@rc-component/trigger": "^1.18.2", - "classnames": "^2.3.2", + "classnames": "^2.5.1", "copy-to-clipboard": "^3.3.3", - "dayjs": "^1.11.1", + "dayjs": "^1.11.10", "qrcode.react": "^3.1.0", "rc-cascader": "~3.20.0", "rc-checkbox": "~3.1.0", @@ -6576,7 +6571,7 @@ "rc-menu": "~9.12.4", "rc-motion": "^2.9.0", "rc-notification": "~5.3.0", - "rc-pagination": "~4.0.3", + "rc-pagination": "~4.0.4", "rc-picker": "~3.14.6", "rc-progress": "~3.5.1", "rc-rate": "~2.12.0", @@ -6592,7 +6587,7 @@ "rc-tooltip": "~6.1.3", "rc-tree": "~5.8.2", "rc-tree-select": "~5.15.0", - "rc-upload": "~4.3.5", + "rc-upload": "~4.5.2", "rc-util": "^5.38.1", "scroll-into-view-if-needed": "^3.1.0", "throttle-debounce": "^5.0.0" @@ -6966,11 +6961,11 @@ } }, "node_modules/axios": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.3.tgz", - "integrity": "sha512-fWyNdeawGam70jXSVlKl+SUNVcL6j6W79CuSIPfi6HnDUmSCH6gyUys/HrqHeA/wU0Az41rRgean494d0Jb+ww==", + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.4.tgz", + "integrity": "sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A==", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.4", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -7814,9 +7809,9 @@ "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" }, "node_modules/classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, "node_modules/clean-css": { "version": "5.3.3", @@ -11089,9 +11084,9 @@ "integrity": "sha512-GmrB+b6woz6CCdQe6w1GHs/1lt25l7SR5hmhF8jRdarpv/OgjLyuQygLu1makJapixeb1aQhP/Oa1iKi93o/aQ==" }, "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "funding": [ { "type": "individual", @@ -12009,9 +12004,9 @@ } }, "node_modules/i18next": { - "version": "23.7.12", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.7.12.tgz", - "integrity": "sha512-BZcAvh5M/s2CDrbxNFT8kscfzCYW607wnc4wnQ11HaHDJlS46P/0+P++nmgnc5CIjSQ1DfHAM9RE+hIyALvI7g==", + "version": "23.7.16", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.7.16.tgz", + "integrity": "sha512-SrqFkMn9W6Wb43ZJ9qrO6U2U4S80RsFMA7VYFSqp7oc7RllQOYDCdRfsse6A7Cq/V8MnpxKvJCYgM8++27n4Fw==", "funding": [ { "type": "individual", @@ -15655,9 +15650,9 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/phone": { - "version": "3.1.41", - "resolved": "https://registry.npmjs.org/phone/-/phone-3.1.41.tgz", - "integrity": "sha512-sjYk1DdjYqSbcfYyeHQ6FNXr2RH7gHtkQflyleSBQ0V83db3tO9sXHhsr5WyYdsXaOW2tBg4p+P8HVgwFRJp+Q==", + "version": "3.1.42", + "resolved": "https://registry.npmjs.org/phone/-/phone-3.1.42.tgz", + "integrity": "sha512-J+cbZtGcN/ph10TRxwCLYZx9/k4WOU1wImMiUiUjr/2sWnY7bR7CadehbsM8E9UyG+/shgmH++eKbhD0kR4EZA==", "engines": { "node": ">=12" } @@ -17652,9 +17647,9 @@ } }, "node_modules/rc-pagination": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-4.0.3.tgz", - "integrity": "sha512-s1MNwyU83AgycikYckRdpmkN+4ZZuul0E0YdDp7dMgcjg/d2fak767ZIbLP4Q5YPPla7NDorfVFTvGQAPj6jXA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-4.0.4.tgz", + "integrity": "sha512-GGrLT4NgG6wgJpT/hHIpL9nELv27A1XbSZzECIuQBQTVSf4xGKxWr6I/jhpRPauYEWEbWVw22ObG6tJQqwJqWQ==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "^2.3.2", @@ -17977,9 +17972,9 @@ } }, "node_modules/rc-upload": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.3.5.tgz", - "integrity": "sha512-EHlKJbhkgFSQHliTj9v/2K5aEuFwfUQgZARzD7AmAPOneZEPiCNF3n6PEWIuqz9h7oq6FuXgdR67sC5BWFxJbA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.5.2.tgz", + "integrity": "sha512-QO3ne77DwnAPKFn0bA5qJM81QBjQi0e0NHdkvpFyY73Bea2NfITiotqJqVjHgeYPOJu5lLVR32TNGP084aSoXA==", "dependencies": { "@babel/runtime": "^7.18.3", "classnames": "^2.2.5", @@ -18173,13 +18168,13 @@ } }, "node_modules/react-cookie": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/react-cookie/-/react-cookie-6.1.1.tgz", - "integrity": "sha512-fuFRpf8LH6SfmVMowDUIRywJF5jAUDUWrm0EI5VdXfTl5bPcJ7B0zWbuYpT0Tvikx7Gs18MlvAT+P+744dUz2g==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/react-cookie/-/react-cookie-7.0.0.tgz", + "integrity": "sha512-BDXJ9J0zo8xJtoTY3vu6Mn+67gdi1Q1JIJndFMemeHu3tEAN2G3EYqYfB0KNL3IXev3h+lfuOKJYvPYWMN4ijg==", "dependencies": { - "@types/hoist-non-react-statics": "^3.3.1", + "@types/hoist-non-react-statics": "^3.3.5", "hoist-non-react-statics": "^3.3.2", - "universal-cookie": "^6.0.0" + "universal-cookie": "^7.0.0" }, "peerDependencies": { "react": ">= 16.3.0" @@ -18848,11 +18843,11 @@ } }, "node_modules/redux-saga": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-1.2.3.tgz", - "integrity": "sha512-HDe0wTR5nhd8Xr5xjGzoyTbdAw6rjy1GDplFt3JKtKN8/MnkQSRqK/n6aQQhpw5NI4ekDVOaW+w4sdxPBaCoTQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-1.3.0.tgz", + "integrity": "sha512-J9RvCeAZXSTAibFY0kGw6Iy4EdyDNW7k6Q+liwX+bsck7QVsU78zz8vpBRweEfANxnnlG/xGGeOvf6r8UXzNJQ==", "dependencies": { - "@redux-saga/core": "^1.2.3" + "@redux-saga/core": "^1.3.0" } }, "node_modules/redux-state-sync": { @@ -19031,9 +19026,9 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/reselect": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.0.1.tgz", - "integrity": "sha512-D72j2ubjgHpvuCiORWkOUxndHJrxDaSolheiz5CO+roz8ka97/4msh2E8F5qay4GawR5vzBt5MkbDHT+Rdy/Wg==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.0.tgz", + "integrity": "sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg==" }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", @@ -19390,9 +19385,9 @@ "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==" }, "node_modules/sass": { - "version": "1.69.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", - "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", + "version": "1.69.7", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.7.tgz", + "integrity": "sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -19798,9 +19793,9 @@ } }, "node_modules/socket.io-client": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", - "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.3.tgz", + "integrity": "sha512-nU+ywttCyBitXIl9Xe0RSEfek4LneYkJxCeNnKCuhwoH4jGXO1ipIUw/VA/+Vvv2G1MTym11fzFC0SxkrcfXDw==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", @@ -21665,12 +21660,20 @@ } }, "node_modules/universal-cookie": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-6.1.1.tgz", - "integrity": "sha512-33S9x3CpdUnnjwTNs2Fgc41WGve2tdLtvaK2kPSbZRc5pGpz2vQFbRWMxlATsxNNe/Cy8SzmnmbuBM85jpZPtA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-7.0.0.tgz", + "integrity": "sha512-T3XwZ2cUbHRU+UNfPSaPd0zti50tVIvk6onLA90pa+qKwsP8ksn5pwYM7rWMODoX1OCA9qPAN8uK88Avq5YbtQ==", "dependencies": { - "@types/cookie": "^0.5.1", - "cookie": "^0.5.0" + "@types/cookie": "^0.6.0", + "cookie": "^0.6.0" + } + }, + "node_modules/universal-cookie/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" } }, "node_modules/universalify": { diff --git a/client/package.json b/client/package.json index fb5971305..9236ec4e8 100644 --- a/client/package.json +++ b/client/package.json @@ -12,13 +12,13 @@ "@fingerprintjs/fingerprintjs": "^4.2.1", "@jsreport/browser-client": "^3.1.0", "@reduxjs/toolkit": "^2.0.1", - "@sentry/react": "^7.91.0", - "@sentry/tracing": "^7.91.0", + "@sentry/react": "^7.92.0", + "@sentry/tracing": "^7.92.0", "@splitsoftware/splitio-react": "^1.10.2", "@tanem/react-nprogress": "^5.0.51", - "antd": "^5.12.5", + "antd": "^5.12.8", "apollo-link-logger": "^2.0.1", - "axios": "^1.6.3", + "axios": "^1.6.4", "craco-less": "^3.0.1", "dayjs": "^1.11.10", "dayjs-business-days2": "^1.2.2", @@ -29,7 +29,7 @@ "exifr": "^7.1.3", "firebase": "^10.7.1", "graphql": "^16.6.0", - "i18next": "^23.7.12", + "i18next": "^23.7.16", "i18next-browser-languagedetector": "^7.0.2", "jsoneditor": "^10.0.0", "jsreport-browser-client-dist": "^1.3.0", @@ -37,7 +37,7 @@ "logrocket": "^7.0.0", "markerjs2": "^2.31.4", "normalize-url": "^8.0.0", - "phone": "^3.1.41", + "phone": "^3.1.42", "preval.macro": "^5.0.0", "prop-types": "^15.8.1", "query-string": "^8.1.0", @@ -46,7 +46,7 @@ "react": "^18.2.0", "react-big-calendar": "^1.8.5", "react-color": "^2.19.3", - "react-cookie": "^6.1.1", + "react-cookie": "^7.0.0", "react-dom": "^18.2.0", "react-drag-listview": "^2.0.0", "react-grid-gallery": "^1.0.0", @@ -66,11 +66,11 @@ "recharts": "^2.4.3", "redux": "^5.0.1", "redux-persist": "^6.0.0", - "redux-saga": "^1.2.3", + "redux-saga": "^1.3.0", "redux-state-sync": "^3.1.4", - "reselect": "^5.0.1", - "sass": "^1.58.3", - "socket.io-client": "^4.7.2", + "reselect": "^5.1.0", + "sass": "^1.69.7", + "socket.io-client": "^4.7.3", "styled-components": "^6.1.6", "subscriptions-transport-ws": "^0.11.0", "terser-webpack-plugin": "^5.3.10", diff --git a/client/src/components/courtesy-car-form/courtesy-car-form.component.jsx b/client/src/components/courtesy-car-form/courtesy-car-form.component.jsx index 1e95960a9..1e9574d1b 100644 --- a/client/src/components/courtesy-car-form/courtesy-car-form.component.jsx +++ b/client/src/components/courtesy-car-form/courtesy-car-form.component.jsx @@ -215,10 +215,7 @@ export default function CourtesyCarCreateFormComponent({ form, saveLoading }) { > - +
@@ -235,8 +232,9 @@ export default function CourtesyCarCreateFormComponent({ form, saveLoading }) { > {() => { const nextservicekm = form.getFieldValue("nextservicekm"); - const mileageOver = - nextservicekm && nextservicekm <= form.getFieldValue("mileage"); + const mileageOver = nextservicekm + ? nextservicekm <= form.getFieldValue("mileage") + : false; if (mileageOver) return ( diff --git a/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx b/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx index b11d57f5a..7b5cc8ec2 100644 --- a/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx +++ b/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx @@ -73,10 +73,10 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) { render: (text, record) => { const { nextservicedate, nextservicekm, mileage } = record; - const mileageOver = nextservicekm <= mileage; + const mileageOver = nextservicekm ? nextservicekm <= mileage : false; const dueForService = - nextservicedate && dayjs(nextservicedate).isBefore(dayjs()); + nextservicedate && dayjs(nextservicedate).end('day').isSameOrBefore(dayjs()); return ( diff --git a/client/src/components/dms-log-events/dms-log-events.component.jsx b/client/src/components/dms-log-events/dms-log-events.component.jsx index b791cd177..3cca7eb38 100644 --- a/client/src/components/dms-log-events/dms-log-events.component.jsx +++ b/client/src/components/dms-log-events/dms-log-events.component.jsx @@ -28,7 +28,7 @@ export function DmsLogEvents({ socket, logs, bodyshop }) { items={logs.map((log, idx) => ({ key: idx, color: LogLevelHierarchy(log.level), - label: ( + children: ( {log.level} {dayjs(log.timestamp).format("MM/DD/YYYY HH:mm:ss")} diff --git a/client/src/components/document-editor/document-editor.component.jsx b/client/src/components/document-editor/document-editor.component.jsx index 5a761e70b..c94e582e3 100644 --- a/client/src/components/document-editor/document-editor.component.jsx +++ b/client/src/components/document-editor/document-editor.component.jsx @@ -62,7 +62,8 @@ export function DocumentEditorComponent({ currentUser, bodyshop, document }) { // attach an event handler to assign annotated image back to our image element markerArea.current.addEventListener("close", (closeEvent) => {}); - markerArea.current.addEventListener("render", (dataUrl) => { + markerArea.current.addEventListener("render", (event) => { + const dataUrl = event.dataUrl; imgRef.current.src = dataUrl; markerArea.current.close(); triggerUpload(dataUrl); diff --git a/client/src/components/form-date-picker/form-date-picker.component.jsx b/client/src/components/form-date-picker/form-date-picker.component.jsx index b50a2e0cf..aba56a059 100644 --- a/client/src/components/form-date-picker/form-date-picker.component.jsx +++ b/client/src/components/form-date-picker/form-date-picker.component.jsx @@ -1,100 +1,105 @@ -import { DatePicker } from "antd"; +import {DatePicker} from "antd"; import dayjs from "../../utils/day"; -import React, { useRef } from "react"; +import React, {useRef} from "react"; + +import {connect} from "react-redux"; +import {createStructuredSelector} from "reselect"; +import {selectBodyshop} from "../../redux/user/user.selectors"; -import { connect } from "react-redux"; -import { createStructuredSelector } from "reselect"; -import { selectBodyshop } from "../../redux/user/user.selectors"; const mapStateToProps = createStructuredSelector({ - bodyshop: selectBodyshop, + bodyshop: selectBodyshop, +}); +const mapDispatchToProps = (dispatch) => ({ + //setUserLanguage: language => dispatch(setUserLanguage(language)) }); -const mapDispatchToProps = (dispatch) => ({}); export default connect(mapStateToProps, mapDispatchToProps)(FormDatePicker); const dateFormat = "MM/DD/YYYY"; - -// TODO, this is causing a dirty change when it should not (click the picker, click off the picker) export function FormDatePicker({ - bodyshop, - value, - onChange, - onBlur, - onlyFuture, - isDateOnly = true, - ...restProps + bodyshop, + value, + onChange, + onBlur, + onlyFuture, + isDateOnly = true, + ...restProps }) { - const ref = useRef(); + const ref = useRef(); - const handleChange = (newDate) => { - if (value !== newDate && onChange) { - onChange(isDateOnly ? newDate && newDate.format("YYYY-MM-DD") : newDate); - } - }; - - const handleKeyDown = (e) => { - if (e.key.toLowerCase() === "t") { - if (onChange) { - onChange(isDateOnly ? dayjs().format("YYYY-MM-DD") : dayjs()); - } - } else if (e.key.toLowerCase() === "enter") { - if (ref.current && ref.current.blur) ref.current.blur(); - } - }; - - const handleBlur = (e) => { - const v = e.target.value; - if (!v) return; - - const _a = dayjs( - v, - ["MMDDYY", "MMDDYYYY", "MMDD", "MM/DD/YY"], - "en", - false - ); - - if ( - _a.isValid() - && value - && value.isValid - && value.isValid() - ) { - _a.set({ - hours: value.hours(), - minutes: value.minutes(), - seconds: value.seconds(), - milliseconds: value.milliseconds(), - }); - } - - if (_a.isValid() && onChange) { - if (onlyFuture) { - if (dayjs().subtract(1, "day").isBefore(_a)) { - onChange(isDateOnly ? _a.format("YYYY-MM-DD") : _a); - } else { - onChange(isDateOnly ? dayjs().format("YYYY-MM-DD") : dayjs()); + const handleChange = (newDate) => { + if (value !== newDate && onChange) { + onChange(isDateOnly ? newDate && newDate.format("YYYY-MM-DD") : newDate); } - } else { - onChange(isDateOnly ? _a.format("YYYY-MM-DD") : _a); - } - } - }; + }; - return ( -
- dayjs().subtract(1, "day").isAfter(d), - })} - {...restProps} - /> -
- ); + const handleKeyDown = (e) => { + if (e.key.toLowerCase() === "t") { + if (onChange) { + onChange(isDateOnly ? dayjs().format("YYYY-MM-DD") : dayjs()); + } + } else if (e.key.toLowerCase() === "enter") { + if (ref.current && ref.current.blur) ref.current.blur(); + } + }; + + const handleBlur = (e) => { + const v = e.target.value; + if (!v) return; + + const formats = ["MMDDYY", "MMDDYYYY", "MMDD", "MM/DD/YY", "MM/DD/YYYY"]; + let _a; + + // Iterate through formats to find the correct one + for (let format of formats) { + _a = dayjs(v, format); + if (v === _a.format(format)) { + break; + } + } + + if ( + _a.isValid() + && value + && value.isValid + && value.isValid() + ) { + _a.set({ + hours: value.hours(), + minutes: value.minutes(), + seconds: value.seconds(), + milliseconds: value.milliseconds(), + }); + } + + if (_a.isValid() && onChange) { + if (onlyFuture) { + if (dayjs().subtract(1, "day").isBefore(_a)) { + onChange(isDateOnly ? _a.format("YYYY-MM-DD") : _a); + } else { + onChange(isDateOnly ? dayjs().format("YYYY-MM-DD") : dayjs()); + } + } else { + onChange(isDateOnly ? _a.format("YYYY-MM-DD") : _a); + } + } + }; + + return ( +
+ dayjs().subtract(1, "day").isAfter(d), + })} + {...restProps} + /> +
+ ); } \ No newline at end of file diff --git a/client/src/components/job-detail-cards/job-detail-cards.dates.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.dates.component.jsx index 973eec6f2..ebb1ae042 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.dates.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.dates.component.jsx @@ -16,7 +16,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) { ? [ { key: "date_last_contacted", - label: ( + children: ( <> {data.date_last_contacted} @@ -29,7 +29,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) { ? [ { key: "date_open", - label: ( + children: ( <> {data.date_open} @@ -42,7 +42,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) { ? [ { key: "date_estimated", - label: ( + children: ( <> {data.date_estimated} @@ -55,7 +55,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) { ? [ { key: "date_scheduled", - label: ( + children: ( <> {data.date_scheduled} @@ -68,7 +68,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) { ? [ { key: "scheduled_in", - label: ( + children: ( <> {data.scheduled_in} @@ -81,7 +81,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) { ? [ { key: "actual_in", - label: ( + children: ( <> {data.actual_in} @@ -94,7 +94,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) { ? [ { key: "date_repairstarted", - label: ( + children: ( <> {data.date_repairstarted} @@ -107,7 +107,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) { ? [ { key: "scheduled_completion", - label: ( + children: ( <> {data.scheduled_completion} @@ -120,7 +120,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) { ? [ { key: "actual_completion", - label: ( + children: ( <> {data.actual_completion} @@ -133,7 +133,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) { ? [ { key: "scheduled_delivery", - label: ( + children: ( <> {data.scheduled_delivery} @@ -146,7 +146,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) { ? [ { key: "actual_delivery", - label: ( + children: ( <> {data.actual_delivery} @@ -159,7 +159,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) { ? [ { key: "date_invoiced", - label: ( + children: ( <> {data.date_invoiced} @@ -172,7 +172,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) { ? [ { key: "date_exported", - label: ( + children: ( <> {data.date_exported} diff --git a/client/src/components/job-detail-lines/job-lines-expander.component.jsx b/client/src/components/job-detail-lines/job-lines-expander.component.jsx index 51b70e3eb..2d3f932ed 100644 --- a/client/src/components/job-detail-lines/job-lines-expander.component.jsx +++ b/client/src/components/job-detail-lines/job-lines-expander.component.jsx @@ -32,7 +32,7 @@ export default function JobLinesExpander({jobline, jobid}) { data.parts_order_lines.length > 0 ? data.parts_order_lines.map((line) => ({ key: line.id, - label: ( + children: ( } wrap> 0 ? data.billlines.map((line) => ({ key: line.id, - label: ( + children: ( { return bodyshop.md_ro_statuses.production_statuses.includes(job.status); }, [job, bodyshop.md_ro_statuses.production_statuses]); @@ -97,7 +106,7 @@ export function JobsDetailHeaderActions({ ); }, [job.status, bodyshop.md_ro_statuses.post_production_statuses]); - const handleDuplicate =() => + const handleDuplicate = () => DuplicateJob( client, job.id, @@ -694,33 +703,37 @@ export function JobsDetailHeaderActions({ context: {jobid: job.id}, }); } - }, - { - key: 'entercardpayments', - disabled: !job.converted, - label: t("menus.header.entercardpayment"), - onClick: () => { - logImEXEvent("job_header_enter_card_payment"); + }]; - setCardPaymentContext({ - actions: {}, - context: {jobid: job.id}, - }); - } - }, - { - key: 'cccontract', - disabled: jobRO || !job.converted, - label: - {t("menus.jobsactions.newcccontract")} - - } - ]; + if (ImEXPay.treatment === "on") { + menuItems.push({ + key: 'entercardpayments', + disabled: !job.converted, + label: t("menus.header.entercardpayment"), + onClick: () => { + logImEXEvent("job_header_enter_card_payment"); + + setCardPaymentContext({ + actions: {}, + context: {jobid: job.id}, + }); + } + }, + ); + } + + menuItems.push({ + key: 'cccontract', + disabled: jobRO || !job.converted, + label: + {t("menus.jobsactions.newcccontract")} + + }); menuItems.push( job.inproduction ? diff --git a/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx b/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx index 30bb98560..9ae08588d 100644 --- a/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx +++ b/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx @@ -221,6 +221,11 @@ export function JobsDetailHeader({ job, bodyshop, disabled }) { {`${job.v_vin || t("general.labels.na")}`} + {bodyshop.pbs_serialnumber || bodyshop.cdk_dealerid ? ( + job.v_vin.length !== 17 ? ( + + ) : null + ) : null} {job.regie_number || t("general.labels.na")} diff --git a/client/src/components/production-list-columns/production-list-columns.add.component.jsx b/client/src/components/production-list-columns/production-list-columns.add.component.jsx index fb346ace2..7088f6726 100644 --- a/client/src/components/production-list-columns/production-list-columns.add.component.jsx +++ b/client/src/components/production-list-columns/production-list-columns.add.component.jsx @@ -24,6 +24,7 @@ export function ProductionColumnsComponent({ columnState, technician, bodyshop, + data, tableState, }) { const [columns, setColumns] = columnState; @@ -36,6 +37,7 @@ export function ProductionColumnsComponent({ bodyshop, technician, state: tableState, + data, activeStatuses: bodyshop.md_ro_statuses.active_statuses, }).filter((i) => i.key === e.key), ]); @@ -44,6 +46,7 @@ export function ProductionColumnsComponent({ const columnKeys = columns.map((i) => i.key); const cols = dataSource({ technician, + data, state: tableState, activeStatuses: bodyshop.md_ro_statuses.active_statuses, }); diff --git a/client/src/components/production-list-columns/production-list-columns.data.js b/client/src/components/production-list-columns/production-list-columns.data.js index e9b57df19..003a3b864 100644 --- a/client/src/components/production-list-columns/production-list-columns.data.js +++ b/client/src/components/production-list-columns/production-list-columns.data.js @@ -1,4 +1,4 @@ -import { PauseCircleOutlined, BranchesOutlined } from "@ant-design/icons"; +import { BranchesOutlined, PauseCircleOutlined } from "@ant-design/icons"; import { Space, Tooltip } from "antd"; import i18n from "i18next"; import dayjs from "../../utils/day"; @@ -6,6 +6,7 @@ import { Link } from "react-router-dom"; import CurrencyFormatter from "../../utils/CurrencyFormatter"; import { TimeFormatter } from "../../utils/DateFormatter"; import PhoneFormatter from "../../utils/PhoneFormatter"; +import { onlyUnique } from "../../utils/arrayHelper"; import { alphaSort, dateSort, statusSort } from "../../utils/sorters"; import JobAltTransportChange from "../job-at-change/job-at-change.component"; import JobPartsQueueCount from "../job-parts-queue-count/job-parts-queue-count.component"; @@ -25,7 +26,7 @@ import ProductionListColumnCategory from "./production-list-columns.status.categ import ProductionListColumnStatus from "./production-list-columns.status.component"; import ProductionlistColumnTouchTime from "./prodution-list-columns.touchtime.component"; -const r = ({ technician, state, activeStatuses, bodyshop }) => { +const r = ({ technician, state, activeStatuses, data, bodyshop }) => { return [ { title: i18n.t("jobs.actions.viewdetail"), @@ -536,6 +537,36 @@ const r = ({ technician, state, activeStatuses, bodyshop }) => { ), }, + { + title: i18n.t("jobs.labels.estimator"), + dataIndex: "estimator", + key: "estimator", + sorter: (a, b) => + alphaSort( + `${a.est_ct_fn || ""} ${a.est_ct_ln || ""}`.trim(), + `${b.est_ct_fn || ""} ${b.est_ct_ln || ""}`.trim() + ), + sortOrder: + state.sortedInfo.columnKey === "estimator" && state.sortedInfo.order, + filters: + (data && + data + .map((j) => `${j.est_ct_fn || ""} ${j.est_ct_ln || ""}`.trim()) + .filter(onlyUnique) + .map((s) => { + return { + text: s || "N/A", + value: [s], + }; + })) || + [], + onFilter: (value, record) => + value.includes( + `${record.est_ct_fn || ""} ${record.est_ct_ln || ""}`.trim() + ), + render: (text, record) => + `${record.est_ct_fn || ""} ${record.est_ct_ln || ""}`.trim(), + }, //Added as a place holder for St Claude. Not implemented as it requires another join for a field used by only 1 client. // { diff --git a/client/src/components/production-list-table/production-list-table-view-select.component.jsx b/client/src/components/production-list-table/production-list-table-view-select.component.jsx index 48a1f7222..dd58b5d16 100644 --- a/client/src/components/production-list-table/production-list-table-view-select.component.jsx +++ b/client/src/components/production-list-table/production-list-table-view-select.component.jsx @@ -24,6 +24,7 @@ export function ProductionListTable({ technician, currentUser, state, + data, setColumns, setState, }) { @@ -41,6 +42,7 @@ export function ProductionListTable({ bodyshop, technician, state, + data: data, activeStatuses: bodyshop.md_ro_statuses.active_statuses, }).find((e) => e.key === k.key), width: k.width, @@ -95,6 +97,7 @@ export function ProductionListTable({ ...ProductionListColumns({ technician, state, + data: data, activeStatuses: bodyshop.md_ro_statuses.active_statuses, }).find((e) => e.key === k.key), width: k.width, diff --git a/client/src/components/production-list-table/production-list-table.component.jsx b/client/src/components/production-list-table/production-list-table.component.jsx index b817a379d..fcce11281 100644 --- a/client/src/components/production-list-table/production-list-table.component.jsx +++ b/client/src/components/production-list-table/production-list-table.component.jsx @@ -1,8 +1,8 @@ import {SyncOutlined} from "@ant-design/icons"; import {useSplitTreatments} from "@splitsoftware/splitio-react"; -import {Button, Dropdown, Input, Space, Statistic, Table,} from "antd"; +import {Button, Dropdown, Input, Space, Statistic, Table} from "antd"; import {PageHeader} from "@ant-design/pro-layout"; -import React, {useMemo, useState} from "react"; +import React, {useEffect, useMemo, useState} from "react"; import ReactDragListView from "react-drag-listview"; import {useTranslation} from "react-i18next"; import {connect} from "react-redux"; @@ -66,6 +66,7 @@ export function ProductionListTable({loading, data, refetch, bodyshop, technicia bodyshop, technician, state, + data, activeStatuses: bodyshop.md_ro_statuses.active_statuses, }).find((e) => e.key === k.key), width: k.width ?? 100, @@ -74,6 +75,34 @@ export function ProductionListTable({loading, data, refetch, bodyshop, technicia [] ); + useEffect(() => { + const newColumns = + (state && + matchingColumnConfig && + matchingColumnConfig.columns.columnKeys.map((k) => { + return { + ...ProductionListColumns({ + bodyshop, + technician, + state, + data: data, + activeStatuses: bodyshop.md_ro_statuses.active_statuses, + }).find((e) => e.key === k.key), + width: k.width ?? 100, + }; + })) || + []; + setColumns(newColumns); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [ + //state, + matchingColumnConfig, + bodyshop, + technician, + data, + ]); //State removed from dependency array as it causes race condition when removing columns from table view and is not needed. + + const handleTableChange = (pagination, filters, sorter) => { setState({ ...state, @@ -89,10 +118,11 @@ export function ProductionListTable({loading, data, refetch, bodyshop, technicia setColumns(columnsCopy); }; - const removeColumn = (e) => { - const {key} = e; - setColumns(columns.filter((i) => i.key !== key)); - }; + const removeColumn = (e) => { + const { key } = e; + const newColumns = columns.filter((i) => i.key !== key); + setColumns(newColumns); + }; const handleResize = (index) => @@ -221,6 +251,7 @@ export function ProductionListTable({loading, data, refetch, bodyshop, technicia ({ key: item.id, color: item.canceled ? "red" : item.arrived ? "green" : "blue", - label: ( + children: ( <> {item.canceled ? t("appointments.labels.cancelledappointment") diff --git a/client/src/graphql/jobs.queries.js b/client/src/graphql/jobs.queries.js index b18673de6..fbeb8740d 100644 --- a/client/src/graphql/jobs.queries.js +++ b/client/src/graphql/jobs.queries.js @@ -364,6 +364,8 @@ export const QUERY_JOBS_IN_PRODUCTION = gql` employee_refinish employee_prep employee_csr + est_ct_fn + est_ct_ln suspended date_repairstarted joblines_status { diff --git a/client/src/pages/jobs-detail/jobs-detail.page.component.jsx b/client/src/pages/jobs-detail/jobs-detail.page.component.jsx index 87e86ae2f..42acb504a 100644 --- a/client/src/pages/jobs-detail/jobs-detail.page.component.jsx +++ b/client/src/pages/jobs-detail/jobs-detail.page.component.jsx @@ -261,17 +261,15 @@ export function JobsDetailPage({ items={[ { key: "general", - label: ( - {t("menus.jobsdetail.general")} - ), + icon: , + label: t("menus.jobsdetail.general"), forceRender: true, children: , }, { key: "repairdata", - label: ( - {t("menus.jobsdetail.repairdata")} - ), + icon: , + label: t("menus.jobsdetail.repairdata"), forceRender: true, children: ( {t("menus.jobsdetail.rates")} - ), + icon: , + label: t("menus.jobsdetail.rates"), forceRender: true, children: , }, { key: "totals", - label: ( - {t("menus.jobsdetail.totals")} - ), + icon: , + label: t("menus.jobsdetail.totals"), children: , }, { key: "partssublet", - label: ( - {t("menus.jobsdetail.partssublet")} - ), + icon: , + label: t("menus.jobsdetail.partssublet"), children: , }, { key: "labor", - label: ( - {t("menus.jobsdetail.labor")} - ), + icon: , + label: t("menus.jobsdetail.labor"), children: , }, { key: "dates", - label: ( - {t("menus.jobsdetail.dates")} - ), + icon: , + label: t("menus.jobsdetail.dates"), forceRender: true, children: , }, { key: "documents", - label: ( - {t("jobs.labels.documents")} - ), + icon: , + label: t("jobs.labels.documents"), children: bodyshop.uselocalmediaserver ? ( ) : ( @@ -332,15 +324,14 @@ export function JobsDetailPage({ }, { key: "notes", - label: ( - {t("jobs.labels.notes")} - ), + icon: , + label: t("jobs.labels.notes"), children: , }, { key: "audit", - label: ({t("jobs.labels.audit")} - ), + icon: , + label: t("jobs.labels.audit"), children: , }, ]} diff --git a/client/src/pages/scoreboard/scoreboard.page.container.jsx b/client/src/pages/scoreboard/scoreboard.page.container.jsx index e7098d015..c5cae70d5 100644 --- a/client/src/pages/scoreboard/scoreboard.page.container.jsx +++ b/client/src/pages/scoreboard/scoreboard.page.container.jsx @@ -77,22 +77,22 @@ export function ScoreboardContainer({ setBreadcrumbs, setSelectedHeader }) { items={[ { key: "sb", - label: ({t("scoreboard.labels.jobs")} - ), + icon: , + label: t("scoreboard.labels.jobs"), forceRender: true, children: , }, { key: "tickets", - label: ({t("scoreboard.labels.timeticketsemployee")} - ), + icon: , + label: t("scoreboard.labels.timeticketsemployee"), forceRender: true, children: , }, { key: "ticketsstats", - label: ({t("scoreboard.labels.allemployeetimetickets")} - ), + icon: , + label: t("scoreboard.labels.allemployeetimetickets"), forceRender: true, children: , }, diff --git a/hasura/metadata/tables.yaml b/hasura/metadata/tables.yaml index 216ac8c48..9867b3f8e 100644 --- a/hasura/metadata/tables.yaml +++ b/hasura/metadata/tables.yaml @@ -2023,24 +2023,24 @@ - active: _eq: true columns: - - labor_rates - - percentage - created_at - - updated_at - employeeid - id + - labor_rates + - percentage - teamid + - updated_at select_permissions: - role: user permission: columns: - - labor_rates - - percentage - created_at - - updated_at - employeeid - id + - labor_rates + - percentage - teamid + - updated_at filter: employee_team: bodyshop: @@ -2055,13 +2055,13 @@ - role: user permission: columns: - - labor_rates - - percentage - created_at - - updated_at - employeeid - id + - labor_rates + - percentage - teamid + - updated_at filter: employee_team: bodyshop: @@ -2123,21 +2123,23 @@ _eq: true columns: - active - - name - - created_at - - updated_at - bodyshopid + - created_at - id + - max_load + - name + - updated_at select_permissions: - role: user permission: columns: - active - - name - - created_at - - updated_at - bodyshopid + - created_at - id + - max_load + - name + - updated_at filter: bodyshop: associations: @@ -2153,6 +2155,7 @@ columns: - active - bodyshopid + - max_load - name - updated_at filter: diff --git a/hasura/migrations/1704401074280_alter_table_public_employee_team_members_add_column_max_load/down.sql b/hasura/migrations/1704401074280_alter_table_public_employee_team_members_add_column_max_load/down.sql new file mode 100644 index 000000000..8df675f00 --- /dev/null +++ b/hasura/migrations/1704401074280_alter_table_public_employee_team_members_add_column_max_load/down.sql @@ -0,0 +1,4 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- alter table "public"."employee_team_members" add column "max_load" numeric +-- not null default '10000'; diff --git a/hasura/migrations/1704401074280_alter_table_public_employee_team_members_add_column_max_load/up.sql b/hasura/migrations/1704401074280_alter_table_public_employee_team_members_add_column_max_load/up.sql new file mode 100644 index 000000000..7b49a8dcd --- /dev/null +++ b/hasura/migrations/1704401074280_alter_table_public_employee_team_members_add_column_max_load/up.sql @@ -0,0 +1,2 @@ +alter table "public"."employee_team_members" add column "max_load" numeric + not null default '10000'; diff --git a/hasura/migrations/1704403786392_alter_table_public_employee_team_members_drop_column_max_load/down.sql b/hasura/migrations/1704403786392_alter_table_public_employee_team_members_drop_column_max_load/down.sql new file mode 100644 index 000000000..a869e6890 --- /dev/null +++ b/hasura/migrations/1704403786392_alter_table_public_employee_team_members_drop_column_max_load/down.sql @@ -0,0 +1,3 @@ +alter table "public"."employee_team_members" alter column "max_load" set default '10000'::numeric; +alter table "public"."employee_team_members" alter column "max_load" drop not null; +alter table "public"."employee_team_members" add column "max_load" numeric; diff --git a/hasura/migrations/1704403786392_alter_table_public_employee_team_members_drop_column_max_load/up.sql b/hasura/migrations/1704403786392_alter_table_public_employee_team_members_drop_column_max_load/up.sql new file mode 100644 index 000000000..18bf59cf3 --- /dev/null +++ b/hasura/migrations/1704403786392_alter_table_public_employee_team_members_drop_column_max_load/up.sql @@ -0,0 +1 @@ +alter table "public"."employee_team_members" drop column "max_load" cascade; diff --git a/hasura/migrations/1704403846373_alter_table_public_employee_teams_add_column_max_load/down.sql b/hasura/migrations/1704403846373_alter_table_public_employee_teams_add_column_max_load/down.sql new file mode 100644 index 000000000..58a0f9b6d --- /dev/null +++ b/hasura/migrations/1704403846373_alter_table_public_employee_teams_add_column_max_load/down.sql @@ -0,0 +1,4 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- alter table "public"."employee_teams" add column "max_load" numeric +-- not null default '10000'; diff --git a/hasura/migrations/1704403846373_alter_table_public_employee_teams_add_column_max_load/up.sql b/hasura/migrations/1704403846373_alter_table_public_employee_teams_add_column_max_load/up.sql new file mode 100644 index 000000000..c55ba33d0 --- /dev/null +++ b/hasura/migrations/1704403846373_alter_table_public_employee_teams_add_column_max_load/up.sql @@ -0,0 +1,2 @@ +alter table "public"."employee_teams" add column "max_load" numeric + not null default '10000'; diff --git a/server/intellipay/intellipay.js b/server/intellipay/intellipay.js index 0ece0c69c..60b74c1b5 100644 --- a/server/intellipay/intellipay.js +++ b/server/intellipay/intellipay.js @@ -132,6 +132,7 @@ exports.payment_refund = async (req, res) => { exports.generate_payment_url = async (req, res) => { logger.log("intellipay-payment-url", "DEBUG", req.user?.email, null, null); const shopCredentials = await getShopCredentials(req.body.bodyshop); + try { const options = { method: "POST", @@ -139,7 +140,12 @@ exports.generate_payment_url = async (req, res) => { //TODO: Move these to environment variables/database. data: qs.stringify({ ...shopCredentials, - ...req.body, + //...req.body, + amount: Dinero({ amount: Math.round(req.body.amount * 100) }).toFormat( + "0.00" + ), + account: req.body.account, + invoice: req.body.invoice, createshorturl: true, //The postback URL is set at the CP teller global terminal settings page. }),