diff --git a/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.component.jsx b/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.component.jsx index 902dc0dc4..6c3c1dce0 100644 --- a/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.component.jsx +++ b/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.component.jsx @@ -1,6 +1,9 @@ import { DownCircleFilled } from "@ant-design/icons"; import { useApolloClient, useMutation } from "@apollo/client"; -import { Button, Card, Dropdown, Form, Input, Modal, notification, Popconfirm, Popover, Select, Space } from "antd"; +import { useSplitTreatments } from "@splitsoftware/splitio-react"; +import { Button, Card, Dropdown, Form, Input, Modal, Popconfirm, Popover, Select, Space, notification } from "antd"; +import axios from "axios"; +import parsePhoneNumber from "libphonenumber-js"; import React, { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; @@ -8,27 +11,24 @@ import { Link, useNavigate } from "react-router-dom"; import { createStructuredSelector } from "reselect"; import { auth, logImEXEvent } from "../../firebase/firebase.utils"; import { CANCEL_APPOINTMENTS_BY_JOB_ID, INSERT_MANUAL_APPT } from "../../graphql/appointments.queries"; +import { GET_CURRENT_QUESTIONSET_ID, INSERT_CSI } from "../../graphql/csi.queries"; import { DELETE_JOB, UPDATE_JOB, VOID_JOB } from "../../graphql/jobs.queries"; import { insertAuditTrail } from "../../redux/application/application.actions"; import { selectJobReadOnly } from "../../redux/application/application.selectors"; +import { setEmailOptions } from "../../redux/email/email.actions"; +import { openChatByPhone, setMessage } from "../../redux/messaging/messaging.actions"; import { setModalContext } from "../../redux/modals/modals.actions"; import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors"; import AuditTrailMapping from "../../utils/AuditTrailMappings"; +import { DateTimeFormatter } from "../../utils/DateFormatter"; +import { TemplateList } from "../../utils/TemplateConstants"; +import dayjs from "../../utils/day"; +import InstanceRenderManager from "../../utils/instanceRenderMgr"; +import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component"; +import FormDateTimePickerComponent from "../form-date-time-picker/form-date-time-picker.component"; import RbacWrapper from "../rbac-wrapper/rbac-wrapper.component"; import AddToProduction from "./jobs-detail-header-actions.addtoproduction.util"; import DuplicateJob from "./jobs-detail-header-actions.duplicate.util"; -import axios from "axios"; -import { setEmailOptions } from "../../redux/email/email.actions"; -import { openChatByPhone, setMessage } from "../../redux/messaging/messaging.actions"; -import { GET_CURRENT_QUESTIONSET_ID, INSERT_CSI } from "../../graphql/csi.queries"; -import { TemplateList } from "../../utils/TemplateConstants"; -import parsePhoneNumber from "libphonenumber-js"; -import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component"; -import { DateTimeFormatter } from "../../utils/DateFormatter"; -import FormDateTimePickerComponent from "../form-date-time-picker/form-date-time-picker.component"; -import dayjs from "../../utils/day"; -import { useSplitTreatments } from "@splitsoftware/splitio-react"; -import InstanceRenderManager from "../../utils/instanceRenderMgr"; import JobsDetailHeaderActionsToggleProduction from "./jobs-detail-header-actions.toggle-production"; const mapStateToProps = createStructuredSelector({ @@ -83,6 +83,13 @@ const mapDispatchToProps = (dispatch) => ({ modal: "timeTicketTask" }) ), + setTaskUpsertContext: (context) => + dispatch( + setModalContext({ + context: context, + modal: "taskUpsert" + }) + ), setEmailOptions: (e) => dispatch(setEmailOptions(e)), openChatByPhone: (phone) => dispatch(openChatByPhone(phone)), setMessage: (text) => dispatch(setMessage(text)) @@ -104,7 +111,8 @@ export function JobsDetailHeaderActions({ setEmailOptions, openChatByPhone, setMessage, - setTimeTicketTaskContext + setTimeTicketTaskContext, + setTaskUpsertContext }) { const { t } = useTranslation(); const client = useApolloClient(); @@ -766,7 +774,7 @@ export function JobsDetailHeaderActions({ }); } - if (HasFeatureAccess({ featureName: "courtesycars" })) { + if (HasFeatureAccess({ featureName: "courtesycars", bodyshop })) { menuItems.push({ key: "cccontract", disabled: jobRO || !job.converted, @@ -778,6 +786,16 @@ export function JobsDetailHeaderActions({ }); } + menuItems.push({ + key: "createtask", + label: t("menus.header.create_task"), + onClick: () => + setTaskUpsertContext({ + actions: {}, + context: { jobid: job.id } + }) + }); + menuItems.push( job.inproduction ? {