Alpha 2 - changes to upgrade 2.
This commit is contained in:
@@ -40,7 +40,14 @@ const rules = [
|
||||
},
|
||||
({ jobline, joblines }) => {
|
||||
//Upgrade 2
|
||||
if (joblines.db_hrs !== 0 && jobline.mod_lb_hrs !== jobline.db_hrs) {
|
||||
if (
|
||||
joblines.db_hrs !== 0 &&
|
||||
jobline.mod_lb_hrs !== jobline.db_hrs &&
|
||||
jobline.lbr_inc === false &&
|
||||
jobline.lbr_hrs_j === true &&
|
||||
jobline.lbr_op !== "OP9" &&
|
||||
jobline.lbr_op !== "OP14"
|
||||
) {
|
||||
return {
|
||||
key: "Manual labor Time Change",
|
||||
alert: `<div>
|
||||
|
||||
@@ -329,9 +329,9 @@ async function DecodeLinFile(extensionlessFilePath, close_date) {
|
||||
"MOD_LBR_TY",
|
||||
"DB_HRS",
|
||||
"MOD_LB_HRS",
|
||||
// "LBR_INC",
|
||||
"LBR_INC",
|
||||
// "LBR_OP",
|
||||
// "LBR_HRS_J",
|
||||
"LBR_HRS_J",
|
||||
// "LBR_TYP_J",
|
||||
// "LBR_OP_J",
|
||||
// "PAINT_STG",
|
||||
@@ -383,6 +383,8 @@ async function DecodeLinFile(extensionlessFilePath, close_date) {
|
||||
jobline.alerts = claimsClerk({ jobline, joblines });
|
||||
|
||||
//Moved from V1 function as they may be needed later.
|
||||
delete jobline.lbr_inc;
|
||||
delete jobline.lbr_hrs_j;
|
||||
delete jobline.prt_dsmk_m; //Delete price markup for wheel repair
|
||||
delete jobline.prt_dsmk_p;
|
||||
delete jobline.glass_flag;
|
||||
|
||||
@@ -6,7 +6,7 @@ const { store } = require("./electron-store");
|
||||
const { autoUpdater } = require("electron-updater");
|
||||
const log = require("electron-log");
|
||||
const contextMenu = require("electron-context-menu");
|
||||
const Sentry = require("@sentry/electron");
|
||||
const Sentry = require("@sentry/electron/main");
|
||||
|
||||
//const Nucleus = require("nucleus-nodejs");
|
||||
require("./ipc-main-handler");
|
||||
|
||||
3743
package-lock.json
generated
3743
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
6
package-mac-signed.sh
Normal file
6
package-mac-signed.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
export APPLE_ID="ios_sync@thinkimex.com" # Replace with your Apple ID email
|
||||
export APPLE_APP_SPECIFIC_PASSWORD="tkld-ypnp-zzjd-rflj" # Replace with your App Specific Password, it looks like "dsjg-zqet-rpzp-nfzy"
|
||||
export APPLE_TEAM_ID="XEECGTZLZ8" # Replace with your Team ID, it looks like "AB8Y7TRS2P"
|
||||
export CSC_LINK="./certificate.p12" # Keep it as it is
|
||||
export CSC_KEY_PASSWORD="Wl0d8k@!" # Replace with your Certificate Password
|
||||
npm run distnopublish
|
||||
33
package.json
33
package.json
@@ -3,21 +3,21 @@
|
||||
"productName": "ImEX RPS",
|
||||
"author": "ImEX Systems Inc. <support@thinkimex.com>",
|
||||
"description": "ImEX RPS",
|
||||
"version": "1.4.0-alpha.1",
|
||||
"version": "1.4.0-alpha.2",
|
||||
"main": "electron/main.js",
|
||||
"homepage": "./",
|
||||
"dependencies": {
|
||||
"@ant-design/pro-layout": "^7.19.0",
|
||||
"@apollo/client": "^3.9.11",
|
||||
"@sentry/electron": "^4.22.0",
|
||||
"@vitejs/plugin-react": "^4.2.1",
|
||||
"@apollo/client": "^3.13.1",
|
||||
"@sentry/electron": "^6.1.0",
|
||||
"@vitejs/plugin-react": "^4.3.4",
|
||||
"antd": "^5.16.2",
|
||||
"apollo-link-logger": "^2.0.1",
|
||||
"apollo-link-sentry": "^3.3.0",
|
||||
"chokidar": "^3.6.0",
|
||||
"dayjs": "^1.11.10",
|
||||
"dayjs-business-days2": "^1.2.2",
|
||||
"dbffile": "^1.9.3",
|
||||
"apollo-link-sentry": "^4.1.0",
|
||||
"chokidar": "^4.0.3",
|
||||
"dayjs": "^1.11.13",
|
||||
"dayjs-business-days2": "^1.2.3",
|
||||
"dbffile": "^1.12.0",
|
||||
"dinero.js": "^1.9.1",
|
||||
"electron-context-menu": "^3.6.1",
|
||||
"electron-is-dev": "^2.0.0",
|
||||
@@ -27,28 +27,27 @@
|
||||
"electron-updater": "^6.1.8",
|
||||
"eslint": "^8.57.0",
|
||||
"eslint-config-react-app": "^7.0.1",
|
||||
"firebase": "^10.11.0",
|
||||
"graphql": "^16.8.1",
|
||||
"firebase": "^11.3.1",
|
||||
"graphql": "^16.10.0",
|
||||
"lodash": "^4.17.21",
|
||||
"logrocket": "^8.1.0",
|
||||
"logrocket": "^9.0.2",
|
||||
"moment": "^2.30.1",
|
||||
"node-xlsx": "^0.24.0",
|
||||
"nucleus-nodejs": "^3.0.9",
|
||||
"query-string": "^9.0.0",
|
||||
"query-string": "^9.1.1",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-infinite-scroller": "^1.2.6",
|
||||
"react-redux": "^9.1.1",
|
||||
"react-redux": "^9.2.0",
|
||||
"react-router-dom": "^6.22.3",
|
||||
"react-to-print": "^2.15.1",
|
||||
"recharts": "^2.12.5",
|
||||
"recharts": "^2.15.1",
|
||||
"redux": "^5.0.1",
|
||||
"redux-logger": "^3.0.6",
|
||||
"redux-persist": "^6.0.0",
|
||||
"redux-saga": "^1.3.0",
|
||||
"reselect": "^5.1.0",
|
||||
"reselect": "^5.1.1",
|
||||
"sass": "^1.75.0",
|
||||
"subscriptions-transport-ws": "^0.9.19",
|
||||
"vite-plugin-ejs": "^1.7.0"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -32,82 +32,80 @@ export default function JobsDetailDescriptionMolecule({ loading, job }) {
|
||||
const ruleSetToApply = WhichRulesetToApply(job.close_date);
|
||||
|
||||
return (
|
||||
<div>
|
||||
<PageHeader
|
||||
ghost={false}
|
||||
title={job.clm_no}
|
||||
subTitle={job.ins_co_nm}
|
||||
extra={[
|
||||
job.requires_reimport && (
|
||||
<Tooltip
|
||||
key="reimport"
|
||||
title="There are different rules that apply for claims submitted in different periods. In order to ensure accurate calculation, you must import this job again to determine which parts are eligible for parts autonomy. This happened because the R4P date was changed between these periods."
|
||||
>
|
||||
<Alert
|
||||
type="warning"
|
||||
showIcon
|
||||
message="RPS has detected this job may have inaccurate grouping/targets. Reimport this job for accurate scoring."
|
||||
/>
|
||||
</Tooltip>
|
||||
),
|
||||
<DeleteJobAtom key="delete" jobId={job.id} />,
|
||||
<Button key="print" onClick={handlePrint}>
|
||||
<PrinterFilled />
|
||||
</Button>
|
||||
]}
|
||||
>
|
||||
<Descriptions column={{ xxl: 5, xl: 4, lg: 3, md: 2, sm: 1, xs: 1 }}>
|
||||
<Descriptions.Item label="Owner">{`${job.ownr_fn} ${job.ownr_ln}`}</Descriptions.Item>
|
||||
<Descriptions.Item label="Vehicle">
|
||||
<VehicleGroupAlertAtom job={job} />
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="Claim Total">
|
||||
<CurrencyFormatterAtom>{job.clm_total}</CurrencyFormatterAtom>
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="Group">
|
||||
<JobGroupMolecule jobId={job.id} group={job.group} job={job} />
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="Age">{job.v_age}</Descriptions.Item>
|
||||
<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.">
|
||||
R4P Date
|
||||
</Tooltip>
|
||||
}
|
||||
<PageHeader
|
||||
ghost={false}
|
||||
title={job.clm_no}
|
||||
subTitle={job.ins_co_nm}
|
||||
extra={[
|
||||
job.requires_reimport && (
|
||||
<Tooltip
|
||||
key="reimport"
|
||||
title="There are different rules that apply for claims submitted in different periods. In order to ensure accurate calculation, you must import this job again to determine which parts are eligible for parts autonomy. This happened because the R4P date was changed between these periods."
|
||||
>
|
||||
<CloseDateDisplayMolecule job={job} jobId={job.id} close_date={job.close_date} />
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="Last Updated">
|
||||
<Tooltip title={`First Created ${moment(job.created_at).format("MM/DD/YY")}`}>
|
||||
<TimeAgoFormatter>{job.updated_at}</TimeAgoFormatter>
|
||||
<Alert
|
||||
type="warning"
|
||||
showIcon
|
||||
message="RPS has detected this job may have inaccurate grouping/targets. Reimport this job for accurate scoring."
|
||||
/>
|
||||
</Tooltip>
|
||||
),
|
||||
<DeleteJobAtom key="delete" jobId={job.id} />,
|
||||
<Button key="print" onClick={handlePrint}>
|
||||
<PrinterFilled />
|
||||
</Button>
|
||||
]}
|
||||
>
|
||||
<Descriptions column={{ xxl: 5, xl: 4, lg: 3, md: 2, sm: 1, xs: 1 }}>
|
||||
<Descriptions.Item label="Owner">{`${job.ownr_fn} ${job.ownr_ln}`}</Descriptions.Item>
|
||||
<Descriptions.Item label="Vehicle">
|
||||
<VehicleGroupAlertAtom job={job} />
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="Claim Total">
|
||||
<CurrencyFormatterAtom>{job.clm_total}</CurrencyFormatterAtom>
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="Group">
|
||||
<JobGroupMolecule jobId={job.id} group={job.group} job={job} />
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="Age">{job.v_age}</Descriptions.Item>
|
||||
<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.">
|
||||
R4P Date
|
||||
</Tooltip>
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="# RPS Eligible Parts">
|
||||
{job && job.joblines.filter((i) => !i.ignore && i.db_ref !== "900511").length}
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="Loss Date">
|
||||
{job.loss_date ? dayjs(job.loss_date).format(DateFormat) : "No Loss Date"}
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="Mileage">
|
||||
<Space size="small">
|
||||
{job.v_mileage}
|
||||
{ruleSetToApply === "V3" && job.v_mileage < 20000 && (
|
||||
<Tooltip title="Vehicle is under 20,000 KMs. No expected savings.">
|
||||
<WarningOutlined style={{ color: "seagreen" }} />
|
||||
</Tooltip>
|
||||
)}
|
||||
</Space>
|
||||
</Descriptions.Item>
|
||||
</Descriptions>
|
||||
}
|
||||
>
|
||||
<CloseDateDisplayMolecule job={job} jobId={job.id} close_date={job.close_date} />
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="Last Updated">
|
||||
<Tooltip title={`First Created ${moment(job.created_at).format("MM/DD/YY")}`}>
|
||||
<TimeAgoFormatter>{job.updated_at}</TimeAgoFormatter>
|
||||
</Tooltip>
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="# RPS Eligible Parts">
|
||||
{job && job.joblines.filter((i) => !i.ignore && i.db_ref !== "900511").length}
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="Loss Date">
|
||||
{job.loss_date ? dayjs(job.loss_date).format(DateFormat) : "No Loss Date"}
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="Mileage">
|
||||
<Space size="small">
|
||||
{job.v_mileage}
|
||||
{ruleSetToApply === "V3" && job.v_mileage < 20000 && (
|
||||
<Tooltip title="Vehicle is under 20,000 KMs. No expected savings.">
|
||||
<WarningOutlined style={{ color: "seagreen" }} />
|
||||
</Tooltip>
|
||||
)}
|
||||
</Space>
|
||||
</Descriptions.Item>
|
||||
</Descriptions>
|
||||
|
||||
{hasQuantityGreaterThan1 && (
|
||||
<Alert
|
||||
type="warning"
|
||||
showIcon
|
||||
message="At least one estimate line has multiple quantities. MPI best practices for RPS recognition is to create multiple lines rather than increase quantity."
|
||||
/>
|
||||
)}
|
||||
</PageHeader>
|
||||
</div>
|
||||
{hasQuantityGreaterThan1 && (
|
||||
<Alert
|
||||
type="warning"
|
||||
showIcon
|
||||
message="At least one estimate line has multiple quantities. MPI best practices for RPS recognition is to create multiple lines rather than increase quantity."
|
||||
/>
|
||||
)}
|
||||
</PageHeader>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Button, Col, Collapse, Result, Row, Space } from "antd";
|
||||
import React from "react";
|
||||
import * as Sentry from "@sentry/electron";
|
||||
import * as Sentry from "@sentry/electron/renderer";
|
||||
|
||||
class ErrorBoundary extends React.Component {
|
||||
constructor() {
|
||||
|
||||
@@ -8,11 +8,11 @@ import App from "./App/App";
|
||||
import "./index.css";
|
||||
import { persistor, store } from "./redux/store";
|
||||
|
||||
import * as Sentry from "@sentry/electron";
|
||||
import * as Sentry from "@sentry/electron/renderer";
|
||||
|
||||
Sentry.init({
|
||||
dsn: "https://9840e0f304124299e379d9347e12d2e6@o492140.ingest.sentry.io/4505728058523648",
|
||||
integrations: [new Sentry.BrowserTracing()],
|
||||
//integrations: [new Sentry.BrowserTracing()],
|
||||
tracesSampleRate: 1.0,
|
||||
// Set `tracePropagationTargets` to control for which URLs distributed tracing should be enabled
|
||||
tracePropagationTargets: ["localhost", "https://db.rps.imex.online"],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { message } from "antd";
|
||||
import dayjs from "../../util/day.js";
|
||||
//import LogRocket from "logrocket";
|
||||
import * as Sentry from "@sentry/electron";
|
||||
import * as Sentry from "@sentry/electron/renderer";
|
||||
import { sendPasswordResetEmail, signInWithEmailAndPassword, signOut } from "firebase/auth";
|
||||
import { all, call, delay, put, takeLatest } from "redux-saga/effects";
|
||||
import { auth, getCurrentUser, updateCurrentUser } from "../../firebase/firebase.utils";
|
||||
|
||||
Reference in New Issue
Block a user