diff --git a/src/components/molecules/job-group/job-group.molecule.jsx b/src/components/molecules/job-group/job-group.molecule.jsx
index db1d277..dcdecd8 100644
--- a/src/components/molecules/job-group/job-group.molecule.jsx
+++ b/src/components/molecules/job-group/job-group.molecule.jsx
@@ -7,6 +7,7 @@ import { createStructuredSelector } from "reselect";
import { UPDATE_JOB } from "../../../graphql/jobs.queries";
import ipcTypes from "../../../ipc.types";
import { selectBodyshop } from "../../../redux/user/user.selectors";
+import { AlertFilled } from "@ant-design/icons";
const { ipcRenderer } = window;
const mapStateToProps = createStructuredSelector({
@@ -51,12 +52,20 @@ export function JobGroupMolecule({ bodyshop, jobId, group, job }) {
);
return (
-
- e.preventDefault()}>
- {group}
-
- {loading && }
-
-
+ <>
+
+ e.preventDefault()}>
+ {group}
+
+ {loading && }
+
+
+ {!group && (
+
- {dates && dates.startDate && dates.endDate && (
+ {error && (
+
+
{error.message}
+
+ {error.jobs.map((j, idx) => (
+ -
+ setSelectedJobId(j.id)} to={"/"}>
+ {`${j.clm_no} - ${j.error}`}
+
+
+ ))}
+
+
+ )}
+ {!error && dates && dates.startDate && dates.endDate && (
@@ -41,3 +61,5 @@ export function ReportingPage({ dates }) {
);
}
+
+export default connect(mapStateToProps, mapDispatchToProps)(ReportingPage);
diff --git a/src/redux/reporting/reporting.reducer.js b/src/redux/reporting/reporting.reducer.js
index 64076cb..3d36428 100644
--- a/src/redux/reporting/reporting.reducer.js
+++ b/src/redux/reporting/reporting.reducer.js
@@ -13,11 +13,17 @@ const applicationReducer = (state = INITIAL_STATE, action) => {
return {
...state,
loading: true,
+ error: null,
dates: {
startDate: action.payload.startDate.toISOString(),
endDate: action.payload.endDate.toISOString(),
},
};
+ case ReportingActionTypes.SET_REPORTING_ERROR:
+ return {
+ ...state,
+ error: action.payload,
+ };
case ReportingActionTypes.SET_REPORTING_DATA:
return { ...state, data: action.payload };
case ReportingActionTypes.SET_SCORE_CARD:
diff --git a/src/redux/reporting/reporting.sagas.js b/src/redux/reporting/reporting.sagas.js
index f22c7f9..0f4cfa4 100644
--- a/src/redux/reporting/reporting.sagas.js
+++ b/src/redux/reporting/reporting.sagas.js
@@ -13,6 +13,7 @@ import {
calculateScorecard,
setReportingData,
setScoreCard,
+ setReportingError,
} from "./reporting.actions";
import ReportingApplicationTypes from "./reporting.types";
@@ -62,6 +63,23 @@ export function* handleCalculateScoreCard({ payload: jobs }) {
const targets = yield select((state) => state.user.bodyshop.targets);
const groups = yield select((state) => state.user.bodyshop.groups);
+ //Check to ensure every job has a group.
+ const jobsWithNoGroup = jobs
+ .filter((j) => !j.group)
+ .map((j) => {
+ return { ...j, error: "No group set." };
+ });
+
+ if (jobsWithNoGroup.length > 0) {
+ yield put(
+ setReportingError({
+ message: "There is an issue with the following jobs.",
+ jobs: [...jobsWithNoGroup],
+ })
+ );
+ return;
+ }
+
const scoreCard = {
shopRpsTotalDollars: Dinero(),
shopRpsExpectedDollars: Dinero(),
@@ -152,6 +170,7 @@ export function* handleCalculateScoreCard({ payload: jobs }) {
event: "CALCULATE_SCORE_CARD_ERROR",
error: error,
});
+ yield put(setReportingError({ message: error, jobs: [] }));
}
}