+
{InstanceRenderManager({
rome: (
diff --git a/client/src/components/jobs-detail-rates/jobs-detail-rates.labor.component.jsx b/client/src/components/jobs-detail-rates/jobs-detail-rates.labor.component.jsx
index b7a2dc861..d57321b6a 100644
--- a/client/src/components/jobs-detail-rates/jobs-detail-rates.labor.component.jsx
+++ b/client/src/components/jobs-detail-rates/jobs-detail-rates.labor.component.jsx
@@ -13,597 +13,605 @@ const mapStateToProps = createStructuredSelector({
export function JobsDetailRatesLabor({ jobRO, expanded, required = true, form }) {
const { t } = useTranslation();
- return (
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
+ // Define collapse items
+ const collapseItems = [
+ {
+ key: "cieca_pfl",
+ label: t("jobs.labels.cieca_pfl"),
+ children: (
+ <>
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ ),
+ forceRender: true
+ }
+ ];
+
+ return
;
}
export default connect(mapStateToProps, null)(JobsDetailRatesLabor);
diff --git a/client/src/components/jobs-detail-rates/jobs-detail-rates.materials.component.jsx b/client/src/components/jobs-detail-rates/jobs-detail-rates.materials.component.jsx
index 2f7144022..dab228741 100644
--- a/client/src/components/jobs-detail-rates/jobs-detail-rates.materials.component.jsx
+++ b/client/src/components/jobs-detail-rates/jobs-detail-rates.materials.component.jsx
@@ -13,154 +13,162 @@ const mapStateToProps = createStructuredSelector({
export function JobsDetailRatesMaterials({ jobRO, expanded, required = true, form }) {
const { t } = useTranslation();
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
+ // Define collapse items
+ const collapseItems = [
+ {
+ key: "materials",
+ label: t("jobs.fields.materials.materials"),
+ children: (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ ),
+ forceRender: true
+ }
+ ];
+
+ return
;
}
export default connect(mapStateToProps, null)(JobsDetailRatesMaterials);
diff --git a/client/src/components/jobs-detail-rates/jobs-detail-rates.other.component.jsx b/client/src/components/jobs-detail-rates/jobs-detail-rates.other.component.jsx
index f9788d08a..b8efd23cc 100644
--- a/client/src/components/jobs-detail-rates/jobs-detail-rates.other.component.jsx
+++ b/client/src/components/jobs-detail-rates/jobs-detail-rates.other.component.jsx
@@ -13,9 +13,12 @@ const mapStateToProps = createStructuredSelector({
export function JobsDetailRatesOther({ jobRO, expanded, required = true, form }) {
const { t } = useTranslation();
- return (
-
-
+ // Define collapse items
+ const collapseItems = [
+ {
+ key: "cieca_pfo",
+ label: t("jobs.labels.cieca_pfo"),
+ children: (
-
-
-
- );
+ ),
+ forceRender: true
+ }
+ ];
+
+ return
;
}
export default connect(mapStateToProps, null)(JobsDetailRatesOther);
diff --git a/client/src/components/jobs-detail-rates/jobs-detail-rates.parts.component.jsx b/client/src/components/jobs-detail-rates/jobs-detail-rates.parts.component.jsx
index 39ac6946a..d3475126e 100644
--- a/client/src/components/jobs-detail-rates/jobs-detail-rates.parts.component.jsx
+++ b/client/src/components/jobs-detail-rates/jobs-detail-rates.parts.component.jsx
@@ -14,1006 +14,1110 @@ const mapStateToProps = createStructuredSelector({
export function JobsDetailRatesParts({ jobRO, expanded, required = true, form }) {
const { t } = useTranslation();
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {() => {
- return (
-
-
-
- );
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {InstanceRenderManager({ imex: true, rome: false }) ? (
- <>
-
-
-
-
-
- {" "}
- >
- ) : null}
-
-
-
- {InstanceRenderManager({ imex: true, rome: false }) ? (
-
+ // Define collapse items
+ const collapseItems = [
+ {
+ key: "rates",
+ label: t("jobs.labels.parts_tax_rates"),
+ children: (
+ <>
+
+
- ) : null}
-
-
-
-
-
-
- );
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {() => {
+ return (
+
+
+
+ );
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {InstanceRenderManager({ imex: true, rome: false }) ? (
+ <>
+
+
+
+
+
+
+ >
+ ) : null}
+
+
+
+ {InstanceRenderManager({ imex: true, rome: false }) ? (
+
+
+
+ ) : null}
+
+
+
+
+ >
+ ),
+ forceRender: true
+ }
+ ];
+
+ return
;
}
export default connect(mapStateToProps, null)(JobsDetailRatesParts);
diff --git a/client/src/components/jobs-detail-rates/jobs-detail-rates.taxes.component.jsx b/client/src/components/jobs-detail-rates/jobs-detail-rates.taxes.component.jsx
index 95d68b1f2..6aa7ff4ba 100644
--- a/client/src/components/jobs-detail-rates/jobs-detail-rates.taxes.component.jsx
+++ b/client/src/components/jobs-detail-rates/jobs-detail-rates.taxes.component.jsx
@@ -11,6 +11,9 @@ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop
});
+//If the panel doesn’t expand correctly due to the key mismatch, update the Collapse line to:
+//
+
export function JobsDetailRatesTaxes({ jobRO, expanded, bodyshop, required = true, form }) {
const { t } = useTranslation();
const formItems = [];
@@ -47,13 +50,18 @@ export function JobsDetailRatesTaxes({ jobRO, expanded, bodyshop, required = tru
>
);
}
- return (
-
-
- {formItems}
-
-
- );
+
+ // Define collapse items
+ const collapseItems = [
+ {
+ key: "cieca_pft",
+ label: t("jobs.labels.cieca_pft"),
+ children: <>{formItems}>,
+ forceRender: true
+ }
+ ];
+
+ return
;
}
export default connect(mapStateToProps, null)(JobsDetailRatesTaxes);
diff --git a/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx b/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx
index 13941cd08..e9c80daa8 100644
--- a/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx
+++ b/client/src/components/schedule-calendar-wrapper/scheduler-calendar-wrapper.component.jsx
@@ -36,6 +36,7 @@ export function ScheduleCalendarWrapperComponent({
const search = queryString.parse(useLocation().search);
const history = useNavigate();
const { t } = useTranslation();
+
const handleEventPropStyles = (event, start, end, isSelected) => {
return {
...(event.color && !((search.view || defaultView) === "agenda")
@@ -51,37 +52,41 @@ export function ScheduleCalendarWrapperComponent({
const selectedDate = new Date(date || dayjs(search.date) || Date.now());
+ // Convert Collapse to use items prop
+ const collapseItems = [
+ {
+ key: "1",
+ label:
{t("appointments.labels.severalerrorsfound")},
+ children: (
+
+ {problemJobs.map((problem) => (
+ ]}
+ values={{
+ ro_number: problem.ro_number,
+ code: problem.code
+ }}
+ />
+ }
+ />
+ ))}
+
+ )
+ }
+ ];
+
return (
<>
{HasFeatureAccess({ featureName: "smartscheduling", bodyshop }) &&
problemJobs &&
(problemJobs.length > 2 ? (
-
- {t("appointments.labels.severalerrorsfound")}}
- >
-
- {problemJobs.map((problem) => (
- ]}
- values={{
- ro_number: problem.ro_number,
- code: problem.code
- }}
- />
- }
- />
- ))}
-
-
-
+
) : (
{problemJobs.map((problem) => (
@@ -119,7 +124,6 @@ export function ScheduleCalendarWrapperComponent({
history({ search: queryString.stringify(search) });
}}
step={15}
- // timeslots={1}
showMultiDayTimes
localizer={localizer}
min={bodyshop.schedule_start_time ? new Date(bodyshop.schedule_start_time) : new Date("2020-01-01T06:00:00")}