diff --git a/client/src/components/bill-enter-modal/bill-enter-modal.container.jsx b/client/src/components/bill-enter-modal/bill-enter-modal.container.jsx
index f18f1123a..123969389 100644
--- a/client/src/components/bill-enter-modal/bill-enter-modal.container.jsx
+++ b/client/src/components/bill-enter-modal/bill-enter-modal.container.jsx
@@ -26,6 +26,7 @@ import { CalculateBillTotal } from "../bill-form/bill-form.totals.utility";
import { handleUpload as handleLocalUpload } from "../documents-local-upload/documents-local-upload.utility";
import { handleUpload } from "../documents-upload/documents-upload.utility";
import { handleUpload as handleUploadToImageProxy } from "../documents-upload-imgproxy/documents-upload-imgproxy.utility";
+import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
const mapStateToProps = createStructuredSelector({
billEnterModal: selectBillEnterModal,
@@ -450,7 +451,9 @@ function BillEnterModalContainer({ billEnterModal, toggleModalVisible, bodyshop,
setEnterAgain(false);
}}
>
-
+
+
+
);
diff --git a/client/src/components/shop-info/shop-info.speedprint.component.jsx b/client/src/components/shop-info/shop-info.speedprint.component.jsx
index 639e59ad8..4594ba1c5 100644
--- a/client/src/components/shop-info/shop-info.speedprint.component.jsx
+++ b/client/src/components/shop-info/shop-info.speedprint.component.jsx
@@ -4,10 +4,18 @@ import { useTranslation } from "react-i18next";
import { TemplateList } from "../../utils/TemplateConstants";
import FormListMoveArrows from "../form-list-move-arrows/form-list-move-arrows.component";
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
+import InstanceRenderManager from "../../utils/instanceRenderMgr";
export default function ShopInfoSpeedPrint() {
const { t } = useTranslation();
- const TemplateListGenerated = TemplateList("job");
+ const allTemplates = TemplateList("job");
+ const TemplateListGenerated = InstanceRenderManager({
+ imex: Object.fromEntries(
+ Object.entries(allTemplates).filter(([, { enhanced_payroll }]) => !enhanced_payroll)
+ ),
+ rome: allTemplates
+ });
+
return (
{(fields, { add, remove, move }) => {
diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json
index 193aba22a..f79a1f166 100644
--- a/client/src/translations/en_us/common.json
+++ b/client/src/translations/en_us/common.json
@@ -3209,6 +3209,7 @@
"parts_not_recieved_vendor": "Parts Not Received by Vendor",
"parts_received_not_scheduled": "Parts Received for Jobs Not Scheduled",
"payments_by_date": "Payments by Date",
+ "payments_by_date_excel": "Payments by Date - Excel",
"payments_by_date_payment": "Payments by Date and Payment Type",
"payments_by_date_type": "Payments by Date and Customer Type",
"production_by_category": "Production by Category",
diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json
index 41a01b191..2a9a6229b 100644
--- a/client/src/translations/es/common.json
+++ b/client/src/translations/es/common.json
@@ -3209,6 +3209,7 @@
"parts_not_recieved_vendor": "",
"parts_received_not_scheduled": "",
"payments_by_date": "",
+ "payments_by_date_excel": "",
"payments_by_date_payment": "",
"payments_by_date_type": "",
"production_by_category": "",
diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json
index e80baacbc..939f7752e 100644
--- a/client/src/translations/fr/common.json
+++ b/client/src/translations/fr/common.json
@@ -3209,6 +3209,7 @@
"parts_not_recieved_vendor": "",
"parts_received_not_scheduled": "",
"payments_by_date": "",
+ "payments_by_date_excel": "",
"payments_by_date_payment": "",
"payments_by_date_type": "",
"production_by_category": "",
diff --git a/client/src/utils/TemplateConstants.js b/client/src/utils/TemplateConstants.js
index d91c1097e..83a6eca4a 100644
--- a/client/src/utils/TemplateConstants.js
+++ b/client/src/utils/TemplateConstants.js
@@ -1218,6 +1218,18 @@ export const TemplateList = (type, context) => {
},
group: "customers"
},
+ payments_by_date_excel: {
+ title: i18n.t("reportcenter.templates.payments_by_date_excel"),
+ subject: i18n.t("reportcenter.templates.payments_by_date_excel"),
+ key: "payments_by_date_excel",
+ reporttype: "excel",
+ disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.payments"),
+ field: i18n.t("payments.fields.date")
+ },
+ group: "customers"
+ },
schedule: {
title: i18n.t("reportcenter.templates.schedule"),
subject: i18n.t("reportcenter.templates.schedule"),
diff --git a/hasura/migrations/1762815418708_set_fk_public_media_analytics_detail_jobid/down.sql b/hasura/migrations/1762815418708_set_fk_public_media_analytics_detail_jobid/down.sql
new file mode 100644
index 000000000..a00bbd1d0
--- /dev/null
+++ b/hasura/migrations/1762815418708_set_fk_public_media_analytics_detail_jobid/down.sql
@@ -0,0 +1,5 @@
+alter table "public"."media_analytics_detail" drop constraint "media_analytics_detail_jobid_fkey",
+ add constraint "media_analytics_detail_jobid_fkey"
+ foreign key ("jobid")
+ references "public"."jobs"
+ ("id") on update restrict on delete restrict;
diff --git a/hasura/migrations/1762815418708_set_fk_public_media_analytics_detail_jobid/up.sql b/hasura/migrations/1762815418708_set_fk_public_media_analytics_detail_jobid/up.sql
new file mode 100644
index 000000000..7f85c72e1
--- /dev/null
+++ b/hasura/migrations/1762815418708_set_fk_public_media_analytics_detail_jobid/up.sql
@@ -0,0 +1,5 @@
+alter table "public"."media_analytics_detail" drop constraint "media_analytics_detail_jobid_fkey",
+ add constraint "media_analytics_detail_jobid_fkey"
+ foreign key ("jobid")
+ references "public"."jobs"
+ ("id") on update set null on delete set null;
diff --git a/hasura/migrations/1762816491980_media_analytics_fk_trigger/down.sql b/hasura/migrations/1762816491980_media_analytics_fk_trigger/down.sql
new file mode 100644
index 000000000..845321d28
--- /dev/null
+++ b/hasura/migrations/1762816491980_media_analytics_fk_trigger/down.sql
@@ -0,0 +1,23 @@
+-- Could not auto-generate a down migration.
+-- Please write an appropriate down migration for the SQL below:
+-- CREATE OR REPLACE FUNCTION set_fk_to_null_if_invalid_media_analytics()
+-- RETURNS TRIGGER AS $$
+-- BEGIN
+-- -- Check if the foreign key value is not NULL
+-- IF NEW.jobid IS NOT NULL THEN
+-- -- Check if the corresponding record exists in the parent table
+-- IF NOT EXISTS (SELECT 1 FROM jobs WHERE id = NEW.jobid) THEN
+-- -- If it doesn't exist, set the foreign key to NULL
+-- NEW.jobid = NULL;
+-- END IF;
+-- END IF;
+--
+-- -- Return the (potentially modified) record to be inserted/updated
+-- RETURN NEW;
+-- END;
+-- $$ LANGUAGE plpgsql;
+--
+-- CREATE TRIGGER media_analytics_fk_null
+-- BEFORE INSERT OR UPDATE ON media_analytics_detail
+-- FOR EACH ROW
+-- EXECUTE FUNCTION set_fk_to_null_if_invalid_media_analytics();
diff --git a/hasura/migrations/1762816491980_media_analytics_fk_trigger/up.sql b/hasura/migrations/1762816491980_media_analytics_fk_trigger/up.sql
new file mode 100644
index 000000000..67f1f4e49
--- /dev/null
+++ b/hasura/migrations/1762816491980_media_analytics_fk_trigger/up.sql
@@ -0,0 +1,21 @@
+CREATE OR REPLACE FUNCTION set_fk_to_null_if_invalid_media_analytics()
+RETURNS TRIGGER AS $$
+BEGIN
+ -- Check if the foreign key value is not NULL
+ IF NEW.jobid IS NOT NULL THEN
+ -- Check if the corresponding record exists in the parent table
+ IF NOT EXISTS (SELECT 1 FROM jobs WHERE id = NEW.jobid) THEN
+ -- If it doesn't exist, set the foreign key to NULL
+ NEW.jobid = NULL;
+ END IF;
+ END IF;
+
+ -- Return the (potentially modified) record to be inserted/updated
+ RETURN NEW;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE TRIGGER media_analytics_fk_null
+BEFORE INSERT OR UPDATE ON media_analytics_detail
+FOR EACH ROW
+EXECUTE FUNCTION set_fk_to_null_if_invalid_media_analytics();
diff --git a/hasura/migrations/1762823244230_create_index_media_analytics_detail_bodyshopid/down.sql b/hasura/migrations/1762823244230_create_index_media_analytics_detail_bodyshopid/down.sql
new file mode 100644
index 000000000..573a2dd89
--- /dev/null
+++ b/hasura/migrations/1762823244230_create_index_media_analytics_detail_bodyshopid/down.sql
@@ -0,0 +1 @@
+DROP INDEX IF EXISTS "public"."media_analytics_detail_bodyshopid";
diff --git a/hasura/migrations/1762823244230_create_index_media_analytics_detail_bodyshopid/up.sql b/hasura/migrations/1762823244230_create_index_media_analytics_detail_bodyshopid/up.sql
new file mode 100644
index 000000000..957ae5e18
--- /dev/null
+++ b/hasura/migrations/1762823244230_create_index_media_analytics_detail_bodyshopid/up.sql
@@ -0,0 +1,2 @@
+CREATE INDEX "media_analytics_detail_bodyshopid" on
+ "public"."media_analytics_detail" using btree ("bodyshopid");
diff --git a/hasura/migrations/1762823258200_create_index_media_analytics_detail_jobid/down.sql b/hasura/migrations/1762823258200_create_index_media_analytics_detail_jobid/down.sql
new file mode 100644
index 000000000..8e50f8e94
--- /dev/null
+++ b/hasura/migrations/1762823258200_create_index_media_analytics_detail_jobid/down.sql
@@ -0,0 +1 @@
+DROP INDEX IF EXISTS "public"."media_analytics_detail_jobid";
diff --git a/hasura/migrations/1762823258200_create_index_media_analytics_detail_jobid/up.sql b/hasura/migrations/1762823258200_create_index_media_analytics_detail_jobid/up.sql
new file mode 100644
index 000000000..a8c919b4a
--- /dev/null
+++ b/hasura/migrations/1762823258200_create_index_media_analytics_detail_jobid/up.sql
@@ -0,0 +1,2 @@
+CREATE INDEX "media_analytics_detail_jobid" on
+ "public"."media_analytics_detail" using btree ("jobid");
diff --git a/hasura/migrations/1762823298618_create_index_media_analytics_detail_media_analytics/down.sql b/hasura/migrations/1762823298618_create_index_media_analytics_detail_media_analytics/down.sql
new file mode 100644
index 000000000..51a460e9c
--- /dev/null
+++ b/hasura/migrations/1762823298618_create_index_media_analytics_detail_media_analytics/down.sql
@@ -0,0 +1 @@
+DROP INDEX IF EXISTS "public"."media_analytics_detail_media_analytics";
diff --git a/hasura/migrations/1762823298618_create_index_media_analytics_detail_media_analytics/up.sql b/hasura/migrations/1762823298618_create_index_media_analytics_detail_media_analytics/up.sql
new file mode 100644
index 000000000..02b1d193b
--- /dev/null
+++ b/hasura/migrations/1762823298618_create_index_media_analytics_detail_media_analytics/up.sql
@@ -0,0 +1,2 @@
+CREATE INDEX "media_analytics_detail_media_analytics" on
+ "public"."media_analytics_detail" using btree ("media_analytics_id");
diff --git a/hasura/migrations/1763425916748_alter_table_public_media_analytics_add_column_unique_documents/down.sql b/hasura/migrations/1763425916748_alter_table_public_media_analytics_add_column_unique_documents/down.sql
new file mode 100644
index 000000000..05d67edc9
--- /dev/null
+++ b/hasura/migrations/1763425916748_alter_table_public_media_analytics_add_column_unique_documents/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"."media_analytics" add column "unique_documents" numeric
+-- null;
diff --git a/hasura/migrations/1763425916748_alter_table_public_media_analytics_add_column_unique_documents/up.sql b/hasura/migrations/1763425916748_alter_table_public_media_analytics_add_column_unique_documents/up.sql
new file mode 100644
index 000000000..94e209f63
--- /dev/null
+++ b/hasura/migrations/1763425916748_alter_table_public_media_analytics_add_column_unique_documents/up.sql
@@ -0,0 +1,2 @@
+alter table "public"."media_analytics" add column "unique_documents" numeric
+ null;
diff --git a/hasura/migrations/1763425927136_alter_table_public_media_analytics_add_column_duplicate_documents/down.sql b/hasura/migrations/1763425927136_alter_table_public_media_analytics_add_column_duplicate_documents/down.sql
new file mode 100644
index 000000000..645c5962f
--- /dev/null
+++ b/hasura/migrations/1763425927136_alter_table_public_media_analytics_add_column_duplicate_documents/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"."media_analytics" add column "duplicate_documents" numeric
+-- null;
diff --git a/hasura/migrations/1763425927136_alter_table_public_media_analytics_add_column_duplicate_documents/up.sql b/hasura/migrations/1763425927136_alter_table_public_media_analytics_add_column_duplicate_documents/up.sql
new file mode 100644
index 000000000..c248607b8
--- /dev/null
+++ b/hasura/migrations/1763425927136_alter_table_public_media_analytics_add_column_duplicate_documents/up.sql
@@ -0,0 +1,2 @@
+alter table "public"."media_analytics" add column "duplicate_documents" numeric
+ null;
diff --git a/hasura/migrations/1763425947348_alter_table_public_media_analytics_detail_add_column_unique_documents/down.sql b/hasura/migrations/1763425947348_alter_table_public_media_analytics_detail_add_column_unique_documents/down.sql
new file mode 100644
index 000000000..77b5177c9
--- /dev/null
+++ b/hasura/migrations/1763425947348_alter_table_public_media_analytics_detail_add_column_unique_documents/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"."media_analytics_detail" add column "unique_documents" numeric
+-- null;
diff --git a/hasura/migrations/1763425947348_alter_table_public_media_analytics_detail_add_column_unique_documents/up.sql b/hasura/migrations/1763425947348_alter_table_public_media_analytics_detail_add_column_unique_documents/up.sql
new file mode 100644
index 000000000..8b5f05211
--- /dev/null
+++ b/hasura/migrations/1763425947348_alter_table_public_media_analytics_detail_add_column_unique_documents/up.sql
@@ -0,0 +1,2 @@
+alter table "public"."media_analytics_detail" add column "unique_documents" numeric
+ null;
diff --git a/hasura/migrations/1763425960252_alter_table_public_media_analytics_detail_add_column_duplicate_documents/down.sql b/hasura/migrations/1763425960252_alter_table_public_media_analytics_detail_add_column_duplicate_documents/down.sql
new file mode 100644
index 000000000..2b2bd3d50
--- /dev/null
+++ b/hasura/migrations/1763425960252_alter_table_public_media_analytics_detail_add_column_duplicate_documents/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"."media_analytics_detail" add column "duplicate_documents" numeric
+-- null;
diff --git a/hasura/migrations/1763425960252_alter_table_public_media_analytics_detail_add_column_duplicate_documents/up.sql b/hasura/migrations/1763425960252_alter_table_public_media_analytics_detail_add_column_duplicate_documents/up.sql
new file mode 100644
index 000000000..e2c65107c
--- /dev/null
+++ b/hasura/migrations/1763425960252_alter_table_public_media_analytics_detail_add_column_duplicate_documents/up.sql
@@ -0,0 +1,2 @@
+alter table "public"."media_analytics_detail" add column "duplicate_documents" numeric
+ null;
diff --git a/hasura/migrations/1763426307543_alter_table_public_media_analytics_detail_alter_column_unique_documents/down.sql b/hasura/migrations/1763426307543_alter_table_public_media_analytics_detail_alter_column_unique_documents/down.sql
new file mode 100644
index 000000000..a38d16858
--- /dev/null
+++ b/hasura/migrations/1763426307543_alter_table_public_media_analytics_detail_alter_column_unique_documents/down.sql
@@ -0,0 +1 @@
+alter table "public"."media_analytics_detail" rename column "unique_document_count" to "unique_documents";
diff --git a/hasura/migrations/1763426307543_alter_table_public_media_analytics_detail_alter_column_unique_documents/up.sql b/hasura/migrations/1763426307543_alter_table_public_media_analytics_detail_alter_column_unique_documents/up.sql
new file mode 100644
index 000000000..b0a9c3979
--- /dev/null
+++ b/hasura/migrations/1763426307543_alter_table_public_media_analytics_detail_alter_column_unique_documents/up.sql
@@ -0,0 +1 @@
+alter table "public"."media_analytics_detail" rename column "unique_documents" to "unique_document_count";
diff --git a/hasura/migrations/1763426323408_alter_table_public_media_analytics_detail_alter_column_duplicate_documents/down.sql b/hasura/migrations/1763426323408_alter_table_public_media_analytics_detail_alter_column_duplicate_documents/down.sql
new file mode 100644
index 000000000..0208e4b53
--- /dev/null
+++ b/hasura/migrations/1763426323408_alter_table_public_media_analytics_detail_alter_column_duplicate_documents/down.sql
@@ -0,0 +1 @@
+alter table "public"."media_analytics_detail" rename column "duplicate_count" to "duplicate_documents";
diff --git a/hasura/migrations/1763426323408_alter_table_public_media_analytics_detail_alter_column_duplicate_documents/up.sql b/hasura/migrations/1763426323408_alter_table_public_media_analytics_detail_alter_column_duplicate_documents/up.sql
new file mode 100644
index 000000000..c0f85a38e
--- /dev/null
+++ b/hasura/migrations/1763426323408_alter_table_public_media_analytics_detail_alter_column_duplicate_documents/up.sql
@@ -0,0 +1 @@
+alter table "public"."media_analytics_detail" rename column "duplicate_documents" to "duplicate_count";
diff --git a/server/data/kaizen.js b/server/data/kaizen.js
index 86068c1ea..8321ce138 100644
--- a/server/data/kaizen.js
+++ b/server/data/kaizen.js
@@ -219,8 +219,6 @@ const CreateRepairOrderTag = (job, errorCallback) => {
}
const repairCosts = CreateCosts(job);
- const jobline = CreateJobLines(job.joblines);
- const timeticket = CreateTimeTickets(job.timetickets);
try {
const ret = {
@@ -290,8 +288,100 @@ const CreateRepairOrderTag = (job, errorCallback) => {
(job.date_exported && moment(job.date_exported).tz(job.bodyshop.timezone).format(DateFormat)) || "",
DateVoid: (job.date_void && moment(job.date_void).tz(job.bodyshop.timezone).format(DateFormat)) || ""
},
- JobLineDetails: { jobline },
- TimeTicketDetails: { timeticket },
+ JobLineDetails: (function () {
+ const joblineSource = Array.isArray(job.joblines) ? job.joblines : job.joblines ? [job.joblines] : [];
+ if (joblineSource.length === 0) return { jobline: [] };
+ return {
+ jobline: joblineSource.map((jl = {}) => ({
+ line_description: jl.line_desc || jl.line_description || "",
+ oem_part_no: jl.oem_partno || jl.oem_part_no || "",
+ alt_part_no: jl.alt_partno || jl.alt_part_no || "",
+ op_code_desc: jl.op_code_desc || "",
+ part_type: jl.part_type || "",
+ part_qty: jl.part_qty ?? jl.quantity ?? 0,
+ part_price: jl.act_price ?? jl.part_price ?? 0,
+ labor_type: jl.mod_lbr_ty || jl.labor_type || "",
+ labor_hours: jl.mod_lb_hrs ?? jl.labor_hours ?? 0,
+ labor_sale: jl.lbr_amt ?? jl.labor_sale ?? 0
+ }))
+ };
+ })(),
+ BillsDetails: (function () {
+ const billsSource = Array.isArray(job.bills) ? job.bills : job.bills ? [job.bills] : [];
+ if (billsSource.length === 0) return { BillDetails: [] };
+ return {
+ BillDetails: billsSource.map(
+ ({
+ billlines = [],
+ date = "",
+ is_credit_memo = false,
+ invoice_number = "",
+ isinhouse = false,
+ vendor = {}
+ } = {}) => ({
+ BillLines: {
+ BillLine: billlines.map((bl = {}) => ({
+ line_description: bl.line_desc || bl.line_description || "",
+ part_price: bl.actual_price ?? bl.part_price ?? bl.act_price ?? 0,
+ actual_cost: bl.actual_cost ?? 0,
+ cost_center: bl.cost_center || "",
+ deductedfromlbr: bl.deductedfromlbr || false,
+ part_qty: bl.quantity ?? bl.part_qty ?? 0,
+ oem_part_no: bl.oem_partno || bl.oem_part_no || "",
+ alt_part_no: bl.alt_partno || bl.alt_part_no || ""
+ }))
+ },
+ date,
+ is_credit_memo,
+ invoice_number,
+ isinhouse,
+ vendorName: vendor.name || ""
+ })
+ )
+ };
+ })(),
+ JobNotes: (function () {
+ const notesSource = Array.isArray(job.notes) ? job.notes : job.notes ? [job.notes] : [];
+ if (notesSource.length === 0) return { JobNote: [] };
+ return {
+ JobNote: notesSource.map((note = {}) => ({
+ created_at: note.created_at || "",
+ created_by: note.created_by || "",
+ critical: note.critical || false,
+ private: note.private || false,
+ text: note.text || "",
+ type: note.type || ""
+ }))
+ };
+ })(),
+ TimeTicketDetails: (function () {
+ const ticketSource = Array.isArray(job.timetickets)
+ ? job.timetickets
+ : job.timetickets
+ ? [job.timetickets]
+ : [];
+ if (ticketSource.length === 0) return { timeticket: [] };
+ return {
+ timeticket: ticketSource.map((ticket = {}) => ({
+ date: ticket.date || "",
+ employee:
+ ticket.employee && ticket.employee.employee_number
+ ? ticket.employee.employee_number
+ .trim()
+ .concat(" - ", ticket.employee.first_name.trim(), " ", ticket.employee.last_name.trim())
+ .trim()
+ : "",
+ productive_hrs: ticket.productivehrs ?? 0,
+ actual_hrs: ticket.actualhrs ?? 0,
+ cost_center: ticket.cost_center || "",
+ flat_rate: ticket.flat_rate || false,
+ rate: ticket.rate ?? 0,
+ ticket_cost: ticket.flat_rate
+ ? ticket.rate * (ticket.productivehrs || 0)
+ : ticket.rate * (ticket.actualhrs || 0)
+ }))
+ };
+ })(),
Sales: {
Labour: {
Aluminum: Dinero(job.job_totals.rates.laa.total).toFormat(DineroFormat),
@@ -636,42 +726,3 @@ const CreateCosts = (job) => {
}, 0)
};
};
-
-const CreateJobLines = (joblines) => {
- const repairLines = [];
- joblines.forEach((jobline) => {
- repairLines.push({
- line_description: jobline.line_desc,
- oem_part_no: jobline.oem_partno,
- alt_part_no: jobline.alt_partno,
- op_code_desc: jobline.op_code_desc,
- part_type: jobline.part_type,
- part_qty: jobline.part_qty,
- part_price: jobline.act_price,
- labor_type: jobline.mod_lbr_ty,
- labor_hours: jobline.mod_lb_hrs,
- labor_sale: jobline.lbr_amt
- });
- });
- return repairLines;
-};
-
-const CreateTimeTickets = (timetickets) => {
- const timeTickets = [];
- timetickets.forEach((ticket) => {
- timeTickets.push({
- date: ticket.date,
- employee: ticket.employee.employee_number
- .trim()
- .concat(" - ", ticket.employee.first_name.trim(), " ", ticket.employee.last_name.trim())
- .trim(),
- productive_hrs: ticket.productivehrs,
- actual_hrs: ticket.actualhrs,
- cost_center: ticket.cost_center,
- flat_rate: ticket.flat_rate,
- rate: ticket.rate,
- ticket_cost: ticket.flat_rate ? ticket.rate * ticket.productive_hrs : ticket.rate * ticket.actual_hrs
- });
- });
- return timeTickets;
-};
diff --git a/server/graphql-client/queries.js b/server/graphql-client/queries.js
index 60a37eebd..e3b3b0977 100644
--- a/server/graphql-client/queries.js
+++ b/server/graphql-client/queries.js
@@ -1219,7 +1219,7 @@ query ENTEGRAL_EXPORT($bodyshopid: uuid!) {
}`;
exports.KAIZEN_QUERY = `query KAIZEN_EXPORT($start: timestamptz, $bodyshopid: uuid!, $end: timestamptz) {
- bodyshops_by_pk(id: $bodyshopid){
+ bodyshops_by_pk(id: $bodyshopid) {
id
shopname
address1
@@ -1246,15 +1246,24 @@ exports.KAIZEN_QUERY = `query KAIZEN_EXPORT($start: timestamptz, $bodyshopid: uu
bills {
billlines {
actual_cost
+ actual_price
cost_center
+ deductedfromlbr
id
+ line_desc
quantity
}
+ date
federal_tax_rate
id
is_credit_memo
+ invoice_number
+ isinhouse
local_tax_rate
state_tax_rate
+ vendor {
+ name
+ }
}
created_at
clm_no
@@ -1296,7 +1305,7 @@ exports.KAIZEN_QUERY = `query KAIZEN_EXPORT($start: timestamptz, $bodyshopid: uu
joblines(where: {removed: {_eq: false}}) {
act_price
alt_partno
- billlines(order_by: {bill: {date: desc_nulls_last}} limit: 1) {
+ billlines(order_by: {bill: {date: desc_nulls_last}}, limit: 1) {
actual_cost
actual_price
quantity
@@ -1319,8 +1328,8 @@ exports.KAIZEN_QUERY = `query KAIZEN_EXPORT($start: timestamptz, $bodyshopid: uu
mod_lbr_ty
oem_partno
op_code_desc
- parts_order_lines(order_by: {parts_order: {order_date: desc_nulls_last}} limit: 1){
- parts_order{
+ parts_order_lines(order_by: {parts_order: {order_date: desc_nulls_last}}, limit: 1) {
+ parts_order {
id
order_date
}
@@ -1339,6 +1348,14 @@ exports.KAIZEN_QUERY = `query KAIZEN_EXPORT($start: timestamptz, $bodyshopid: uu
jobid
totalliquidcost
}
+ notes {
+ created_at
+ created_by
+ critical
+ private
+ text
+ type
+ }
ownr_addr1
ownr_addr2
ownr_city
@@ -2204,16 +2221,18 @@ exports.UPDATE_OLD_TRANSITION = `mutation UPDATE_OLD_TRANSITION($jobid: uuid!, $
exports.INSERT_NEW_TRANSITION = (
includeOldTransition
-) => `mutation INSERT_NEW_TRANSITION($newTransition: transitions_insert_input!, ${includeOldTransition ? `$oldTransitionId: uuid!, $duration: numeric` : ""
- }) {
+) => `mutation INSERT_NEW_TRANSITION($newTransition: transitions_insert_input!, ${
+ includeOldTransition ? `$oldTransitionId: uuid!, $duration: numeric` : ""
+}) {
insert_transitions_one(object: $newTransition) {
id
}
- ${includeOldTransition
- ? `update_transitions(where: {id: {_eq: $oldTransitionId}}, _set: {duration: $duration}) {
+ ${
+ includeOldTransition
+ ? `update_transitions(where: {id: {_eq: $oldTransitionId}}, _set: {duration: $duration}) {
affected_rows
}`
- : ""
+ : ""
}
}`;
@@ -3152,11 +3171,10 @@ exports.DELETE_PHONE_NUMBER_OPT_OUT = `
}
`;
-
exports.INSERT_MEDIA_ANALYTICS = `
mutation INSERT_MEDIA_ANALYTICS($mediaObject: media_analytics_insert_input!) {
insert_media_analytics_one(object: $mediaObject) {
id
}
}
-`
\ No newline at end of file
+`;