diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel
index 513fa13f6..9bef52030 100644
--- a/bodyshop_translations.babel
+++ b/bodyshop_translations.babel
@@ -16920,6 +16920,27 @@
+
+ tax_part
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
total
false
diff --git a/client/src/App/App.styles.scss b/client/src/App/App.styles.scss
index 7ee64f7f1..bcf6fc843 100644
--- a/client/src/App/App.styles.scss
+++ b/client/src/App/App.styles.scss
@@ -124,3 +124,7 @@
z-index: 2 !important;
}
}
+
+.react-kanban-column {
+ background-color: #ddd !important;
+}
diff --git a/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.component.jsx b/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.component.jsx
index 05b909d8c..50aad1b52 100644
--- a/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.component.jsx
+++ b/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.component.jsx
@@ -1,4 +1,4 @@
-import { Form, Input, InputNumber, Modal, Select } from "antd";
+import { Form, Input, InputNumber, Modal, Select, Switch } from "antd";
import React, { useEffect } from "react";
import { useTranslation } from "react-i18next";
import InputCurrency from "../form-items-formatted/currency-form-item.component";
@@ -184,9 +184,9 @@ export default function JobLinesUpsertModalComponent({
>
-
+ {/*
-
+ */}
+
+
+
diff --git a/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.container.jsx b/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.container.jsx
index 89b9c406e..b3a28aeb5 100644
--- a/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.container.jsx
+++ b/client/src/components/job-lines-upsert-modal/job-lines-upsert-modal.container.jsx
@@ -44,6 +44,7 @@ function JobLinesUpsertModalContainer({
},
],
},
+ refetchQueries: ["GET_LINE_TICKET_BY_PK"],
});
if (!r.errors) {
await Axios.post("/job/totalsssu", {
@@ -69,6 +70,7 @@ function JobLinesUpsertModalContainer({
lineId: jobLineEditModal.context.id,
line: values,
},
+ refetchQueries: ["GET_LINE_TICKET_BY_PK"],
});
if (!r.errors) {
notification["success"]({
diff --git a/client/src/components/job-reconciliation-bills-table/job-reconciliation-bills-table.component.jsx b/client/src/components/job-reconciliation-bills-table/job-reconciliation-bills-table.component.jsx
index 26ce3dd8e..ea91a4b91 100644
--- a/client/src/components/job-reconciliation-bills-table/job-reconciliation-bills-table.component.jsx
+++ b/client/src/components/job-reconciliation-bills-table/job-reconciliation-bills-table.component.jsx
@@ -108,6 +108,9 @@ export default function JobReconciliationBillsTable({
rowSelection={{
onChange: handleOnRowClick,
selectedRowKeys: selectedLines,
+ getCheckboxProps: (record) => {
+ return { disabled: record.deductedfromlbr };
+ },
}}
/>
diff --git a/client/src/components/job-reconciliation-totals/job-reconciliation-totals.utility.js b/client/src/components/job-reconciliation-totals/job-reconciliation-totals.utility.js
index b3f2771cc..ea3b1d8b4 100644
--- a/client/src/components/job-reconciliation-totals/job-reconciliation-totals.utility.js
+++ b/client/src/components/job-reconciliation-totals/job-reconciliation-totals.utility.js
@@ -11,7 +11,7 @@ export const reconcileByAssocLine = (
const [selectedJobLines, setSelectedJobLines] = jobLineState;
const allJoblinesFromBills = billLines
- .filter((bl) => bl.joblineid && !(bl.jobline && bl.jobline.removed))
+ .filter((bl) => bl.joblineid && bl.jobline && !bl.jobline.removed)
.map((bl) => bl.joblineid);
const duplicatedJobLinesbyInvoiceId = _.filter(
diff --git a/client/src/components/production-board-filters/production-board-filters.component.jsx b/client/src/components/production-board-filters/production-board-filters.component.jsx
index 017efed88..16bc72fea 100644
--- a/client/src/components/production-board-filters/production-board-filters.component.jsx
+++ b/client/src/components/production-board-filters/production-board-filters.component.jsx
@@ -38,6 +38,7 @@ export function ProductionBoardFilters({
}}
/>
e.active)}
value={filter.employeeId}
placeholder={t("production.labels.employeesearch")}
diff --git a/client/src/components/tech-job-clock-in-form/tech-job-clock-in-form.component.jsx b/client/src/components/tech-job-clock-in-form/tech-job-clock-in-form.component.jsx
index e7920ee95..fe0ccfe22 100644
--- a/client/src/components/tech-job-clock-in-form/tech-job-clock-in-form.component.jsx
+++ b/client/src/components/tech-job-clock-in-form/tech-job-clock-in-form.component.jsx
@@ -50,7 +50,9 @@ export function TechClockInComponent({ form, bodyshop, technician }) {
{emps &&
emps.rates.map((item) => (
- {item.cost_center}
+ {item.cost_center === "timetickets.labels.shift"
+ ? t(item.cost_center)
+ : item.cost_center}
))}
diff --git a/client/src/components/tech-job-clock-out-button/tech-job-clock-out-button.component.jsx b/client/src/components/tech-job-clock-out-button/tech-job-clock-out-button.component.jsx
index 0cbd51d18..8aff394cd 100644
--- a/client/src/components/tech-job-clock-out-button/tech-job-clock-out-button.component.jsx
+++ b/client/src/components/tech-job-clock-out-button/tech-job-clock-out-button.component.jsx
@@ -139,7 +139,9 @@ export function TechClockOffButton({
emps &&
emps.rates.map((item) => (
- {item.cost_center}
+ {item.cost_center === "timetickets.labels.shift"
+ ? t(item.cost_center)
+ : item.cost_center}
))
)}
diff --git a/client/src/components/tech-job-clocked-in-list/tech-job-clocked-in-list.component.jsx b/client/src/components/tech-job-clocked-in-list/tech-job-clocked-in-list.component.jsx
index 37742b55b..e00f355d5 100644
--- a/client/src/components/tech-job-clocked-in-list/tech-job-clocked-in-list.component.jsx
+++ b/client/src/components/tech-job-clocked-in-list/tech-job-clocked-in-list.component.jsx
@@ -83,7 +83,9 @@ export function TechClockedInList({ technician }) {
{ticket.clockon}
- {ticket.cost_center}
+ {ticket.cost_center === "timetickets.labels.shift"
+ ? t(ticket.cost_center)
+ : ticket.cost_center}
diff --git a/client/src/graphql/jobs.queries.js b/client/src/graphql/jobs.queries.js
index 94a210a98..bb2839dfc 100644
--- a/client/src/graphql/jobs.queries.js
+++ b/client/src/graphql/jobs.queries.js
@@ -630,7 +630,7 @@ export const GET_JOB_RECONCILIATION_BY_PK = gql`
is_credit_memo
isinhouse
exported
- billlines {
+ billlines(where: { deductedfromlbr: { _eq: false } }) {
actual_price
quantity
actual_cost
diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json
index cf5b1c7d5..d07ec4dd6 100644
--- a/client/src/translations/en_us/common.json
+++ b/client/src/translations/en_us/common.json
@@ -1055,6 +1055,7 @@
"profitcenter_part": "Profit Center: Part",
"prt_dsmk_p": "Line Markup %",
"status": "Status",
+ "tax_part": "Tax Part",
"total": "Total",
"unq_seq": "Seq #"
},
diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json
index 3254fb148..11e0ca003 100644
--- a/client/src/translations/es/common.json
+++ b/client/src/translations/es/common.json
@@ -1055,6 +1055,7 @@
"profitcenter_part": "",
"prt_dsmk_p": "",
"status": "Estado",
+ "tax_part": "",
"total": "",
"unq_seq": "Seq #"
},
diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json
index fdd764d37..f99dc4e90 100644
--- a/client/src/translations/fr/common.json
+++ b/client/src/translations/fr/common.json
@@ -1055,6 +1055,7 @@
"profitcenter_part": "",
"prt_dsmk_p": "",
"status": "Statut",
+ "tax_part": "",
"total": "",
"unq_seq": "Seq #"
},