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 +`;