- The Great merge

Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
Dave Richer
2024-02-06 19:16:47 -05:00
26 changed files with 501 additions and 674 deletions

View File

@@ -3,6 +3,7 @@ orbs:
#snyk: snyk/snyk@0.0.8 #snyk: snyk/snyk@0.0.8
#cypress: cypress-io/cypress@1.23.0 #cypress: cypress-io/cypress@1.23.0
aws-s3: circleci/aws-s3@4.0.0 aws-s3: circleci/aws-s3@4.0.0
aws-cli: circleci/aws-cli@4.0
eb: circleci/aws-elastic-beanstalk@2.0.1 eb: circleci/aws-elastic-beanstalk@2.0.1
jobs: jobs:
api-deploy: api-deploy:
@@ -172,7 +173,7 @@ jobs:
app-beta-build: app-beta-build:
docker: docker:
- image: cimg/node:18.18.2 - image: cimg/node:18.18.2
resource_class: xlarge resource_class: large
working_directory: ~/repo/client working_directory: ~/repo/client
steps: steps:
@@ -184,6 +185,11 @@ jobs:
- run: npm run build - run: npm run build
- aws-cli/setup:
aws_access_key_id: AWS_ACCESS_KEY_ID
aws_secret_access_key: AWS_SECRET_ACCESS_KEY
region: AWS_REGION
- aws-s3/sync: - aws-s3/sync:
from: build from: build
to: "s3://imex-online-beta/" to: "s3://imex-online-beta/"
@@ -253,7 +259,7 @@ jobs:
test-app-beta-build: test-app-beta-build:
docker: docker:
- image: cimg/node:18.18.2 - image: cimg/node:18.18.2
resource_class: snaptsoft/pfic resource_class: large
working_directory: ~/repo/client working_directory: ~/repo/client
steps: steps:
@@ -266,6 +272,13 @@ jobs:
- run: npm run build:test - run: npm run build:test
- run: npm run sentry:sourcemaps
- aws-cli/setup:
aws_access_key_id: AWS_ACCESS_KEY_ID
aws_secret_access_key: AWS_SECRET_ACCESS_KEY
region: AWS_REGION
- aws-s3/sync: - aws-s3/sync:
from: build from: build
to: "s3://imex-online-test-beta/" to: "s3://imex-online-test-beta/"

1047
client/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -6,18 +6,18 @@
"dependencies": { "dependencies": {
"@ant-design/compatible": "^5.1.2", "@ant-design/compatible": "^5.1.2",
"@ant-design/pro-layout": "^7.17.16", "@ant-design/pro-layout": "^7.17.16",
"@apollo/client": "^3.9.0", "@apollo/client": "^3.8.10",
"@asseinfo/react-kanban": "^2.2.0", "@asseinfo/react-kanban": "^2.2.0",
"@craco/craco": "^7.1.0", "@craco/craco": "^7.1.0",
"@fingerprintjs/fingerprintjs": "^4.2.2", "@fingerprintjs/fingerprintjs": "^4.2.2",
"@jsreport/browser-client": "^3.1.0", "@jsreport/browser-client": "^3.1.0",
"@reduxjs/toolkit": "^2.1.0", "@reduxjs/toolkit": "^2.1.0",
"@sentry/cli": "^2.27.0", "@sentry/cli": "^2.28.0",
"@sentry/react": "^7.99.0", "@sentry/react": "^7.100.0",
"@sentry/tracing": "^7.99.0", "@sentry/tracing": "^7.100.0",
"@splitsoftware/splitio-react": "^1.11.0", "@splitsoftware/splitio-react": "^1.11.0",
"@tanem/react-nprogress": "^5.0.51", "@tanem/react-nprogress": "^5.0.51",
"antd": "^5.13.3", "antd": "^5.14.0",
"apollo-link-logger": "^2.0.1", "apollo-link-logger": "^2.0.1",
"apollo-link-sentry": "^3.3.0", "apollo-link-sentry": "^3.3.0",
"axios": "^1.6.7", "axios": "^1.6.7",
@@ -29,20 +29,20 @@
"enquire-js": "^0.2.1", "enquire-js": "^0.2.1",
"env-cmd": "^10.1.0", "env-cmd": "^10.1.0",
"exifr": "^7.1.3", "exifr": "^7.1.3",
"firebase": "^10.7.2", "firebase": "^10.8.0",
"graphql": "^16.6.0", "graphql": "^16.6.0",
"i18next": "^23.8.1", "i18next": "^23.8.2",
"i18next-browser-languagedetector": "^7.0.2", "i18next-browser-languagedetector": "^7.0.2",
"jsoneditor": "^10.0.0", "jsoneditor": "^10.0.0",
"jsreport-browser-client-dist": "^1.3.0", "jsreport-browser-client-dist": "^1.3.0",
"libphonenumber-js": "^1.10.54", "libphonenumber-js": "^1.10.55",
"logrocket": "^7.0.0", "logrocket": "^7.0.0",
"markerjs2": "^2.32.0", "markerjs2": "^2.32.0",
"normalize-url": "^8.0.0", "normalize-url": "^8.0.0",
"phone": "^3.1.42", "phone": "^3.1.42",
"preval.macro": "^5.0.0", "preval.macro": "^5.0.0",
"prop-types": "^15.8.1", "prop-types": "^15.8.1",
"query-string": "^8.1.0", "query-string": "^8.2.0",
"rc-queue-anim": "^2.0.0", "rc-queue-anim": "^2.0.0",
"rc-scroll-anim": "^2.7.6", "rc-scroll-anim": "^2.7.6",
"react": "^18.2.0", "react": "^18.2.0",
@@ -53,15 +53,15 @@
"react-drag-listview": "^2.0.0", "react-drag-listview": "^2.0.0",
"react-grid-gallery": "^1.0.0", "react-grid-gallery": "^1.0.0",
"react-grid-layout": "1.3.4", "react-grid-layout": "1.3.4",
"react-i18next": "^14.0.1", "react-i18next": "^14.0.4",
"react-icons": "^5.0.1", "react-icons": "^5.0.1",
"react-image-lightbox": "^5.1.4", "react-image-lightbox": "^5.1.4",
"react-intersection-observer": "^9.5.3", "react-intersection-observer": "^9.7.0",
"react-markdown": "^9.0.1", "react-markdown": "^9.0.1",
"react-number-format": "^5.1.4", "react-number-format": "^5.1.4",
"react-redux": "^9.1.0", "react-redux": "^9.1.0",
"react-resizable": "^3.0.5", "react-resizable": "^3.0.5",
"react-router-dom": "^6.21.3", "react-router-dom": "^6.22.0",
"react-scripts": "^5.0.1", "react-scripts": "^5.0.1",
"react-sticky": "^6.0.3", "react-sticky": "^6.0.3",
"react-sublime-video": "^0.2.5", "react-sublime-video": "^0.2.5",
@@ -89,7 +89,7 @@
"scripts": { "scripts": {
"analyze": "source-map-explorer 'build/static/js/*.js'", "analyze": "source-map-explorer 'build/static/js/*.js'",
"start": "craco start", "start": "craco start",
"build": "REACT_APP_GIT_SHA=`git rev-parse --short HEAD` craco build && npm run sentry:sourcemaps", "build": "REACT_APP_GIT_SHA=`git rev-parse --short HEAD` craco build",
"build:test": "env-cmd -f .env.test npm run build", "build:test": "env-cmd -f .env.test npm run build",
"build-deploy:test": "npm run build:test && s3cmd sync build/* s3://imex-online-test && echo '🚀 TESTING Deployed!'", "build-deploy:test": "npm run build:test && s3cmd sync build/* s3://imex-online-test && echo '🚀 TESTING Deployed!'",
"buildcra": "REACT_APP_GIT_SHA=`git rev-parse --short HEAD` craco build", "buildcra": "REACT_APP_GIT_SHA=`git rev-parse --short HEAD` craco build",
@@ -123,7 +123,7 @@
}, },
"devDependencies": { "devDependencies": {
"@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
"@sentry/webpack-plugin": "^2.10.3", "@sentry/webpack-plugin": "^2.14.0",
"@testing-library/cypress": "^10.0.1", "@testing-library/cypress": "^10.0.1",
"cypress": "^13.6.4", "cypress": "^13.6.4",
"eslint-plugin-cypress": "^2.15.1", "eslint-plugin-cypress": "^2.15.1",

View File

@@ -74,7 +74,7 @@ export function BillFormComponent({
// // Gate bill lines // // Gate bill lines
// if (!values?.billlines?.length) return; // if (!values?.billlines?.length) return;
// const billlines = values.billlines.map((b) => { // const billlines = values.billlines.map((b) => {
// b.applicable_taxes.federal = false; // b.applicable_taxes.federal = false;
// return b; // return b;
// }); // });
@@ -393,11 +393,11 @@ export function BillFormComponent({
{/*</Form.Item>*/} {/*</Form.Item>*/}
{/* {bodyshop.pbs_serialnumber || bodyshop.cdk_dealerid ? (*/} {/* {bodyshop.pbs_serialnumber || bodyshop.cdk_dealerid ? (*/}
{/* <Form.Item*/} {/* <Form.Item*/}
{/* span={2}*/} {/* span={2}*/}
{/* label={t("bills.labels.federal_tax_exempt")}*/} {/* label={t("bills.labels.federal_tax_exempt")}*/}
{/* name="federal_tax_exempt"*/} {/* name="federal_tax_exempt"*/}
{/* >*/} {/* >*/}
{/* <Switch onChange={handleFederalTaxExemptSwitchToggle} />*/} {/* <Switch onChange={handleFederalTaxExemptSwitchToggle} />*/}
{/* </Form.Item>*/} {/* </Form.Item>*/}
{/* ) : null}*/} {/* ) : null}*/}
<Form.Item shouldUpdate span={13}> <Form.Item shouldUpdate span={13}>

View File

@@ -540,7 +540,7 @@ export function BillEnterModalLinesComponent({
// key: `${field.index}fedtax`, // key: `${field.index}fedtax`,
// valuePropName: "checked", // valuePropName: "checked",
// // initialValue: true, // // initialValue: true,
// name: [field.name, "applicable_taxes", "federal"], // name: [field.name, "applicable_taxes", "federal"],
// }; // };
// }, // },
// formInput: (record, index) => <Switch disabled={disabled} />, // formInput: (record, index) => <Switch disabled={disabled} />,

View File

@@ -5,7 +5,6 @@ import {useTranslation} from "react-i18next";
import {connect} from "react-redux"; import {connect} from "react-redux";
import {createStructuredSelector} from "reselect"; import {createStructuredSelector} from "reselect";
import {selectBodyshop, selectCurrentUser,} from "../../redux/user/user.selectors"; import {selectBodyshop, selectCurrentUser,} from "../../redux/user/user.selectors";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
currentUser: selectCurrentUser, currentUser: selectCurrentUser,
bodyshop: selectBodyshop, bodyshop: selectBodyshop,

View File

@@ -48,7 +48,14 @@ export function FormDatePicker({
const v = e.target.value; const v = e.target.value;
if (!v) return; if (!v) return;
const formats = ["MMDDYY", "MMDDYYYY", "MMDD", "MM/DD/YY", "MM/DD/YYYY"]; const formats = [
"MMDDYY", "MMDDYYYY", "MM/DD/YY", "MM/DD/YYYY",
"M/DD/YY", "M/DD/YYYY",
"MM/D/YY", "MM/D/YYYY", "M/D/YY", "M/D/YYYY",
"D/MM/YY", "D/MM/YYYY",
"DD/M/YY", "DD/M/YYYY", "D/M/YY", "D/M/YYYY"
];
let _a; let _a;
// Iterate through formats to find the correct one // Iterate through formats to find the correct one

View File

@@ -499,9 +499,9 @@ function Header({
key: 'beta-switch', key: 'beta-switch',
style: {marginLeft: 'auto'}, style: {marginLeft: 'auto'},
label: ( label: (
<Tooltip title="A more modern ImEX Online is ready for you to try! You can switch back at any time."> <Tooltip title="A more modern Rome Online is ready for you to try! You can switch back at any time.">
<InfoCircleOutlined/> <InfoCircleOutlined/>
<span style={{marginRight: 8}}>Try the new ImEX Online</span> <span style={{marginRight: 8}}>Try the new Rome Online</span>
<Switch <Switch
checked={betaSwitch} checked={betaSwitch}
onChange={betaSwitchChange} onChange={betaSwitchChange}

View File

@@ -6,7 +6,6 @@ import {useParams} from "react-router-dom";
import {logImEXEvent} from "../../../../firebase/firebase.utils"; import {logImEXEvent} from "../../../../firebase/firebase.utils";
import {GenerateDocument, GenerateDocuments,} from "../../../../utils/RenderTemplate"; import {GenerateDocument, GenerateDocuments,} from "../../../../utils/RenderTemplate";
import {TemplateList} from "../../../../utils/TemplateConstants"; import {TemplateList} from "../../../../utils/TemplateConstants";
const TemplateListGenerated = TemplateList(); const TemplateListGenerated = TemplateList();
export default function JobIntakeTemplateList({templates}) { export default function JobIntakeTemplateList({templates}) {

View File

@@ -30,11 +30,11 @@ import JobLinesBillRefernece from "../job-lines-bill-reference/job-lines-bill-re
// import AllocationsBulkAssignmentContainer from "../allocations-bulk-assignment/allocations-bulk-assignment.container"; // import AllocationsBulkAssignmentContainer from "../allocations-bulk-assignment/allocations-bulk-assignment.container";
// import AllocationsEmployeeLabelContainer from "../allocations-employee-label/allocations-employee-label.container"; // import AllocationsEmployeeLabelContainer from "../allocations-employee-label/allocations-employee-label.container";
import _ from "lodash"; import _ from "lodash";
import {selectBodyshop} from "../../redux/user/user.selectors";
import JobCreateIOU from "../job-create-iou/job-create-iou.component"; import JobCreateIOU from "../job-create-iou/job-create-iou.component";
import JobSendPartPriceChangeComponent from "../job-send-parts-price-change/job-send-parts-price-change.component"; import JobSendPartPriceChangeComponent from "../job-send-parts-price-change/job-send-parts-price-change.component";
import PartsOrderModalContainer from "../parts-order-modal/parts-order-modal.container"; import PartsOrderModalContainer from "../parts-order-modal/parts-order-modal.container";
import JobLinesExpander from "./job-lines-expander.component"; import JobLinesExpander from "./job-lines-expander.component";
import {selectBodyshop} from "../../redux/user/user.selectors";
import dayjs from "../../utils/day"; import dayjs from "../../utils/day";
import JobLinesPartPriceChange from "./job-lines-part-price-change.component"; import JobLinesPartPriceChange from "./job-lines-part-price-change.component";
import JoblineTeamAssignment from "../job-line-team-assignment/job-line-team-assignmnent.component"; import JoblineTeamAssignment from "../job-line-team-assignment/job-line-team-assignmnent.component";

View File

@@ -2,8 +2,7 @@ import {useMutation} from "@apollo/client";
import {Button, Space, notification} from "antd"; import {Button, Space, notification} from "antd";
import React, {useState} from "react"; import React, {useState} from "react";
import {useTranslation} from "react-i18next"; import {useTranslation} from "react-i18next";
import dayjs from '../../utils/day';
import moment from "moment";
import {connect} from "react-redux"; import {connect} from "react-redux";
import {createStructuredSelector} from "reselect"; import {createStructuredSelector} from "reselect";
import {INSERT_EXPORT_LOG} from "../../graphql/accounting.queries"; import {INSERT_EXPORT_LOG} from "../../graphql/accounting.queries";

View File

@@ -1,5 +1,5 @@
import {useMutation} from "@apollo/client"; import {useMutation} from "@apollo/client";
import {Switch, notification} from "antd"; import { notification, Switch} from "antd";
import React, {useState} from "react"; import React, {useState} from "react";
import {useTranslation} from "react-i18next"; import {useTranslation} from "react-i18next";
import {connect} from "react-redux"; import {connect} from "react-redux";

View File

@@ -459,7 +459,7 @@ async function CheckTaxRates(estData, bodyshop) {
// ) { // ) {
// const res = await confirmDialog( // const res = await confirmDialog(
// `Rome Online has detected that there is a missing tax rate for LKQ parts. Pressing OK will set the tax rate to ${bodyshop.bill_tax_rates.state_tax_rate}% and enable the rate. Pressing cancel will keep the tax rate as is.` // `Rome Online has detected that there is a missing tax rate for LKQ parts. Pressing OK will set the tax rate to ${bodyshop.bill_tax_rates.state_tax_rate}% and enable the rate. Pressing cancel will keep the tax rate as is.`
// ); // );
// if (res) { // if (res) {
// if (!estData.parts_tax_rates.PAL) { // if (!estData.parts_tax_rates.PAL) {
// estData.parts_tax_rates.PAL = { // estData.parts_tax_rates.PAL = {
@@ -482,7 +482,7 @@ async function CheckTaxRates(estData, bodyshop) {
// ) { // ) {
// const res = await confirmDialog( // const res = await confirmDialog(
// `Rome Online has detected that there is a missing tax rate for rechromed parts. Pressing OK will set the tax rate to ${bodyshop.bill_tax_rates.state_tax_rate}% and enable the rate. Pressing cancel will keep the tax rate as is.` // `Rome Online has detected that there is a missing tax rate for rechromed parts. Pressing OK will set the tax rate to ${bodyshop.bill_tax_rates.state_tax_rate}% and enable the rate. Pressing cancel will keep the tax rate as is.`
// ); // );
// if (res) { // if (res) {
// if (!estData.parts_tax_rates.PAC) { // if (!estData.parts_tax_rates.PAC) {
// estData.parts_tax_rates.PAC = { // estData.parts_tax_rates.PAC = {
@@ -498,9 +498,9 @@ async function CheckTaxRates(estData, bodyshop) {
// } // }
// } // }
//PAM Check //PAM Check
if (!estData.parts_tax_rates?.PAM) { if (!estData.parts_tax_rates?.PAM) {
estData.parts_tax_rates.PAM = estData.parts_tax_rates.PAC; estData.parts_tax_rates.PAM = estData.parts_tax_rates.PAC;
} }
// //PAM Check // //PAM Check
@@ -534,7 +534,7 @@ async function CheckTaxRates(estData, bodyshop) {
// ) { // ) {
// const res = await confirmDialog( // const res = await confirmDialog(
// `Rome Online has detected that there is a missing tax rate for recored parts. Pressing OK will set the tax rate to ${bodyshop.bill_tax_rates.state_tax_rate}% and enable the rate. Pressing cancel will keep the tax rate as is.` // `Rome Online has detected that there is a missing tax rate for recored parts. Pressing OK will set the tax rate to ${bodyshop.bill_tax_rates.state_tax_rate}% and enable the rate. Pressing cancel will keep the tax rate as is.`
// ); // );
// if (res) { // if (res) {
// if (!estData.parts_tax_rates.PAR) { // if (!estData.parts_tax_rates.PAR) {
// estData.parts_tax_rates.PAR = { // estData.parts_tax_rates.PAR = {

View File

@@ -23,9 +23,9 @@ export function JobsDetailDatesComponent({jobRO, job, bodyshop}) {
); );
}, [job.status, bodyshop.md_ro_statuses.post_production_statuses]); }, [job.status, bodyshop.md_ro_statuses.post_production_statuses]);
const calcRepairDays = const calcRepairDays = job?.joblines?.length ?
job.joblines.reduce((acc, val) => acc + val.mod_lb_hrs, 0) / job.joblines.reduce((acc, val) => acc + val.mod_lb_hrs, 0) /
(bodyshop.target_touchtime === 0 ? 1 : bodyshop.target_touchtime); (bodyshop.target_touchtime === 0 ? 1 : bodyshop.target_touchtime) : [];
return ( return (
<div> <div>

View File

@@ -43,5 +43,4 @@ export default function AddToProduction(
//insert the new job. call the callback with the returned ID when done. //insert the new job. call the callback with the returned ID when done.
} }

View File

@@ -898,7 +898,7 @@ export function JobsDetailHeaderActions({
}, },
]; ];
if (job.csiinvites.length) { if (job?.csiinvites?.length) {
children.push( children.push(
{ {
type: "divider" type: "divider"

View File

@@ -59,7 +59,6 @@ export default async function DuplicateJob(
//insert the new job. call the callback with the returned ID when done. //insert the new job. call the callback with the returned ID when done.
} }
export async function CreateIouForJob( export async function CreateIouForJob(

View File

@@ -117,7 +117,7 @@ export function JobsDetailHeader({job, bodyshop, disabled}) {
{job.alt_transport} {job.alt_transport}
<JobAltTransportChange job={job}/> <JobAltTransportChange job={job}/>
</DataLabel> </DataLabel>
{job.cccontracts.length > 0 && ( {job?.cccontracts?.length > 0 && (
<DataLabel label={t("jobs.labels.contracts")}> <DataLabel label={t("jobs.labels.contracts")}>
{job.cccontracts.map((c) => ( {job.cccontracts.map((c) => (
<Link <Link

View File

@@ -5,7 +5,6 @@ import {connect} from "react-redux";
import {createStructuredSelector} from "reselect"; import {createStructuredSelector} from "reselect";
import {selectJobReadOnly} from "../../redux/application/application.selectors"; import {selectJobReadOnly} from "../../redux/application/application.selectors";
import {selectBodyshop} from "../../redux/user/user.selectors"; import {selectBodyshop} from "../../redux/user/user.selectors";
import CurrencyInput from "../form-items-formatted/currency-form-item.component"; import CurrencyInput from "../form-items-formatted/currency-form-item.component";
import JobsDetailRatesChangeButton from "../jobs-detail-rates-change-button/jobs-detail-rates-change-button.component"; import JobsDetailRatesChangeButton from "../jobs-detail-rates-change-button/jobs-detail-rates-change-button.component";
import JobsMarkPstExempt from "../jobs-mark-pst-exempt/jobs-mark-pst-exempt.component"; import JobsMarkPstExempt from "../jobs-mark-pst-exempt/jobs-mark-pst-exempt.component";

View File

@@ -39,7 +39,6 @@ export function ReportCenterModalComponent({reportCenterModal, bodyshop}) {
splitKey: bodyshop.imexshopid, splitKey: bodyshop.imexshopid,
}); });
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const {t} = useTranslation(); const {t} = useTranslation();
const Templates = TemplateList("report_center"); const Templates = TemplateList("report_center");
@@ -275,7 +274,7 @@ export function ReportCenterModalComponent({reportCenterModal, bodyshop}) {
> >
<DatePicker.RangePicker <DatePicker.RangePicker
format="MM/DD/YYYY" format="MM/DD/YYYY"
ranges={DatePIckerRanges} presets={DatePIckerRanges}
/> />
</Form.Item> </Form.Item>
); );

View File

@@ -35,9 +35,13 @@ if (process.env.NODE_ENV !== "development") {
maskAllText: false, maskAllText: false,
blockAllMedia: true, blockAllMedia: true,
}), }),
new Sentry.BrowserTracing(), new Sentry.BrowserTracing({}),
], ],
tracesSampleRate: 1.0, tracePropagationTargets: [
"api.imex.online",
"api.test.imex.online",
"db.imex.online",
],tracesSampleRate: 1.0,
replaysOnErrorSampleRate: 1.0, replaysOnErrorSampleRate: 1.0,
environment: process.env.NODE_ENV, environment: process.env.NODE_ENV,
}); });

View File

@@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
import QueueAnim from 'rc-queue-anim'; import QueueAnim from 'rc-queue-anim';
import {Row, Col} from 'antd'; import { Col, Row} from 'antd';
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack'; import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
import {getChildrenToRender} from './utils'; import {getChildrenToRender} from './utils';

View File

@@ -2,9 +2,8 @@ import React from 'react';
import TweenOne from 'rc-tween-one'; import TweenOne from 'rc-tween-one';
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack'; import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
import QueueAnim from 'rc-queue-anim'; import QueueAnim from 'rc-queue-anim';
import {Row, Col} from 'antd'; import { Col, Row} from 'antd';
import {getChildrenToRender} from './utils'; import {getChildrenToRender,isImg} from './utils';
import {isImg} from './utils';
class Footer extends React.Component { class Footer extends React.Component {
static defaultProps = { static defaultProps = {

View File

@@ -399,7 +399,7 @@ const transformJobToForm = (job) => {
}, {}); }, {});
transformedJob.loss_date = transformedJob.loss_date ? dayjs(transformedJob.loss_date) : null; transformedJob.loss_date = transformedJob.loss_date ? dayjs(transformedJob.loss_date) : null;
transformedJob.date_estimated = transformedJob.date_estimated ? dayjs(transformedJob.date_estimated) : null; transformedJob.date_estimated = transformedJob.date_estimated ? dayjs(transformedJob.date_estimated) : null;
return transformedJob; return transformedJob;
}; };

View File

@@ -9,7 +9,7 @@
import {clientsClaim} from 'workbox-core'; import {clientsClaim} from 'workbox-core';
import {ExpirationPlugin} from 'workbox-expiration'; import {ExpirationPlugin} from 'workbox-expiration';
import {precacheAndRoute, createHandlerBoundToURL} from 'workbox-precaching'; import { createHandlerBoundToURL, precacheAndRoute} from 'workbox-precaching';
import {registerRoute} from 'workbox-routing'; import {registerRoute} from 'workbox-routing';
import {StaleWhileRevalidate} from 'workbox-strategies'; import {StaleWhileRevalidate} from 'workbox-strategies';

View File

@@ -808,7 +808,7 @@ function CalculateTaxesTotals(job, otherTotals) {
) )
); );
} else if (!val.part_type) { } else if (!val.part_type) {
//Do nothing for now. //Do nothing for now.
} else { } else {
const typeOfPart = val.part_type; const typeOfPart = val.part_type;
@@ -1043,7 +1043,7 @@ function CalculateTaxesTotals(job, otherTotals) {
); // THis is currently using the lbr tax rate from PFH not PFL. ); // THis is currently using the lbr tax rate from PFH not PFL.
} }
//console.log("Labor Tax Total", laborTaxTotal.toFormat()); //console.log("Labor Tax Total", laborTaxTotal.toFormat());
let ret = { let ret = {
subtotal: subtotal, subtotal: subtotal,
@@ -1093,7 +1093,7 @@ function CalculateTaxesTotals(job, otherTotals) {
exports.default = Totals; exports.default = Totals;
function DiscountNotAlreadyCounted(jobline, joblines) { function DiscountNotAlreadyCounted(jobline, joblines) {
return false; return false;
} }
exports.DiscountNotAlreadyCounted = DiscountNotAlreadyCounted; exports.DiscountNotAlreadyCounted = DiscountNotAlreadyCounted;