@@ -143,13 +143,16 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Update row highlighting on production board.
|
//Update row highlighting on production board.
|
||||||
.ant-table-tbody > tr.ant-table-row:hover > td {
|
.ant-table-tbody > tr.ant-table-row:hover > td {
|
||||||
background: #eaeaea !important;
|
background: #eaeaea !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.job-line-manual{
|
.job-line-manual {
|
||||||
color: tomato;
|
color: tomato;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
td.ant-table-column-sort {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|||||||
@@ -52,11 +52,15 @@ function JobDocumentsLocalGalleryExternal({
|
|||||||
val.type.mime &&
|
val.type.mime &&
|
||||||
val.type.mime.startsWith("image")
|
val.type.mime.startsWith("image")
|
||||||
) {
|
) {
|
||||||
acc.push(val);
|
acc.push({ ...val, src: val.thumbnail });
|
||||||
}
|
}
|
||||||
return acc;
|
return acc;
|
||||||
}, [])
|
}, [])
|
||||||
: [];
|
: [];
|
||||||
|
console.log(
|
||||||
|
"🚀 ~ file: jobs-documents-local-gallery.external.component.jsx:48 ~ useEffect ~ documents:",
|
||||||
|
documents
|
||||||
|
);
|
||||||
|
|
||||||
setgalleryImages(documents);
|
setgalleryImages(documents);
|
||||||
}, [allMedia, jobId, setgalleryImages, t]);
|
}, [allMedia, jobId, setgalleryImages, t]);
|
||||||
|
|||||||
@@ -201,6 +201,7 @@ export function PartsOrderListTableComponent({
|
|||||||
subject: record.return
|
subject: record.return
|
||||||
? Templates.parts_return_slip.subject
|
? Templates.parts_return_slip.subject
|
||||||
: Templates.parts_order.subject,
|
: Templates.parts_order.subject,
|
||||||
|
to: record.vendor.email,
|
||||||
}}
|
}}
|
||||||
id={job.id}
|
id={job.id}
|
||||||
/>
|
/>
|
||||||
@@ -296,7 +297,6 @@ export function PartsOrderListTableComponent({
|
|||||||
sortOrder:
|
sortOrder:
|
||||||
state.sortedInfo.columnKey === "quantity" && state.sortedInfo.order,
|
state.sortedInfo.columnKey === "quantity" && state.sortedInfo.order,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: t("parts_orders.fields.act_price"),
|
title: t("parts_orders.fields.act_price"),
|
||||||
dataIndex: "act_price",
|
dataIndex: "act_price",
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -29,7 +29,17 @@ export function TechSider({ technician, techLogout }) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Sider collapsible collapsed={collapsed} onCollapse={onCollapse}>
|
<Sider
|
||||||
|
style={{
|
||||||
|
height: "100vh",
|
||||||
|
position: "sticky",
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
}}
|
||||||
|
collapsible
|
||||||
|
collapsed={collapsed}
|
||||||
|
onCollapse={onCollapse}
|
||||||
|
>
|
||||||
<Menu theme="dark" defaultSelectedKeys={["1"]} mode="inline">
|
<Menu theme="dark" defaultSelectedKeys={["1"]} mode="inline">
|
||||||
<Menu.Item
|
<Menu.Item
|
||||||
key="1"
|
key="1"
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ export const QUERY_BILLS_BY_JOBID = gql`
|
|||||||
vendor {
|
vendor {
|
||||||
id
|
id
|
||||||
name
|
name
|
||||||
|
email
|
||||||
}
|
}
|
||||||
order_date
|
order_date
|
||||||
deliver_by
|
deliver_by
|
||||||
@@ -104,6 +105,7 @@ export const QUERY_BILLS_BY_JOBID = gql`
|
|||||||
vendor {
|
vendor {
|
||||||
id
|
id
|
||||||
name
|
name
|
||||||
|
email
|
||||||
}
|
}
|
||||||
total
|
total
|
||||||
invoice_number
|
invoice_number
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
.tech-content-container {
|
.tech-content-container {
|
||||||
overflow-y: auto;
|
overflow-y: visible;
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tech-layout-container {
|
.tech-layout-container {
|
||||||
height: 100vh;
|
position: relative;
|
||||||
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1015,6 +1015,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",
|
||||||
@@ -2226,6 +2227,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",
|
||||||
@@ -2444,6 +2446,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",
|
||||||
|
|||||||
@@ -1015,6 +1015,7 @@
|
|||||||
"created_at": "",
|
"created_at": "",
|
||||||
"email": "",
|
"email": "",
|
||||||
"errors": "",
|
"errors": "",
|
||||||
|
"excel": "",
|
||||||
"exceptiontitle": "",
|
"exceptiontitle": "",
|
||||||
"friday": "",
|
"friday": "",
|
||||||
"globalsearch": "",
|
"globalsearch": "",
|
||||||
@@ -2226,6 +2227,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": "",
|
||||||
@@ -2444,6 +2446,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": "",
|
||||||
|
|||||||
@@ -1015,6 +1015,7 @@
|
|||||||
"created_at": "",
|
"created_at": "",
|
||||||
"email": "",
|
"email": "",
|
||||||
"errors": "",
|
"errors": "",
|
||||||
|
"excel": "",
|
||||||
"exceptiontitle": "",
|
"exceptiontitle": "",
|
||||||
"friday": "",
|
"friday": "",
|
||||||
"globalsearch": "",
|
"globalsearch": "",
|
||||||
@@ -2226,6 +2227,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": "",
|
||||||
@@ -2444,6 +2446,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,117 @@
|
|||||||
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
|
||||||
|
allow_aggregations: true
|
||||||
|
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 +5610,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;
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
alter table "public"."tt_approval_queue" alter column "approved_at" set not null;
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
alter table "public"."tt_approval_queue" alter column "approved_at" drop not null;
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
alter table "public"."tt_approval_queue" alter column "memo" set not null;
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
alter table "public"."tt_approval_queue" alter column "memo" drop not null;
|
||||||
Reference in New Issue
Block a user