({
toggleModalVisible: () => dispatch(toggleModalVisible("schedule")),
setEmailOptions: (e) => dispatch(setEmailOptions(e)),
+ insertAuditTrail: ({ jobid, operation }) =>
+ dispatch(insertAuditTrail({ jobid, operation })),
});
export function ScheduleJobModalContainer({
@@ -39,6 +44,7 @@ export function ScheduleJobModalContainer({
toggleModalVisible,
setEmailOptions,
currentUser,
+ insertAuditTrail,
}) {
const { visible, context, actions } = scheduleModal;
const { jobId, job, previousEvent } = context;
@@ -134,6 +140,15 @@ export function ScheduleJobModalContainer({
},
});
+ if (!appt.errors) {
+ insertAuditTrail({
+ jobid: job.id,
+ operation: AuditTrailMapping.appointmentinsert(
+ DateTimeFormat(values.start)
+ ),
+ });
+ }
+
if (!!appt.errors) {
notification["error"]({
message: t("appointments.errors.saving", {
@@ -155,6 +170,7 @@ export function ScheduleJobModalContainer({
scheduled_in: values.start,
scheduled_completion: values.scheduled_completion,
lost_sale_reason: null,
+ date_lost_sale: null,
},
},
});
diff --git a/client/src/components/scoreboard-timetickets-stats/scoreboard-timetickets.component.jsx b/client/src/components/scoreboard-timetickets-stats/scoreboard-timetickets.component.jsx
index d2ced5334..0117279d5 100644
--- a/client/src/components/scoreboard-timetickets-stats/scoreboard-timetickets.component.jsx
+++ b/client/src/components/scoreboard-timetickets-stats/scoreboard-timetickets.component.jsx
@@ -2,11 +2,9 @@ import { useQuery } from "@apollo/client";
import { Col, Row } from "antd";
import _ from "lodash";
import moment from "moment";
-import queryString from "query-string";
import React, { useMemo } from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
-import { useLocation } from "react-router-dom";
import { createStructuredSelector } from "reselect";
import { QUERY_TIME_TICKETS_IN_RANGE_SB } from "../../graphql/timetickets.queries";
import { selectBodyshop } from "../../redux/user/user.selectors";
@@ -31,12 +29,8 @@ export default connect(
export function ScoreboardTimeTicketsStats({ bodyshop }) {
const { t } = useTranslation();
- const searchParams = queryString.parse(useLocation().search);
- const { start, end } = searchParams;
- const startDate = start
- ? moment(start)
- : moment().startOf("week").subtract(7, "days");
- const endDate = end ? moment(end) : moment().endOf("week");
+ const startDate = moment().startOf("month")
+ const endDate = moment().endOf("month");
const fixedPeriods = useMemo(() => {
const endOfThisMonth = moment().endOf("month");
diff --git a/client/src/components/shop-info/shop-info.general.component.jsx b/client/src/components/shop-info/shop-info.general.component.jsx
index ebf2accaf..5f7d31c03 100644
--- a/client/src/components/shop-info/shop-info.general.component.jsx
+++ b/client/src/components/shop-info/shop-info.general.component.jsx
@@ -42,6 +42,7 @@ export function ShopInfoGeneral({ form, bodyshop }) {
bodyshop && bodyshop.imexshopid
);
+
return (
+
+
+
+ i18n.t("audit_trail.messages.appointmentcancel", { lost_sale_reason }),
+ appointmentinsert: (start) =>
+ i18n.t("audit_trail.messages.appointmentinsert", { start }),
jobstatuschange: (status) =>
i18n.t("audit_trail.messages.jobstatuschange", { status }),
admin_jobstatuschange: (status) =>
diff --git a/client/src/utils/DateFormatter.jsx b/client/src/utils/DateFormatter.jsx
index 134095c78..d034266e3 100644
--- a/client/src/utils/DateFormatter.jsx
+++ b/client/src/utils/DateFormatter.jsx
@@ -31,3 +31,7 @@ export function TimeAgoFormatter(props) {
) : null;
}
+
+export function DateTimeFormat(value) {
+ return moment(value).format("MM/DD/YYYY hh:mm A");
+}
diff --git a/client/src/utils/TemplateConstants.js b/client/src/utils/TemplateConstants.js
index 79d9aa353..c5e10d712 100644
--- a/client/src/utils/TemplateConstants.js
+++ b/client/src/utils/TemplateConstants.js
@@ -2014,6 +2014,18 @@ export const TemplateList = (type, context) => {
},
group: "jobs",
},
+ lost_sales: {
+ title: i18n.t("reportcenter.templates.lost_sales"),
+ subject: i18n.t("reportcenter.templates.lost_sales"),
+ key: "lost_sales",
+ //idtype: "vendor",
+ disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_lost_sale"),
+ },
+ group: "customers",
+ },
}
: {}),
...(!type || type === "courtesycarcontract"
diff --git a/hasura/metadata/tables.yaml b/hasura/metadata/tables.yaml
index 773f384af..d94a97af0 100644
--- a/hasura/metadata/tables.yaml
+++ b/hasura/metadata/tables.yaml
@@ -890,11 +890,13 @@
- appt_colors
- appt_length
- attach_pdf_to_email
+ - autohouseid
- bill_allow_post_to_closed
- bill_tax_rates
- cdk_configuration
- cdk_dealerid
- city
+ - claimscorpid
- country
- created_at
- default_adjustment_rate
@@ -928,6 +930,7 @@
- md_estimators
- md_filehandlers
- md_from_emails
+ - md_functionality_toggles
- md_hour_split
- md_ins_cos
- md_jobline_presets
@@ -1026,6 +1029,7 @@
- md_estimators
- md_filehandlers
- md_from_emails
+ - md_functionality_toggles
- md_hour_split
- md_ins_cos
- md_jobline_presets
@@ -3583,6 +3587,7 @@
- date_exported
- date_invoiced
- date_last_contacted
+ - date_lost_sale
- date_next_contact
- date_open
- date_rentalresp
@@ -3863,6 +3868,7 @@
- date_exported
- date_invoiced
- date_last_contacted
+ - date_lost_sale
- date_next_contact
- date_open
- date_rentalresp
diff --git a/hasura/migrations/1700599672091_alter_table_public_bodyshops_add_column_md_functionality_toggles/down.sql b/hasura/migrations/1700599672091_alter_table_public_bodyshops_add_column_md_functionality_toggles/down.sql
new file mode 100644
index 000000000..bdb340a93
--- /dev/null
+++ b/hasura/migrations/1700599672091_alter_table_public_bodyshops_add_column_md_functionality_toggles/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"."bodyshops" add column "md_functionality_toggles" jsonb
+-- null default jsonb_build_object();
diff --git a/hasura/migrations/1700599672091_alter_table_public_bodyshops_add_column_md_functionality_toggles/up.sql b/hasura/migrations/1700599672091_alter_table_public_bodyshops_add_column_md_functionality_toggles/up.sql
new file mode 100644
index 000000000..d2de69319
--- /dev/null
+++ b/hasura/migrations/1700599672091_alter_table_public_bodyshops_add_column_md_functionality_toggles/up.sql
@@ -0,0 +1,2 @@
+alter table "public"."bodyshops" add column "md_functionality_toggles" jsonb
+ null default jsonb_build_object();
diff --git a/hasura/migrations/1700680020194_alter_table_public_jobs_add_column_date_lost_sale/down.sql b/hasura/migrations/1700680020194_alter_table_public_jobs_add_column_date_lost_sale/down.sql
new file mode 100644
index 000000000..1313da0c3
--- /dev/null
+++ b/hasura/migrations/1700680020194_alter_table_public_jobs_add_column_date_lost_sale/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 "date_lost_sale" timestamp with time zone
+-- null;
diff --git a/hasura/migrations/1700680020194_alter_table_public_jobs_add_column_date_lost_sale/up.sql b/hasura/migrations/1700680020194_alter_table_public_jobs_add_column_date_lost_sale/up.sql
new file mode 100644
index 000000000..933f0acba
--- /dev/null
+++ b/hasura/migrations/1700680020194_alter_table_public_jobs_add_column_date_lost_sale/up.sql
@@ -0,0 +1,2 @@
+alter table "public"."jobs" add column "date_lost_sale" timestamp with time zone
+ null;
diff --git a/hasura/migrations/1700682617632_alter_table_public_jobs_alter_column_date_lost_sale/down.sql b/hasura/migrations/1700682617632_alter_table_public_jobs_alter_column_date_lost_sale/down.sql
new file mode 100644
index 000000000..32c37a9fe
--- /dev/null
+++ b/hasura/migrations/1700682617632_alter_table_public_jobs_alter_column_date_lost_sale/down.sql
@@ -0,0 +1 @@
+ALTER TABLE "public"."jobs" ALTER COLUMN "date_lost_sale" TYPE timestamp with time zone;
diff --git a/hasura/migrations/1700682617632_alter_table_public_jobs_alter_column_date_lost_sale/up.sql b/hasura/migrations/1700682617632_alter_table_public_jobs_alter_column_date_lost_sale/up.sql
new file mode 100644
index 000000000..32c37a9fe
--- /dev/null
+++ b/hasura/migrations/1700682617632_alter_table_public_jobs_alter_column_date_lost_sale/up.sql
@@ -0,0 +1 @@
+ALTER TABLE "public"."jobs" ALTER COLUMN "date_lost_sale" TYPE timestamp with time zone;