diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index fe6074ad7..3464f1110 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -32479,6 +32479,27 @@ + + zeroactualnegativeprod + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + diff --git a/client/src/components/time-ticket-list/time-ticket-list.component.jsx b/client/src/components/time-ticket-list/time-ticket-list.component.jsx index 13e9d413f..a6e12ed51 100644 --- a/client/src/components/time-ticket-list/time-ticket-list.component.jsx +++ b/client/src/components/time-ticket-list/time-ticket-list.component.jsx @@ -265,6 +265,7 @@ export function TimeTicketList({ + {totals.productivehrs} {totals.actualhrs} 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 68d4e35e4..6d8356f5d 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 @@ -152,11 +152,33 @@ export function TimeTicketModalComponent({ }, ]} > - + )} - + ({ + async validator(rule, value) { + if (value) { + const prodHrs = getFieldValue("productivehrs"); + if (prodHrs < 0 && value !== 0) + return Promise.reject( + t("timetickets.labels.zeroactualnegativeprod") + ); + else { + return Promise.resolve(); + } + } else { + return Promise.resolve(); + } + }, + }), + ]} + > {isEdit && ( diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index 3de4f38fa..55da35541 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -1793,7 +1793,7 @@ "refinishhours": "R", "selectview": "Select a View", "sublets": "Sublets", - "totalhours": "Total Hrs", + "totalhours": "Total Hrs ", "touchtime": "T/T", "viewname": "View Name" }, @@ -1957,7 +1957,8 @@ "shift": "Shift", "shiftalreadyclockedon": "Active Shift Time Tickets", "straight_time": "Straight Time", - "timetickets": "Time Tickets" + "timetickets": "Time Tickets", + "zeroactualnegativeprod": "Actual hours must be 0 if entering negative productive hours." }, "successes": { "clockedin": "Clocked in successfully.", diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 81fc4ef5b..baa184397 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -1957,7 +1957,8 @@ "shift": "", "shiftalreadyclockedon": "", "straight_time": "", - "timetickets": "" + "timetickets": "", + "zeroactualnegativeprod": "" }, "successes": { "clockedin": "", diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index b4148f7ec..190d426ec 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -1957,7 +1957,8 @@ "shift": "", "shiftalreadyclockedon": "", "straight_time": "", - "timetickets": "" + "timetickets": "", + "zeroactualnegativeprod": "" }, "successes": { "clockedin": "",