diff --git a/client/package-lock.json b/client/package-lock.json
index 0409aecde..91b98ad66 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -22110,19 +22110,6 @@
"is-typedarray": "^1.0.0"
}
},
- "node_modules/typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
- "peer": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
"node_modules/typescript-compare": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/typescript-compare/-/typescript-compare-0.0.2.tgz",
diff --git a/client/src/components/production-list-detail/production-list-detail.component.jsx b/client/src/components/production-list-detail/production-list-detail.component.jsx
index 2963176b9..34265612b 100644
--- a/client/src/components/production-list-detail/production-list-detail.component.jsx
+++ b/client/src/components/production-list-detail/production-list-detail.component.jsx
@@ -105,85 +105,89 @@ export function ProductionListDetail({
{error && }
{!loading && data && (
-
-
-
-
-
-
- {theJob.ro_number || ""}
-
-
-
- {data.jobs_by_pk.alt_transport || ""}
-
-
-
-
- {theJob.clm_no || ""}
-
-
- {theJob.ins_co_nm || ""}
-
-
-
-
- {!technician ? (
- <>
-
-
- >
- ) : (
- <>
-
- {data.jobs_by_pk.ownr_ph1}
-
-
- {data.jobs_by_pk.ownr_ph2}
-
- >
- )}
-
-
-
- {`${theJob.v_model_yr || ""} ${theJob.v_color || ""} ${
- theJob.v_make_desc || ""
- } ${theJob.v_model_desc || ""}`}
-
-
- {theJob.clm_total}
-
-
- {theJob.actual_in}
-
-
- {theJob.scheduled_completion}
-
-
-
-
- {!bodyshop.uselocalmediaserver && (
+
+
+
+
+
+
+ {theJob.ro_number || ""}
+
+
+
+ {data.jobs_by_pk.alt_transport || ""}
+
+
+
+
+ {theJob.clm_no || ""}
+
+
+ {theJob.ins_co_nm || ""}
+
+
+
+
+ {!technician ? (
+ <>
+
+
+ >
+ ) : (
+ <>
+
+ {data.jobs_by_pk.ownr_ph1}
+
+
+ {data.jobs_by_pk.ownr_ph2}
+
+ >
+ )}
+
+
+
+ {`${theJob.v_model_yr || ""} ${theJob.v_color || ""} ${
+ theJob.v_make_desc || ""
+ } ${theJob.v_model_desc || ""}`}
+
+
+ {theJob.clm_total}
+
+
+ {theJob.actual_in}
+
+
+ {theJob.scheduled_completion}
+
+
+
+
+
+
+ {!bodyshop.uselocalmediaserver && (
+ <>
+
- )}
-
+ >
+ )}
)}
diff --git a/client/yarn.lock b/client/yarn.lock
index ce49d3489..8aeb33e0e 100644
--- a/client/yarn.lock
+++ b/client/yarn.lock
@@ -53,7 +53,7 @@
jsonpointer "^5.0.0"
leven "^3.1.0"
-"@apollo/client@^3.0.0", "@apollo/client@^3.7.9":
+"@apollo/client@^3.7.9":
version "3.7.9"
resolved "https://registry.npmjs.org/@apollo/client/-/client-3.7.9.tgz"
integrity sha512-YnJvrJOVWrp4y/zdNvUaM8q4GuSHCEIecsRDTJhK/veT33P/B7lfqGJ24NeLdKMj8tDEuXYF7V0t+th4+rgC+Q==
@@ -96,7 +96,7 @@
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz"
integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==
-"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.1.0", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.16.0", "@babel/core@^7.4.0-0", "@babel/core@^7.8.0", "@babel/core@>=7.11.0":
+"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.16.0":
version "7.18.9"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz"
integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==
@@ -159,6 +159,27 @@
json5 "^2.2.2"
semver "^6.3.0"
+"@babel/core@^7.8.0":
+ version "7.21.0"
+ resolved "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz"
+ integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.18.6"
+ "@babel/generator" "^7.21.0"
+ "@babel/helper-compilation-targets" "^7.20.7"
+ "@babel/helper-module-transforms" "^7.21.0"
+ "@babel/helpers" "^7.21.0"
+ "@babel/parser" "^7.21.0"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.21.0"
+ "@babel/types" "^7.21.0"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.2"
+ semver "^6.3.0"
+
"@babel/eslint-parser@^7.16.3":
version "7.19.1"
resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz"
@@ -729,7 +750,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
-"@babel/plugin-syntax-flow@^7.14.5", "@babel/plugin-syntax-flow@^7.18.6":
+"@babel/plugin-syntax-flow@^7.18.6":
version "7.18.6"
resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz"
integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==
@@ -1127,7 +1148,7 @@
dependencies:
"@babel/plugin-transform-react-jsx" "^7.18.6"
-"@babel/plugin-transform-react-jsx@^7.14.9", "@babel/plugin-transform-react-jsx@^7.18.6":
+"@babel/plugin-transform-react-jsx@^7.18.6":
version "7.18.6"
resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.6.tgz"
integrity sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw==
@@ -1568,7 +1589,7 @@
resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz"
integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
-"@craco/craco@^6.0.0", "@craco/craco@^7.0.0":
+"@craco/craco@^7.0.0":
version "7.0.0"
resolved "https://registry.npmjs.org/@craco/craco/-/craco-7.0.0.tgz"
integrity sha512-OyjL9zpURB6Ha1HO62Hlt27Xd7UYJ8DRiBNuE4DBB8Ue0iQ9q/xsv3ze7ROm6gCZqV6I2Gxjnq0EHCCye+4xDQ==
@@ -1844,7 +1865,7 @@
"@firebase/util" "1.9.2"
tslib "^2.1.0"
-"@firebase/app-compat@0.2.3", "@firebase/app-compat@0.x":
+"@firebase/app-compat@0.2.3":
version "0.2.3"
resolved "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.3.tgz"
integrity sha512-sX6rD1KFX6K2CuCnQvc9jZLOgAFZ+sv2jKKahIl4SbTM561D682B8n4Jtx/SgDrvcTVTdb05g4NhZOws9hxYxA==
@@ -1855,12 +1876,12 @@
"@firebase/util" "1.9.2"
tslib "^2.1.0"
-"@firebase/app-types@0.9.0", "@firebase/app-types@0.x":
+"@firebase/app-types@0.9.0":
version "0.9.0"
resolved "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz"
integrity sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==
-"@firebase/app@0.9.3", "@firebase/app@0.x":
+"@firebase/app@0.9.3":
version "0.9.3"
resolved "https://registry.npmjs.org/@firebase/app/-/app-0.9.3.tgz"
integrity sha512-G79JUceVDaHRZ4WkA11GyVldVXhdyRJRwWVQFFvAAVfQJLvy2TA6lQjeUn28F6FmeUWxDGwPC30bxCRWq7Op8Q==
@@ -2145,7 +2166,7 @@
node-fetch "2.6.7"
tslib "^2.1.0"
-"@firebase/util@1.9.2", "@firebase/util@1.x":
+"@firebase/util@1.9.2":
version "1.9.2"
resolved "https://registry.npmjs.org/@firebase/util/-/util-1.9.2.tgz"
integrity sha512-9l0uMGPGw3GsoD5khjMmYCCcMq/OR/OOSViiWMN+s2Q0pxM+fYzrii1H+r8qC/uoMjSVXomjLZt0vZIyryCqtQ==
@@ -3050,7 +3071,7 @@
resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz"
integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==
-"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.12", "@types/babel__core@^7.1.9":
+"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.12":
version "7.1.19"
resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz"
integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==
@@ -3358,7 +3379,7 @@
hoist-non-react-statics "^3.3.0"
redux "^4.0.0"
-"@types/react@*", "@types/react@^16.8 || ^17.0 || ^18.0", "@types/react@>=16.9.11":
+"@types/react@*", "@types/react@>=16.9.11":
version "18.0.15"
resolved "https://registry.npmjs.org/@types/react/-/react-18.0.15.tgz"
integrity sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==
@@ -3474,7 +3495,7 @@
dependencies:
"@types/node" "*"
-"@typescript-eslint/eslint-plugin@^4.0.0 || ^5.0.0", "@typescript-eslint/eslint-plugin@^5.5.0":
+"@typescript-eslint/eslint-plugin@^5.5.0":
version "5.54.0"
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.54.0.tgz"
integrity sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw==
@@ -3497,7 +3518,7 @@
dependencies:
"@typescript-eslint/utils" "5.54.0"
-"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.5.0":
+"@typescript-eslint/parser@^5.5.0":
version "5.54.0"
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.54.0.tgz"
integrity sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==
@@ -3779,11 +3800,6 @@ acorn-walk@^8.1.1:
resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz"
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
-"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0:
- version "8.8.2"
- resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz"
- integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
-
acorn@^7.0.0:
version "7.4.1"
resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz"
@@ -3794,6 +3810,11 @@ acorn@^7.1.1:
resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0:
+ version "8.8.2"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz"
+ integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
+
address@^1.0.1, address@^1.1.2:
version "1.2.2"
resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz"
@@ -3841,7 +3862,7 @@ ajv-keywords@^5.0.0:
dependencies:
fast-deep-equal "^3.1.3"
-ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.12.6, ajv@^6.9.1:
+ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.12.6:
version "6.12.6"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -3851,7 +3872,7 @@ ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.12.6, ajv@^6.9.1:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-ajv@^8.0.0, ajv@^8.8.0, ajv@^8.8.2:
+ajv@^8.0.0, ajv@^8.8.0:
version "8.12.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz"
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
@@ -3861,7 +3882,7 @@ ajv@^8.0.0, ajv@^8.8.0, ajv@^8.8.2:
require-from-string "^2.0.2"
uri-js "^4.2.2"
-ajv@^8.6.0, ajv@>=8:
+ajv@^8.6.0:
version "8.12.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz"
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
@@ -4561,7 +4582,7 @@ browser-process-hrtime@^1.0.0:
resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz"
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
-browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.20.2, browserslist@^4.21.2, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5, "browserslist@>= 4", "browserslist@>= 4.21.0", browserslist@>=4:
+browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.20.2, browserslist@^4.21.2, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5:
version "4.21.5"
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz"
integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==
@@ -5363,7 +5384,7 @@ cuint@^0.2.2:
resolved "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz"
integrity sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==
-cypress@^10.3.1, "cypress@^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0":
+cypress@^10.3.1:
version "10.11.0"
resolved "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz"
integrity sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==
@@ -6020,7 +6041,7 @@ enquire.js@^2.1.6:
resolved "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz"
integrity sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==
-enquirer@^2.3.6, "enquirer@>= 2.3.0 < 3":
+enquirer@^2.3.6:
version "2.3.6"
resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz"
integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
@@ -6370,7 +6391,7 @@ eslint-webpack-plugin@^3.1.1:
normalize-path "^3.0.0"
schema-utils "^4.0.0"
-eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", eslint@^8.0.0, eslint@^8.1.0, eslint@^8.3.0, "eslint@>= 3.2.1", "eslint@>= 6", eslint@>=5:
+eslint@^8.3.0:
version "8.35.0"
resolved "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz"
integrity sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==
@@ -7150,7 +7171,7 @@ graphql-tag@^2.12.6:
dependencies:
tslib "^2.1.0"
-"graphql@^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "graphql@^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "graphql@^14.0.0 || ^15.0.0 || ^16.0.0", "graphql@^15.7.2 || ^16.0.0", graphql@^16.6.0:
+graphql@^16.6.0:
version "16.6.0"
resolved "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz"
integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==
@@ -7414,7 +7435,7 @@ i18next-browser-languagedetector@^7.0.1:
dependencies:
"@babel/runtime" "^7.19.4"
-i18next@^22.4.10, "i18next@>= 19.0.0":
+i18next@^22.4.10:
version "22.4.10"
resolved "https://registry.npmjs.org/i18next/-/i18next-22.4.10.tgz"
integrity sha512-3EqgGK6fAJRjnGgfkNSStl4mYLCjUoJID338yVyLMj5APT67HUtWoqSayZewiiC5elzMUB1VEUwcmSCoeQcNEA==
@@ -8247,7 +8268,7 @@ jest-resolve-dependencies@^27.5.1:
jest-regex-util "^27.5.1"
jest-snapshot "^27.5.1"
-jest-resolve@*, jest-resolve@^27.4.2, jest-resolve@^27.5.1:
+jest-resolve@^27.4.2, jest-resolve@^27.5.1:
version "27.5.1"
resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz"
integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==
@@ -8457,7 +8478,7 @@ jest-worker@^28.0.2:
merge-stream "^2.0.0"
supports-color "^8.0.0"
-"jest@^27.0.0 || ^28.0.0", jest@^27.4.3:
+jest@^27.4.3:
version "27.5.1"
resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz"
integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==
@@ -8724,7 +8745,7 @@ less-loader@^7.3.0:
loader-utils "^2.0.0"
schema-utils "^3.0.0"
-"less@^3.5.0 || ^4.0.0", less@^4.1.1:
+less@^4.1.1:
version "4.1.3"
resolved "https://registry.npmjs.org/less/-/less-4.1.3.tgz"
integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==
@@ -9186,7 +9207,7 @@ moment-timezone@^0.5.40, moment-timezone@^0.5.41:
dependencies:
moment "^2.29.4"
-moment@^2.24.0, moment@^2.29.2, moment@^2.29.4, moment@2.x.x:
+moment@^2.24.0, moment@^2.29.2, moment@^2.29.4:
version "2.29.4"
resolved "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz"
integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==
@@ -10298,15 +10319,6 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^
resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-"postcss@^7.0.0 || ^8.0.1", postcss@^8, postcss@^8.0.0, postcss@^8.0.3, postcss@^8.0.9, postcss@^8.1.0, postcss@^8.1.4, postcss@^8.2, postcss@^8.2.14, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.3, postcss@^8.3.5, postcss@^8.4, postcss@^8.4.19, postcss@^8.4.21, postcss@^8.4.4, postcss@^8.4.6, "postcss@>= 8", postcss@>=8, postcss@>=8.0.9:
- version "8.4.21"
- resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz"
- integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==
- dependencies:
- nanoid "^3.3.4"
- picocolors "^1.0.0"
- source-map-js "^1.0.2"
-
postcss@^7.0.35:
version "7.0.39"
resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz"
@@ -10315,6 +10327,15 @@ postcss@^7.0.35:
picocolors "^0.2.1"
source-map "^0.6.1"
+postcss@^8.0.9, postcss@^8.3.5, postcss@^8.4.19, postcss@^8.4.4:
+ version "8.4.21"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz"
+ integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==
+ dependencies:
+ nanoid "^3.3.4"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
@@ -10389,7 +10410,7 @@ prompts@^2.0.1, prompts@^2.4.2:
kleur "^3.0.3"
sisteransi "^1.0.5"
-prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1, prop-types@15.x:
+prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1, prop-types@15.x:
version "15.8.1"
resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@@ -11119,7 +11140,7 @@ react-dev-utils@^12.0.1:
strip-ansi "^6.0.1"
text-table "^0.2.0"
-react-dom@*, "react-dom@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^18.0.0", "react-dom@^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", "react-dom@^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom@^15.3.0 || ^16.0.0-alpha", "react-dom@^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.14.0 || ^17 || ^18", "react-dom@^16.8 || ^17.0 || ^18.0", "react-dom@^16.8.0 || ^17.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.5 || ^17.0.0", react-dom@^17.0.2, "react-dom@>= 16.3.0", "react-dom@>= 16.8.0", react-dom@>=15, react-dom@>=15.0.0, react-dom@>=16.0.0, react-dom@>=16.11.0, react-dom@>=16.3.0, react-dom@>=16.9.0, "react-dom@16.x || 17.x":
+react-dom@^17.0.2:
version "17.0.2"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz"
integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
@@ -11191,7 +11212,7 @@ react-intersection-observer@^9.4.3:
resolved "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.4.3.tgz"
integrity sha512-WNRqMQvKpupr6MzecAQI0Pj0+JQong307knLP4g/nBex7kYfIaZsPpXaIhKHR+oV8z+goUbH9e10j6lGRnTzlQ==
-react-is@^16.10.2, react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, "react-is@>= 16.8.0":
+react-is@^16.10.2, react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0:
version "16.13.1"
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -11271,7 +11292,7 @@ react-redux@^8.0.5:
react-is "^18.0.0"
use-sync-external-store "^1.0.0"
-react-refresh@^0.11.0, "react-refresh@>=0.10.0 <1.0.0":
+react-refresh@^0.11.0:
version "0.11.0"
resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz"
integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==
@@ -11320,7 +11341,7 @@ react-router@5.3.3:
tiny-invariant "^1.0.2"
tiny-warning "^1.0.0"
-react-scripts@^5.0.0, react-scripts@^5.0.1:
+react-scripts@^5.0.1:
version "5.0.1"
resolved "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz"
integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==
@@ -11421,7 +11442,7 @@ react-virtualized@^9.22.3:
prop-types "^15.7.2"
react-lifecycles-compat "^3.0.4"
-react@*, "react@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^18.0.0", "react@^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", "react@^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0", "react@^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^15.3.0 || ^16.0.0-alpha", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.14.0 || ^17 || ^18", "react@^16.8 || ^17.0 || ^18.0", "react@^16.8.0 || ^17.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.3 || ^17 || ^18", "react@^16.8.5 || ^17.0.0", react@^17.0.2, "react@>= 16", "react@>= 16.3", "react@>= 16.3.0", "react@>= 16.8.0", react@>=15, react@>=15.0.0, react@>=16.0.0, react@>=16.11.0, react@>=16.14.0, react@>=16.3.0, react@>=16.8.0, react@>=16.9.0, "react@15.x || 16.x || 17.x || 18.x", "react@16.x || 17.x", react@17.0.2:
+react@^17.0.2:
version "17.0.2"
resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz"
integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
@@ -11552,7 +11573,7 @@ redux-state-sync@^3.1.4:
dependencies:
broadcast-channel "^3.1.0"
-redux@^4, redux@^4.0.0, redux@^4.0.4, redux@^4.2.1, redux@>4.0.0:
+redux@^4.0.0, redux@^4.0.4, redux@^4.2.1:
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==
@@ -11818,7 +11839,7 @@ rollup-plugin-terser@^7.0.0:
serialize-javascript "^4.0.0"
terser "^5.0.0"
-"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1:
+rollup@^2.43.1:
version "2.79.1"
resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz"
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
@@ -11886,7 +11907,7 @@ sass-loader@^12.3.0:
klona "^2.0.4"
neo-async "^2.6.2"
-sass@^1.3.0, sass@^1.58.3:
+sass@^1.58.3:
version "1.58.3"
resolved "https://registry.npmjs.org/sass/-/sass-1.58.3.tgz"
integrity sha512-Q7RaEtYf6BflYrQ+buPudKR26/lH+10EmO9bBqbmPh/KeLqv8bjpTNqxe71ocONqXq+jYiCbpPUmQMS+JJPk4A==
@@ -12517,7 +12538,7 @@ style-utils@~0.2.0:
resolved "https://registry.npmjs.org/style-utils/-/style-utils-0.2.1.tgz"
integrity sha512-eKRIfWnUSdBqe2ko+qisUwBSlfWpHru89geRqzmScpDhkPW1ksmE04d//nDcXeF+TVK5cnBG90mMmHgxyxXleQ==
-styled-components@^5.3.6, "styled-components@>= 2":
+styled-components@^5.3.6:
version "5.3.6"
resolved "https://registry.npmjs.org/styled-components/-/styled-components-5.3.6.tgz"
integrity sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==
@@ -12541,7 +12562,7 @@ stylehacks@^5.1.1:
browserslist "^4.21.4"
postcss-selector-parser "^6.0.4"
-subscriptions-transport-ws@^0.11.0, "subscriptions-transport-ws@^0.9.0 || ^0.11.0":
+subscriptions-transport-ws@^0.11.0:
version "0.11.0"
resolved "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz"
integrity sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==
@@ -12896,7 +12917,7 @@ ts-invariant@^0.10.3:
dependencies:
tslib "^2.1.0"
-ts-node@^10.7.0, ts-node@>=9.0.0:
+ts-node@^10.7.0:
version "10.9.1"
resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz"
integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
@@ -13007,7 +13028,7 @@ type-fest@^0.16.0:
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz"
integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==
-type-fest@^0.20.2, "type-fest@>=0.17.0 <4.0.0":
+type-fest@^0.20.2:
version "0.20.2"
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
@@ -13060,11 +13081,6 @@ typescript-tuple@^2.2.1:
dependencies:
typescript-compare "^0.0.2"
-"typescript@^3.2.1 || ^4", "typescript@>= 2.7", typescript@>=2.7, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=3:
- version "4.9.5"
- resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz"
- integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
-
unbox-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz"
@@ -13370,7 +13386,7 @@ webpack-dev-middleware@^5.3.1:
range-parser "^1.2.1"
schema-utils "^4.0.0"
-webpack-dev-server@^4.6.0, "webpack-dev-server@3.x || 4.x":
+webpack-dev-server@^4.6.0:
version "4.11.1"
resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz"
integrity sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==
@@ -13442,7 +13458,7 @@ webpack-sources@^2.2.0:
source-list-map "^2.0.1"
source-map "^0.6.1"
-"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.64.4, "webpack@>= 4", webpack@>=2, "webpack@>=4.43.0 <6.0.0":
+webpack@^5.64.4:
version "5.75.0"
resolved "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz"
integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==
diff --git a/hasura/metadata/functions.yaml b/hasura/metadata/functions.yaml
index 3ef10184a..5dd1b8640 100644
--- a/hasura/metadata/functions.yaml
+++ b/hasura/metadata/functions.yaml
@@ -1,3 +1,6 @@
+- function:
+ name: jobs_ar_summary
+ schema: public
- function:
name: search_bills
schema: public
diff --git a/hasura/metadata/tables.yaml b/hasura/metadata/tables.yaml
index f4e4d99a7..fda2aa44a 100644
--- a/hasura/metadata/tables.yaml
+++ b/hasura/metadata/tables.yaml
@@ -2673,6 +2673,9 @@
- table:
name: ioevents
schema: public
+- table:
+ name: job_ar_schema
+ schema: public
- table:
name: job_conversations
schema: public
@@ -3812,6 +3815,7 @@
- referral_source
- referral_source_extra
- regie_number
+ - remove_from_ar
- ro_number
- scheduled_completion
- scheduled_delivery
@@ -4093,6 +4097,7 @@
- referral_source
- referral_source_extra
- regie_number
+ - remove_from_ar
- ro_number
- scheduled_completion
- scheduled_delivery
diff --git a/hasura/migrations/1705693552101_run_sql_migration/down.sql b/hasura/migrations/1705693552101_run_sql_migration/down.sql
new file mode 100644
index 000000000..8fd036e68
--- /dev/null
+++ b/hasura/migrations/1705693552101_run_sql_migration/down.sql
@@ -0,0 +1,33 @@
+-- Could not auto-generate a down migration.
+-- Please write an appropriate down migration for the SQL below:
+-- CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+-- RETURNS SETOF jobs
+-- LANGUAGE plpgsql
+-- STABLE
+-- AS $function$
+-- BEGIN
+--
+-- RETURN query
+-- select
+-- j.id,
+-- j.shopid,
+-- j.ro_number,
+-- j.clm_total,
+-- p.total_payments,
+-- j.clm_total - p.total_payments as balance
+-- from
+-- jobs j
+-- left join (
+-- select
+-- p.jobid,
+-- sum(p.amount) as total_payments
+-- from
+-- payments p
+-- group by
+-- p.jobid
+-- ) p on
+-- j.id = p.jobid ;
+--
+--
+-- END
+-- $function$;
diff --git a/hasura/migrations/1705693552101_run_sql_migration/up.sql b/hasura/migrations/1705693552101_run_sql_migration/up.sql
new file mode 100644
index 000000000..56f2ff938
--- /dev/null
+++ b/hasura/migrations/1705693552101_run_sql_migration/up.sql
@@ -0,0 +1,31 @@
+CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+ RETURNS SETOF jobs
+ LANGUAGE plpgsql
+ STABLE
+ AS $function$
+BEGIN
+
+ RETURN query
+select
+ j.id,
+ j.shopid,
+ j.ro_number,
+ j.clm_total,
+ p.total_payments,
+ j.clm_total - p.total_payments as balance
+from
+ jobs j
+left join (
+ select
+ p.jobid,
+ sum(p.amount) as total_payments
+ from
+ payments p
+ group by
+ p.jobid
+ ) p on
+ j.id = p.jobid ;
+
+
+END
+$function$;
diff --git a/hasura/migrations/1705693852612_create_table_public_job_ar_schema/down.sql b/hasura/migrations/1705693852612_create_table_public_job_ar_schema/down.sql
new file mode 100644
index 000000000..1ef08bca9
--- /dev/null
+++ b/hasura/migrations/1705693852612_create_table_public_job_ar_schema/down.sql
@@ -0,0 +1 @@
+DROP TABLE "public"."job_ar_schema";
diff --git a/hasura/migrations/1705693852612_create_table_public_job_ar_schema/up.sql b/hasura/migrations/1705693852612_create_table_public_job_ar_schema/up.sql
new file mode 100644
index 000000000..fe574a140
--- /dev/null
+++ b/hasura/migrations/1705693852612_create_table_public_job_ar_schema/up.sql
@@ -0,0 +1 @@
+CREATE TABLE "public"."job_ar_schema" ("id" uuid NOT NULL, "ro_number" text, "clm_total" numeric NOT NULL, "total_payments" numeric NOT NULL DEFAULT 0, "balance" numeric NOT NULL DEFAULT 0, PRIMARY KEY ("id") );
diff --git a/hasura/migrations/1705693896379_run_sql_migration/down.sql b/hasura/migrations/1705693896379_run_sql_migration/down.sql
new file mode 100644
index 000000000..a180c91a5
--- /dev/null
+++ b/hasura/migrations/1705693896379_run_sql_migration/down.sql
@@ -0,0 +1,34 @@
+-- Could not auto-generate a down migration.
+-- Please write an appropriate down migration for the SQL below:
+-- DROP FUNCTION public.jobs_ar_summary;
+--
+-- CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+-- RETURNS SETOF job_ar_schema
+-- LANGUAGE plpgsql
+-- STABLE
+-- AS $function$
+-- BEGIN
+--
+-- RETURN query
+-- select
+-- j.id,
+-- j.ro_number,
+-- j.clm_total,
+-- p.total_payments,
+-- j.clm_total - p.total_payments as balance
+-- from
+-- jobs j
+-- left join (
+-- select
+-- p.jobid,
+-- sum(p.amount) as total_payments
+-- from
+-- payments p
+-- group by
+-- p.jobid
+-- ) p on
+-- j.id = p.jobid ;
+--
+--
+-- END
+-- $function$;
diff --git a/hasura/migrations/1705693896379_run_sql_migration/up.sql b/hasura/migrations/1705693896379_run_sql_migration/up.sql
new file mode 100644
index 000000000..48c04c38f
--- /dev/null
+++ b/hasura/migrations/1705693896379_run_sql_migration/up.sql
@@ -0,0 +1,32 @@
+DROP FUNCTION public.jobs_ar_summary;
+
+CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+ RETURNS SETOF job_ar_schema
+ LANGUAGE plpgsql
+ STABLE
+ AS $function$
+BEGIN
+
+ RETURN query
+select
+ j.id,
+ j.ro_number,
+ j.clm_total,
+ p.total_payments,
+ j.clm_total - p.total_payments as balance
+from
+ jobs j
+left join (
+ select
+ p.jobid,
+ sum(p.amount) as total_payments
+ from
+ payments p
+ group by
+ p.jobid
+ ) p on
+ j.id = p.jobid ;
+
+
+END
+$function$;
diff --git a/hasura/migrations/1705694146809_run_sql_migration/down.sql b/hasura/migrations/1705694146809_run_sql_migration/down.sql
new file mode 100644
index 000000000..0a84cd97e
--- /dev/null
+++ b/hasura/migrations/1705694146809_run_sql_migration/down.sql
@@ -0,0 +1,32 @@
+-- Could not auto-generate a down migration.
+-- Please write an appropriate down migration for the SQL below:
+-- CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+-- RETURNS SETOF job_ar_schema
+-- LANGUAGE plpgsql
+-- STABLE
+-- AS $function$
+-- BEGIN
+--
+-- RETURN query
+-- select
+-- j.id,
+-- j.ro_number,
+-- j.clm_total,
+-- p.total_payments,
+-- j.clm_total - p.total_payments as balance
+-- from
+-- jobs j
+-- left join (
+-- select
+-- p.jobid,
+-- coalesce (sum(p.amount),0) as total_payments
+-- from
+-- payments p
+-- group by
+-- p.jobid
+-- ) p on
+-- j.id = p.jobid ;
+--
+--
+-- END
+-- $function$;
diff --git a/hasura/migrations/1705694146809_run_sql_migration/up.sql b/hasura/migrations/1705694146809_run_sql_migration/up.sql
new file mode 100644
index 000000000..8b6779a91
--- /dev/null
+++ b/hasura/migrations/1705694146809_run_sql_migration/up.sql
@@ -0,0 +1,30 @@
+CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+ RETURNS SETOF job_ar_schema
+ LANGUAGE plpgsql
+ STABLE
+ AS $function$
+BEGIN
+
+ RETURN query
+select
+ j.id,
+ j.ro_number,
+ j.clm_total,
+ p.total_payments,
+ j.clm_total - p.total_payments as balance
+from
+ jobs j
+left join (
+ select
+ p.jobid,
+ coalesce (sum(p.amount),0) as total_payments
+ from
+ payments p
+ group by
+ p.jobid
+ ) p on
+ j.id = p.jobid ;
+
+
+END
+$function$;
diff --git a/hasura/migrations/1705694176838_run_sql_migration/down.sql b/hasura/migrations/1705694176838_run_sql_migration/down.sql
new file mode 100644
index 000000000..0a84cd97e
--- /dev/null
+++ b/hasura/migrations/1705694176838_run_sql_migration/down.sql
@@ -0,0 +1,32 @@
+-- Could not auto-generate a down migration.
+-- Please write an appropriate down migration for the SQL below:
+-- CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+-- RETURNS SETOF job_ar_schema
+-- LANGUAGE plpgsql
+-- STABLE
+-- AS $function$
+-- BEGIN
+--
+-- RETURN query
+-- select
+-- j.id,
+-- j.ro_number,
+-- j.clm_total,
+-- p.total_payments,
+-- j.clm_total - p.total_payments as balance
+-- from
+-- jobs j
+-- left join (
+-- select
+-- p.jobid,
+-- coalesce (sum(p.amount),0) as total_payments
+-- from
+-- payments p
+-- group by
+-- p.jobid
+-- ) p on
+-- j.id = p.jobid ;
+--
+--
+-- END
+-- $function$;
diff --git a/hasura/migrations/1705694176838_run_sql_migration/up.sql b/hasura/migrations/1705694176838_run_sql_migration/up.sql
new file mode 100644
index 000000000..8b6779a91
--- /dev/null
+++ b/hasura/migrations/1705694176838_run_sql_migration/up.sql
@@ -0,0 +1,30 @@
+CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+ RETURNS SETOF job_ar_schema
+ LANGUAGE plpgsql
+ STABLE
+ AS $function$
+BEGIN
+
+ RETURN query
+select
+ j.id,
+ j.ro_number,
+ j.clm_total,
+ p.total_payments,
+ j.clm_total - p.total_payments as balance
+from
+ jobs j
+left join (
+ select
+ p.jobid,
+ coalesce (sum(p.amount),0) as total_payments
+ from
+ payments p
+ group by
+ p.jobid
+ ) p on
+ j.id = p.jobid ;
+
+
+END
+$function$;
diff --git a/hasura/migrations/1705696451631_run_sql_migration/down.sql b/hasura/migrations/1705696451631_run_sql_migration/down.sql
new file mode 100644
index 000000000..0826360f9
--- /dev/null
+++ b/hasura/migrations/1705696451631_run_sql_migration/down.sql
@@ -0,0 +1,32 @@
+-- Could not auto-generate a down migration.
+-- Please write an appropriate down migration for the SQL below:
+-- CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+-- RETURNS SETOF job_ar_schema
+-- LANGUAGE plpgsql
+-- STABLE
+-- AS $function$
+-- BEGIN
+--
+-- RETURN query
+-- select
+-- j.id,
+-- j.ro_number,
+-- j.clm_total,
+-- coalesce (p.total_payments,0) as total_payments,
+-- j.clm_total - coalesce (p.total_payments,0) as balance
+-- from
+-- jobs j
+-- left join (
+-- select
+-- p.jobid,
+-- coalesce (sum(p.amount),0) as total_payments
+-- from
+-- payments p
+-- group by
+-- p.jobid
+-- ) p on
+-- j.id = p.jobid ;
+--
+--
+-- END
+-- $function$;
diff --git a/hasura/migrations/1705696451631_run_sql_migration/up.sql b/hasura/migrations/1705696451631_run_sql_migration/up.sql
new file mode 100644
index 000000000..a78f18383
--- /dev/null
+++ b/hasura/migrations/1705696451631_run_sql_migration/up.sql
@@ -0,0 +1,30 @@
+CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+ RETURNS SETOF job_ar_schema
+ LANGUAGE plpgsql
+ STABLE
+ AS $function$
+BEGIN
+
+ RETURN query
+select
+ j.id,
+ j.ro_number,
+ j.clm_total,
+ coalesce (p.total_payments,0) as total_payments,
+ j.clm_total - coalesce (p.total_payments,0) as balance
+from
+ jobs j
+left join (
+ select
+ p.jobid,
+ coalesce (sum(p.amount),0) as total_payments
+ from
+ payments p
+ group by
+ p.jobid
+ ) p on
+ j.id = p.jobid ;
+
+
+END
+$function$;
diff --git a/hasura/migrations/1705696927199_alter_table_public_jobs_add_column_remove_from_ar/down.sql b/hasura/migrations/1705696927199_alter_table_public_jobs_add_column_remove_from_ar/down.sql
new file mode 100644
index 000000000..676aeaafd
--- /dev/null
+++ b/hasura/migrations/1705696927199_alter_table_public_jobs_add_column_remove_from_ar/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"."jobs" add column "remove_from_ar" boolean
+-- not null default 'false';
diff --git a/hasura/migrations/1705696927199_alter_table_public_jobs_add_column_remove_from_ar/up.sql b/hasura/migrations/1705696927199_alter_table_public_jobs_add_column_remove_from_ar/up.sql
new file mode 100644
index 000000000..562618ab9
--- /dev/null
+++ b/hasura/migrations/1705696927199_alter_table_public_jobs_add_column_remove_from_ar/up.sql
@@ -0,0 +1,2 @@
+alter table "public"."jobs" add column "remove_from_ar" boolean
+ not null default 'false';
diff --git a/hasura/migrations/1705698426997_run_sql_migration/down.sql b/hasura/migrations/1705698426997_run_sql_migration/down.sql
new file mode 100644
index 000000000..c564b5e7c
--- /dev/null
+++ b/hasura/migrations/1705698426997_run_sql_migration/down.sql
@@ -0,0 +1,33 @@
+-- Could not auto-generate a down migration.
+-- Please write an appropriate down migration for the SQL below:
+-- CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+-- RETURNS SETOF job_ar_schema
+-- LANGUAGE plpgsql
+-- STABLE
+-- AS $function$
+-- BEGIN
+--
+-- RETURN query
+-- select
+-- j.id,
+-- j.ro_number,
+-- j.clm_total,
+-- coalesce (p.total_payments,0) as total_payments,
+-- j.clm_total - coalesce (p.total_payments,0) as balance
+-- from
+-- jobs j
+-- left join (
+-- select
+-- p.jobid,
+-- coalesce (sum(p.amount),0) as total_payments
+-- from
+-- payments p
+-- group by
+-- p.jobid
+-- ) p on
+-- j.id = p.jobid
+-- where j.remove_from_ar = false;
+--
+--
+-- END
+-- $function$;
diff --git a/hasura/migrations/1705698426997_run_sql_migration/up.sql b/hasura/migrations/1705698426997_run_sql_migration/up.sql
new file mode 100644
index 000000000..f1854fcac
--- /dev/null
+++ b/hasura/migrations/1705698426997_run_sql_migration/up.sql
@@ -0,0 +1,31 @@
+CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+ RETURNS SETOF job_ar_schema
+ LANGUAGE plpgsql
+ STABLE
+ AS $function$
+BEGIN
+
+ RETURN query
+select
+ j.id,
+ j.ro_number,
+ j.clm_total,
+ coalesce (p.total_payments,0) as total_payments,
+ j.clm_total - coalesce (p.total_payments,0) as balance
+from
+ jobs j
+left join (
+ select
+ p.jobid,
+ coalesce (sum(p.amount),0) as total_payments
+ from
+ payments p
+ group by
+ p.jobid
+ ) p on
+ j.id = p.jobid
+where j.remove_from_ar = false;
+
+
+END
+$function$;
diff --git a/hasura/migrations/1705698476261_alter_table_public_job_ar_schema_add_column_date_invoiced/down.sql b/hasura/migrations/1705698476261_alter_table_public_job_ar_schema_add_column_date_invoiced/down.sql
new file mode 100644
index 000000000..aff5d0afe
--- /dev/null
+++ b/hasura/migrations/1705698476261_alter_table_public_job_ar_schema_add_column_date_invoiced/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"."job_ar_schema" add column "date_invoiced" timestamptz
+-- null;
diff --git a/hasura/migrations/1705698476261_alter_table_public_job_ar_schema_add_column_date_invoiced/up.sql b/hasura/migrations/1705698476261_alter_table_public_job_ar_schema_add_column_date_invoiced/up.sql
new file mode 100644
index 000000000..bd8f477ec
--- /dev/null
+++ b/hasura/migrations/1705698476261_alter_table_public_job_ar_schema_add_column_date_invoiced/up.sql
@@ -0,0 +1,2 @@
+alter table "public"."job_ar_schema" add column "date_invoiced" timestamptz
+ null;
diff --git a/hasura/migrations/1705698534883_run_sql_migration/down.sql b/hasura/migrations/1705698534883_run_sql_migration/down.sql
new file mode 100644
index 000000000..a68a79058
--- /dev/null
+++ b/hasura/migrations/1705698534883_run_sql_migration/down.sql
@@ -0,0 +1,34 @@
+-- Could not auto-generate a down migration.
+-- Please write an appropriate down migration for the SQL below:
+-- CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+-- RETURNS SETOF job_ar_schema
+-- LANGUAGE plpgsql
+-- STABLE
+-- AS $function$
+-- BEGIN
+--
+-- RETURN query
+-- select
+-- j.id,
+-- j.ro_number,
+-- j.clm_total,
+-- j.date_invoiced,
+-- coalesce (p.total_payments,0) as total_payments,
+-- j.clm_total - coalesce (p.total_payments,0) as balance
+-- from
+-- jobs j
+-- left join (
+-- select
+-- p.jobid,
+-- coalesce (sum(p.amount),0) as total_payments
+-- from
+-- payments p
+-- group by
+-- p.jobid
+-- ) p on
+-- j.id = p.jobid
+-- where j.remove_from_ar = false and j.date_invoiced is not null;
+--
+--
+-- END
+-- $function$;
diff --git a/hasura/migrations/1705698534883_run_sql_migration/up.sql b/hasura/migrations/1705698534883_run_sql_migration/up.sql
new file mode 100644
index 000000000..9961003f7
--- /dev/null
+++ b/hasura/migrations/1705698534883_run_sql_migration/up.sql
@@ -0,0 +1,32 @@
+CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+ RETURNS SETOF job_ar_schema
+ LANGUAGE plpgsql
+ STABLE
+ AS $function$
+BEGIN
+
+ RETURN query
+select
+ j.id,
+ j.ro_number,
+ j.clm_total,
+ j.date_invoiced,
+ coalesce (p.total_payments,0) as total_payments,
+ j.clm_total - coalesce (p.total_payments,0) as balance
+from
+ jobs j
+left join (
+ select
+ p.jobid,
+ coalesce (sum(p.amount),0) as total_payments
+ from
+ payments p
+ group by
+ p.jobid
+ ) p on
+ j.id = p.jobid
+where j.remove_from_ar = false and j.date_invoiced is not null;
+
+
+END
+$function$;
diff --git a/hasura/migrations/1705698593644_run_sql_migration/down.sql b/hasura/migrations/1705698593644_run_sql_migration/down.sql
new file mode 100644
index 000000000..c11116ffb
--- /dev/null
+++ b/hasura/migrations/1705698593644_run_sql_migration/down.sql
@@ -0,0 +1,34 @@
+-- Could not auto-generate a down migration.
+-- Please write an appropriate down migration for the SQL below:
+-- CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+-- RETURNS SETOF job_ar_schema
+-- LANGUAGE plpgsql
+-- STABLE
+-- AS $function$
+-- BEGIN
+--
+-- RETURN query
+-- select
+-- j.id,
+-- j.ro_number,
+-- j.clm_total,
+-- coalesce (p.total_payments,0) as total_payments,
+-- j.clm_total - coalesce (p.total_payments,0) as balance,
+-- j.date_invoiced
+-- from
+-- jobs j
+-- left join (
+-- select
+-- p.jobid,
+-- coalesce (sum(p.amount),0) as total_payments
+-- from
+-- payments p
+-- group by
+-- p.jobid
+-- ) p on
+-- j.id = p.jobid
+-- where j.remove_from_ar = false and j.date_invoiced is not null;
+--
+--
+-- END
+-- $function$;
diff --git a/hasura/migrations/1705698593644_run_sql_migration/up.sql b/hasura/migrations/1705698593644_run_sql_migration/up.sql
new file mode 100644
index 000000000..729ee69d9
--- /dev/null
+++ b/hasura/migrations/1705698593644_run_sql_migration/up.sql
@@ -0,0 +1,32 @@
+CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+ RETURNS SETOF job_ar_schema
+ LANGUAGE plpgsql
+ STABLE
+ AS $function$
+BEGIN
+
+ RETURN query
+select
+ j.id,
+ j.ro_number,
+ j.clm_total,
+ coalesce (p.total_payments,0) as total_payments,
+ j.clm_total - coalesce (p.total_payments,0) as balance,
+ j.date_invoiced
+from
+ jobs j
+left join (
+ select
+ p.jobid,
+ coalesce (sum(p.amount),0) as total_payments
+ from
+ payments p
+ group by
+ p.jobid
+ ) p on
+ j.id = p.jobid
+where j.remove_from_ar = false and j.date_invoiced is not null;
+
+
+END
+$function$;
diff --git a/hasura/migrations/1705698876975_run_sql_migration/down.sql b/hasura/migrations/1705698876975_run_sql_migration/down.sql
new file mode 100644
index 000000000..190511742
--- /dev/null
+++ b/hasura/migrations/1705698876975_run_sql_migration/down.sql
@@ -0,0 +1,34 @@
+-- Could not auto-generate a down migration.
+-- Please write an appropriate down migration for the SQL below:
+-- CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+-- RETURNS SETOF job_ar_schema
+-- LANGUAGE plpgsql
+-- STABLE
+-- AS $function$
+-- BEGIN
+--
+-- RETURN query
+-- select
+-- j.id,
+-- j.ro_number,
+-- j.clm_total,
+-- coalesce (p.total_payments,0) as total_payments,
+-- j.clm_total - coalesce (p.total_payments,0) as balance,
+-- j.date_invoiced
+-- from
+-- jobs j
+-- left join (
+-- select
+-- p.jobid,
+-- coalesce (sum(p.amount),0) as total_payments
+-- from
+-- payments p
+-- group by
+-- p.jobid
+-- ) p on
+-- j.id = p.jobid
+-- where j.remove_from_ar = false and j.date_invoiced is not null and balance > 0;
+--
+--
+-- END
+-- $function$;
diff --git a/hasura/migrations/1705698876975_run_sql_migration/up.sql b/hasura/migrations/1705698876975_run_sql_migration/up.sql
new file mode 100644
index 000000000..4979c0a5e
--- /dev/null
+++ b/hasura/migrations/1705698876975_run_sql_migration/up.sql
@@ -0,0 +1,32 @@
+CREATE OR REPLACE FUNCTION public.jobs_ar_summary ()
+ RETURNS SETOF job_ar_schema
+ LANGUAGE plpgsql
+ STABLE
+ AS $function$
+BEGIN
+
+ RETURN query
+select
+ j.id,
+ j.ro_number,
+ j.clm_total,
+ coalesce (p.total_payments,0) as total_payments,
+ j.clm_total - coalesce (p.total_payments,0) as balance,
+ j.date_invoiced
+from
+ jobs j
+left join (
+ select
+ p.jobid,
+ coalesce (sum(p.amount),0) as total_payments
+ from
+ payments p
+ group by
+ p.jobid
+ ) p on
+ j.id = p.jobid
+where j.remove_from_ar = false and j.date_invoiced is not null and balance > 0;
+
+
+END
+$function$;
diff --git a/package-lock.json b/package-lock.json
index a4e02c21b..6658c405a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -55,7 +55,7 @@
"source-map-explorer": "^2.5.2"
},
"engines": {
- "node": ">=16.0.0",
+ "node": ">=18.0.0",
"npm": ">=8.0.0"
}
},