Add in RCC toggle & use parts threshold inclusion.

This commit is contained in:
Patrick Fic
2026-05-05 12:02:20 -07:00
parent c63a33c83e
commit 946fd03fa6
16 changed files with 177 additions and 76 deletions

View File

@@ -1,6 +1,6 @@
import { AlertFilled, DownOutlined, LoadingOutlined } from "@ant-design/icons";
import { useMutation } from "@apollo/client";
import { Dropdown, Menu, message, Space } from "antd";
import { Dropdown, Menu, message, Space, Tooltip } from "antd";
import React, { useState } from "react";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
@@ -10,6 +10,7 @@ import { selectBodyshop } from "../../../redux/user/user.selectors";
import GroupVerifySwitch from "../group-verify-switch/group-verify-switch.component";
import JobsGroupModalMolecule from "../jobs-group-modal/jobs-group-modal.molecule";
import { WhichMPIRulesetToApply } from "../../../util/constants";
import SGIRccSwitch from "../sgi-rcc-switch/sgi-rcc-switch.component";
const { ipcRenderer } = window;
const mapStateToProps = createStructuredSelector({
@@ -80,7 +81,7 @@ export function JobGroupMolecule({ bodyshop, jobId, group, job }) {
const menuToUse = bodyshop.ins_rule_set === "MPI" ? MPImenu : SGImenu;
return (
<Space align="top">
<Space align="center" wrap>
<Dropdown overlay={menuToUse} trigger={["click"]}>
<a href=" #" onClick={(e) => e.preventDefault()}>
{group}
@@ -93,11 +94,17 @@ export function JobGroupMolecule({ bodyshop, jobId, group, job }) {
<span style={{ color: "tomato" }}>No group set.</span>
</div>
)}
{group && (
{bodyshop.ins_rule_set === "MPI" && group && (
<div style={{ marginLeft: ".2rem" }}>
<GroupVerifySwitch job={job} loading={loading} loadingCallback={setLoading} />
</div>
)}
{bodyshop.ins_rule_set === "SGI" && (
<Tooltip title="Is this an RCC job?">
<SGIRccSwitch job={job} loading={loading} loadingCallback={setLoading} />
</Tooltip>
)}
<JobsGroupModalMolecule job={job} />
{loading && <LoadingOutlined />}

View File

@@ -63,6 +63,11 @@ export function JobsTargetsStatsMolecule({ loading, job, selectedJobTargetPc, bo
<WarningOutlined style={{ color: "seagreen" }} />
</Tooltip>
)}
{bodyshop.ins_rule_set === "SGI" && job.sgi_rcc && (
<Tooltip title="This claim has replacement cost coverage. No expected savings.">
<WarningOutlined style={{ color: "seagreen" }} />
</Tooltip>
)}
</Space>
}
style={{ margin: "0rem .5rem" }}

View File

@@ -0,0 +1,46 @@
import { CheckOutlined, CloseOutlined } from "@ant-design/icons";
import { useMutation } from "@apollo/client";
import { message, Switch } from "antd";
import React from "react";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { UPDATE_JOB } from "../../../graphql/jobs.queries";
import { toggleSGIRcc } from "../../../redux/reporting/reporting.actions";
const mapStateToProps = createStructuredSelector({});
const mapDispatchToProps = (dispatch) => ({
toggleSGIRcc: (jobId) => dispatch(toggleSGIRcc(jobId))
});
export default connect(mapStateToProps, mapDispatchToProps)(SGIRccSwitch);
export function SGIRccSwitch({ job, loading, loadingCallback, toggleSGIRcc }) {
const [updateJob] = useMutation(UPDATE_JOB);
const handleChange = async (val) => {
if (loadingCallback) loadingCallback(true);
const result = await updateJob({
variables: { jobId: job.id, job: { sgi_rcc: val } }
});
if (!result.errors) {
message.success("Vehicle group updated.");
toggleSGIRcc(job.id);
} else {
message.error("Error updating job.");
}
if (loadingCallback) loadingCallback(false);
};
return (
<Switch
checkedChildren="Has RCC"
unCheckedChildren="No RCC"
disabled={loading}
checked={job.sgi_rcc}
onChange={handleChange}
title="Replacement Cost Coverage?"
/>
);
}

View File

@@ -94,6 +94,7 @@ export const QUERY_JOB_BY_PK = gql`
updated_at
group
group_verified
sgi_rcc
v_age
v_type
loss_date
@@ -175,6 +176,7 @@ export const UPDATE_JOB = gql`
v_age
group
group_verified
sgi_rcc
requires_reimport
v_mileage
joblines(order_by: { line_no: asc }) {
@@ -218,6 +220,7 @@ export const QUERY_JOB_ESTIMATE_SCRUBBER = gql`
updated_at
group
group_verified
sgi_rcc
v_age
v_type
loss_date

View File

@@ -16,6 +16,7 @@ export const REPORTING_GET_JOBS = gql`
ins_co_nm
group
group_verified
sgi_rcc
clm_total
clm_no
close_date

View File

@@ -26,6 +26,10 @@ export const toggleGroupVerified = (jobId) => ({
type: ReportingActionTypes.TOGGLE_GROUP_VERIFIED,
payload: jobId
});
export const toggleSGIRcc = (jobId) => ({
type: ReportingActionTypes.TOGGLE_SGI_RCC,
payload: jobId
});
export const calculateAudit = (claimsArrayFromAudit) => ({
type: ReportingActionTypes.CALCULATE_AUDIT,
payload: claimsArrayFromAudit

View File

@@ -58,6 +58,17 @@ const applicationReducer = (state = INITIAL_STATE, action) => {
}
})
};
case ReportingActionTypes.TOGGLE_SGI_RCC:
return {
...state,
data: state.data.map((d) => {
if (d.id === action.payload) {
return { ...d, sgi_rcc: !d.sgi_rcc };
} else {
return d;
}
})
};
default:
return state;
}

View File

@@ -11,6 +11,7 @@ const ReportingActionTypes = {
ADD_EXCLUDED_ID: "ADD_EXCLUDED_ID",
REMOVE_EXCLUDED_ID: "REMOVE_EXCLUDED_ID",
CLEAR_EXCLUDED_IDS: "CLEAR_EXCLUDED_IDS",
SET_CACHED_JOBS: "SET_CACHED_JOBS"
SET_CACHED_JOBS: "SET_CACHED_JOBS",
TOGGLE_SGI_RCC: "TOGGLE_SGI_RCC"
};
export default ReportingActionTypes;

View File

@@ -13,6 +13,10 @@ export default function GetJobTarget({ group, v_age, targets, close_date, v_mile
&& job.v_age >= f.ageGte
&& (f.ageLt === null ? true : job.v_age < f.ageLt)
);
//Check if this is an RCC job.
if (job.sgi_rcc) {
return 0;
}
return sgiTarget?.target || 0;
case "MPI":