diff --git a/client/src/pages/jobs-close/jobs-close.component.jsx b/client/src/pages/jobs-close/jobs-close.component.jsx index 91c8c7385..b6feb3ff5 100644 --- a/client/src/pages/jobs-close/jobs-close.component.jsx +++ b/client/src/pages/jobs-close/jobs-close.component.jsx @@ -36,14 +36,22 @@ import JobsCloseLines from "../../components/jobs-close-lines/jobs-close-lines.c import LayoutFormRow from "../../components/layout-form-row/layout-form-row.component"; import { generateJobLinesUpdatesForInvoicing } from "../../graphql/jobs-lines.queries"; import { UPDATE_JOB } from "../../graphql/jobs.queries"; +import { insertAuditTrail } from "../../redux/application/application.actions"; import { selectJobReadOnly } from "../../redux/application/application.selectors"; import { selectBodyshop } from "../../redux/user/user.selectors"; +import AuditTrailMapping from "../../utils/AuditTrailMappings"; + const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, jobRO: selectJobReadOnly, }); -export function JobsCloseComponent({ job, bodyshop, jobRO }) { +const mapDispatchToProps = (dispatch) => ({ + insertAuditTrail: ({ jobid, operation }) => + dispatch(insertAuditTrail({ jobid, operation })), +}); + +export function JobsCloseComponent({ job, bodyshop, jobRO, insertAuditTrail, }) { const { t } = useTranslation(); const [form] = Form.useForm(); const client = useApolloClient(); @@ -110,6 +118,10 @@ export function JobsCloseComponent({ job, bodyshop, jobRO }) { notification["success"]({ message: t("jobs.successes.closed"), }); + insertAuditTrail({ + jobid: job.id, + operation: AuditTrailMapping.jobinvoiced(), + }); // history.push(`/manage/jobs/${job.id}`); } else { setLoading(false); @@ -527,4 +539,4 @@ export function JobsCloseComponent({ job, bodyshop, jobRO }) { ); } -export default connect(mapStateToProps, null)(JobsCloseComponent); +export default connect(mapStateToProps, mapDispatchToProps)(JobsCloseComponent); diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index ee5a4a047..0242d97ee 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -112,6 +112,7 @@ "jobassignmentchange": "Employee {{name}} assigned to {{operation}}", "jobassignmentremoved": "Employee assignment removed for {{operation}}", "jobchecklist": "Checklist type \"{{type}}\" completed. In production set to {{inproduction}}. Status set to {{status}}.", + "jobinvoiced": "Job has been invoiced.", "jobconverted": "Job converted and assigned number {{ro_number}}.", "jobfieldchanged": "Job field $t(jobs.fields.{{field}}) changed to {{value}}.", "jobimported": "Job imported.", diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index ca9e24fbe..52bd71ad8 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -112,6 +112,7 @@ "jobassignmentchange": "", "jobassignmentremoved": "", "jobchecklist": "", + "jobinvoiced": "", "jobconverted": "", "jobfieldchanged": "", "jobimported": "", diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index 9502e02c7..7d8ac72ba 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -112,6 +112,7 @@ "jobassignmentchange": "", "jobassignmentremoved": "", "jobchecklist": "", + "jobinvoiced": "", "jobconverted": "", "jobfieldchanged": "", "jobimported": "", diff --git a/client/src/utils/AuditTrailMappings.js b/client/src/utils/AuditTrailMappings.js index edfebdab1..d7098fa2d 100644 --- a/client/src/utils/AuditTrailMappings.js +++ b/client/src/utils/AuditTrailMappings.js @@ -12,6 +12,8 @@ const AuditTrailMapping = { "ADMIN: " + i18n.t("audit_trail.messages.jobstatuschange", { status }), jobsupplement: () => i18n.t("audit_trail.messages.jobsupplement"), jobimported: () => i18n.t("audit_trail.messages.jobimported"), + jobinvoiced: () => + i18n.t("audit_trail.messages.jobinvoiced"), jobconverted: (ro_number) => i18n.t("audit_trail.messages.jobconverted", { ro_number }), jobfieldchange: (field, value) =>