Merged in v1.0.17 (pull request #20)

V1.0.17
This commit is contained in:
Patrick Fic
2021-02-18 22:00:07 +00:00
39 changed files with 2251 additions and 461 deletions

View File

@@ -1,6 +1,9 @@
New Features:
- Renamed 'Close Date' to 'Ready for Payment' to better align with MPI terminology.
- Changed vehicle age calculation to use 'Ready for Payment' instead of loss date as per new MPI practices.
- Implemented the new vehicle groupings by MPI.
- Implemented new model based group detection to provide more accurate groupings than relying solely on the estimating system. *
- Added group verification to disable alerts and track whether a grouping has already been reviewed and confirmed.
Bug Fixes:
- Updated grouping typo on group lookup popup.
- Updated ignore logic for recycled glass.
* Please send feedback on the model groupings if you notice any issues to support@thinkimex.com.

View File

@@ -38,5 +38,10 @@
"title": "Release Notes for 1.0.16",
"date": "01/12/2021",
"notes": "Bug Fixes: \n- Resolved an issue where vehicle age was calculated using an old date."
},
"1.0.17": {
"title": "Release Notes for 1.0.17",
"date": "02/17/2021",
"notes": "New Features: \n- Implemented the new vehicle groupings by MPI.\n- Implemented new model based group detection to provide more accurate groupings than relying solely on the estimating system. *\n- Added group verification to disable alerts and track whether a grouping has already been reviewed and confirmed.\n\nBug Fixes: \n- Updated ignore logic for recycled glass.\n\n* Please send feedback on the model groupings if you notice any issues to support@thinkimex.com. "
}
}

View File

@@ -375,15 +375,15 @@ async function DecodeLinFile(extensionlessFilePath) {
//*****TODO LINE****
//Any PAL, Remanufactured, Recycled, Aftermarket, Used,
// If DB Price 0, ignore them.
//RPS-46 Ignore NA Line Items.
if (
jobline.part_type === "PAN" &&
jobline.price_j === true &&
jobline.db_price === 0
) {
jobline.ignore = true;
}
// if (
// (jobline.part_type === "PAL" ||
// jobline.part_type === "PAM" ||
// jobline.part_type === "PAR" ||
// jobline.part_type === "PAA") &&
// jobline.db_price === 0
// ) {
// jobline.ignore = true;
// }
//RPS-39 - OEM ON OEM SAVINGS
if (
@@ -403,6 +403,20 @@ async function DecodeLinFile(extensionlessFilePath) {
// jobline.db_price = jobline.act_price;
// }
//RPS-46 Ignore NA Line Items.
if (
jobline.part_type === "PAN" &&
jobline.price_j === true &&
jobline.db_price === 0
) {
jobline.ignore = true;
}
//Update as per Norm from Rod & Waldo - Only Recycled Glass should count towards RPS, not A/M or OEM
if (jobline.glass_flag && jobline.part_type !== "PAL") {
jobline.ignore = true;
}
//Logic Based Exclusions.
if (
!jobline.part_type ||
@@ -428,8 +442,6 @@ async function DecodeLinFile(extensionlessFilePath) {
jobline.ignore = false;
}
console.log("jobline", jobline);
delete jobline.glass_flag;
delete jobline.price_j;
return jobline;

View File

@@ -111,6 +111,6 @@ exports.StopWatcher = StopWatcher;
exports.watcher = watcher;
async function HandleNewFile(path) {
Nucleus.track("IMPORT_JOB_FROM_WATCHER");
// Nucleus.track("IMPORT_JOB_FROM_WATCHER");
await ImportJob(path);
}

View File

@@ -0,0 +1,5 @@
- args:
cascade: false
read_only: false
sql: DROP TABLE "public"."groupings";
type: run_sql

View File

@@ -0,0 +1,23 @@
- args:
cascade: false
read_only: false
sql: CREATE EXTENSION IF NOT EXISTS pgcrypto;
type: run_sql
- args:
cascade: false
read_only: false
sql: "CREATE TABLE \"public\".\"groupings\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(),
\"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz
NOT NULL DEFAULT now(), \"effective_date\" date NOT NULL, \"end_date\" date,
\"make\" text NOT NULL, \"group\" text NOT NULL, \"type\" jsonb NOT NULL DEFAULT
jsonb_build_array(), PRIMARY KEY (\"id\") );\nCREATE OR REPLACE FUNCTION \"public\".\"set_current_timestamp_updated_at\"()\nRETURNS
TRIGGER AS $$\nDECLARE\n _new record;\nBEGIN\n _new := NEW;\n _new.\"updated_at\"
= NOW();\n RETURN _new;\nEND;\n$$ LANGUAGE plpgsql;\nCREATE TRIGGER \"set_public_groupings_updated_at\"\nBEFORE
UPDATE ON \"public\".\"groupings\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT
ON TRIGGER \"set_public_groupings_updated_at\" ON \"public\".\"groupings\" \nIS
'trigger to set value of column \"updated_at\" to current timestamp on row update';"
type: run_sql
- args:
name: groupings
schema: public
type: add_existing_table_or_view

View File

@@ -0,0 +1,6 @@
- args:
role: user
table:
name: groupings
schema: public
type: drop_select_permission

View File

@@ -0,0 +1,21 @@
- args:
permission:
allow_aggregations: false
backend_only: false
columns:
- id
- created_at
- updated_at
- effective_date
- end_date
- make
- group
- type
computed_fields: []
filter: {}
limit: null
role: user
table:
name: groupings
schema: public
type: create_select_permission

View File

@@ -0,0 +1,6 @@
- args:
cascade: false
read_only: false
sql: ALTER TABLE ONLY "public"."groupings" ALTER COLUMN "effective_date" DROP
DEFAULT;
type: run_sql

View File

@@ -0,0 +1,6 @@
- args:
cascade: false
read_only: false
sql: ALTER TABLE ONLY "public"."groupings" ALTER COLUMN "effective_date" SET DEFAULT
now();
type: run_sql

View File

@@ -0,0 +1,5 @@
- args:
cascade: false
read_only: false
sql: ALTER TABLE "public"."jobs" DROP COLUMN "group_verified";
type: run_sql

View File

@@ -0,0 +1,6 @@
- args:
cascade: false
read_only: false
sql: ALTER TABLE "public"."jobs" ADD COLUMN "group_verified" boolean NOT NULL
DEFAULT false;
type: run_sql

View File

@@ -0,0 +1,42 @@
- args:
role: user
table:
name: jobs
schema: public
type: drop_insert_permission
- args:
permission:
backend_only: false
check:
bodyshop:
associations:
user:
authid:
_eq: X-Hasura-User-Id
columns:
- bodyshopid
- clm_no
- clm_total
- close_date
- created_at
- group
- id
- ins_co_nm
- loss_date
- ownr_fn
- ownr_ln
- ro_number
- updated_at
- v_age
- v_makedesc
- v_mileage
- v_model
- v_model_yr
- v_type
- v_vin
set: {}
role: user
table:
name: jobs
schema: public
type: create_insert_permission

View File

@@ -0,0 +1,43 @@
- args:
role: user
table:
name: jobs
schema: public
type: drop_insert_permission
- args:
permission:
backend_only: false
check:
bodyshop:
associations:
user:
authid:
_eq: X-Hasura-User-Id
columns:
- bodyshopid
- clm_no
- clm_total
- close_date
- created_at
- group
- group_verified
- id
- ins_co_nm
- loss_date
- ownr_fn
- ownr_ln
- ro_number
- updated_at
- v_age
- v_makedesc
- v_mileage
- v_model
- v_model_yr
- v_type
- v_vin
set: {}
role: user
table:
name: jobs
schema: public
type: create_insert_permission

View File

@@ -0,0 +1,42 @@
- args:
role: user
table:
name: jobs
schema: public
type: drop_select_permission
- args:
permission:
allow_aggregations: true
columns:
- bodyshopid
- clm_no
- clm_total
- close_date
- created_at
- group
- id
- ins_co_nm
- loss_date
- ownr_fn
- ownr_ln
- ro_number
- updated_at
- v_age
- v_makedesc
- v_mileage
- v_model
- v_model_yr
- v_type
- v_vin
computed_fields: []
filter:
bodyshop:
associations:
user:
authid:
_eq: X-Hasura-User-Id
role: user
table:
name: jobs
schema: public
type: create_select_permission

View File

@@ -0,0 +1,43 @@
- args:
role: user
table:
name: jobs
schema: public
type: drop_select_permission
- args:
permission:
allow_aggregations: true
columns:
- bodyshopid
- clm_no
- clm_total
- close_date
- created_at
- group
- group_verified
- id
- ins_co_nm
- loss_date
- ownr_fn
- ownr_ln
- ro_number
- updated_at
- v_age
- v_makedesc
- v_mileage
- v_model
- v_model_yr
- v_type
- v_vin
computed_fields: []
filter:
bodyshop:
associations:
user:
authid:
_eq: X-Hasura-User-Id
role: user
table:
name: jobs
schema: public
type: create_select_permission

View File

@@ -0,0 +1,41 @@
- args:
role: user
table:
name: jobs
schema: public
type: drop_update_permission
- args:
permission:
columns:
- bodyshopid
- clm_no
- clm_total
- close_date
- created_at
- group
- id
- ins_co_nm
- loss_date
- ownr_fn
- ownr_ln
- ro_number
- updated_at
- v_age
- v_makedesc
- v_mileage
- v_model
- v_model_yr
- v_type
- v_vin
filter:
bodyshop:
associations:
user:
authid:
_eq: X-Hasura-User-Id
set: {}
role: user
table:
name: jobs
schema: public
type: create_update_permission

View File

@@ -0,0 +1,42 @@
- args:
role: user
table:
name: jobs
schema: public
type: drop_update_permission
- args:
permission:
columns:
- bodyshopid
- clm_no
- clm_total
- close_date
- created_at
- group
- group_verified
- id
- ins_co_nm
- loss_date
- ownr_fn
- ownr_ln
- ro_number
- updated_at
- v_age
- v_makedesc
- v_mileage
- v_model
- v_model_yr
- v_type
- v_vin
filter:
bodyshop:
associations:
user:
authid:
_eq: X-Hasura-User-Id
set: {}
role: user
table:
name: jobs
schema: public
type: create_update_permission

View File

@@ -71,6 +71,22 @@ tables:
authid:
_eq: X-Hasura-User-Id
check: null
- table:
schema: public
name: groupings
select_permissions:
- role: user
permission:
columns:
- id
- created_at
- updated_at
- effective_date
- end_date
- make
- group
- type
filter: {}
- table:
schema: public
name: joblines
@@ -205,6 +221,7 @@ tables:
- close_date
- created_at
- group
- group_verified
- id
- ins_co_nm
- loss_date
@@ -230,6 +247,7 @@ tables:
- close_date
- created_at
- group
- group_verified
- id
- ins_co_nm
- loss_date
@@ -261,6 +279,7 @@ tables:
- close_date
- created_at
- group
- group_verified
- id
- ins_co_nm
- loss_date

851
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -3,30 +3,30 @@
"productName": "ImEX RPS",
"author": "ImEX Systems Inc. <support@thinkimex.com>",
"description": "ImEX RPS",
"version": "1.0.16",
"version": "1.0.17",
"main": "electron/main.js",
"homepage": "./",
"dependencies": {
"@apollo/client": "^3.2.9",
"antd": "^4.8.6",
"@apollo/client": "^3.3.11",
"antd": "^4.12.3",
"apollo-link-logger": "^2.0.0",
"chokidar": "^3.4.2",
"chokidar": "^3.5.1",
"dbffile": "^1.4.3",
"dinero.js": "^1.8.1",
"dotenv": "^8.2.0",
"electron-is-dev": "^1.2.0",
"electron-log": "^4.2.4",
"electron-log": "^4.3.1",
"electron-reload": "^1.5.0",
"electron-store": "^6.0.1",
"electron-updater": "^4.3.5",
"firebase": "^7.24.0",
"graphql": "^15.4.0",
"graphql": "^15.5.0",
"lodash": "^4.17.20",
"logrocket": "^1.0.14",
"moment": "^2.29.1",
"node-sass": "^4.14.1",
"nucleus-nodejs": "^3.0.7",
"query-string": "^6.13.6",
"nucleus-nodejs": "^3.0.8",
"query-string": "^6.14.0",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-infinite-scroller": "^1.2.4",
@@ -71,12 +71,12 @@
},
"devDependencies": {
"concurrently": "^5.3.0",
"electron": "^10.1.6",
"electron": "^10.3.2",
"electron-builder": "^22.9.1",
"electron-devtools-installer": "^3.1.1",
"enzyme": "^3.11.0",
"enzyme-adapter-react-16": "^1.15.5",
"wait-on": "^5.2.0"
"enzyme-adapter-react-16": "^1.15.6",
"wait-on": "^5.2.1"
},
"build": {
"extends": null,

View File

@@ -30,7 +30,8 @@ const models = [
];
export default function VehicleGroupAlertAtom({ job, showGroup = false }) {
const shouldWarn = models.includes(job.v_model.toLowerCase());
const shouldWarn =
models.includes(job.v_model.toLowerCase()) && !job.group_verified;
const vehicleText = `${job.v_model_yr} ${job.v_makedesc} ${job.v_model} (${
job.v_type

View File

@@ -0,0 +1,50 @@
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 { toggleGroupVerified } from "../../../redux/reporting/reporting.actions";
const mapStateToProps = createStructuredSelector({});
const mapDispatchToProps = (dispatch) => ({
toggleGroupVerified: (jobId) => dispatch(toggleGroupVerified(jobId)),
});
export default connect(mapStateToProps, mapDispatchToProps)(GroupVerifySwitch);
export function GroupVerifySwitch({
job,
loading,
loadingCallback,
toggleGroupVerified,
}) {
const [updateJob] = useMutation(UPDATE_JOB);
const handleVerifyGroup = async (val) => {
if (loadingCallback) loadingCallback(true);
const result = await updateJob({
variables: { jobId: job.id, job: { group_verified: val } },
});
if (!result.errors) {
message.success("Vehicle group updated.");
toggleGroupVerified(job.id);
} else {
message.error("Error updating job.");
}
if (loadingCallback) loadingCallback(false);
};
return (
<Switch
checkedChildren={<CheckOutlined />}
unCheckedChildren={<CloseOutlined />}
disabled={loading}
checked={job.group_verified}
onChange={handleVerifyGroup}
/>
);
}

View File

@@ -1,13 +1,13 @@
import { DownOutlined, LoadingOutlined } from "@ant-design/icons";
import { AlertFilled, DownOutlined, LoadingOutlined } from "@ant-design/icons";
import { useMutation } from "@apollo/client";
import { Dropdown, Menu, message } from "antd";
import { Dropdown, Menu, message, Space } from "antd";
import React, { useState } from "react";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { UPDATE_JOB } from "../../../graphql/jobs.queries";
import ipcTypes from "../../../ipc.types";
import { selectBodyshop } from "../../../redux/user/user.selectors";
import { AlertFilled } from "@ant-design/icons";
import GroupVerifySwitch from "../group-verify-switch/group-verify-switch.component";
import JobsGroupModalMolecule from "../jobs-group-modal/jobs-group-modal.molecule";
const { ipcRenderer } = window;
@@ -53,21 +53,30 @@ export function JobGroupMolecule({ bodyshop, jobId, group, job }) {
);
return (
<>
<Space align="top">
<Dropdown overlay={menu} trigger={["click"]}>
<a href=" #" onClick={(e) => e.preventDefault()}>
{group}
<DownOutlined style={{ marginLeft: ".2rem" }} />
{loading && <LoadingOutlined />}
</a>
</Dropdown>
<JobsGroupModalMolecule />
{!group && (
<div style={{ marginLeft: ".2rem" }}>
<AlertFilled style={{ color: "tomato" }} className="blink_me" />
<span style={{ color: "tomato" }}>No group set.</span>
</div>
)}
</>
{group && (
<div style={{ marginLeft: ".2rem" }}>
<GroupVerifySwitch
job={job}
loading={loading}
loadingCallback={setLoading}
/>
</div>
)}
<JobsGroupModalMolecule />
{loading && <LoadingOutlined />}
</Space>
);
}

View File

@@ -43,7 +43,7 @@ export default function JobsDetailDescriptionMolecule({ loading, job }) {
<Descriptions.Item
label={
<Tooltip title="This is the date you will submit for payment from MPI. This should always be the latest date in the case of supplements.">
Ready for Payment Date
R4P Date
</Tooltip>
}
>

View File

@@ -5,115 +5,277 @@ import { InfoCircleFilled } from "@ant-design/icons";
const data = [
{
group: "Group 1",
makes: [
"GEO",
"ALFA ROMEO",
"TESLA",
"PORSCHE",
"MERCEDES BENZ-Truck",
"LAND ROVER",
"MERCEDES BENZ-Van",
"LINCOLN-Truck",
"BUICK-Truck",
"AM GENERAL",
"VOLKSWAGEN-Truck",
"JAGUAR",
"SMART",
"HUMMER-Truck",
"MERCEDES BENZ",
"RAM-Van",
"GENESIS",
"AUDI",
"BMW-Truck",
list: [
{
make: "ALFA ROMEO",
type: "Car, SUV, or Passenger Van",
},
{
make: "AUDI",
type: "Car, SUV, or Passenger Van",
},
{
make: "GENESIS*",
type: "Car, SUV, or Passenger Van",
},
{
make: "JAGUAR",
type: "Car, SUV, or Passenger Van",
},
{
make: "LAND ROVER",
type: "Car, SUV, or Passenger Van",
},
{
make: "LINCOLN",
type: "Truck",
},
{
make: "MERCEDES BENZ",
type: "Car, SUV, or Passenger Van",
},
{
make: "MERCEDES BENZ",
type: "Cargo Van",
},
{
make: "PORSCHE",
type: "Car, SUV, or Passenger Van",
},
{
make: "RAM",
type: "Cargo Van",
},
{
make: "SMART",
type: "Car, SUV, or Passenger Van",
},
{
make: "TESLA",
type: "Car, SUV, or Passenger Van",
},
],
},
{
group: "Group 2",
makes: [
"NISSAN-Van",
"VOLVO",
"MINI",
"LEXUS",
"LAND ROVER-Truck",
"SAAB",
"SUBARU",
"BMW",
list: [
{
make: "BMW",
type: "Car, SUV, or Passenger Van",
},
{
make: "LEXUS",
type: "Car, SUV, or Passenger Van",
},
{
make: "MINI",
type: "Car, SUV, or Passenger Van",
},
{
make: "NISSAN",
type: "Cargo Van",
},
{
make: "SAAB",
type: "Car, SUV, or Passenger Van",
},
{
make: "SUBARU",
type: "Car, SUV, or Passenger Van",
},
{
make: "VOLVO",
type: "Car, SUV, or Passenger Van",
},
],
},
{
group: "Group 3",
makes: [
"MAZDA-Truck",
"SCION",
"NISSAN-Truck",
"DODGE-Van",
"INFINITI",
"JEEP-Truck",
"MONACO-Van",
"JEEP",
"LINCOLN",
"KIA",
"VOLKSWAGEN",
"FIAT",
"TOYOTA-Truck",
"HYUNDAI",
"MAZDA",
"SUBARU-Truck",
"HUMMER",
"EAGLE",
"FORD-Truck",
"ISUZU",
list: [
{
make: "DODGE",
type: "Cargo Van",
},
{
make: "FIAT",
type: "Car, SUV, or Passenger Van",
},
{
make: "FORD",
type: "Cargo Van",
},
{
make: "FORD",
type: "Truck",
},
{
make: "HUMMER",
type: "Car, SUV, or Passenger Van",
},
{
make: "HYUNDAI*",
type: "Car, SUV, or Passenger Van",
},
{
make: "INFINITI",
type: "Car, SUV, or Passenger Van",
},
{
make: "JEEP",
type: "Car, SUV, or Passenger Van",
},
{
make: "JEEP",
type: "Truck",
},
{
make: "KIA",
type: "Car, SUV, or Passenger Van",
},
{
make: "LINCOLN",
type: "Car, SUV, or Passenger Van",
},
{
make: "MAZDA",
type: "Car, SUV, or Passenger Van",
},
{
make: "MAZDA",
type: "Truck",
},
{
make: "NISSAN",
type: "Truck",
},
{
make: "SCION",
type: "Car, SUV, or Passenger Van",
},
{
make: "TOYOTA",
type: "Truck",
},
{
make: "VOLKSWAGEN",
type: "Car, SUV, or Passenger Van",
},
],
},
{
group: "Group 4",
makes: [
"ACURA",
"HONDA",
"HONDA-Truck",
"FORD",
"DODGE-Truck",
"CADILLAC",
"TOYOTA",
"BUICK",
"CHEVROLET-Truck",
"PLYMOUTH",
"GMC-Truck",
"RAM",
"AUDI-Truck",
"MITSUBISHI",
"NISSAN",
list: [
{
make: "ACURA",
type: "Car, SUV, or Passenger Van",
},
{
make: "BUICK",
type: "Car, SUV, or Passenger Van",
},
{
make: "CADILLAC",
type: "Car, SUV, or Passenger Van",
},
{
make: "CHEVROLET",
type: "Truck",
},
{
make: "DODGE",
type: "Truck",
},
{
make: "FORD",
type: "Car, SUV, or Passenger Van",
},
{
make: "GMC",
type: "Truck",
},
{
make: "HONDA",
type: "Car, SUV, or Passenger Van",
},
{
make: "HONDA",
type: "Truck",
},
{
make: "MITSUBISHI",
type: "Car, SUV, or Passenger Van",
},
{
make: "NISSAN",
type: "Car, SUV, or Passenger Van",
},
{
make: "PLYMOUTH",
type: "Car, SUV, or Passenger Van",
},
{
make: "RAM",
type: "Truck",
},
{
make: "TOYOTA",
type: "Car, SUV, or Passenger Van",
},
],
},
{
group: "Group 5",
makes: [
"PONTIAC-Truck",
"CHRYSLER-Truck",
"GMC",
"CHRYSLER",
"SUZUKI",
"DODGE",
"ELDORADO",
"CHEVROLET",
list: [
{
make: "CHEVROLET",
type: "Car, SUV, or Passenger Van",
},
{
make: "CHRYSLER",
type: "Car, SUV, or Passenger Van",
},
{
make: "DODGE",
type: "Car, SUV, or Passenger Van",
},
{
make: "GMC",
type: "Car, SUV, or Passenger Van",
},
{
make: "SUZUKI",
type: "Car, SUV, or Passenger Van",
},
],
},
{
group: "Group 6",
makes: [
"CHEVROLET-Van",
"PONTIAC",
"HYUNDAI-Truck",
"CHRYSLER-Van",
"GMC-Van",
"SUZUKI-Truck",
"CADILLAC-Truck",
"MERCURY",
"RAM-Truck",
"OLDSMOBILE",
"KIA-Truck",
"SATURN",
"MITSUBISHI-Truck",
list: [
{
make: "CHEVROLET",
type: "Cargo Van",
},
{
make: "GMC",
type: "Cargo Van",
},
{
make: "MERCURY",
type: "Car, SUV, or Passenger Van",
},
{
make: "OLDSMOBILE",
type: "Car, SUV, or Passenger Van",
},
{
make: "PONTIAC",
type: "Car, SUV, or Passenger Van",
},
{
make: "SATURN",
type: "Car, SUV, or Passenger Van",
},
],
},
];
@@ -143,22 +305,40 @@ export default function JobsGroupModalMolecule() {
renderItem={(item) => (
<List.Item>
<Card title={item.group}>
<ul>
{item.makes.map((make, idx) => (
<li
<table
style={{
//backgroundColor: "tomato",
width: "100%",
borderCollapse: "collapse",
}}
>
<thead>
<tr>
<th width="33%"></th>
<th width="67%"></th>
</tr>
</thead>
{item.list.map((item, idx) => (
<tr
style={{
padding: "12px 15px",
borderBottom: "1px solid #dddddd",
backgroundColor:
search &&
make.toLowerCase().includes(search.toLowerCase())
item.make
.toLowerCase()
.includes(search.toLowerCase())
? "yellow"
: "",
}}
key={idx}
>
{make}
</li>
<td>{item.make}</td>
<td>{item.type}</td>
</tr>
))}
</ul>
</table>
</Card>
</List.Item>
)}

View File

@@ -1,4 +1,4 @@
import { Input, Table } from "antd";
import { Input, Table, Checkbox } from "antd";
import moment from "moment";
import React, { useState } from "react";
import { connect } from "react-redux";
@@ -13,6 +13,7 @@ import {
} from "../../../redux/reporting/reporting.selectors";
import { alphaSort } from "../../../util/sorters";
import VehicleGroupAlertAtom from "../../atoms/vehicle-group-alert/vehicle-group-alert.atom";
import GroupVerifySwitch from "../group-verify-switch/group-verify-switch.component";
const { ipcRenderer } = window;
@@ -46,7 +47,7 @@ export function ReportingJobsListMolecule({
sorter: (a, b) => alphaSort(a.clm_no, b.clm_no),
},
{
title: "Ready for Payment Date",
title: "R4P",
dataIndex: "close_date",
key: "close_date",
render: (text, record) => moment(record.close_date).format("MM/DD/yyyy"),
@@ -88,12 +89,19 @@ export function ReportingJobsListMolecule({
render: (text, record) => record.dbPriceSum.toFormat(),
},
{
title: "Actual Price Sum ",
title: "Actual Price Sum",
dataIndex: "actPriceSum",
key: "actPriceSum",
sorter: (a, b) => a.actPriceSum.getAmount() - b.actPriceSum.getAmount(),
render: (text, record) => record.actPriceSum.toFormat(),
},
{
title: "Group Verified?",
dataIndex: "group_verified",
key: "group_verified",
sorter: (a, b) => a.group_verified - b.group_verified,
render: (text, record) => <GroupVerifySwitch job={record} />,
},
{
title: "$ (Act./Target)",
dataIndex: "jobRpsDollars",

View File

@@ -20,7 +20,6 @@ const mapStateToProps = createStructuredSelector({
error: selectReportingError,
});
const mapDispatchToProps = (dispatch) => ({
//setUserLanguage: language => dispatch(setUserLanguage(language))
setSelectedJobId: (id) => dispatch(setSelectedJobId(id)),
});

View File

@@ -91,6 +91,7 @@ export const QUERY_JOB_BY_PK = gql`
ro_number
updated_at
group
group_verified
v_age
v_type
loss_date
@@ -153,6 +154,8 @@ export const UPDATE_JOB = gql`
updated_at
close_date
v_age
group
group_verified
joblines(order_by: { unq_seq: asc }) {
id
act_price

View File

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

View File

@@ -1,15 +1,20 @@
import gql from "graphql-tag";
export const QUERY_GROUPS_BY_MAKE_TYPE = gql`
query QUERY_GROUPS_BY_MAKE_TYPE(
$make: String!
$type: String
$isNull: Boolean
) {
veh_groups(
query QUERY_GROUPS_BY_MAKE_TYPE($make: String!, $type: jsonb, $date: date) {
groupings(
where: {
_and: { make: { _eq: $make } }
type: { _eq: $type, _is_null: $isNull }
_and: [
{ make: { _eq: $make } }
{ type: { _contains: $type } }
{ effective_date: { _lte: $date } }
{
_or: [
{ end_date: { _is_null: true } }
{ end_date: { _gt: $date } }
]
}
]
}
) {
id

108
src/ipc/cargovans.json Normal file
View File

@@ -0,0 +1,108 @@
[
"PROMASTER 1500",
"PROMASTER 2500",
"PROMASTER 2500",
"PROMASTER CITY",
"NV 1500",
"NV 200",
"NV 2500",
"NV 3500",
"SPRINTER",
"E150 ECONOLINE CARGO VAN",
"E150 ECONOLINE XL",
"E250 ECONOLINE CARGO",
"E250 ECONOLINE CARGO (AMALGAM)",
"E250 ECONOLINE CARGO (INSPECT)",
"E250 ECONOLINE CARGO VAN EXT",
"E250 ECONOLINE SUPER CARGO VAN",
"E350 CUTAWAY VAN",
"E350 ECONO SD CARGO VAN EXT",
"E350 ECONOLINE CARGO VAN",
"E350 ECONOLINE CUTAWAY",
"E350 ECONOLINE SD CARGO VAN",
"E350 ECONOLINE SD XL",
"E350 ECONOLINE SD XL EXT",
"E350 ECONOLINE SD XLT",
"E350 ECONOLINE SD XLT EXT",
"E350 SD CUTAWAY",
"E450",
"E450 ECONOLINE",
"E450 ECONOLINE SD",
"E450 ECONOLINE SD CUTAWAY",
"TRANSIT 150 WB 130 CARGO VAN",
"TRANSIT 150 WB 130 XLT",
"TRANSIT 150 WB 148 CARGO VAN",
"TRANSIT 250 WB 130 CARGO VAN",
"TRANSIT 250 WB 148 CARGO VAN",
"TRANSIT 250 WB 148 EL CARGO",
"TRANSIT 350 WB 148 CARGO VAN",
"TRANSIT 350 WB 148 EL CARGO",
"TRANSIT CONNECT XL CARGO VAN",
"TRANSIT CONNECT XLT CARGO VAN",
"CITY EXPRESS LS CARGO VAN",
"CITY EXPRESS LT CARGO VAN",
"EXPRESS 1500",
"EXPRESS 1500 CARGO VAN",
"EXPRESS 1500 LS",
"EXPRESS 1500 LT",
"EXPRESS 2500 CARGO VAN",
"EXPRESS 2500 CARGO VAN EXT",
"EXPRESS 2500 LS",
"EXPRESS 2500 LT",
"EXPRESS 3500",
"EXPRESS 3500 CARGO VAN",
"EXPRESS 3500 CARGO VAN EXT",
"EXPRESS 3500 EXT",
"EXPRESS 3500 LS",
"EXPRESS 3500 LS EXT",
"EXPRESS 3500 LT",
"EXPRESS 3500 LT EXT",
"G3500 EXPRESS CUTAWAY",
"SAVANA 1500 CARGO VAN",
"SAVANA 1500 SL",
"SAVANA 1500 SLE",
"SAVANA 2500",
"SAVANA 2500 CARGO VAN",
"SAVANA 2500 CARGO VAN EXT",
"SAVANA 2500 LT",
"SAVANA 2500 SLE",
"SAVANA 3500",
"SAVANA 3500 CARGO VAN",
"SAVANA 3500 CARGO VAN EXT",
"SAVANA 3500 EXT",
"SAVANA 3500 LT EXT",
"SAVANA 3500 SLE EXT",
"SAVANA G3500 CUTAWAY",
"SAVANA G4500 CUTAWAY",
"EXPRESS 1500 LS CARGO VAN",
"G20 SPORTVAN",
"NV 3500 S V8 CARGO VAN",
"E-150",
"E-250",
"E-350",
"E-450",
"E150",
"E250",
"E350",
"E450",
"TRANSIT",
"CITY",
"CITY EXPRESS",
"EXPRESS",
"EXPRESS 1500",
"EXPRESS 2500",
"EXPRESS 3500",
"G3500",
"SAVANA",
"SAVANA 1500",
"SAVANA 2500",
"SAVANA 3500"
]

View File

@@ -10,6 +10,10 @@ import {
} from "../graphql/jobs.queries";
import { QUERY_GROUPS_BY_MAKE_TYPE } from "../graphql/veh_group.queries";
import { store } from "../redux/store";
import TrucksList from "./trucks.json";
import CargoVanList from "./cargovans.json";
import PassengerVanList from "./passengervans.json";
import SuvList from "./suvs.json";
const { logger } = window;
export function CalculateVehicleAge(job) {
@@ -35,13 +39,14 @@ export async function UpsertEstimate(job) {
job = {
...job,
group: await DetermineVehicleGroup(job),
v_type: DetermineVehicleType(job),
v_age: CalculateVehicleAge({
...job,
close_date:
existingJobs.data.jobs[0] && existingJobs.data.jobs[0].close_date,
}),
};
job.group = await DetermineVehicleGroup(job);
if (existingJobs.data.jobs.length === 1) {
let suppDelta = await GetSupplementDelta(
@@ -177,18 +182,15 @@ const DetermineVehicleGroup = async (job) => {
query: QUERY_GROUPS_BY_MAKE_TYPE,
variables: {
make: job.v_makedesc.toUpperCase(),
type:
job.v_type && job.v_type.toUpperCase() !== "PC"
? job.v_type.toUpperCase()
: null,
isNull: job.v_type && job.v_type.toUpperCase() !== "PC" ? false : true,
type: job.v_type,
date: moment().format("YYYY-MM-DD"),
},
});
if (vehicleGroups.data.veh_groups.length === 1) {
logger.info("Found 1 vehicle group.!", vehicleGroups.data.veh_groups[0]);
return vehicleGroups.data.veh_groups[0].group;
} else if (vehicleGroups.data.veh_groups.length === 0) {
if (vehicleGroups.data.groupings.length === 1) {
logger.info("Found 1 vehicle group.!", vehicleGroups.data.groupings[0]);
return vehicleGroups.data.groupings[0].group;
} else if (vehicleGroups.data.groupings.length === 0) {
//Uh-oh, should only be 1.
logger.info("No vehicle groups found.");
return null;
@@ -204,3 +206,23 @@ const DetermineVehicleGroup = async (job) => {
return "";
};
const DetermineVehicleType = (job) => {
console.log("job.v_type", job.v_type, job.v_model.toUpperCase());
const inTrucks = TrucksList.includes(job.v_model.toUpperCase());
const inPV = PassengerVanList.includes(job.v_model.toUpperCase());
const inSuv = SuvList.includes(job.v_model.toUpperCase());
const inCv = CargoVanList.includes(job.v_model.toUpperCase());
console.log("inTrucks", inTrucks);
console.log("inPV", inPV);
console.log("inSuv", inSuv);
console.log("inCv", inCv);
if (inTrucks) return "TK";
else if (inPV) return "PV";
else if (inSuv) return "SUV";
else if (inCv) return "CV";
else return job.v_type;
};

View File

@@ -0,0 +1,18 @@
[
"GRAND CARAVAN",
"GRANDCARAVAN",
"GRAND CARAVAN CREW",
"GRAND CARAVAN CV",
"GRAND CARAVAN CVP",
"GRAND CARAVAN SE",
"GRAND CARAVAN SXT",
"CARAVAN CV",
"SIENNA CE V6",
"SIENNA LE V6",
"SIENNA XLE V6",
"SIENNA",
"ODYSSEY",
"SEDONA"
]

196
src/ipc/suvs.json Normal file
View File

@@ -0,0 +1,196 @@
[
"EDGE SEL",
"ESCAPE",
"ESCAPE SE",
"ESCAPE SEL",
"ESCAPE XLT V6",
"EXPEDITION",
"EXPEDITION LIMITED",
"EXPEDITION MAX",
"EXPEDITION MAX LIMITED",
"EXPLORER",
"EXPLORER LIMITED",
"EXPLORER PLATINUM ECOBOOST",
"EXPLORER SPORT TRAC",
"EXPLORER SPORT TRAC ADRENAL V8",
"EXPLORER SPORT TRAC LIMITED",
"EXPLORER SPORT TRAC LIMITED V8",
"EXPLORER SPORT TRAC XLT",
"EXPLORER SPORT TRAC XLT V8",
"EXPLORER XLT",
"FLEX",
"FLEX SE",
"CHEROKEE",
"CHEROKEE CLASSIC",
"CHEROKEE COUNTRY",
"CHEROKEE LIMITED",
"CHEROKEE NORTH",
"CHEROKEE OVERLAND",
"CHEROKEE SPORT",
"CHEROKEE TRAILHAWK",
"CJ",
"CJ7",
"CJ7 RENEGADE",
"COMMANDER",
"COMMANDER LIMITED",
"COMMANDER SPORT",
"COMPASS",
"COMPASS HIGH ALTITUDE",
"COMPASS LATITUDE",
"COMPASS LIMITED",
"COMPASS NORTH",
"COMPASS SPORT",
"COMPASS TRAILHAWK",
"GLADIATOR OVERLAND",
"GLADIATOR RUBICON",
"GRAND CHEROKEE LAREDO",
"GRAND CHEROKEE LIMITED",
"GRAND CHEROKEE OVERLAND",
"GRAND CHEROKEE SE",
"GRAND CHEROKEE SRT",
"GRAND CHEROKEE SRT8",
"GRAND CHEROKEE SUMMIT",
"GRAND CHEROKEE TRACKHAWK",
"GRAND CHEROKEE TRAILHAWK",
"GRAND CHEROKEE",
"GRANDCHEROKEE",
"LIBERTY LIMITED",
"LIBERTY RENEGADE",
"LIBERTY SPORT",
"LIBERTY",
"PATRIOT",
"PATRIOT HIGH ALTITUDE",
"PATRIOT LATITUDE",
"PATRIOT LIMITED",
"PATRIOT NORTH",
"PATRIOT SPORT",
"RENEGADE LIMITED",
"RENEGADE NORTH",
"RENEGADE SPORT",
"RENEGADE TRAILHAWK",
"TJ",
"TJ RUBICON",
"TJ SAHARA",
"TJ SPORT",
"TJ UNLIMITED",
"WRANGLER",
"WRANGLER RUBICON",
"WRANGLER SAHARA",
"WRANGLER SPORT",
"WRANGLER UNLIMITED",
"WRANGLER UNLIMITED 70TH ANNIV",
"WRANGLER UNLIMITED RUBICON",
"WRANGLER UNLIMITED SAHARA",
"WRANGLER UNLIMITED SPORT",
"WRANGLER UNLIMITED X",
"WRANGLER X",
"YJ WRANGLER",
"AVIATOR",
"AVIATOR RESERVE",
"MKC",
"MKC RESERVE",
"MKC SELECT",
"MKT",
"MKT ECOBOOST",
"MKX",
"MKX RESERVE",
"NAUTILUS RESERVE",
"NAUTILUS RESERVE V6",
"NAVIGATOR",
"NAVIGATOR L",
"NAVIGATOR L RESERVE",
"NAVIGATOR L SELECT",
"NAVIGATOR RESERVE",
"PILOT",
"PILOT BLACK EDITION",
"PILOT ELITE",
"PILOT EX",
"PILOT EX-L",
"PILOT GRANITE",
"PILOT LX",
"PILOT SE",
"PILOT SE-L",
"PILOT TOURING",
"DURANGO R/T",
"DURANGO SLT PLUS",
"DURANGO SRT",
"DURANGO",
"JOURNEY",
"JOURNEY CROSSROAD",
"JOURNEY CVP",
"JOURNEY LIMITED",
"JOURNEY R/T",
"JOURNEY SXT",
"NITRO SE",
"NITRO",
"SUBURBAN 1500 LT",
"SUBURBAN 1500 LTZ",
"SUBURBAN 1500 PREMIER",
"SUBURBAN 2500 LS",
"TAHOE LT",
"TRAVERSE LS",
"TRAVERSE LT",
"TRAVERSE PREMIER",
"TRAX LT",
"TRAX PREMIER",
"UPLANDER LT EXT",
"SUBURBAN",
"TAHOE",
"TRAVERSE",
"TRAX",
"UPLANDER",
"EQUINOX LS",
"EQUINOX LT",
"EQUINOX PREMIER",
"EQUINOX",
"RAV4 LE",
"RAV4 XLE",
"HIGHLANDER SPORT V6",
"4RUNNER SR5 V6",
"RAV4",
"HIGHLANDER",
"4RUNNER",
"PATHFINDER SE",
"PATHFINDER SL",
"PATHFINDER",
"MURANO PLATINUM",
"MURANO SV",
"MURANO",
"TUCSON",
"TERRAIN",
"SORENTO",
"EDGE",
"KICKS",
"QASHQAI",
"TRAX",
"SANTA FE",
"ARMADA",
"TELLURIDE",
"PALLISADE",
"TORRENT",
"C-HR",
"SPORTAGE",
"VENZA",
"ACADIA",
"CR-V",
"HR-V",
"CX-5",
"CX-7",
"CX-9",
"CX-3",
"Q3",
"Q5",
"Q7",
"Q8"
]

569
src/ipc/trucks.json Normal file
View File

@@ -0,0 +1,569 @@
[
"MARK LT",
"MKX",
"F-150",
"F-250",
"F-350",
"F-450",
"F-550",
"F-650",
"F100 PICKUP",
"F150 FX2 SUPERCAB",
"F150 FX4 PICKUP",
"F150 FX4 SUPERCAB",
"F150 FX4 SUPERCREW",
"F150 HARLEY DAVIDSON SUPERCAB",
"F150 HARLEY DAVIDSON SUPERCREW",
"F150 KING RANCH SUPERCREW",
"F150 LARIAT FX4 SUPERCREW",
"F150 LARIAT HARLEY DAVIDSON SC",
"F150 LARIAT KING RANCH SUPCREW",
"F150 LARIAT LIMITED SUPERCREW",
"F150 LARIAT PICKUP",
"F150 LARIAT SUPERCAB",
"F150 LARIAT SUPERCAB (AMALGAM)",
"F150 LARIAT SUPERCREW",
"F150 LARIAT SUPERCREW (AMALGA)",
"F150 LIMITED SUPERCREW",
"F150 PICKUP",
"F150 PLATINUM SUPERCREW",
"F150 RAPTOR SUPERCAB",
"F150 RAPTOR SUPERCREW",
"F150 STX PICKUP",
"F150 STX SUPERCAB",
"F150 SUPERCAB",
"F150 SUPERCREW",
"F150 SUPERCREW (AMALGAMATED)",
"F150 SVT RAPTOR SUPERCAB",
"F150 XL PICKUP",
"F150 XL SUPERCAB",
"F150 XL SUPERCREW",
"F150 XLT LARIAT SUPERCAB",
"F150 XLT PICKUP",
"F150 XLT SUPERCAB",
"F150 XLT SUPERCREW",
"F150 XLT SUPERCREW (AMALGAMAT)",
"F150 XTR SUPERCAB",
"F250 PICKUP",
"F250 SD CREW CAB",
"F250 SD FX4 CREW CAB",
"F250 SD FX4 SUPERCAB",
"F250 SD KING RANCH CREW CAB",
"F250 SD LARIAT CREW CAB",
"F250 SD LARIAT CREW CAB (AMAL)",
"F250 SD LARIAT PICKUP",
"F250 SD LARIAT SUPERCAB",
"F250 SD LIMITED CREW CAB",
"F250 SD PLATINUM CREW CAB",
"F250 SD SUPERCAB",
"F250 SD XL CREW CAB",
"F250 SD XL PICKUP",
"F250 SD XL SUPERCAB",
"F250 SD XLT CREW CAB",
"F250 SD XLT PICKUP",
"F250 SD XLT SUPERCAB",
"F250 SUPERCAB",
"F250 XL CREW CAB",
"F350 CREW CAB",
"F350 PICKUP",
"F350 PICKUP 2WD",
"F350 SD CABELAS CREW CAB",
"F350 SD CREW CAB",
"F350 SD FX4 CREW CAB",
"F350 SD FX4 SUPERCAB",
"F350 SD HARLEY DAVIDSON",
"F350 SD KING RANCH CREW CAB",
"F350 SD LARIAT CREW CAB",
"F350 SD LARIAT CREW CAB (AMAL)",
"F350 SD LARIAT KING RANCH",
"F350 SD LARIAT SUPERCAB",
"F350 SD LIMITED CREW CAB",
"F350 SD PICKUP",
"F350 SD PLATINUM CREW CAB",
"F350 SD SUPERCAB",
"F350 SD XL CREW CAB",
"F350 SD XL PICKUP",
"F350 SD XL SUPERCAB",
"F350 SD XLT CREW CAB",
"F350 SD XLT SUPERCAB",
"F350 SUPER DUTY",
"F350 SUPER DUTY XL",
"F350 XL PICKUP",
"F450",
"F450 Pickup",
"F450 SD KING RANCH CREW CAB",
"F450 SD LARIAT CREW CAB",
"F450 SD PICKUP",
"F450 SD PLATINUM CREW CAB",
"F450 SD XL",
"F450 SD XL CREW CAB",
"F450 SD XL PICKUP",
"F450 SD XLT CREW CAB",
"F450 SUPER DUTY XLT",
"F550",
"F550 SD",
"F550 SD XL",
"F550 SD XL PICKUP",
"F550 SD XLT CREW CAB",
"F550 SD XLT SUPERCAB",
"F550 SUPER DUTY",
"F550 SUPER DUTY XL",
"F550 SUPER DUTY XLT",
"F550 SUPER DUTY XLT CREW CAB",
"F550 XL",
"F650 SD XLT SUPERCAB",
"F68",
"F750 XL",
"RANGER",
"RANGER EDGE SUPERCAB",
"RANGER FX4 SUPERCAB",
"RANGER LARIAT SUPERCREW",
"RANGER SPORT SUPERCAB",
"RANGER STX SUPERCAB",
"RANGER SUPERCAB",
"RANGER XL",
"RANGER XL SUPERCAB",
"RANGER XLT",
"RANGER XLT SUPERCAB",
"RANGER XLT SUPERCREW",
"FRONTIER LE CREW CAB V6",
"FRONTIER NISMO CREW CAB V6",
"FRONTIER NISMO KING CAB V6",
"FRONTIER PRO-4X CREW CAB V6",
"FRONTIER PRO-4X KING CAB V6",
"FRONTIER S KING CAB",
"FRONTIER SC CREW CAB V6",
"FRONTIER SC V6",
"FRONTIER SE CREW CAB V6",
"FRONTIER SE KING CAB V6",
"FRONTIER SL CREW CAB V6",
"FRONTIER SV CREW CAB V6",
"FRONTIER SV KING CAB V6",
"FRONTIER XE KING CAB",
"FRONTIER XE KING CAB V6",
"KING CAB",
"TITAN 5.6 LE CREW CAB",
"TITAN 5.6 LE KING CAB",
"TITAN 5.6 MIDNIGHT CREW CAB",
"TITAN 5.6 PLATINUM RESERVE CC",
"TITAN 5.6 PRO-4X CREW CAB",
"TITAN 5.6 PRO-4X KING CAB",
"TITAN 5.6 S CREW CAB",
"TITAN 5.6 SE CREW CAB",
"TITAN 5.6 SE KING CAB",
"TITAN 5.6 SL CREW CAB",
"TITAN 5.6 SV CREW CAB",
"TITAN 5.6 SV KING CAB",
"TITAN 5.6 XE CREW CAB",
"TITAN 5.6 XE KING CAB",
"TITAN XD PLATINUM CREW CAB",
"TITAN XD PRO-4X CREW CAB",
"TITAN XD S CREW CAB",
"TITAN XD SL CREW CAB",
"TITAN XD SV CREW CAB",
"PICKUP SR5",
"TACOMA",
"TACOMA ACCESS CAB",
"TACOMA DOUBLE CAB V6",
"TACOMA LIMITED DOUBLE CAB V6",
"TACOMA PRERUNNER DOUBLE CAB V6",
"TACOMA PRERUNNER V6 ACCESS CAB",
"TACOMA PRERUNNER XTRACAB",
"TACOMA PRERUNNER XTRACAB V6",
"TACOMA SR5 DOUBLE CAB V6",
"TACOMA SR5 V6 ACCESS CAB",
"TACOMA SR5 V6 XTRACAB",
"TACOMA V6 ACCESS CAB",
"TACOMA XTRACAB",
"TACOMA XTRACAB V6",
"TUNDRA ACCESS CAB V8",
"TUNDRA DOUBLE CAB V8",
"TUNDRA LIMITED ACCESS CAB V8",
"TUNDRA LIMITED SR5 DBLCAB V8",
"TUNDRA LIMITED V8",
"TUNDRA LIMITED V8 CREWMAX",
"TUNDRA LIMITED V8 DOUBLE CAB",
"TUNDRA PLATINUM V8 CREWMAX",
"TUNDRA SR DOUBLE CAB V8",
"TUNDRA SR V8",
"TUNDRA SR5 DOUBLE CAB V8",
"TUNDRA SR5 TRD DOUBLE CAB V8",
"TUNDRA SR5 V8 CREWMAX",
"TUNDRA V8",
"TUNDRA V8 CREWMAX",
"XTRACAB LONG BOX",
"AVALANCHE 1500",
"AVALANCHE 1500 LS",
"AVALANCHE 1500 LS Z71",
"AVALANCHE 1500 LT",
"AVALANCHE 1500 LT Z71",
"AVALANCHE 1500 LTZ",
"C/R 10/1500 4+CAB",
"C/R 10/1500 PICKUP",
"C/R 20/2500 4+CAB",
"C/R 20/2500 PICKUP",
"C3500",
"COLORADO",
"COLORADO EXT CAB",
"COLORADO LS",
"COLORADO LS CREW CAB",
"COLORADO LS EXT CAB",
"COLORADO LT",
"COLORADO LT CREW CAB",
"COLORADO LT EXT CAB",
"COLORADO WT CREW CAB",
"COLORADO WT EXT CAB",
"COLORADO Z71 CREW CAB",
"COLORADO Z71 EXT CAB",
"COLORADO ZR2 CREW CAB",
"COLORADO ZR2 EXT CAB",
"HHR LS PANEL",
"K/V 10/1500 4+CAB",
"K/V 10/1500 PICKUP",
"K/V 20/2500 4+CAB",
"K/V 20/2500 PICKUP",
"K/V 30/3500 4+CAB",
"Pickup K3500",
"Pickup Silverado C2500 HD",
"S10 4+CAB",
"S10 LS 4+CAB",
"SILVERADO 1500",
"SILVERADO 1500 CHEYENNE CREW",
"SILVERADO 1500 CREW CAB",
"SILVERADO 1500 CREW CAB (AMAL)",
"SILVERADO 1500 CUST TRAIL DC",
"SILVERADO 1500 CUSTOM CREW CAB",
"SILVERADO 1500 CUSTOM DC",
"SILVERADO 1500 CUSTOM TRAIL CC",
"SILVERADO 1500 DOUBLE (AMALGA)",
"SILVERADO 1500 EXT CAB",
"SILVERADO 1500 HD LS CREW CAB",
"SILVERADO 1500 HD LT CREW CAB",
"SILVERADO 1500 HIGH COUNTRY CC",
"SILVERADO 1500 HYBRID CREW CAB",
"SILVERADO 1500 LS",
"SILVERADO 1500 LS CREW CAB",
"SILVERADO 1500 LS DOUBLE CAB",
"SILVERADO 1500 LS EXT CAB",
"SILVERADO 1500 LT",
"SILVERADO 1500 LT CC (AMALGAM)",
"SILVERADO 1500 LT CREW CAB",
"SILVERADO 1500 LT DOUBLE CAB",
"SILVERADO 1500 LT EXT CAB",
"SILVERADO 1500 LT TRAIL CC",
"SILVERADO 1500 LT TRAIL DC",
"SILVERADO 1500 LTZ CREW CAB",
"SILVERADO 1500 LTZ DOUBLE CAB",
"SILVERADO 1500 LTZ EXT CAB",
"SILVERADO 1500 RST CREW CAB",
"SILVERADO 1500 RST DOUBLE CAB",
"SILVERADO 1500 SS EXT CAB",
"SILVERADO 1500 WT",
"SILVERADO 1500 WT CREW CAB",
"SILVERADO 1500 WT DOUBLE CAB",
"SILVERADO 1500 WT EXT CAB",
"SILVERADO 2500 EXT CAB",
"SILVERADO 2500 HD",
"SILVERADO 2500 HD CREW CAB",
"SILVERADO 2500 HD EXT CAB",
"SILVERADO 2500 HD HC CREW CAB",
"SILVERADO 2500 HD LS CREW CAB",
"SILVERADO 2500 HD LS EXT CAB",
"SILVERADO 2500 HD LT",
"SILVERADO 2500 HD LT CREW CAB",
"SILVERADO 2500 HD LT DBL CAB",
"SILVERADO 2500 HD LT EXT CAB",
"SILVERADO 2500 HD LTZ CREW CAB",
"SILVERADO 2500 HD LTZ DBL CAB",
"SILVERADO 2500 HD LTZ EXT CAB",
"SILVERADO 2500 HD WT",
"SILVERADO 2500 HD WT CREW CAB",
"SILVERADO 2500 HD WT DBL CAB",
"SILVERADO 2500 HD WT EXT CAB",
"SILVERADO 3500",
"SILVERADO 3500 CREW CAB",
"SILVERADO 3500 CREW CAB (AMAL)",
"SILVERADO 3500 EXT CAB",
"SILVERADO 3500 HC CREW CAB",
"SILVERADO 3500 HD (AMALGAMATE)",
"SILVERADO 3500 LS",
"SILVERADO 3500 LS CREW CAB",
"SILVERADO 3500 LS EXT CAB",
"SILVERADO 3500 LT CREW CAB",
"SILVERADO 3500 LT DOUBLE CAB",
"SILVERADO 3500 LT EXT CAB",
"SILVERADO 3500 LTZ CREW CAB",
"SILVERADO 3500 LTZ EXT CAB",
"SILVERADO 3500 WT CREW CAB",
"Silverado 3500HD",
"B250 SPORTSMAN",
"DAKOTA CLUB CAB",
"DAKOTA LARAMIE V8 CLUB CAB",
"DAKOTA LARAMIE V8 QUAD CAB",
"DAKOTA QUAD CAB",
"DAKOTA SLT CREW CAB",
"DAKOTA SLT EXT CAB",
"DAKOTA SLT PLUS QUAD CAB",
"DAKOTA SLT PLUS V8 CLUB CAB",
"DAKOTA SLT PLUS V8 QUAD CAB",
"DAKOTA SLT QUAD CAB",
"DAKOTA SLT V8 CLUB CAB",
"DAKOTA SLT V8 CREW CAB",
"DAKOTA SLT V8 EXT CAB",
"DAKOTA SLT V8 QUAD CAB",
"DAKOTA SPORT V8",
"DAKOTA SPORT V8 CLUB CAB",
"DAKOTA SPORT V8 QUAD CAB",
"DAKOTA ST CLUB CAB",
"DAKOTA ST QUAD CAB",
"DAKOTA ST V8 QUAD CAB",
"DAKOTA SXT CREW CAB",
"DAKOTA SXT EXT CAB",
"DAKOTA SXT V8 CREW CAB",
"DAKOTA SXT V8 EXT CAB",
"DAKOTA V8 CLUB CAB",
"DAKOTA V8 QUAD CAB",
"RAM 1500",
"RAM 1500 BIG HORN CREW CAB",
"RAM 1500 BIG HORN QUAD CAB",
"RAM 1500 CLUB CAB",
"RAM 1500 CREW CAB (AMALGAMATE)",
"RAM 1500 EXPRESS",
"RAM 1500 LARAMIE CREW (AMALGA)",
"RAM 1500 LARAMIE CREW CAB",
"RAM 1500 LARAMIE LONGHORN CREW",
"RAM 1500 LARAMIE MEGA CAB",
"RAM 1500 LARAMIE QUAD CAB",
"RAM 1500 LARAMIE SLT QUAD CAB",
"RAM 1500 LIMITED CREW CAB",
"RAM 1500 LONGHORN CREW CAB",
"RAM 1500 OUTDOORSMAN CREW CAB",
"RAM 1500 OUTDOORSMAN QC (AMAL)",
"RAM 1500 OUTDOORSMAN QUAD CAB",
"RAM 1500 QUAD CAB",
"RAM 1500 R/T",
"RAM 1500 REBEL CREW CAB",
"RAM 1500 REBEL QUAD CAB",
"RAM 1500 SLT",
"RAM 1500 SLT CREW (AMALGAMATE)",
"RAM 1500 SLT CREW CAB",
"RAM 1500 SLT MEGA CAB",
"RAM 1500 SLT QUAD (AMALGAMATE)",
"RAM 1500 SLT QUAD CAB",
"RAM 1500 SPORT",
"RAM 1500 SPORT CLUB CAB",
"RAM 1500 SPORT CREW CAB",
"RAM 1500 SPORT CREW CAB (AMAL)",
"RAM 1500 SPORT QUAD CAB",
"RAM 1500 ST",
"RAM 1500 ST CREW CAB",
"RAM 1500 ST QUAD CAB",
"RAM 1500 SXT CREW CAB",
"RAM 1500 SXT QUAD CAB",
"RAM 1500 TRADESMAN CREW CAB",
"RAM 1500 TRADESMAN QUAD CAB",
"RAM 1500 TRX QUAD CAB",
"RAM 2500",
"RAM 2500 BIG HORN CREW CAB",
"RAM 2500 BIG HORN MEGA CAB",
"RAM 2500 CLUB CAB",
"RAM 2500 LARAMIE CREW CAB",
"RAM 2500 LARAMIE LONGHORN CREW",
"RAM 2500 LARAMIE LONGHORN MEGA",
"RAM 2500 LARAMIE MEGA CAB",
"RAM 2500 LARAMIE QUAD CAB",
"RAM 2500 LARAMIE SLT",
"RAM 2500 LARAMIE SLT QUAD CAB",
"RAM 2500 LIMITED CREW CAB",
"RAM 2500 OUTDOORSMAN CREW CAB",
"RAM 2500 POWER WAGON CREW CAB",
"RAM 2500 QUAD CAB",
"RAM 2500 SLT",
"RAM 2500 SLT CREW CAB",
"RAM 2500 SLT MEGA CAB",
"RAM 2500 SLT QUAD CAB",
"RAM 2500 SLT QUAD CAB (AMALGA)",
"RAM 2500 SPORT QUAD CAB",
"RAM 2500 ST",
"RAM 2500 ST CREW CAB",
"RAM 2500 ST QUAD CAB",
"RAM 2500 SXT QUAD CAB",
"RAM 2500 TRADESMAN",
"RAM 2500 TRADESMAN CREW CAB",
"RAM 2500 TRX CREW CAB",
"RAM 2500 TRX QUAD CAB",
"RAM 3500",
"RAM 3500 4WD",
"RAM 3500 BIG HORN CREW CAB",
"RAM 3500 CREW CAB",
"RAM 3500 CREW CAB (AMALGAMATE)",
"RAM 3500 LARAMIE CREW CAB",
"RAM 3500 LARAMIE LONGHORN CREW",
"RAM 3500 LARAMIE LONGHORN MEGA",
"RAM 3500 LARAMIE MEGA CAB",
"RAM 3500 LARAMIE QUAD CAB",
"RAM 3500 LARAMIE SLT",
"RAM 3500 LARAMIE SLT QUAD CAB",
"RAM 3500 LIMITED MEGA CAB",
"RAM 3500 LONGHORN CREW CAB",
"RAM 3500 QUAD CAB",
"RAM 3500 SLT",
"RAM 3500 SLT CREW CAB",
"RAM 3500 SLT MEGA CAB",
"RAM 3500 SLT QUAD CAB",
"RAM 3500 SPORT QUAD CAB",
"RAM 3500 ST",
"RAM 3500 ST CREW CAB",
"RAM 3500 ST QUAD CAB",
"RAM 3500 TRX QUAD CAB",
"RAM 4500",
"RAM 4500 CREW CAB",
"RAM 5500",
"RAM 5500 CREW CAB",
"W250 TURBO DIESEL",
"C Series 5500",
"C/R 1500 4+CAB",
"C/R 1500 PICKUP",
"C/R 1500 SIERRA SL EXT CAB",
"C/R 3500",
"C/R 3500 PICKUP",
"CANYON ALL TERRAIN CREW CAB",
"CANYON CREW CAB",
"CANYON DENALI CREW CAB",
"CANYON EXT CAB",
"CANYON SL",
"CANYON SL EXT CAB",
"CANYON SLE",
"CANYON SLE CREW CAB",
"CANYON SLE EXT CAB",
"CANYON SLT CREW CAB",
"CANYON SLT CREW CAB (AMALGAMA)",
"K/V 1500 4+CAB",
"K/V 1500 PICKUP",
"K/V 2500 4+CAB",
"K/V 2500 PICKUP",
"K/V 3500 SIERRA SL CREW CAB",
"K/V 3500 SIERRA SLE CREW CAB",
"SIERRA 1500 AT4 CREW CAB",
"SIERRA 1500 AT4 DOUBLE CAB",
"SIERRA 1500 CREW CAB",
"SIERRA 1500 CREW CAB (AMALGAM)",
"SIERRA 1500 DENALI CREW CAB",
"SIERRA 1500 DENALI EXT CAB",
"SIERRA 1500 DOUBLE CAB",
"SIERRA 1500 ELEVATION CREW CAB",
"SIERRA 1500 ELEVATION DC",
"SIERRA 1500 EXT CAB",
"SIERRA 1500 HD CREW CAB",
"SIERRA 1500 HD SLE CREW CAB",
"SIERRA 1500 HD SLT CREW CAB",
"SIERRA 1500 NEVADA EDITION",
"SIERRA 1500 PICKUP",
"SIERRA 1500 SL CREW CAB",
"SIERRA 1500 SL EXT CAB",
"SIERRA 1500 SL PICKUP",
"SIERRA 1500 SLE CREW CAB",
"SIERRA 1500 SLE DC (AMALGAMAT)",
"SIERRA 1500 SLE DOUBLE CAB",
"SIERRA 1500 SLE EXT CAB",
"SIERRA 1500 SLE EXT CAB (AMAL)",
"SIERRA 1500 SLE PICKUP",
"SIERRA 1500 SLT CREW (AMALGAM)",
"SIERRA 1500 SLT CREW CAB",
"SIERRA 1500 SLT DOUBLE CAB",
"SIERRA 1500 SLT EXT CAB",
"SIERRA 1500 WT CREW CAB",
"SIERRA 1500 WT EXT CAB",
"SIERRA 1500 WT PICKUP",
"SIERRA 2500 EXT CAB",
"SIERRA 2500 HD AT4 CREW CAB",
"SIERRA 2500 HD CREW CAB",
"SIERRA 2500 HD DENALI CREW CAB",
"SIERRA 2500 HD DOUBLE CAB",
"SIERRA 2500 HD EXT CAB",
"SIERRA 2500 HD PICKUP",
"SIERRA 2500 HD SL EXT CAB",
"SIERRA 2500 HD SL PICKUP",
"SIERRA 2500 HD SLE CREW CAB",
"SIERRA 2500 HD SLE DOUBLE CAB",
"SIERRA 2500 HD SLE EXT CAB",
"SIERRA 2500 HD SLE PICKUP",
"SIERRA 2500 HD SLT CREW CAB",
"SIERRA 2500 HD SLT DOUBLE CAB",
"SIERRA 2500 HD SLT EXT CAB",
"SIERRA 2500 HD WT CREW CAB",
"SIERRA 2500 HD WT DOUBLE CAB",
"SIERRA 2500 HD WT EXT CAB",
"SIERRA 2500 HD WT PICKUP",
"SIERRA 2500 SLE EXT CAB",
"SIERRA 3500 AT4 CREW CAB",
"SIERRA 3500 CREW CAB",
"SIERRA 3500 DENALI CREW CAB",
"SIERRA 3500 EXT CAB",
"SIERRA 3500 PICKUP",
"SIERRA 3500 SL CREW CAB",
"SIERRA 3500 SLE",
"SIERRA 3500 SLE CREW CAB",
"SIERRA 3500 SLE EXT CAB",
"SIERRA 3500 SLT CREW CAB",
"SIERRA 3500 WT CREW CAB",
"SONOMA",
"SONOMA CREW CAB",
"SONOMA EXT CAB",
"YUKON SLT",
"1500",
"1500 Classic",
"Pickup 1500",
"Pickup 3500",
"ProMaster 1500",
"RIDGELINE",
"RIDGELINE BLACK EDITION",
"RIDGELINE DX",
"RIDGELINE EX-L",
"RIDGELINE LX",
"RIDGELINE RT",
"RIDGELINE RTL",
"RIDGELINE RTS",
"RIDGELINE RTX",
"RIDGELINE SE",
"RIDGELINE SPORT",
"RIDGELINE TOURING",
"RIDGELINE VP",
"TITAN",
"TACOMA",
"TUNDRA",
"AVALANCE",
"COLORADO",
"SILVERADO",
"SILVERADO 1500",
"SILVERADO 2500",
"SILVERADO 3500",
"DAKOTA",
"RAM 1500",
"RAM 2500",
"RAM 3500",
"RAM 4500",
"RAM 5500",
"CANYON",
"SIERRA 1500",
"SIERRA 2500",
"SIERRA 3500",
"SONOMA",
"1500"
]

View File

@@ -22,3 +22,7 @@ export const setReportingError = (data) => ({
type: ReportingActionTypes.SET_REPORTING_ERROR,
payload: data,
});
export const toggleGroupVerified = (jobId) => ({
type: ReportingActionTypes.TOGGLE_GROUP_VERIFIED,
payload: jobId,
});

View File

@@ -28,6 +28,17 @@ const applicationReducer = (state = INITIAL_STATE, action) => {
return { ...state, data: action.payload };
case ReportingActionTypes.SET_SCORE_CARD:
return { ...state, loading: false, scoreCard: action.payload };
case ReportingActionTypes.TOGGLE_GROUP_VERIFIED:
return {
...state,
data: state.data.map((d) => {
if (d.id === action.payload) {
return { ...d, group_verified: !d.group_verified };
} else {
return d;
}
}),
};
default:
return state;
}

View File

@@ -4,5 +4,6 @@ const ReportingActionTypes = {
SET_REPORTING_DATA: "SET_REPORTING_DATA",
SET_SCORE_CARD: "SET_SCORE_CARD",
SET_REPORTING_ERROR: "SET_REPORTING_ERROR",
TOGGLE_GROUP_VERIFIED: "TOGGLE_GROUP_VERIFIED",
};
export default ReportingActionTypes;