diff --git a/client/src/components/production-list-table/production-list-table.resizeable.component.jsx b/client/src/components/production-list-table/production-list-table.resizeable.component.jsx
index 07b47c87a..618e9e8cd 100644
--- a/client/src/components/production-list-table/production-list-table.resizeable.component.jsx
+++ b/client/src/components/production-list-table/production-list-table.resizeable.component.jsx
@@ -14,6 +14,14 @@ export default function ResizableComponent(props) {
height={0}
onResize={onResize}
draggableOpts={{ enableUserSelectHack: false }}
+ handle={
+ {
+ e.stopPropagation();
+ }}
+ />
+ }
>
|
diff --git a/client/src/components/scoreboard-day-stats/scoreboard-day-stats.component.jsx b/client/src/components/scoreboard-day-stats/scoreboard-day-stats.component.jsx
index 497eab209..cfd6d945d 100644
--- a/client/src/components/scoreboard-day-stats/scoreboard-day-stats.component.jsx
+++ b/client/src/components/scoreboard-day-stats/scoreboard-day-stats.component.jsx
@@ -1,10 +1,9 @@
-import { Card, Statistic } from "antd";
+import { Card, Divider, Statistic } from "antd";
import moment from "moment";
import React from "react";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors";
-import { useTranslation } from "react-i18next";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
});
@@ -14,7 +13,6 @@ const mapDispatchToProps = (dispatch) => ({
export function ScoreboardDayStats({ bodyshop, date, entries }) {
const { dailyPaintTarget, dailyBodyTarget } = bodyshop.scoreboard_target;
- const { t } = useTranslation();
//let totalHrs = 0;
const paintHrs = entries.reduce((acc, value) => {
@@ -43,10 +41,9 @@ export function ScoreboardDayStats({ bodyshop, date, entries }) {
label="P"
value={paintHrs.toFixed(1)}
/>
-
+
+
+
);
}
diff --git a/client/src/components/scoreboard-targets-table/scoreboard-targets-table.component.jsx b/client/src/components/scoreboard-targets-table/scoreboard-targets-table.component.jsx
index 558b217b6..112d441f6 100644
--- a/client/src/components/scoreboard-targets-table/scoreboard-targets-table.component.jsx
+++ b/client/src/components/scoreboard-targets-table/scoreboard-targets-table.component.jsx
@@ -1,5 +1,5 @@
import { CalendarOutlined } from "@ant-design/icons";
-import { Card, Col, Row, Statistic } from "antd";
+import { Card, Col, Divider, Row, Statistic } from "antd";
import _ from "lodash";
import moment from "moment";
import React, { useMemo } from "react";
@@ -177,6 +177,9 @@ export function ScoreboardTargetsTable({ bodyshop, scoreBoardlist }) {
+
+
+
@@ -186,7 +189,6 @@ export function ScoreboardTargetsTable({ bodyshop, scoreBoardlist }) {
{
@@ -94,6 +95,7 @@ export default function ScoreboardTimeTickets() {
totalLastMonth: 0,
totalOverPeriod: 0,
actualTotalOverPeriod: 0,
+ totalEffieciencyOverPeriod: 0,
};
}
@@ -221,6 +223,19 @@ export default function ScoreboardTimeTickets() {
ret2.push(r);
});
+
+ // Add total efficiency of employees
+ ret.totalEffieciencyOverPeriod = Object.keys(ret.employees)
+ .map((key) => {
+ return { employee_number: key, ...ret.employees[key] };
+ })
+ .map((e) =>
+ ((e.totalOverPeriod / (e.actualTotalOverPeriod || 0.1)) * 100).toFixed(
+ 1
+ )
+ )
+ .reduce((acc, prev) => acc + Number(prev), 0);
+
roundObject(ret);
roundObject(totals);
roundObject(ret2);
diff --git a/client/src/components/scoreboard-timetickets/scoreboard-timetickets.stats.component.jsx b/client/src/components/scoreboard-timetickets/scoreboard-timetickets.stats.component.jsx
index 0b1b9b6bf..e31cec3af 100644
--- a/client/src/components/scoreboard-timetickets/scoreboard-timetickets.stats.component.jsx
+++ b/client/src/components/scoreboard-timetickets/scoreboard-timetickets.stats.component.jsx
@@ -62,7 +62,7 @@ export function ScoreboardTicketsStats({ data, bodyshop }) {
key: "efficiencyoverperiod",
render: (text, record) =>
`${(
- (record.totalOverPeriod / (record.actualTotalOverPeriod || .1)) *
+ (record.totalOverPeriod / (record.actualTotalOverPeriod || 0.1)) *
100
).toFixed(1)} %`,
},
@@ -113,6 +113,12 @@ export function ScoreboardTicketsStats({ data, bodyshop }) {
value={data.totalOverPeriod}
/>
+
+
+
{t("scoreboard.labels.calendarperiod")}
@@ -121,7 +127,7 @@ export function ScoreboardTicketsStats({ data, bodyshop }) {
- total[fieldTypeToCheck] ===
- getFieldValue("cost_center")
- )?.difference;
+ const costCenterDiff =
+ Math.round(
+ totals.find(
+ (total) =>
+ total[fieldTypeToCheck] ===
+ getFieldValue("cost_center")
+ )?.difference * 10
+ ) / 10;
if (value > costCenterDiff)
return Promise.reject(
diff --git a/client/src/components/time-ticket-modal/time-ticket-modal.component.jsx b/client/src/components/time-ticket-modal/time-ticket-modal.component.jsx
index c0cf7b024..a72322851 100644
--- a/client/src/components/time-ticket-modal/time-ticket-modal.component.jsx
+++ b/client/src/components/time-ticket-modal/time-ticket-modal.component.jsx
@@ -206,10 +206,14 @@ export function TimeTicketModalComponent({
? "mod_lbr_ty"
: "cost_center";
- const costCenterDiff = totals.find(
- (total) =>
- total[fieldTypeToCheck] === getFieldValue("cost_center")
- )?.difference;
+ const costCenterDiff =
+ Math.round(
+ totals.find(
+ (total) =>
+ total[fieldTypeToCheck] ===
+ getFieldValue("cost_center")
+ )?.difference * 10
+ ) / 10;
if (value > costCenterDiff)
return Promise.reject(