Merged in release/2022-07-29 (pull request #547)

release/2022-07-29

Approved-by: Patrick Fic
This commit is contained in:
Patrick Fic
2022-07-25 20:05:51 +00:00
9 changed files with 1432 additions and 1128 deletions

View File

@@ -4,18 +4,18 @@
"private": true, "private": true,
"proxy": "http://localhost:4000", "proxy": "http://localhost:4000",
"dependencies": { "dependencies": {
"@apollo/client": "^3.6.6", "@apollo/client": "^3.6.9",
"@asseinfo/react-kanban": "^2.2.0", "@asseinfo/react-kanban": "^2.2.0",
"@craco/craco": "^6.4.3", "@craco/craco": "^6.4.5",
"@fingerprintjs/fingerprintjs": "^3.3.3", "@fingerprintjs/fingerprintjs": "^3.3.3",
"@jsreport/browser-client": "^3.1.0", "@jsreport/browser-client": "^3.1.0",
"@sentry/react": "^7.1.1", "@sentry/react": "^7.7.0",
"@sentry/tracing": "^7.1.1", "@sentry/tracing": "^7.7.0",
"@splitsoftware/splitio-react": "^1.4.1", "@splitsoftware/splitio-react": "^1.6.0",
"@stripe/react-stripe-js": "^1.8.1", "@stripe/react-stripe-js": "^1.9.0",
"@stripe/stripe-js": "^1.31.0", "@stripe/stripe-js": "^1.32.0",
"@tanem/react-nprogress": "^5.0.1", "@tanem/react-nprogress": "^5.0.8",
"antd": "^4.21.0", "antd": "^4.21.7",
"apollo-link-logger": "^2.0.0", "apollo-link-logger": "^2.0.0",
"axios": "^0.27.2", "axios": "^0.27.2",
"craco-less": "^1.20.0", "craco-less": "^1.20.0",
@@ -24,33 +24,33 @@
"enquire-js": "^0.2.1", "enquire-js": "^0.2.1",
"env-cmd": "^10.1.0", "env-cmd": "^10.1.0",
"exifr": "^7.1.3", "exifr": "^7.1.3",
"firebase": "^9.8.2", "firebase": "^9.9.1",
"graphql": "^16.5.0", "graphql": "^16.5.0",
"i18next": "^21.8.9", "i18next": "^21.8.14",
"i18next-browser-languagedetector": "^6.1.4", "i18next-browser-languagedetector": "^6.1.4",
"jsoneditor": "^9.8.0", "jsoneditor": "^9.9.0",
"jsreport-browser-client-dist": "^1.3.0", "jsreport-browser-client-dist": "^1.3.0",
"libphonenumber-js": "^1.10.6", "libphonenumber-js": "^1.10.9",
"logrocket": "^3.0.0", "logrocket": "^3.0.1",
"markerjs2": "^2.21.4", "markerjs2": "^2.22.0",
"moment-business-days": "^1.2.0", "moment-business-days": "^1.2.0",
"moment-timezone": "^0.5.34", "moment-timezone": "^0.5.34",
"normalize-url": "^7.0.3", "normalize-url": "^7.0.3",
"phone": "^3.1.20", "phone": "^3.1.23",
"preval.macro": "^5.0.0", "preval.macro": "^5.0.0",
"prop-types": "^15.8.1", "prop-types": "^15.8.1",
"query-string": "^7.1.1", "query-string": "^7.1.1",
"rc-queue-anim": "^2.0.0", "rc-queue-anim": "^2.0.0",
"rc-scroll-anim": "^2.7.6", "rc-scroll-anim": "^2.7.6",
"react": "^17.0.2", "react": "^17.0.2",
"react-big-calendar": "^0.40.1", "react-big-calendar": "^1.5.0",
"react-color": "^2.19.3", "react-color": "^2.19.3",
"react-cookie": "^4.1.1", "react-cookie": "^4.1.1",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"react-drag-listview": "^0.2.1", "react-drag-listview": "^0.2.1",
"react-grid-gallery": "^0.5.5", "react-grid-gallery": "^0.5.5",
"react-grid-layout": "^1.3.4", "react-grid-layout": "^1.3.4",
"react-i18next": "^11.17.0", "react-i18next": "^11.18.1",
"react-icons": "^4.4.0", "react-icons": "^4.4.0",
"react-number-format": "^4.9.3", "react-number-format": "^4.9.3",
"react-redux": "^7.2.8", "react-redux": "^7.2.8",
@@ -60,13 +60,13 @@
"react-sticky": "^6.0.3", "react-sticky": "^6.0.3",
"react-sublime-video": "^0.2.5", "react-sublime-video": "^0.2.5",
"react-virtualized": "^9.22.3", "react-virtualized": "^9.22.3",
"recharts": "^2.1.10", "recharts": "^2.1.12",
"redux": "^4.2.0", "redux": "^4.2.0",
"redux-persist": "^6.0.0", "redux-persist": "^6.0.0",
"redux-saga": "^1.1.3", "redux-saga": "^1.1.3",
"redux-state-sync": "^3.1.2", "redux-state-sync": "^3.1.4",
"reselect": "^4.1.6", "reselect": "^4.1.6",
"sass": "^1.51.0", "sass": "^1.54.0",
"socket.io-client": "^4.5.1", "socket.io-client": "^4.5.1",
"styled-components": "^5.3.5", "styled-components": "^5.3.5",
"subscriptions-transport-ws": "^0.11.0", "subscriptions-transport-ws": "^0.11.0",
@@ -119,9 +119,9 @@
"react-error-overlay": "6.0.9" "react-error-overlay": "6.0.9"
}, },
"devDependencies": { "devDependencies": {
"@sentry/webpack-plugin": "^1.18.9", "@sentry/webpack-plugin": "^1.19.0",
"@testing-library/cypress": "^8.0.2", "@testing-library/cypress": "^8.0.3",
"cypress": "^9.6.1", "cypress": "^10.3.1",
"eslint-plugin-cypress": "^2.12.1", "eslint-plugin-cypress": "^2.12.1",
"react-error-overlay": "6.0.11", "react-error-overlay": "6.0.11",
"redux-logger": "^3.0.6", "redux-logger": "^3.0.6",

View File

@@ -27,6 +27,10 @@ const BillLineSearchSelect = (
option.oem_partno option.oem_partno
.toLowerCase() .toLowerCase()
.includes(inputValue.toLowerCase())) || .includes(inputValue.toLowerCase())) ||
(option.alt_partno &&
option.alt_partno
.toLowerCase()
.includes(inputValue.toLowerCase())) ||
(option.act_price && (option.act_price &&
option.act_price.toString().startsWith(inputValue.toString())) option.act_price.toString().startsWith(inputValue.toString()))
); );
@@ -48,14 +52,17 @@ const BillLineSearchSelect = (
line_desc={item.line_desc} line_desc={item.line_desc}
part_qty={item.part_qty} part_qty={item.part_qty}
oem_partno={item.oem_partno} oem_partno={item.oem_partno}
alt_partno={item.alt_partno}
act_price={item.act_price} act_price={item.act_price}
style={{ style={{
...(item.removed ? { textDecoration: "line-through" } : {}), ...(item.removed ? { textDecoration: "line-through" } : {}),
}} }}
> >
<span>{`${item.removed ? `(REMOVED) ` : ""}${item.line_desc}${ <span>
item.oem_partno ? ` - ${item.oem_partno}` : "" {`${item.removed ? `(REMOVED) ` : ""}${item.line_desc}${
}`}</span> item.oem_partno ? ` - ${item.oem_partno}` : ""
}${item.alt_partno ? ` (${item.alt_partno})` : ""}`.trim()}
</span>
<span style={{ float: "right", paddingleft: "1rem" }}> <span style={{ float: "right", paddingleft: "1rem" }}>
{item.act_price {item.act_price
? `$${item.act_price && item.act_price.toFixed(2)}` ? `$${item.act_price && item.act_price.toFixed(2)}`

View File

@@ -144,11 +144,26 @@ export function JobLinesComponent({
filters: [ filters: [
{ {
text: t("jobs.labels.partsfilter"), text: t("jobs.labels.partsfilter"),
value: ["PAN", "PAP", "PAL", "PAA", "PAS", "PASL"], value: [
"PAN",
"PAC",
"PAR",
"PAL",
"PAA",
"PAM",
"PAP",
"PAS",
"PASL",
"PAG",
],
}, },
{ {
text: t("joblines.fields.part_types.PAN"), text: t("joblines.fields.part_types.PAN"),
value: ["PAN", "PAP"], value: ["PAN"],
},
{
text: t("joblines.fields.part_types.PAP"),
value: ["PAP"],
}, },
{ {
text: t("joblines.fields.part_types.PAL"), text: t("joblines.fields.part_types.PAL"),
@@ -158,9 +173,29 @@ export function JobLinesComponent({
text: t("joblines.fields.part_types.PAA"), text: t("joblines.fields.part_types.PAA"),
value: ["PAA"], value: ["PAA"],
}, },
{
text: t("joblines.fields.part_types.PAG"),
value: ["PAG"],
},
{ {
text: t("joblines.fields.part_types.PAS"), text: t("joblines.fields.part_types.PAS"),
value: ["PAS", "PASL"], value: ["PAS"],
},
{
text: t("joblines.fields.part_types.PASL"),
value: ["PASL"],
},
{
text: t("joblines.fields.part_types.PAC"),
value: ["PAC"],
},
{
text: t("joblines.fields.part_types.PAR"),
value: ["PAR"],
},
{
text: t("joblines.fields.part_types.PAM"),
value: ["PAM"],
}, },
], ],
onFilter: (value, record) => value.includes(record.part_type), onFilter: (value, record) => value.includes(record.part_type),
@@ -346,7 +381,11 @@ export function JobLinesComponent({
]; ];
const handleTableChange = (pagination, filters, sorter) => { const handleTableChange = (pagination, filters, sorter) => {
setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); setState((state) => ({
...state,
filteredInfo: filters,
sortedInfo: sorter,
}));
}; };
const handleMark = (e) => { const handleMark = (e) => {
@@ -482,9 +521,10 @@ export function JobLinesComponent({
</Button> </Button>
<Button <Button
onClick={() => { onClick={() => {
setState({ setState((state) => ({
...state, ...state,
filteredInfo: { filteredInfo: {
...state.filteredInfo,
part_type: [ part_type: [
"PAN", "PAN",
"PAC", "PAC",
@@ -498,7 +538,7 @@ export function JobLinesComponent({
"PAG", "PAG",
], ],
}, },
}); }));
}} }}
> >
<FilterFilled /> {t("jobs.actions.filterpartsonly")} <FilterFilled /> {t("jobs.actions.filterpartsonly")}

View File

@@ -197,6 +197,7 @@ export const GET_JOB_LINES_TO_ENTER_BILL = gql`
line_desc line_desc
part_type part_type
oem_partno oem_partno
alt_partno
db_price db_price
act_price act_price
part_qty part_qty
@@ -206,6 +207,7 @@ export const GET_JOB_LINES_TO_ENTER_BILL = gql`
lbr_op lbr_op
lbr_amt lbr_amt
op_code_desc op_code_desc
alt_partno
} }
jobs_by_pk(id: $id) { jobs_by_pk(id: $id) {
id id

View File

@@ -17,7 +17,9 @@ const sentryReduxEnhancer = Sentry.createReduxEnhancer({
const sagaMiddleWare = createSagaMiddleware(); const sagaMiddleWare = createSagaMiddleware();
const reduxSyncConfig = { const reduxSyncConfig = {
whitelist: ["ADD_RECENT_ITEM", "SET_SHOP_DETAILS"], whitelist: [
"ADD_RECENT_ITEM", //"SET_SHOP_DETAILS"
],
}; };
const middlewares = [ const middlewares = [

View File

@@ -269,7 +269,7 @@ export function* SetAuthLevelFromShopDetails({ payload }) {
try { try {
const userEmail = yield select((state) => state.user.currentUser.email); const userEmail = yield select((state) => state.user.currentUser.email);
try { try {
console.log("Setting shop timezone."); //console.log("Setting shop timezone.");
// moment.tz.setDefault(payload.timezone); // moment.tz.setDefault(payload.timezone);
} catch (error) { } catch (error) {
console.log(error); console.log(error);

File diff suppressed because it is too large Load Diff

View File

@@ -17,11 +17,11 @@
"start": "node server.js" "start": "node server.js"
}, },
"dependencies": { "dependencies": {
"aws-sdk": "^2.1136.0", "aws-sdk": "^2.1181.0",
"axios": "^0.27.2", "axios": "^0.27.2",
"bluebird": "^3.7.2", "bluebird": "^3.7.2",
"body-parser": "^1.20.0", "body-parser": "^1.20.0",
"cloudinary": "^1.30.0", "cloudinary": "^1.30.1",
"compression": "^1.7.4", "compression": "^1.7.4",
"cookie-parser": "^1.4.6", "cookie-parser": "^1.4.6",
"cors": "2.8.5", "cors": "2.8.5",
@@ -29,35 +29,35 @@
"dinero.js": "^1.9.1", "dinero.js": "^1.9.1",
"dotenv": "16.0.1", "dotenv": "16.0.1",
"express": "^4.18.1", "express": "^4.18.1",
"firebase-admin": "^10.2.0", "firebase-admin": "^11.0.0",
"graphql": "^16.5.0", "graphql": "^16.5.0",
"graphql-request": "^4.2.0", "graphql-request": "^4.2.0",
"graylog2": "^0.2.1", "graylog2": "^0.2.1",
"inline-css": "^3.0.0", "inline-css": "^4.0.1",
"intuit-oauth": "^4.0.0", "intuit-oauth": "^4.0.0",
"json-2-csv": "^3.17.1", "json-2-csv": "^3.17.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"moment": "^2.29.3", "moment": "^2.29.4",
"moment-timezone": "^0.5.34", "moment-timezone": "^0.5.34",
"multer": "^1.4.4", "multer": "^1.4.5-lts.1",
"node-mailjet": "^3.4.1", "node-mailjet": "^5.1.0",
"node-quickbooks": "^2.0.39", "node-quickbooks": "^2.0.39",
"nodemailer": "^6.7.5", "nodemailer": "^6.7.7",
"phone": "^3.1.17", "phone": "^3.1.23",
"query-string": "^7.1.1", "query-string": "^7.1.1",
"soap": "^0.43.0", "soap": "^0.45.0",
"socket.io": "^4.5.0", "socket.io": "^4.5.0",
"ssh2-sftp-client": "^8.0.0", "ssh2-sftp-client": "^9.0.2",
"stripe": "^9.1.0", "stripe": "^9.15.0",
"twilio": "^3.77.0", "twilio": "^3.80.0",
"uuid": "^8.3.2", "uuid": "^8.3.2",
"xml2js": "^0.4.23", "xml2js": "^0.4.23",
"xmlbuilder2": "^3.0.2" "xmlbuilder2": "^3.0.2"
}, },
"devDependencies": { "devDependencies": {
"concurrently": "^6.3.0", "concurrently": "^7.3.0",
"eslint": "^7.31.0", "eslint": "^8.20.0",
"eslint-plugin-promise": "^5.1.0", "eslint-plugin-promise": "^6.0.0",
"source-map-explorer": "^2.5.2" "source-map-explorer": "^2.5.2"
} }
} }

1428
yarn.lock

File diff suppressed because it is too large Load Diff