Merge branch 'release/2023-04-21' into feature/payroll
This commit is contained in:
@@ -34,8 +34,8 @@ function JobsDocumentsComponent({
|
|||||||
const fileType = DetermineFileType(value.type);
|
const fileType = DetermineFileType(value.type);
|
||||||
if (value.type.startsWith("image")) {
|
if (value.type.startsWith("image")) {
|
||||||
acc.images.push({
|
acc.images.push({
|
||||||
src: GenerateSrcUrl(value),
|
// src: GenerateSrcUrl(value),
|
||||||
thumbnail: GenerateThumbUrl(value),
|
src: GenerateThumbUrl(value),
|
||||||
// src: GenerateSrcUrl(value),
|
// src: GenerateSrcUrl(value),
|
||||||
// thumbnail: GenerateThumbUrl(value),
|
// thumbnail: GenerateThumbUrl(value),
|
||||||
fullsize: GenerateSrcUrl(value),
|
fullsize: GenerateSrcUrl(value),
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import React, { useEffect } from "react";
|
import React, { useEffect } from "react";
|
||||||
import { Gallery } from "react-grid-gallery";
|
import { Gallery } from "react-grid-gallery";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { GenerateSrcUrl, GenerateThumbUrl } from "./job-documents.utility";
|
import { GenerateThumbUrl } from "./job-documents.utility";
|
||||||
|
|
||||||
function JobsDocumentGalleryExternal({
|
function JobsDocumentGalleryExternal({
|
||||||
data,
|
data,
|
||||||
@@ -15,8 +15,8 @@ function JobsDocumentGalleryExternal({
|
|||||||
let documents = data.reduce((acc, value) => {
|
let documents = data.reduce((acc, value) => {
|
||||||
if (value.type.startsWith("image")) {
|
if (value.type.startsWith("image")) {
|
||||||
acc.push({
|
acc.push({
|
||||||
src: GenerateSrcUrl(value),
|
//src: GenerateSrcUrl(value),
|
||||||
thumbnail: GenerateThumbUrl(value),
|
src: GenerateThumbUrl(value),
|
||||||
thumbnailHeight: 225,
|
thumbnailHeight: 225,
|
||||||
thumbnailWidth: 225,
|
thumbnailWidth: 225,
|
||||||
isSelected: false,
|
isSelected: false,
|
||||||
|
|||||||
@@ -92,7 +92,11 @@ export function ReportCenterModalComponent({ reportCenterModal }) {
|
|||||||
to: values.to,
|
to: values.to,
|
||||||
subject: Templates[values.key]?.subject,
|
subject: Templates[values.key]?.subject,
|
||||||
},
|
},
|
||||||
values.sendby === "email" ? "e" : "p",
|
values.sendbyexcel === "excel"
|
||||||
|
? "x"
|
||||||
|
: values.sendby === "email"
|
||||||
|
? "e"
|
||||||
|
: "p",
|
||||||
id
|
id
|
||||||
);
|
);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
@@ -250,15 +254,38 @@ export function ReportCenterModalComponent({ reportCenterModal }) {
|
|||||||
ranges={DatePIckerRanges}
|
ranges={DatePIckerRanges}
|
||||||
/>
|
/>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item style={{ margin: 0, padding: 0 }} dependencies={["key"]}>
|
||||||
label={t("general.labels.sendby")}
|
{() => {
|
||||||
name="sendby"
|
const key = form.getFieldValue("key");
|
||||||
initialValue="print"
|
//Kind of Id
|
||||||
>
|
const reporttype = Templates[key] && Templates[key].reporttype;
|
||||||
<Radio.Group>
|
|
||||||
<Radio value="email">{t("general.labels.email")}</Radio>
|
if (reporttype === "excel")
|
||||||
<Radio value="print">{t("general.labels.print")}</Radio>
|
return (
|
||||||
</Radio.Group>
|
<Form.Item
|
||||||
|
label={t("general.labels.sendby")}
|
||||||
|
name="sendbyexcel"
|
||||||
|
initialValue="excel"
|
||||||
|
>
|
||||||
|
<Radio.Group>
|
||||||
|
<Radio value="excel">{t("general.labels.excel")}</Radio>
|
||||||
|
</Radio.Group>
|
||||||
|
</Form.Item>
|
||||||
|
);
|
||||||
|
if (reporttype !== "excel")
|
||||||
|
return (
|
||||||
|
<Form.Item
|
||||||
|
label={t("general.labels.sendby")}
|
||||||
|
name="sendby"
|
||||||
|
initialValue="print"
|
||||||
|
>
|
||||||
|
<Radio.Group>
|
||||||
|
<Radio value="email">{t("general.labels.email")}</Radio>
|
||||||
|
<Radio value="print">{t("general.labels.print")}</Radio>
|
||||||
|
</Radio.Group>
|
||||||
|
</Form.Item>
|
||||||
|
);
|
||||||
|
}}
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -1278,7 +1278,7 @@ export const SEARCH_JOBS_BY_ID_FOR_AUTOCOMPLETE = gql`
|
|||||||
|
|
||||||
export const SEARCH_FOR_JOBS = gql`
|
export const SEARCH_FOR_JOBS = gql`
|
||||||
query SEARCH_FOR_JOBS($search: String!) {
|
query SEARCH_FOR_JOBS($search: String!) {
|
||||||
search_jobs(args: { search: $search }) {
|
search_jobs(args: { search: $search }, limit: 25) {
|
||||||
id
|
id
|
||||||
ro_number
|
ro_number
|
||||||
ownr_fn
|
ownr_fn
|
||||||
|
|||||||
@@ -2,22 +2,20 @@ import { gql } from "@apollo/client";
|
|||||||
|
|
||||||
export const GLOBAL_SEARCH_QUERY = gql`
|
export const GLOBAL_SEARCH_QUERY = gql`
|
||||||
query GLOBAL_SEARCH_QUERY($search: String) {
|
query GLOBAL_SEARCH_QUERY($search: String) {
|
||||||
search_jobs(args: { search: $search }) {
|
search_jobs(args: { search: $search }, limit: 25) {
|
||||||
id
|
id
|
||||||
ro_number
|
ro_number
|
||||||
status
|
status
|
||||||
|
|
||||||
clm_no
|
clm_no
|
||||||
v_model_yr
|
v_model_yr
|
||||||
v_model_desc
|
v_model_desc
|
||||||
v_make_desc
|
v_make_desc
|
||||||
v_color
|
v_color
|
||||||
|
|
||||||
ownr_fn
|
ownr_fn
|
||||||
ownr_ln
|
ownr_ln
|
||||||
ownr_co_nm
|
ownr_co_nm
|
||||||
}
|
}
|
||||||
search_owners(args: { search: $search }) {
|
search_owners(args: { search: $search }, limit: 25) {
|
||||||
id
|
id
|
||||||
ownr_fn
|
ownr_fn
|
||||||
ownr_ln
|
ownr_ln
|
||||||
@@ -25,7 +23,7 @@ export const GLOBAL_SEARCH_QUERY = gql`
|
|||||||
ownr_ph1
|
ownr_ph1
|
||||||
ownr_ph2
|
ownr_ph2
|
||||||
}
|
}
|
||||||
search_vehicles(args: { search: $search }) {
|
search_vehicles(args: { search: $search }, limit: 25) {
|
||||||
id
|
id
|
||||||
v_model_yr
|
v_model_yr
|
||||||
v_model_desc
|
v_model_desc
|
||||||
@@ -34,7 +32,7 @@ export const GLOBAL_SEARCH_QUERY = gql`
|
|||||||
v_vin
|
v_vin
|
||||||
plate_no
|
plate_no
|
||||||
}
|
}
|
||||||
search_payments(args: { search: $search }) {
|
search_payments(args: { search: $search }, limit: 25) {
|
||||||
id
|
id
|
||||||
amount
|
amount
|
||||||
paymentnum
|
paymentnum
|
||||||
@@ -45,7 +43,7 @@ export const GLOBAL_SEARCH_QUERY = gql`
|
|||||||
memo
|
memo
|
||||||
transactionid
|
transactionid
|
||||||
}
|
}
|
||||||
search_bills(args: { search: $search }) {
|
search_bills(args: { search: $search }, limit: 25) {
|
||||||
id
|
id
|
||||||
date
|
date
|
||||||
invoice_number
|
invoice_number
|
||||||
@@ -54,7 +52,7 @@ export const GLOBAL_SEARCH_QUERY = gql`
|
|||||||
name
|
name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
search_phonebook(args: { search: $search }) {
|
search_phonebook(args: { search: $search }, limit: 25) {
|
||||||
id
|
id
|
||||||
firstname
|
firstname
|
||||||
lastname
|
lastname
|
||||||
|
|||||||
@@ -1028,6 +1028,7 @@
|
|||||||
"created_at": "Created At",
|
"created_at": "Created At",
|
||||||
"email": "Email",
|
"email": "Email",
|
||||||
"errors": "Errors",
|
"errors": "Errors",
|
||||||
|
"excel": "Excel",
|
||||||
"exceptiontitle": "An error has occurred.",
|
"exceptiontitle": "An error has occurred.",
|
||||||
"friday": "Friday",
|
"friday": "Friday",
|
||||||
"globalsearch": "Global Search",
|
"globalsearch": "Global Search",
|
||||||
@@ -2239,6 +2240,7 @@
|
|||||||
"csi_invitation": "CSI Invitation",
|
"csi_invitation": "CSI Invitation",
|
||||||
"csi_invitation_action": "CSI Invite",
|
"csi_invitation_action": "CSI Invite",
|
||||||
"diagnostic_authorization": "Diagnostic Authorization",
|
"diagnostic_authorization": "Diagnostic Authorization",
|
||||||
|
"dms_posting_sheet": "DMS Posting Sheet",
|
||||||
"envelope_return_address": "#10 Envelope Return Address Label",
|
"envelope_return_address": "#10 Envelope Return Address Label",
|
||||||
"estimate": "Estimate Only",
|
"estimate": "Estimate Only",
|
||||||
"estimate_detail": "Estimate Details",
|
"estimate_detail": "Estimate Details",
|
||||||
@@ -2457,6 +2459,8 @@
|
|||||||
"export_payables": "Export Log - Payables",
|
"export_payables": "Export Log - Payables",
|
||||||
"export_payments": "Export Log - Payments",
|
"export_payments": "Export Log - Payments",
|
||||||
"export_receivables": "Export Log - Receivables",
|
"export_receivables": "Export Log - Receivables",
|
||||||
|
"exported_gsr_by_ro": "Exported Gross Sales - Excel",
|
||||||
|
"exported_gsr_by_ro_labor": "Exported Gross Sales (Labor) - Excel",
|
||||||
"gsr_by_atp": "",
|
"gsr_by_atp": "",
|
||||||
"gsr_by_ats": "Gross Sales by ATS",
|
"gsr_by_ats": "Gross Sales by ATS",
|
||||||
"gsr_by_category": "Gross Sales by Category",
|
"gsr_by_category": "Gross Sales by Category",
|
||||||
|
|||||||
@@ -1028,6 +1028,7 @@
|
|||||||
"created_at": "",
|
"created_at": "",
|
||||||
"email": "",
|
"email": "",
|
||||||
"errors": "",
|
"errors": "",
|
||||||
|
"excel": "",
|
||||||
"exceptiontitle": "",
|
"exceptiontitle": "",
|
||||||
"friday": "",
|
"friday": "",
|
||||||
"globalsearch": "",
|
"globalsearch": "",
|
||||||
@@ -2239,6 +2240,7 @@
|
|||||||
"csi_invitation": "",
|
"csi_invitation": "",
|
||||||
"csi_invitation_action": "",
|
"csi_invitation_action": "",
|
||||||
"diagnostic_authorization": "",
|
"diagnostic_authorization": "",
|
||||||
|
"dms_posting_sheet": "",
|
||||||
"envelope_return_address": "",
|
"envelope_return_address": "",
|
||||||
"estimate": "",
|
"estimate": "",
|
||||||
"estimate_detail": "",
|
"estimate_detail": "",
|
||||||
@@ -2457,6 +2459,8 @@
|
|||||||
"export_payables": "",
|
"export_payables": "",
|
||||||
"export_payments": "",
|
"export_payments": "",
|
||||||
"export_receivables": "",
|
"export_receivables": "",
|
||||||
|
"exported_gsr_by_ro": "",
|
||||||
|
"exported_gsr_by_ro_labor": "",
|
||||||
"gsr_by_atp": "",
|
"gsr_by_atp": "",
|
||||||
"gsr_by_ats": "",
|
"gsr_by_ats": "",
|
||||||
"gsr_by_category": "",
|
"gsr_by_category": "",
|
||||||
|
|||||||
@@ -1028,6 +1028,7 @@
|
|||||||
"created_at": "",
|
"created_at": "",
|
||||||
"email": "",
|
"email": "",
|
||||||
"errors": "",
|
"errors": "",
|
||||||
|
"excel": "",
|
||||||
"exceptiontitle": "",
|
"exceptiontitle": "",
|
||||||
"friday": "",
|
"friday": "",
|
||||||
"globalsearch": "",
|
"globalsearch": "",
|
||||||
@@ -2239,6 +2240,7 @@
|
|||||||
"csi_invitation": "",
|
"csi_invitation": "",
|
||||||
"csi_invitation_action": "",
|
"csi_invitation_action": "",
|
||||||
"diagnostic_authorization": "",
|
"diagnostic_authorization": "",
|
||||||
|
"dms_posting_sheet": "",
|
||||||
"envelope_return_address": "",
|
"envelope_return_address": "",
|
||||||
"estimate": "",
|
"estimate": "",
|
||||||
"estimate_detail": "",
|
"estimate_detail": "",
|
||||||
@@ -2457,6 +2459,8 @@
|
|||||||
"export_payables": "",
|
"export_payables": "",
|
||||||
"export_payments": "",
|
"export_payments": "",
|
||||||
"export_receivables": "",
|
"export_receivables": "",
|
||||||
|
"exported_gsr_by_ro": "",
|
||||||
|
"exported_gsr_by_ro_labor": "",
|
||||||
"gsr_by_atp": "",
|
"gsr_by_atp": "",
|
||||||
"gsr_by_ats": "",
|
"gsr_by_ats": "",
|
||||||
"gsr_by_category": "",
|
"gsr_by_category": "",
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ export const TemplateList = (type, context) => {
|
|||||||
disabled: false,
|
disabled: false,
|
||||||
group: "authorization",
|
group: "authorization",
|
||||||
},
|
},
|
||||||
|
|
||||||
fippa_authorization: {
|
fippa_authorization: {
|
||||||
title: i18n.t("printcenter.jobs.fippa_authorization"),
|
title: i18n.t("printcenter.jobs.fippa_authorization"),
|
||||||
description: "CASL Authorization",
|
description: "CASL Authorization",
|
||||||
@@ -101,7 +100,6 @@ export const TemplateList = (type, context) => {
|
|||||||
disabled: false,
|
disabled: false,
|
||||||
group: "ro",
|
group: "ro",
|
||||||
},
|
},
|
||||||
|
|
||||||
job_notes: {
|
job_notes: {
|
||||||
title: i18n.t("printcenter.jobs.job_notes"),
|
title: i18n.t("printcenter.jobs.job_notes"),
|
||||||
description: "All Jobs Notes",
|
description: "All Jobs Notes",
|
||||||
@@ -330,7 +328,6 @@ export const TemplateList = (type, context) => {
|
|||||||
disabled: false,
|
disabled: false,
|
||||||
group: "post",
|
group: "post",
|
||||||
},
|
},
|
||||||
|
|
||||||
vehicle_delivery_check: {
|
vehicle_delivery_check: {
|
||||||
title: i18n.t("printcenter.jobs.vehicle_delivery_check"),
|
title: i18n.t("printcenter.jobs.vehicle_delivery_check"),
|
||||||
description: "All Jobs Notes",
|
description: "All Jobs Notes",
|
||||||
@@ -339,7 +336,6 @@ export const TemplateList = (type, context) => {
|
|||||||
disabled: false,
|
disabled: false,
|
||||||
group: "post",
|
group: "post",
|
||||||
},
|
},
|
||||||
|
|
||||||
guarantee: {
|
guarantee: {
|
||||||
title: i18n.t("printcenter.jobs.guarantee"),
|
title: i18n.t("printcenter.jobs.guarantee"),
|
||||||
description: "All Jobs Notes",
|
description: "All Jobs Notes",
|
||||||
@@ -496,6 +492,14 @@ export const TemplateList = (type, context) => {
|
|||||||
disabled: false,
|
disabled: false,
|
||||||
group: "financial",
|
group: "financial",
|
||||||
},
|
},
|
||||||
|
dms_posting_sheet: {
|
||||||
|
title: i18n.t("printcenter.jobs.dms_posting_sheet"),
|
||||||
|
description: "DMS Posting Sheet",
|
||||||
|
subject: i18n.t("printcenter.jobs.dms_posting_sheet"),
|
||||||
|
key: "dms_posting_sheet",
|
||||||
|
disabled: false,
|
||||||
|
group: "financial",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
: {}),
|
: {}),
|
||||||
...(!type || type === "job_special"
|
...(!type || type === "job_special"
|
||||||
@@ -622,7 +626,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "sales",
|
group: "sales",
|
||||||
},
|
},
|
||||||
|
|
||||||
hours_sold_detail_closed_ins_co: {
|
hours_sold_detail_closed_ins_co: {
|
||||||
title: i18n.t(
|
title: i18n.t(
|
||||||
"reportcenter.templates.hours_sold_detail_closed_ins_co"
|
"reportcenter.templates.hours_sold_detail_closed_ins_co"
|
||||||
@@ -640,7 +643,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "sales",
|
group: "sales",
|
||||||
},
|
},
|
||||||
|
|
||||||
hours_sold_summary_closed: {
|
hours_sold_summary_closed: {
|
||||||
title: i18n.t("reportcenter.templates.hours_sold_summary_closed"),
|
title: i18n.t("reportcenter.templates.hours_sold_summary_closed"),
|
||||||
description: "",
|
description: "",
|
||||||
@@ -654,7 +656,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "sales",
|
group: "sales",
|
||||||
},
|
},
|
||||||
|
|
||||||
hours_sold_summary_closed_ins_co: {
|
hours_sold_summary_closed_ins_co: {
|
||||||
title: i18n.t(
|
title: i18n.t(
|
||||||
"reportcenter.templates.hours_sold_summary_closed_ins_co"
|
"reportcenter.templates.hours_sold_summary_closed_ins_co"
|
||||||
@@ -672,7 +673,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "sales",
|
group: "sales",
|
||||||
},
|
},
|
||||||
|
|
||||||
hours_sold_detail_open: {
|
hours_sold_detail_open: {
|
||||||
title: i18n.t("reportcenter.templates.hours_sold_detail_open"),
|
title: i18n.t("reportcenter.templates.hours_sold_detail_open"),
|
||||||
description: "",
|
description: "",
|
||||||
@@ -686,7 +686,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "sales",
|
group: "sales",
|
||||||
},
|
},
|
||||||
|
|
||||||
hours_sold_detail_open_ins_co: {
|
hours_sold_detail_open_ins_co: {
|
||||||
title: i18n.t(
|
title: i18n.t(
|
||||||
"reportcenter.templates.hours_sold_detail_open_ins_co"
|
"reportcenter.templates.hours_sold_detail_open_ins_co"
|
||||||
@@ -704,7 +703,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "sales",
|
group: "sales",
|
||||||
},
|
},
|
||||||
|
|
||||||
hours_sold_summary_open: {
|
hours_sold_summary_open: {
|
||||||
title: i18n.t("reportcenter.templates.hours_sold_summary_open"),
|
title: i18n.t("reportcenter.templates.hours_sold_summary_open"),
|
||||||
description: "",
|
description: "",
|
||||||
@@ -718,7 +716,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "sales",
|
group: "sales",
|
||||||
},
|
},
|
||||||
|
|
||||||
hours_sold_summary_open_ins_co: {
|
hours_sold_summary_open_ins_co: {
|
||||||
title: i18n.t(
|
title: i18n.t(
|
||||||
"reportcenter.templates.hours_sold_summary_open_ins_co"
|
"reportcenter.templates.hours_sold_summary_open_ins_co"
|
||||||
@@ -736,7 +733,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "sales",
|
group: "sales",
|
||||||
},
|
},
|
||||||
|
|
||||||
hours_sold_detail_closed_csr: {
|
hours_sold_detail_closed_csr: {
|
||||||
title: i18n.t(
|
title: i18n.t(
|
||||||
"reportcenter.templates.hours_sold_detail_closed_csr"
|
"reportcenter.templates.hours_sold_detail_closed_csr"
|
||||||
@@ -1090,7 +1086,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "customers",
|
group: "customers",
|
||||||
},
|
},
|
||||||
|
|
||||||
schedule: {
|
schedule: {
|
||||||
title: i18n.t("reportcenter.templates.schedule"),
|
title: i18n.t("reportcenter.templates.schedule"),
|
||||||
subject: i18n.t("reportcenter.templates.schedule"),
|
subject: i18n.t("reportcenter.templates.schedule"),
|
||||||
@@ -1102,7 +1097,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "customers",
|
group: "customers",
|
||||||
},
|
},
|
||||||
|
|
||||||
timetickets: {
|
timetickets: {
|
||||||
title: i18n.t("reportcenter.templates.timetickets"),
|
title: i18n.t("reportcenter.templates.timetickets"),
|
||||||
subject: i18n.t("reportcenter.templates.timetickets"),
|
subject: i18n.t("reportcenter.templates.timetickets"),
|
||||||
@@ -1126,7 +1120,6 @@ export const TemplateList = (type, context) => {
|
|||||||
title: i18n.t("reportcenter.templates.attendance_detail"),
|
title: i18n.t("reportcenter.templates.attendance_detail"),
|
||||||
subject: i18n.t("reportcenter.templates.attendance_detail"),
|
subject: i18n.t("reportcenter.templates.attendance_detail"),
|
||||||
key: "attendance_detail",
|
key: "attendance_detail",
|
||||||
|
|
||||||
disabled: false,
|
disabled: false,
|
||||||
rangeFilter: {
|
rangeFilter: {
|
||||||
object: i18n.t("reportcenter.labels.objects.timetickets"),
|
object: i18n.t("reportcenter.labels.objects.timetickets"),
|
||||||
@@ -1138,7 +1131,6 @@ export const TemplateList = (type, context) => {
|
|||||||
title: i18n.t("reportcenter.templates.attendance_summary"),
|
title: i18n.t("reportcenter.templates.attendance_summary"),
|
||||||
subject: i18n.t("reportcenter.templates.attendance_summary"),
|
subject: i18n.t("reportcenter.templates.attendance_summary"),
|
||||||
key: "attendance_summary",
|
key: "attendance_summary",
|
||||||
|
|
||||||
disabled: false,
|
disabled: false,
|
||||||
rangeFilter: {
|
rangeFilter: {
|
||||||
object: i18n.t("reportcenter.labels.objects.timetickets"),
|
object: i18n.t("reportcenter.labels.objects.timetickets"),
|
||||||
@@ -1158,7 +1150,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "payroll",
|
group: "payroll",
|
||||||
},
|
},
|
||||||
|
|
||||||
timetickets_summary: {
|
timetickets_summary: {
|
||||||
title: i18n.t("reportcenter.templates.timetickets_summary"),
|
title: i18n.t("reportcenter.templates.timetickets_summary"),
|
||||||
subject: i18n.t("reportcenter.templates.timetickets_summary"),
|
subject: i18n.t("reportcenter.templates.timetickets_summary"),
|
||||||
@@ -1171,7 +1162,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "payroll",
|
group: "payroll",
|
||||||
},
|
},
|
||||||
|
|
||||||
estimator_detail: {
|
estimator_detail: {
|
||||||
title: i18n.t("reportcenter.templates.estimator_detail"),
|
title: i18n.t("reportcenter.templates.estimator_detail"),
|
||||||
description: "",
|
description: "",
|
||||||
@@ -1224,7 +1214,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "purchases",
|
group: "purchases",
|
||||||
},
|
},
|
||||||
|
|
||||||
void_ros: {
|
void_ros: {
|
||||||
title: i18n.t("reportcenter.templates.void_ros"),
|
title: i18n.t("reportcenter.templates.void_ros"),
|
||||||
description: "",
|
description: "",
|
||||||
@@ -1329,7 +1318,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "sales",
|
group: "sales",
|
||||||
},
|
},
|
||||||
|
|
||||||
gsr_by_estimator: {
|
gsr_by_estimator: {
|
||||||
title: i18n.t("reportcenter.templates.gsr_by_estimator"),
|
title: i18n.t("reportcenter.templates.gsr_by_estimator"),
|
||||||
description: "",
|
description: "",
|
||||||
@@ -1814,7 +1802,9 @@ export const TemplateList = (type, context) => {
|
|||||||
group: "jobs",
|
group: "jobs",
|
||||||
},
|
},
|
||||||
purchase_return_ratio_grouped_by_vendor_detail: {
|
purchase_return_ratio_grouped_by_vendor_detail: {
|
||||||
title: i18n.t("reportcenter.templates.purchase_return_ratio_grouped_by_vendor_detail"),
|
title: i18n.t(
|
||||||
|
"reportcenter.templates.purchase_return_ratio_grouped_by_vendor_detail"
|
||||||
|
),
|
||||||
subject: i18n.t(
|
subject: i18n.t(
|
||||||
"reportcenter.templates.purchase_return_ratio_grouped_by_vendor_detail"
|
"reportcenter.templates.purchase_return_ratio_grouped_by_vendor_detail"
|
||||||
),
|
),
|
||||||
@@ -1828,7 +1818,9 @@ export const TemplateList = (type, context) => {
|
|||||||
group: "purchases",
|
group: "purchases",
|
||||||
},
|
},
|
||||||
purchase_return_ratio_grouped_by_vendor_summary: {
|
purchase_return_ratio_grouped_by_vendor_summary: {
|
||||||
title: i18n.t("reportcenter.templates.purchase_return_ratio_grouped_by_vendor_summary"),
|
title: i18n.t(
|
||||||
|
"reportcenter.templates.purchase_return_ratio_grouped_by_vendor_summary"
|
||||||
|
),
|
||||||
subject: i18n.t(
|
subject: i18n.t(
|
||||||
"reportcenter.templates.purchase_return_ratio_grouped_by_vendor_summary"
|
"reportcenter.templates.purchase_return_ratio_grouped_by_vendor_summary"
|
||||||
),
|
),
|
||||||
@@ -1843,9 +1835,7 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
production_over_time: {
|
production_over_time: {
|
||||||
title: i18n.t("reportcenter.templates.production_over_time"),
|
title: i18n.t("reportcenter.templates.production_over_time"),
|
||||||
subject: i18n.t(
|
subject: i18n.t("reportcenter.templates.production_over_time"),
|
||||||
"reportcenter.templates.production_over_time"
|
|
||||||
),
|
|
||||||
key: "production_over_time",
|
key: "production_over_time",
|
||||||
//idtype: "vendor",
|
//idtype: "vendor",
|
||||||
disabled: false,
|
disabled: false,
|
||||||
@@ -1857,9 +1847,7 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
customer_list: {
|
customer_list: {
|
||||||
title: i18n.t("reportcenter.templates.customer_list"),
|
title: i18n.t("reportcenter.templates.customer_list"),
|
||||||
subject: i18n.t(
|
subject: i18n.t("reportcenter.templates.customer_list"),
|
||||||
"reportcenter.templates.customer_list"
|
|
||||||
),
|
|
||||||
key: "customer_list",
|
key: "customer_list",
|
||||||
//idtype: "vendor",
|
//idtype: "vendor",
|
||||||
disabled: false,
|
disabled: false,
|
||||||
@@ -1869,6 +1857,32 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "customers",
|
group: "customers",
|
||||||
},
|
},
|
||||||
|
exported_gsr_by_ro: {
|
||||||
|
title: i18n.t("reportcenter.templates.exported_gsr_by_ro"),
|
||||||
|
subject: i18n.t("reportcenter.templates.exported_gsr_by_ro"),
|
||||||
|
key: "exported_gsr_by_ro",
|
||||||
|
//idtype: "vendor",
|
||||||
|
reporttype: "excel",
|
||||||
|
disabled: false,
|
||||||
|
rangeFilter: {
|
||||||
|
object: i18n.t("reportcenter.labels.objects.jobs"),
|
||||||
|
field: i18n.t("jobs.fields.date_exported"),
|
||||||
|
},
|
||||||
|
group: "sales",
|
||||||
|
},
|
||||||
|
exported_gsr_by_ro_labor: {
|
||||||
|
title: i18n.t("reportcenter.templates.exported_gsr_by_ro_labor"),
|
||||||
|
subject: i18n.t("reportcenter.templates.exported_gsr_by_ro_labor"),
|
||||||
|
key: "exported_gsr_by_ro_labor",
|
||||||
|
//idtype: "vendor",
|
||||||
|
reporttype: "excel",
|
||||||
|
disabled: false,
|
||||||
|
rangeFilter: {
|
||||||
|
object: i18n.t("reportcenter.labels.objects.jobs"),
|
||||||
|
field: i18n.t("jobs.fields.date_exported"),
|
||||||
|
},
|
||||||
|
group: "sales",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
: {}),
|
: {}),
|
||||||
...(!type || type === "courtesycarcontract"
|
...(!type || type === "courtesycarcontract"
|
||||||
@@ -1963,7 +1977,6 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
: {}),
|
: {}),
|
||||||
|
|
||||||
...(!type || type === "production"
|
...(!type || type === "production"
|
||||||
? {
|
? {
|
||||||
production_by_last_name: {
|
production_by_last_name: {
|
||||||
|
|||||||
@@ -831,6 +831,13 @@
|
|||||||
table:
|
table:
|
||||||
name: transitions
|
name: transitions
|
||||||
schema: public
|
schema: public
|
||||||
|
- name: tt_approval_queues
|
||||||
|
using:
|
||||||
|
foreign_key_constraint_on:
|
||||||
|
column: bodyshopid
|
||||||
|
table:
|
||||||
|
name: tt_approval_queue
|
||||||
|
schema: public
|
||||||
- name: vehicles
|
- name: vehicles
|
||||||
using:
|
using:
|
||||||
foreign_key_constraint_on:
|
foreign_key_constraint_on:
|
||||||
@@ -2262,6 +2269,13 @@
|
|||||||
table:
|
table:
|
||||||
name: timetickets
|
name: timetickets
|
||||||
schema: public
|
schema: public
|
||||||
|
- name: tt_approval_queues
|
||||||
|
using:
|
||||||
|
foreign_key_constraint_on:
|
||||||
|
column: employeeid
|
||||||
|
table:
|
||||||
|
name: tt_approval_queue
|
||||||
|
schema: public
|
||||||
insert_permissions:
|
insert_permissions:
|
||||||
- role: user
|
- role: user
|
||||||
permission:
|
permission:
|
||||||
@@ -3145,6 +3159,13 @@
|
|||||||
table:
|
table:
|
||||||
name: transitions
|
name: transitions
|
||||||
schema: public
|
schema: public
|
||||||
|
- name: tt_approval_queues
|
||||||
|
using:
|
||||||
|
foreign_key_constraint_on:
|
||||||
|
column: jobid
|
||||||
|
table:
|
||||||
|
name: tt_approval_queue
|
||||||
|
schema: public
|
||||||
insert_permissions:
|
insert_permissions:
|
||||||
- role: user
|
- role: user
|
||||||
permission:
|
permission:
|
||||||
@@ -5210,6 +5231,14 @@
|
|||||||
- name: job
|
- name: job
|
||||||
using:
|
using:
|
||||||
foreign_key_constraint_on: jobid
|
foreign_key_constraint_on: jobid
|
||||||
|
array_relationships:
|
||||||
|
- name: tt_approval_queues
|
||||||
|
using:
|
||||||
|
foreign_key_constraint_on:
|
||||||
|
column: timeticketid
|
||||||
|
table:
|
||||||
|
name: tt_approval_queue
|
||||||
|
schema: public
|
||||||
insert_permissions:
|
insert_permissions:
|
||||||
- role: user
|
- role: user
|
||||||
permission:
|
permission:
|
||||||
@@ -5228,6 +5257,7 @@
|
|||||||
- ciecacode
|
- ciecacode
|
||||||
- clockoff
|
- clockoff
|
||||||
- clockon
|
- clockon
|
||||||
|
- committed_at
|
||||||
- cost_center
|
- cost_center
|
||||||
- created_at
|
- created_at
|
||||||
- date
|
- date
|
||||||
@@ -5248,6 +5278,7 @@
|
|||||||
- ciecacode
|
- ciecacode
|
||||||
- clockoff
|
- clockoff
|
||||||
- clockon
|
- clockon
|
||||||
|
- committed_at
|
||||||
- cost_center
|
- cost_center
|
||||||
- created_at
|
- created_at
|
||||||
- date
|
- date
|
||||||
@@ -5277,6 +5308,7 @@
|
|||||||
- ciecacode
|
- ciecacode
|
||||||
- clockoff
|
- clockoff
|
||||||
- clockon
|
- clockon
|
||||||
|
- committed_at
|
||||||
- cost_center
|
- cost_center
|
||||||
- created_at
|
- created_at
|
||||||
- date
|
- date
|
||||||
@@ -5397,6 +5429,116 @@
|
|||||||
authid:
|
authid:
|
||||||
_eq: X-Hasura-User-Id
|
_eq: X-Hasura-User-Id
|
||||||
check: {}
|
check: {}
|
||||||
|
- table:
|
||||||
|
name: tt_approval_queue
|
||||||
|
schema: public
|
||||||
|
object_relationships:
|
||||||
|
- name: bodyshop
|
||||||
|
using:
|
||||||
|
foreign_key_constraint_on: bodyshopid
|
||||||
|
- name: employee
|
||||||
|
using:
|
||||||
|
foreign_key_constraint_on: employeeid
|
||||||
|
- name: job
|
||||||
|
using:
|
||||||
|
foreign_key_constraint_on: jobid
|
||||||
|
- name: timeticket
|
||||||
|
using:
|
||||||
|
foreign_key_constraint_on: timeticketid
|
||||||
|
- name: user
|
||||||
|
using:
|
||||||
|
foreign_key_constraint_on: approved_by
|
||||||
|
insert_permissions:
|
||||||
|
- role: user
|
||||||
|
permission:
|
||||||
|
check:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
columns:
|
||||||
|
- id
|
||||||
|
- created_at
|
||||||
|
- updated_at
|
||||||
|
- bodyshopid
|
||||||
|
- jobid
|
||||||
|
- employeeid
|
||||||
|
- timeticketid
|
||||||
|
- approved_by
|
||||||
|
- approved_at
|
||||||
|
- actualhrs
|
||||||
|
- productivehrs
|
||||||
|
- rate
|
||||||
|
- flat_rate
|
||||||
|
- ciecacode
|
||||||
|
- cost_center
|
||||||
|
- date
|
||||||
|
- memo
|
||||||
|
select_permissions:
|
||||||
|
- role: user
|
||||||
|
permission:
|
||||||
|
columns:
|
||||||
|
- flat_rate
|
||||||
|
- date
|
||||||
|
- actualhrs
|
||||||
|
- productivehrs
|
||||||
|
- rate
|
||||||
|
- approved_by
|
||||||
|
- ciecacode
|
||||||
|
- cost_center
|
||||||
|
- memo
|
||||||
|
- approved_at
|
||||||
|
- created_at
|
||||||
|
- updated_at
|
||||||
|
- bodyshopid
|
||||||
|
- employeeid
|
||||||
|
- id
|
||||||
|
- jobid
|
||||||
|
- timeticketid
|
||||||
|
filter:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
update_permissions:
|
||||||
|
- role: user
|
||||||
|
permission:
|
||||||
|
columns:
|
||||||
|
- flat_rate
|
||||||
|
- date
|
||||||
|
- actualhrs
|
||||||
|
- productivehrs
|
||||||
|
- rate
|
||||||
|
- approved_by
|
||||||
|
- ciecacode
|
||||||
|
- cost_center
|
||||||
|
- memo
|
||||||
|
- approved_at
|
||||||
|
- created_at
|
||||||
|
- updated_at
|
||||||
|
- bodyshopid
|
||||||
|
- employeeid
|
||||||
|
- id
|
||||||
|
- jobid
|
||||||
|
- timeticketid
|
||||||
|
filter:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
check: null
|
||||||
- table:
|
- table:
|
||||||
name: users
|
name: users
|
||||||
schema: public
|
schema: public
|
||||||
@@ -5467,6 +5609,13 @@
|
|||||||
table:
|
table:
|
||||||
name: parts_orders
|
name: parts_orders
|
||||||
schema: public
|
schema: public
|
||||||
|
- name: tt_approval_queues
|
||||||
|
using:
|
||||||
|
foreign_key_constraint_on:
|
||||||
|
column: approved_by
|
||||||
|
table:
|
||||||
|
name: tt_approval_queue
|
||||||
|
schema: public
|
||||||
insert_permissions:
|
insert_permissions:
|
||||||
- role: user
|
- role: user
|
||||||
permission:
|
permission:
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
-- Could not auto-generate a down migration.
|
||||||
|
-- Please write an appropriate down migration for the SQL below:
|
||||||
|
-- alter table "public"."timetickets" add column "committed_at" timestamptz
|
||||||
|
-- null;
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
alter table "public"."timetickets" add column "committed_at" timestamptz
|
||||||
|
null;
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
DROP TABLE "public"."tt_approval_queue";
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
CREATE TABLE "public"."tt_approval_queue" ("id" uuid NOT NULL DEFAULT gen_random_uuid(), "created_at" timestamptz NOT NULL DEFAULT now(), "updated_at" timestamptz NOT NULL DEFAULT now(), "bodyshopid" uuid NOT NULL, "jobid" uuid NOT NULL, "employeeid" uuid NOT NULL, "timeticketid" uuid, "approved_by" text, "approved_at" timestamptz NOT NULL, "actualhrs" numeric NOT NULL DEFAULT 0, "productivehrs" numeric NOT NULL DEFAULT 0, "rate" numeric NOT NULL DEFAULT 0, "flat_rate" boolean NOT NULL DEFAULT true, "ciecacode" text, "cost_center" text NOT NULL, "date" date NOT NULL DEFAULT now(), "memo" text NOT NULL, PRIMARY KEY ("id") , FOREIGN KEY ("bodyshopid") REFERENCES "public"."bodyshops"("id") ON UPDATE cascade ON DELETE cascade, FOREIGN KEY ("jobid") REFERENCES "public"."jobs"("id") ON UPDATE cascade ON DELETE cascade, FOREIGN KEY ("employeeid") REFERENCES "public"."employees"("id") ON UPDATE cascade ON DELETE cascade, FOREIGN KEY ("timeticketid") REFERENCES "public"."timetickets"("id") ON UPDATE cascade ON DELETE cascade, FOREIGN KEY ("approved_by") REFERENCES "public"."users"("email") ON UPDATE restrict ON DELETE restrict);
|
||||||
|
CREATE OR REPLACE FUNCTION "public"."set_current_timestamp_updated_at"()
|
||||||
|
RETURNS TRIGGER AS $$
|
||||||
|
DECLARE
|
||||||
|
_new record;
|
||||||
|
BEGIN
|
||||||
|
_new := NEW;
|
||||||
|
_new."updated_at" = NOW();
|
||||||
|
RETURN _new;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
CREATE TRIGGER "set_public_tt_approval_queue_updated_at"
|
||||||
|
BEFORE UPDATE ON "public"."tt_approval_queue"
|
||||||
|
FOR EACH ROW
|
||||||
|
EXECUTE PROCEDURE "public"."set_current_timestamp_updated_at"();
|
||||||
|
COMMENT ON TRIGGER "set_public_tt_approval_queue_updated_at" ON "public"."tt_approval_queue"
|
||||||
|
IS 'trigger to set value of column "updated_at" to current timestamp on row update';
|
||||||
|
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||||
@@ -20,7 +20,8 @@ async function StatusTransition(req, res) {
|
|||||||
res.status(403).send("Unauthorized");
|
res.status(403).send("Unauthorized");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
res.sendStatus(200);
|
||||||
|
return;
|
||||||
const {
|
const {
|
||||||
id: jobid,
|
id: jobid,
|
||||||
status: value,
|
status: value,
|
||||||
@@ -78,7 +79,7 @@ async function StatusTransition(req, res) {
|
|||||||
|
|
||||||
res.sendStatus(200); //.json(ret);
|
res.sendStatus(200); //.json(ret);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.log("job-costing-error", "ERROR", req.user.email, jobid, {
|
logger.log("job-status-transition-error", "ERROR", req.user?.email, jobid, {
|
||||||
message: error.message,
|
message: error.message,
|
||||||
stack: error.stack,
|
stack: error.stack,
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user