diff --git a/client/src/components/job-detail-lines/job-lines.component.jsx b/client/src/components/job-detail-lines/job-lines.component.jsx
index a774bac6b..455caefd6 100644
--- a/client/src/components/job-detail-lines/job-lines.component.jsx
+++ b/client/src/components/job-detail-lines/job-lines.component.jsx
@@ -519,6 +519,7 @@ export function JobLinesComponent({
{selectedLines.length > 0 && ` (${selectedLines.length})`}
-
+
-
+
diff --git a/client/src/components/labor-allocations-table/labor-allocations-table.component.jsx b/client/src/components/labor-allocations-table/labor-allocations-table.component.jsx
index 57be0b072..1a6b16a7d 100644
--- a/client/src/components/labor-allocations-table/labor-allocations-table.component.jsx
+++ b/client/src/components/labor-allocations-table/labor-allocations-table.component.jsx
@@ -1,6 +1,5 @@
import { EditFilled } from "@ant-design/icons";
import { Alert, Card, Col, Row, Space, Table, Typography } from "antd";
-import _ from "lodash";
import React, { useEffect, useMemo, useState } from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
@@ -9,11 +8,11 @@ import { selectTechnician } from "../../redux/tech/tech.selectors";
import { selectBodyshop } from "../../redux/user/user.selectors";
import CurrencyFormatter from "../../utils/CurrencyFormatter";
import { alphaSort } from "../../utils/sorters";
+import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
import LaborAllocationsAdjustmentEdit from "../labor-allocations-adjustment-edit/labor-allocations-adjustment-edit.component";
+import UpsellComponent, { upsellEnum } from "../upsell/upsell.component";
import "./labor-allocations-table.styles.scss";
import { CalculateAllocationsTotals } from "./labor-allocations-table.utility";
-import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
-import UpsellComponent, { upsellEnum } from "../upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
technician: selectTechnician
@@ -65,6 +64,7 @@ export function LaborAllocationsTable({
key: "total",
sorter: (a, b) => a.total - b.total,
sortOrder: state.sortedInfo.columnKey === "total" && state.sortedInfo.order,
+ align: "right",
render: (text, record) => record.total.toFixed(1)
},
{
@@ -73,6 +73,7 @@ export function LaborAllocationsTable({
key: "hrs_claimed",
sorter: (a, b) => a.claimed - b.claimed,
sortOrder: state.sortedInfo.columnKey === "claimed" && state.sortedInfo.order,
+ align: "right",
render: (text, record) => record.claimed && record.claimed.toFixed(1)
},
{
@@ -81,6 +82,7 @@ export function LaborAllocationsTable({
key: "adjustments",
sorter: (a, b) => a.adjustments - b.adjustments,
sortOrder: state.sortedInfo.columnKey === "adjustments" && state.sortedInfo.order,
+ align: "right",
render: (text, record) => (
{record.adjustments.toFixed(1)}
@@ -100,17 +102,17 @@ export function LaborAllocationsTable({
{
title: t("jobs.labels.difference"),
dataIndex: "difference",
-
key: "difference",
sorter: (a, b) => a.difference - b.difference,
sortOrder: state.sortedInfo.columnKey === "difference" && state.sortedInfo.order,
+ align: "right",
render: (text, record) => (
= 0 ? "green" : "red"
+ color: record.difference.toFixed(1) >= 0 ? "green" : "red"
}}
>
- {_.round(record.difference, 1)}
+ {(Math.abs(record.difference) < 0.05 ? 0 : record.difference).toFixed(1)}
)
}
@@ -129,7 +131,6 @@ export function LaborAllocationsTable({
ellipsis: true,
render: (text, record) => `${record.op_code_desc || ""}${record.alt_partm ? ` ${record.alt_partm}` : ""}`
},
-
{
title: t("joblines.fields.act_price"),
dataIndex: "act_price",
@@ -187,7 +188,7 @@ export function LaborAllocationsTable({
{ hrs_total: 0, hrs_claimed: 0, adjustments: 0, difference: 0 }
);
- if (summary.difference !== 0 && typeof warningCallback === "function") {
+ if (Math.abs(summary.difference.toFixed(1)) !== 0 && typeof warningCallback === "function") {
warningCallback({ key: "labor", warning: t("jobs.labels.outstandinghours") });
}
@@ -217,19 +218,21 @@ export function LaborAllocationsTable({
summary={() => (
- {t("general.labels.totals")}
+
+ {t("general.labels.totals")}
+
- {summary.hrs_total.toFixed(1)}
- {summary.hrs_claimed.toFixed(1)}
- {summary.adjustments.toFixed(1)}
-
+ {summary.hrs_total.toFixed(1)}
+ {summary.hrs_claimed.toFixed(1)}
+ {summary.adjustments.toFixed(1)}
+
= 0 ? "green" : "red"
+ color: summary.difference.toFixed(1) >= 0 ? "green" : "red"
}}
>
- {summary.difference.toFixed(1)}
+ {(Math.abs(summary.difference) < 0.05 ? 0 : summary.difference).toFixed(1)}
@@ -261,11 +264,10 @@ export function LaborAllocationsTable({
)}
- {showWarning && summary.difference !== 0 && (
+ {showWarning && Math.abs(summary.difference.toFixed(1)) !== 0 && (
)}
);
}
-
export default connect(mapStateToProps, null)(LaborAllocationsTable);
diff --git a/client/src/components/owner-find-modal/owner-find-modal.container.jsx b/client/src/components/owner-find-modal/owner-find-modal.container.jsx
index 67451f10d..b208e6058 100644
--- a/client/src/components/owner-find-modal/owner-find-modal.container.jsx
+++ b/client/src/components/owner-find-modal/owner-find-modal.container.jsx
@@ -38,7 +38,11 @@ export default function OwnerFindModalContainer({
}, [callSearchowners, modalProps.open, owner]);
return (
-
+ {t("owners.labels.existing_owners")}}
+ width={"80%"}
+ {...modalProps}
+ >
{loading ? : null}
{error ? : null}
{owner ? (
diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json
index a3d2ac449..2f03dded6 100644
--- a/client/src/translations/en_us/common.json
+++ b/client/src/translations/en_us/common.json
@@ -2056,7 +2056,7 @@
"parts": "Parts",
"parts_lines": "Parts Lines",
"parts_received": "Parts Rec.",
- "parts_tax_rates": "Parts Tax rates",
+ "parts_tax_rates": "Profile - Parts",
"partsfilter": "Parts Only",
"partssubletstotal": "Parts & Sublets Total",
"partstotal": "Parts Total (ex. Taxes)",