BOD-62 Added new job calculations on import + supplement.
This commit is contained in:
@@ -1,39 +0,0 @@
|
|||||||
import { useQuery } from "@apollo/react-hooks";
|
|
||||||
import React, { useEffect, useState } from "react";
|
|
||||||
import { QUERY_JOB_FINANCIALS } from "../../graphql/jobs.queries";
|
|
||||||
import AlertComponent from "../alert/alert.component";
|
|
||||||
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
|
||||||
import JobTotalsTableComponent from "./job-totals-table.component";
|
|
||||||
import { CalculateJob } from "./job-totals.utility";
|
|
||||||
|
|
||||||
import { connect } from "react-redux";
|
|
||||||
import { createStructuredSelector } from "reselect";
|
|
||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
|
||||||
bodyshop: selectBodyshop
|
|
||||||
});
|
|
||||||
|
|
||||||
export function JobTotalsTableContainer({ jobId, bodyshop }) {
|
|
||||||
const { loading, error, data } = useQuery(QUERY_JOB_FINANCIALS, {
|
|
||||||
variables: { jobId: jobId }
|
|
||||||
});
|
|
||||||
|
|
||||||
const [totals, setTotals] = useState(null);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (!!data) {
|
|
||||||
setTotals(CalculateJob(data.jobs_by_pk, bodyshop.shoprates));
|
|
||||||
}
|
|
||||||
}, [data, setTotals, bodyshop.shoprates]);
|
|
||||||
|
|
||||||
if (loading) return <LoadingSpinner />;
|
|
||||||
if (error) return <AlertComponent message={error.message} type='error' />;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<JobTotalsTableComponent totals={totals} />
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default connect(mapStateToProps, null)(JobTotalsTableContainer);
|
|
||||||
@@ -15,11 +15,10 @@ function CalculateTaxesTotals(job, otherTotals) {
|
|||||||
otherTotals.parts.parts.subtotal +
|
otherTotals.parts.parts.subtotal +
|
||||||
otherTotals.parts.sublets.subtotal +
|
otherTotals.parts.sublets.subtotal +
|
||||||
otherTotals.rates.subtotal +
|
otherTotals.rates.subtotal +
|
||||||
job.towing_payable +
|
(job.towing_payable || 0) +
|
||||||
job.storage_payable; //Levies should be included??
|
(job.storage_payable || 0); //Levies should be included??
|
||||||
|
|
||||||
const statePartsTax = job.joblines.reduce((acc, val) => {
|
const statePartsTax = job.joblines.reduce((acc, val) => {
|
||||||
console.log("val", val);
|
|
||||||
if (!!!val.tax_part) return acc;
|
if (!!!val.tax_part) return acc;
|
||||||
if (!!job.parts_tax_rates[val.part_type]) {
|
if (!!job.parts_tax_rates[val.part_type]) {
|
||||||
return (
|
return (
|
||||||
@@ -75,82 +74,82 @@ function CalculateRatesTotals(ratesList, shoprates) {
|
|||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LA1")
|
.filter((item) => item.mod_lbr_ty === "LA1")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
rate: ratesList.rate_la1,
|
rate: ratesList.rate_la1 || 0,
|
||||||
},
|
},
|
||||||
rate_la2: {
|
rate_la2: {
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LA2")
|
.filter((item) => item.mod_lbr_ty === "LA2")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
rate: ratesList.rate_la2,
|
rate: ratesList.rate_la2 || 0,
|
||||||
},
|
},
|
||||||
rate_la3: {
|
rate_la3: {
|
||||||
rate: ratesList.rate_la3,
|
rate: ratesList.rate_la3 || 0,
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LA3")
|
.filter((item) => item.mod_lbr_ty === "LA3")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
},
|
},
|
||||||
rate_la4: {
|
rate_la4: {
|
||||||
rate: ratesList.rate_la4,
|
rate: ratesList.rate_la4 || 0,
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LA4")
|
.filter((item) => item.mod_lbr_ty === "LA4")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
},
|
},
|
||||||
rate_laa: {
|
rate_laa: {
|
||||||
rate: ratesList.rate_laa,
|
rate: ratesList.rate_laa || 0,
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LAA")
|
.filter((item) => item.mod_lbr_ty === "LAA")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
},
|
},
|
||||||
rate_lab: {
|
rate_lab: {
|
||||||
rate: ratesList.rate_lab,
|
rate: ratesList.rate_lab || 0,
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LAB")
|
.filter((item) => item.mod_lbr_ty === "LAB")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
},
|
},
|
||||||
rate_lad: {
|
rate_lad: {
|
||||||
rate: ratesList.rate_lad,
|
rate: ratesList.rate_lad || 0,
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LAD")
|
.filter((item) => item.mod_lbr_ty === "LAD")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
},
|
},
|
||||||
rate_lae: {
|
rate_lae: {
|
||||||
rate: ratesList.rate_lae,
|
rate: ratesList.rate_lae || 0,
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LAE")
|
.filter((item) => item.mod_lbr_ty === "LAE")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
},
|
},
|
||||||
rate_laf: {
|
rate_laf: {
|
||||||
rate: ratesList.rate_laf,
|
rate: ratesList.rate_laf || 0,
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LAF")
|
.filter((item) => item.mod_lbr_ty === "LAF")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
},
|
},
|
||||||
rate_lag: {
|
rate_lag: {
|
||||||
rate: ratesList.rate_lag,
|
rate: ratesList.rate_lag || 0,
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LAG")
|
.filter((item) => item.mod_lbr_ty === "LAG")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
},
|
},
|
||||||
rate_lam: {
|
rate_lam: {
|
||||||
rate: ratesList.rate_lam,
|
rate: ratesList.rate_lam || 0,
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LAM")
|
.filter((item) => item.mod_lbr_ty === "LAM")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
},
|
},
|
||||||
rate_lar: {
|
rate_lar: {
|
||||||
rate: ratesList.rate_lar,
|
rate: ratesList.rate_lar || 0,
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LAR")
|
.filter((item) => item.mod_lbr_ty === "LAR")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
},
|
},
|
||||||
rate_las: {
|
rate_las: {
|
||||||
rate: ratesList.rate_las,
|
rate: ratesList.rate_las || 0,
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LAS")
|
.filter((item) => item.mod_lbr_ty === "LAS")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
},
|
},
|
||||||
rate_lau: {
|
rate_lau: {
|
||||||
rate: ratesList.rate_lau,
|
rate: ratesList.rate_lau || 0,
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LAU")
|
.filter((item) => item.mod_lbr_ty === "LAU")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
@@ -176,13 +175,13 @@ function CalculateRatesTotals(ratesList, shoprates) {
|
|||||||
: 0,
|
: 0,
|
||||||
},
|
},
|
||||||
paint_mat: {
|
paint_mat: {
|
||||||
rate: ratesList.rate_mapa,
|
rate: ratesList.rate_mapa || 0,
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty === "LAR")
|
.filter((item) => item.mod_lbr_ty === "LAR")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
},
|
},
|
||||||
shop_mat: {
|
shop_mat: {
|
||||||
rate: ratesList.rate_mash,
|
rate: ratesList.rate_mash || 0,
|
||||||
hours: jobLines
|
hours: jobLines
|
||||||
.filter((item) => item.mod_lbr_ty !== "LAR")
|
.filter((item) => item.mod_lbr_ty !== "LAR")
|
||||||
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
.reduce((acc, value) => acc + value.mod_lb_hrs, 0),
|
||||||
|
|||||||
@@ -1,23 +1,35 @@
|
|||||||
|
import { useMutation, useQuery } from "@apollo/react-hooks";
|
||||||
import { notification } from "antd";
|
import { notification } from "antd";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { useMutation, useQuery } from "@apollo/react-hooks";
|
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { withRouter } from "react-router-dom";
|
import { connect } from "react-redux";
|
||||||
import { DELETE_ALL_AVAILABLE_NEW_JOBS, QUERY_AVAILABLE_NEW_JOBS } from "../../graphql/available-jobs.queries";
|
import { useHistory } from "react-router-dom";
|
||||||
|
import { createStructuredSelector } from "reselect";
|
||||||
|
import { CalculateJob } from "../../components/job-totals-table/job-totals.utility";
|
||||||
|
import {
|
||||||
|
DELETE_ALL_AVAILABLE_NEW_JOBS,
|
||||||
|
QUERY_AVAILABLE_NEW_JOBS,
|
||||||
|
} from "../../graphql/available-jobs.queries";
|
||||||
import { INSERT_NEW_JOB } from "../../graphql/jobs.queries";
|
import { INSERT_NEW_JOB } from "../../graphql/jobs.queries";
|
||||||
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import AlertComponent from "../alert/alert.component";
|
import AlertComponent from "../alert/alert.component";
|
||||||
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
||||||
import JobsAvailableComponent from "./jobs-available-new.component";
|
import JobsAvailableComponent from "./jobs-available-new.component";
|
||||||
|
|
||||||
export default withRouter(function JobsAvailableContainer({
|
const mapStateToProps = createStructuredSelector({
|
||||||
|
bodyshop: selectBodyshop,
|
||||||
|
});
|
||||||
|
|
||||||
|
export function JobsAvailableContainer({
|
||||||
deleteJob,
|
deleteJob,
|
||||||
estDataLazyLoad,
|
estDataLazyLoad,
|
||||||
history
|
bodyshop,
|
||||||
}) {
|
}) {
|
||||||
const { loading, error, data, refetch } = useQuery(QUERY_AVAILABLE_NEW_JOBS, {
|
const { loading, error, data, refetch } = useQuery(QUERY_AVAILABLE_NEW_JOBS, {
|
||||||
fetchPolicy: "network-only"
|
fetchPolicy: "network-only",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const history = useHistory();
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
const [modalVisible, setModalVisible] = useState(false);
|
const [modalVisible, setModalVisible] = useState(false);
|
||||||
@@ -41,22 +53,38 @@ export default withRouter(function JobsAvailableContainer({
|
|||||||
//We don't have the right data. Error!
|
//We don't have the right data. Error!
|
||||||
setInsertLoading(false);
|
setInsertLoading(false);
|
||||||
notification["error"]({
|
notification["error"]({
|
||||||
message: t("jobs.errors.creating", { error: "No job data present." })
|
message: t("jobs.errors.creating", { error: "No job data present." }),
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
const newTotals = CalculateJob(
|
||||||
|
{
|
||||||
|
...estData.data.available_jobs_by_pk.est_data,
|
||||||
|
joblines: estData.data.available_jobs_by_pk.est_data.joblines.data,
|
||||||
|
},
|
||||||
|
bodyshop.shoprates
|
||||||
|
);
|
||||||
|
|
||||||
|
const newJob = {
|
||||||
|
...estData.data.available_jobs_by_pk.est_data,
|
||||||
|
clm_total: newTotals.totals.total_repairs,
|
||||||
|
owner_owing: newTotals.custPayable.total,
|
||||||
|
job_totals: newTotals,
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log("newTotals", newTotals);
|
||||||
insertNewJob({
|
insertNewJob({
|
||||||
variables: {
|
variables: {
|
||||||
job: selectedOwner
|
job: selectedOwner
|
||||||
? Object.assign(
|
? Object.assign(
|
||||||
{},
|
{},
|
||||||
estData.data.available_jobs_by_pk.est_data,
|
newJob,
|
||||||
{ owner: null },
|
{ owner: null },
|
||||||
{ ownerid: selectedOwner }
|
{ ownerid: selectedOwner }
|
||||||
)
|
)
|
||||||
: estData.data.available_jobs_by_pk.est_data
|
: newJob,
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
.then(r => {
|
.then((r) => {
|
||||||
notification["success"]({
|
notification["success"]({
|
||||||
message: t("jobs.successes.created"),
|
message: t("jobs.successes.created"),
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
@@ -64,20 +92,21 @@ export default withRouter(function JobsAvailableContainer({
|
|||||||
history.push(
|
history.push(
|
||||||
`/manage/jobs/${r.data.insert_jobs.returning[0].id}`
|
`/manage/jobs/${r.data.insert_jobs.returning[0].id}`
|
||||||
);
|
);
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
//Job has been inserted. Clean up the available jobs record.
|
//Job has been inserted. Clean up the available jobs record.
|
||||||
|
|
||||||
deleteJob({
|
deleteJob({
|
||||||
variables: { id: estData.data.available_jobs_by_pk.id }
|
variables: { id: estData.data.available_jobs_by_pk.id },
|
||||||
}).then(r => {
|
}).then((r) => {
|
||||||
refetch();
|
refetch();
|
||||||
setInsertLoading(false);
|
setInsertLoading(false);
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.catch(r => {
|
.catch((r) => {
|
||||||
//error while inserting
|
//error while inserting
|
||||||
notification["error"]({
|
notification["error"]({
|
||||||
message: t("jobs.errors.creating", { error: r.message })
|
message: t("jobs.errors.creating", { error: r.message }),
|
||||||
});
|
});
|
||||||
refetch();
|
refetch();
|
||||||
setInsertLoading(false);
|
setInsertLoading(false);
|
||||||
@@ -115,4 +144,5 @@ export default withRouter(function JobsAvailableContainer({
|
|||||||
/>
|
/>
|
||||||
</LoadingSpinner>
|
</LoadingSpinner>
|
||||||
);
|
);
|
||||||
});
|
}
|
||||||
|
export default connect(mapStateToProps, null)(JobsAvailableContainer);
|
||||||
|
|||||||
@@ -1,31 +1,36 @@
|
|||||||
|
import { useMutation, useQuery } from "@apollo/react-hooks";
|
||||||
import { notification } from "antd";
|
import { notification } from "antd";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { useMutation, useQuery } from "@apollo/react-hooks";
|
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { withRouter } from "react-router-dom";
|
import { connect } from "react-redux";
|
||||||
import {
|
import { useHistory } from "react-router-dom";
|
||||||
DELETE_ALL_AVAILABLE_SUPPLEMENT_JOBS,
|
import { createStructuredSelector } from "reselect";
|
||||||
QUERY_AVAILABLE_SUPPLEMENT_JOBS
|
import { CalculateJob } from "../../components/job-totals-table/job-totals.utility";
|
||||||
} from "../../graphql/available-jobs.queries";
|
import { DELETE_ALL_AVAILABLE_SUPPLEMENT_JOBS, QUERY_AVAILABLE_SUPPLEMENT_JOBS } from "../../graphql/available-jobs.queries";
|
||||||
import { UPDATE_JOB } from "../../graphql/jobs.queries";
|
import { UPDATE_JOB } from "../../graphql/jobs.queries";
|
||||||
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import AlertComponent from "../alert/alert.component";
|
import AlertComponent from "../alert/alert.component";
|
||||||
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
||||||
import JobsAvailableSupplementComponent from "./jobs-available-supplement.component";
|
import JobsAvailableSupplementComponent from "./jobs-available-supplement.component";
|
||||||
import HeaderFields from "./jobs-available-supplement.headerfields";
|
import HeaderFields from "./jobs-available-supplement.headerfields";
|
||||||
|
|
||||||
export default withRouter(function JobsAvailableSupplementContainer({
|
const mapStateToProps = createStructuredSelector({
|
||||||
|
bodyshop: selectBodyshop,
|
||||||
|
});
|
||||||
|
|
||||||
|
export function JobsAvailableSupplementContainer({
|
||||||
deleteJob,
|
deleteJob,
|
||||||
estDataLazyLoad,
|
estDataLazyLoad,
|
||||||
history
|
bodyshop,
|
||||||
}) {
|
}) {
|
||||||
const { loading, error, data, refetch } = useQuery(
|
const { loading, error, data, refetch } = useQuery(
|
||||||
QUERY_AVAILABLE_SUPPLEMENT_JOBS,
|
QUERY_AVAILABLE_SUPPLEMENT_JOBS,
|
||||||
{
|
{
|
||||||
fetchPolicy: "network-only"
|
fetchPolicy: "network-only",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const history = useHistory();
|
||||||
const [deleteAllNewJobs] = useMutation(DELETE_ALL_AVAILABLE_SUPPLEMENT_JOBS);
|
const [deleteAllNewJobs] = useMutation(DELETE_ALL_AVAILABLE_SUPPLEMENT_JOBS);
|
||||||
|
|
||||||
const [modalVisible, setModalVisible] = useState(false);
|
const [modalVisible, setModalVisible] = useState(false);
|
||||||
@@ -49,48 +54,63 @@ export default withRouter(function JobsAvailableSupplementContainer({
|
|||||||
//We don't have the right data. Error!
|
//We don't have the right data. Error!
|
||||||
setInsertLoading(false);
|
setInsertLoading(false);
|
||||||
notification["error"]({
|
notification["error"]({
|
||||||
message: t("jobs.errors.creating", { error: "No job data present." })
|
message: t("jobs.errors.creating", { error: "No job data present." }),
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
//create upsert job
|
//create upsert job
|
||||||
let supp = estData.data.available_jobs_by_pk.est_data;
|
let supp = estData.data.available_jobs_by_pk.est_data;
|
||||||
console.log("supp before", supp);
|
console.log("supp before", supp);
|
||||||
delete supp.joblines;
|
|
||||||
//TODO How to update the estimate lines.
|
//TODO How to update the estimate lines.
|
||||||
delete supp.owner;
|
delete supp.owner;
|
||||||
delete supp.vehicle;
|
delete supp.vehicle;
|
||||||
|
|
||||||
if (importOptions.overrideHeaders) {
|
if (importOptions.overrideHeaders) {
|
||||||
HeaderFields.forEach(item => delete supp[item]);
|
HeaderFields.forEach((item) => delete supp[item]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const newTotals = CalculateJob(
|
||||||
|
{
|
||||||
|
...estData.data.available_jobs_by_pk.est_data,
|
||||||
|
joblines: estData.data.available_jobs_by_pk.est_data.joblines.data,
|
||||||
|
},
|
||||||
|
bodyshop.shoprates
|
||||||
|
);
|
||||||
|
|
||||||
|
console.log('newTotals', newTotals)
|
||||||
|
delete supp.joblines;
|
||||||
updateJob({
|
updateJob({
|
||||||
variables: {
|
variables: {
|
||||||
jobId: selectedJob,
|
jobId: selectedJob,
|
||||||
job: supp
|
job: {
|
||||||
}
|
...supp,
|
||||||
|
clm_total: newTotals.totals.total_repairs,
|
||||||
|
owner_owing: newTotals.custPayable.total,
|
||||||
|
job_totals: newTotals,
|
||||||
|
},
|
||||||
|
},
|
||||||
})
|
})
|
||||||
.then(r => {
|
.then((r) => {
|
||||||
notification["success"]({
|
notification["success"]({
|
||||||
message: t("jobs.successes.supplemented"),
|
message: t("jobs.successes.supplemented"),
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
history.push(
|
history.push(
|
||||||
`/manage/jobs/${r.data.update_jobs.returning[0].id}`
|
`/manage/jobs/${r.data.update_jobs.returning[0].id}`
|
||||||
);
|
);
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
//Job has been inserted. Clean up the available jobs record.
|
//Job has been inserted. Clean up the available jobs record.
|
||||||
deleteJob({
|
deleteJob({
|
||||||
variables: { id: estData.data.available_jobs_by_pk.id }
|
variables: { id: estData.data.available_jobs_by_pk.id },
|
||||||
}).then(r => {
|
}).then((r) => {
|
||||||
refetch();
|
refetch();
|
||||||
setInsertLoading(false);
|
setInsertLoading(false);
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.catch(r => {
|
.catch((r) => {
|
||||||
//error while inserting
|
//error while inserting
|
||||||
notification["error"]({
|
notification["error"]({
|
||||||
message: t("jobs.errors.creating", { error: r.message })
|
message: t("jobs.errors.creating", { error: r.message }),
|
||||||
});
|
});
|
||||||
refetch();
|
refetch();
|
||||||
setInsertLoading(false);
|
setInsertLoading(false);
|
||||||
@@ -128,4 +148,5 @@ export default withRouter(function JobsAvailableSupplementContainer({
|
|||||||
/>
|
/>
|
||||||
</LoadingSpinner>
|
</LoadingSpinner>
|
||||||
);
|
);
|
||||||
});
|
}
|
||||||
|
export default connect(mapStateToProps, null)(JobsAvailableSupplementContainer);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Divider, Form, Input, InputNumber, Row, Col } from "antd";
|
import { Divider, Form, Input, InputNumber, Row, Col } from "antd";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import JobTotalsTableContainer from "../job-totals-table/job-totals-table.container";
|
import JobTotalsTable from "../job-totals-table/job-totals-table.component";
|
||||||
|
|
||||||
export default function JobsDetailFinancials({ job }) {
|
export default function JobsDetailFinancials({ job }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -9,123 +9,130 @@ export default function JobsDetailFinancials({ job }) {
|
|||||||
return (
|
return (
|
||||||
<Row>
|
<Row>
|
||||||
<Col offset={1} span={10}>
|
<Col offset={1} span={10}>
|
||||||
<Form.Item label={t("jobs.fields.ded_amt")} name='ded_amt'>
|
<Form.Item label={t("jobs.fields.ded_amt")} name="ded_amt">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.ded_status")} name='ded_status'>
|
<Form.Item label={t("jobs.fields.ded_status")} name="ded_status">
|
||||||
<Input />
|
<Input />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("jobs.fields.depreciation_taxes")}
|
label={t("jobs.fields.depreciation_taxes")}
|
||||||
name='depreciation_taxes'>
|
name="depreciation_taxes"
|
||||||
|
>
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
TODO This is equivalent of GST payable.
|
TODO This is equivalent of GST payable.
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("jobs.fields.federal_tax_payable")}
|
label={t("jobs.fields.federal_tax_payable")}
|
||||||
name='federal_tax_payable'>
|
name="federal_tax_payable"
|
||||||
|
>
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
TODO equivalent of other customer amount
|
TODO equivalent of other customer amount
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("jobs.fields.other_amount_payable")}
|
label={t("jobs.fields.other_amount_payable")}
|
||||||
name='other_amount_payable'>
|
name="other_amount_payable"
|
||||||
|
>
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("jobs.fields.towing_payable")}
|
label={t("jobs.fields.towing_payable")}
|
||||||
name='towing_payable'>
|
name="towing_payable"
|
||||||
|
>
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("jobs.fields.storage_payable")}
|
label={t("jobs.fields.storage_payable")}
|
||||||
name='storage_payable'>
|
name="storage_payable"
|
||||||
|
>
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("jobs.fields.adjustment_bottom_line")}
|
label={t("jobs.fields.adjustment_bottom_line")}
|
||||||
name='adjustment_bottom_line'>
|
name="adjustment_bottom_line"
|
||||||
|
>
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Divider />
|
<Divider />
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("jobs.fields.labor_rate_desc")}
|
label={t("jobs.fields.labor_rate_desc")}
|
||||||
name='labor_rate_desc'>
|
name="labor_rate_desc"
|
||||||
|
>
|
||||||
<Input />
|
<Input />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_lab")} name='rate_lab'>
|
<Form.Item label={t("jobs.fields.rate_lab")} name="rate_lab">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_lad")} name='rate_lad'>
|
<Form.Item label={t("jobs.fields.rate_lad")} name="rate_lad">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_lae")} name='rate_lae'>
|
<Form.Item label={t("jobs.fields.rate_lae")} name="rate_lae">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_lar")} name='rate_lar'>
|
<Form.Item label={t("jobs.fields.rate_lar")} name="rate_lar">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_las")} name='rate_las'>
|
<Form.Item label={t("jobs.fields.rate_las")} name="rate_las">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_laf")} name='rate_laf'>
|
<Form.Item label={t("jobs.fields.rate_laf")} name="rate_laf">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_lam")} name='rate_lam'>
|
<Form.Item label={t("jobs.fields.rate_lam")} name="rate_lam">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_lag")} name='rate_lag'>
|
<Form.Item label={t("jobs.fields.rate_lag")} name="rate_lag">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
Note //TODO Remove ATP rate?
|
Note //TODO Remove ATP rate?
|
||||||
<Form.Item label={t("jobs.fields.rate_atp")} name='rate_atp'>
|
<Form.Item label={t("jobs.fields.rate_atp")} name="rate_atp">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_lau")} name='rate_lau'>
|
<Form.Item label={t("jobs.fields.rate_lau")} name="rate_lau">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_la1")} name='rate_la1'>
|
<Form.Item label={t("jobs.fields.rate_la1")} name="rate_la1">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_la2")} name='rate_la2'>
|
<Form.Item label={t("jobs.fields.rate_la2")} name="rate_la2">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_la3")} name='rate_la3'>
|
<Form.Item label={t("jobs.fields.rate_la3")} name="rate_la3">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_la4")} name='rate_la4'>
|
<Form.Item label={t("jobs.fields.rate_la4")} name="rate_la4">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_mapa")} name='rate_mapa'>
|
<Form.Item label={t("jobs.fields.rate_mapa")} name="rate_mapa">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_mash")} name='rate_mash'>
|
<Form.Item label={t("jobs.fields.rate_mash")} name="rate_mash">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_mahw")} name='rate_mahw'>
|
<Form.Item label={t("jobs.fields.rate_mahw")} name="rate_mahw">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_ma2s")} name='rate_ma2s'>
|
<Form.Item label={t("jobs.fields.rate_ma2s")} name="rate_ma2s">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_ma3s")} name='rate_ma3s'>
|
<Form.Item label={t("jobs.fields.rate_ma3s")} name="rate_ma3s">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_mabl")} name='rate_mabl'>
|
<Form.Item label={t("jobs.fields.rate_mabl")} name="rate_mabl">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_macs")} name='rate_macs'>
|
<Form.Item label={t("jobs.fields.rate_macs")} name="rate_macs">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_matd")} name='rate_matd'>
|
<Form.Item label={t("jobs.fields.rate_matd")} name="rate_matd">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_laa")} name='rate_laa'>
|
<Form.Item label={t("jobs.fields.rate_laa")} name="rate_laa">
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Col>
|
</Col>
|
||||||
<Col offset={1} span={12}>
|
<Col offset={1} span={12}>
|
||||||
<JobTotalsTableContainer jobId={job.id} />
|
<JobTotalsTable totals={job.job_totals} />
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {
|
|||||||
Menu,
|
Menu,
|
||||||
notification,
|
notification,
|
||||||
PageHeader,
|
PageHeader,
|
||||||
Tag
|
Tag,
|
||||||
} from "antd";
|
} from "antd";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
@@ -26,11 +26,11 @@ import VehicleTagPopoverComponent from "../vehicle-tag-popover/vehicle-tag-popov
|
|||||||
import JobsDetailHeaderActions from "../jobs-detail-header-actions/jobs-detail-header-actions.component";
|
import JobsDetailHeaderActions from "../jobs-detail-header-actions/jobs-detail-header-actions.component";
|
||||||
import { setModalContext } from "../../redux/modals/modals.actions";
|
import { setModalContext } from "../../redux/modals/modals.actions";
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop
|
bodyshop: selectBodyshop,
|
||||||
});
|
});
|
||||||
const mapDispatchToProps = dispatch => ({
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
setScheduleContext: context =>
|
setScheduleContext: (context) =>
|
||||||
dispatch(setModalContext({ context: context, modal: "schedule" }))
|
dispatch(setModalContext({ context: context, modal: "schedule" })),
|
||||||
});
|
});
|
||||||
|
|
||||||
export function JobsDetailHeader({
|
export function JobsDetailHeader({
|
||||||
@@ -40,7 +40,7 @@ export function JobsDetailHeader({
|
|||||||
|
|
||||||
bodyshop,
|
bodyshop,
|
||||||
updateJobStatus,
|
updateJobStatus,
|
||||||
setScheduleContext
|
setScheduleContext,
|
||||||
}) {
|
}) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
@@ -55,11 +55,11 @@ export function JobsDetailHeader({
|
|||||||
|
|
||||||
const statusmenu = (
|
const statusmenu = (
|
||||||
<Menu
|
<Menu
|
||||||
onClick={e => {
|
onClick={(e) => {
|
||||||
updateJobStatus(e.key);
|
updateJobStatus(e.key);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{bodyshop.md_ro_statuses.statuses.map(item => (
|
{bodyshop.md_ro_statuses.statuses.map((item) => (
|
||||||
<Menu.Item key={item}>{item}</Menu.Item>
|
<Menu.Item key={item}>{item}</Menu.Item>
|
||||||
))}
|
))}
|
||||||
</Menu>
|
</Menu>
|
||||||
@@ -78,8 +78,8 @@ export function JobsDetailHeader({
|
|||||||
setScheduleContext({
|
setScheduleContext({
|
||||||
actions: { refetch: refetch },
|
actions: { refetch: refetch },
|
||||||
context: {
|
context: {
|
||||||
jobId: job.id
|
jobId: job.id,
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -92,12 +92,12 @@ export function JobsDetailHeader({
|
|||||||
disabled={job.converted}
|
disabled={job.converted}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
mutationConvertJob({
|
mutationConvertJob({
|
||||||
variables: { jobId: job.id }
|
variables: { jobId: job.id },
|
||||||
}).then(r => {
|
}).then((r) => {
|
||||||
refetch();
|
refetch();
|
||||||
|
|
||||||
notification["success"]({
|
notification["success"]({
|
||||||
message: t("jobs.successes.converted")
|
message: t("jobs.successes.converted"),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
@@ -107,13 +107,13 @@ export function JobsDetailHeader({
|
|||||||
<JobsDetailHeaderActions key="actions" job={job} />,
|
<JobsDetailHeaderActions key="actions" job={job} />,
|
||||||
<Button type="primary" key="submit" htmlType="submit">
|
<Button type="primary" key="submit" htmlType="submit">
|
||||||
{t("general.actions.save")}
|
{t("general.actions.save")}
|
||||||
</Button>
|
</Button>,
|
||||||
];
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<PageHeader
|
<PageHeader
|
||||||
style={{
|
style={{
|
||||||
border: "1px solid rgb(235, 237, 240)"
|
border: "1px solid rgb(235, 237, 240)",
|
||||||
}}
|
}}
|
||||||
title={tombstoneTitle}
|
title={tombstoneTitle}
|
||||||
//subTitle={tombstoneSubtitle}
|
//subTitle={tombstoneSubtitle}
|
||||||
@@ -136,7 +136,7 @@ export function JobsDetailHeader({
|
|||||||
key="custowing"
|
key="custowing"
|
||||||
label={t("jobs.fields.customerowing")}
|
label={t("jobs.fields.customerowing")}
|
||||||
>
|
>
|
||||||
##NO BINDING YET##
|
<CurrencyFormatter>{job.owner_owing}</CurrencyFormatter>
|
||||||
</Descriptions.Item>
|
</Descriptions.Item>
|
||||||
|
|
||||||
<Descriptions.Item
|
<Descriptions.Item
|
||||||
@@ -157,7 +157,7 @@ export function JobsDetailHeader({
|
|||||||
|
|
||||||
<Descriptions.Item key="servicecar" label={t("jobs.fields.servicecar")}>
|
<Descriptions.Item key="servicecar" label={t("jobs.fields.servicecar")}>
|
||||||
{job.cccontracts &&
|
{job.cccontracts &&
|
||||||
job.cccontracts.map(item => (
|
job.cccontracts.map((item) => (
|
||||||
<Link
|
<Link
|
||||||
key={item.id}
|
key={item.id}
|
||||||
to={`/manage/courtesycars/contracts/${item.id}`}
|
to={`/manage/courtesycars/contracts/${item.id}`}
|
||||||
|
|||||||
@@ -166,13 +166,9 @@ export default withRouter(function JobsList({
|
|||||||
dataIndex: "owner_owing",
|
dataIndex: "owner_owing",
|
||||||
key: "owner_owing",
|
key: "owner_owing",
|
||||||
width: "8%",
|
width: "8%",
|
||||||
render: (text, record) => {
|
render: (text, record) => (
|
||||||
return record.owner_owing ? (
|
<CurrencyFormatter>{record.owner_owing}</CurrencyFormatter>
|
||||||
<span>{record.owner_owing}</span>
|
),
|
||||||
) : (
|
|
||||||
t("general.labels.unknown")
|
|
||||||
);
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import "firebase/auth";
|
|||||||
import "firebase/database";
|
import "firebase/database";
|
||||||
import "firebase/analytics";
|
import "firebase/analytics";
|
||||||
|
|
||||||
console.log("REACT_APP_FIREBASE_CONFIG", process.env.REACT_APP_FIREBASE_CONFIG);
|
|
||||||
const config = JSON.parse(process.env.REACT_APP_FIREBASE_CONFIG);
|
const config = JSON.parse(process.env.REACT_APP_FIREBASE_CONFIG);
|
||||||
firebase.initializeApp(config);
|
firebase.initializeApp(config);
|
||||||
|
|
||||||
|
|||||||
@@ -149,6 +149,17 @@ export const GET_JOB_BY_PK = gql`
|
|||||||
towing_payable
|
towing_payable
|
||||||
storage_payable
|
storage_payable
|
||||||
adjustment_bottom_line
|
adjustment_bottom_line
|
||||||
|
federal_tax_rate
|
||||||
|
state_tax_rate
|
||||||
|
local_tax_rate
|
||||||
|
tax_tow_rt
|
||||||
|
tax_str_rt
|
||||||
|
tax_paint_mat_rt
|
||||||
|
tax_sub_rt
|
||||||
|
tax_lbr_rt
|
||||||
|
tax_levies_rt
|
||||||
|
parts_tax_rates
|
||||||
|
job_totals
|
||||||
ownr_fn
|
ownr_fn
|
||||||
ownr_ln
|
ownr_ln
|
||||||
ownr_ea
|
ownr_ea
|
||||||
@@ -173,28 +184,29 @@ export const GET_JOB_BY_PK = gql`
|
|||||||
ownr_ph1
|
ownr_ph1
|
||||||
}
|
}
|
||||||
labor_rate_desc
|
labor_rate_desc
|
||||||
rate_lab
|
|
||||||
rate_lad
|
|
||||||
rate_lae
|
|
||||||
rate_lar
|
|
||||||
rate_las
|
|
||||||
rate_laf
|
|
||||||
rate_lam
|
|
||||||
rate_lag
|
|
||||||
rate_atp
|
rate_atp
|
||||||
rate_lau
|
|
||||||
rate_la1
|
rate_la1
|
||||||
rate_la2
|
rate_la2
|
||||||
rate_la3
|
rate_la3
|
||||||
rate_la4
|
rate_la4
|
||||||
rate_mapa
|
rate_laa
|
||||||
rate_mash
|
rate_lab
|
||||||
rate_mahw
|
rate_lad
|
||||||
|
rate_lae
|
||||||
|
rate_laf
|
||||||
|
rate_lag
|
||||||
|
rate_lam
|
||||||
|
rate_lar
|
||||||
|
rate_las
|
||||||
|
rate_lau
|
||||||
rate_ma2s
|
rate_ma2s
|
||||||
|
rate_ma2t
|
||||||
rate_ma3s
|
rate_ma3s
|
||||||
rate_mabl
|
rate_mabl
|
||||||
rate_macs
|
rate_macs
|
||||||
rate_laa
|
rate_mahw
|
||||||
|
rate_mapa
|
||||||
|
rate_mash
|
||||||
rate_matd
|
rate_matd
|
||||||
actual_in
|
actual_in
|
||||||
scheduled_completion
|
scheduled_completion
|
||||||
@@ -209,11 +221,15 @@ export const GET_JOB_BY_PK = gql`
|
|||||||
date_closed
|
date_closed
|
||||||
date_exported
|
date_exported
|
||||||
status
|
status
|
||||||
|
owner_owing
|
||||||
joblines {
|
joblines {
|
||||||
id
|
id
|
||||||
unq_seq
|
unq_seq
|
||||||
line_ind
|
line_ind
|
||||||
|
tax_part
|
||||||
line_desc
|
line_desc
|
||||||
|
prt_dsmk_p
|
||||||
|
prt_dsmk_m
|
||||||
part_type
|
part_type
|
||||||
oem_partno
|
oem_partno
|
||||||
db_price
|
db_price
|
||||||
@@ -385,66 +401,3 @@ export const ACTIVE_JOBS_FOR_AUTOCOMPLETE = gql`
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export const QUERY_JOB_FINANCIALS = gql`
|
|
||||||
query QUERY_JOB_FINANCIALS($jobId: uuid!) {
|
|
||||||
jobs_by_pk(id: $jobId) {
|
|
||||||
id
|
|
||||||
cieca_ttl
|
|
||||||
cieca_stl
|
|
||||||
ded_amt
|
|
||||||
depreciation_taxes
|
|
||||||
federal_tax_payable
|
|
||||||
other_amount_payable
|
|
||||||
adjustment_bottom_line
|
|
||||||
towing_payable
|
|
||||||
storage_payable
|
|
||||||
federal_tax_rate
|
|
||||||
state_tax_rate
|
|
||||||
local_tax_rate
|
|
||||||
tax_tow_rt
|
|
||||||
tax_str_rt
|
|
||||||
tax_paint_mat_rt
|
|
||||||
tax_sub_rt
|
|
||||||
tax_lbr_rt
|
|
||||||
tax_levies_rt
|
|
||||||
parts_tax_rates
|
|
||||||
rate_atp
|
|
||||||
rate_la1
|
|
||||||
rate_la2
|
|
||||||
rate_la3
|
|
||||||
rate_la4
|
|
||||||
rate_laa
|
|
||||||
rate_lab
|
|
||||||
rate_lad
|
|
||||||
rate_lae
|
|
||||||
rate_laf
|
|
||||||
rate_lag
|
|
||||||
rate_lam
|
|
||||||
rate_lar
|
|
||||||
rate_las
|
|
||||||
rate_lau
|
|
||||||
rate_ma2s
|
|
||||||
rate_ma2t
|
|
||||||
rate_ma3s
|
|
||||||
rate_mabl
|
|
||||||
rate_macs
|
|
||||||
rate_mahw
|
|
||||||
rate_mapa
|
|
||||||
rate_mash
|
|
||||||
rate_matd
|
|
||||||
joblines {
|
|
||||||
id
|
|
||||||
line_desc
|
|
||||||
tax_part
|
|
||||||
prt_dsmk_p
|
|
||||||
prt_dsmk_m
|
|
||||||
mod_lbr_ty
|
|
||||||
act_price
|
|
||||||
mod_lb_hrs
|
|
||||||
part_type
|
|
||||||
part_qty
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
|
|||||||
@@ -19,6 +19,11 @@ import {
|
|||||||
import { useHistory, useLocation } from "react-router-dom";
|
import { useHistory, useLocation } from "react-router-dom";
|
||||||
import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component";
|
import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component";
|
||||||
import queryString from "query-string";
|
import queryString from "query-string";
|
||||||
|
import { connect } from "react-redux";
|
||||||
|
import { createStructuredSelector } from "reselect";
|
||||||
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
|
import { CalculateJob } from "../../components/job-totals-table/job-totals.utility";
|
||||||
|
|
||||||
const JobsLinesContainer = lazy(() =>
|
const JobsLinesContainer = lazy(() =>
|
||||||
import("../../components/job-detail-lines/job-lines.container")
|
import("../../components/job-detail-lines/job-lines.container")
|
||||||
);
|
);
|
||||||
@@ -65,13 +70,18 @@ const JobsDetailAuditContainer = lazy(() =>
|
|||||||
import("../../components/audit-trail-list/audit-trail-list.container")
|
import("../../components/audit-trail-list/audit-trail-list.container")
|
||||||
);
|
);
|
||||||
|
|
||||||
export default function JobsDetailPage({
|
const mapStateToProps = createStructuredSelector({
|
||||||
|
bodyshop: selectBodyshop,
|
||||||
|
});
|
||||||
|
|
||||||
|
export function JobsDetailPage({
|
||||||
job,
|
job,
|
||||||
mutationUpdateJob,
|
mutationUpdateJob,
|
||||||
mutationConvertJob,
|
mutationConvertJob,
|
||||||
handleSubmit,
|
handleSubmit,
|
||||||
refetch,
|
refetch,
|
||||||
updateJobStatus,
|
updateJobStatus,
|
||||||
|
bodyshop,
|
||||||
}) {
|
}) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const [form] = Form.useForm();
|
const [form] = Form.useForm();
|
||||||
@@ -90,8 +100,17 @@ export default function JobsDetailPage({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleFinish = (values) => {
|
const handleFinish = (values) => {
|
||||||
|
const newTotals = CalculateJob({ ...job, ...values }, bodyshop.shoprates);
|
||||||
mutationUpdateJob({
|
mutationUpdateJob({
|
||||||
variables: { jobId: job.id, job: values },
|
variables: {
|
||||||
|
jobId: job.id,
|
||||||
|
job: {
|
||||||
|
...values,
|
||||||
|
clm_total: newTotals.totals.total_repairs,
|
||||||
|
owner_owing: newTotals.custPayable.total,
|
||||||
|
job_totals: newTotals,
|
||||||
|
},
|
||||||
|
},
|
||||||
}).then((r) => {
|
}).then((r) => {
|
||||||
notification["success"]({
|
notification["success"]({
|
||||||
message: t("jobs.successes.savetitle"),
|
message: t("jobs.successes.savetitle"),
|
||||||
@@ -270,3 +289,4 @@ export default function JobsDetailPage({
|
|||||||
</Suspense>
|
</Suspense>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
export default connect(mapStateToProps, null)(JobsDetailPage);
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."jobs" DROP COLUMN "job_totals";
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."jobs" ADD COLUMN "job_totals" jsonb NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,253 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: jobs
|
||||||
|
schema: public
|
||||||
|
type: drop_insert_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
check:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
columns:
|
||||||
|
- actual_completion
|
||||||
|
- actual_delivery
|
||||||
|
- actual_in
|
||||||
|
- adj_g_disc
|
||||||
|
- adj_strdis
|
||||||
|
- adj_towdis
|
||||||
|
- adjustment_bottom_line
|
||||||
|
- agt_addr1
|
||||||
|
- agt_addr2
|
||||||
|
- agt_city
|
||||||
|
- agt_co_id
|
||||||
|
- agt_co_nm
|
||||||
|
- agt_ct_fn
|
||||||
|
- agt_ct_ln
|
||||||
|
- agt_ct_ph
|
||||||
|
- agt_ct_phx
|
||||||
|
- agt_ctry
|
||||||
|
- agt_ea
|
||||||
|
- agt_fax
|
||||||
|
- agt_faxx
|
||||||
|
- agt_lic_no
|
||||||
|
- agt_ph1
|
||||||
|
- agt_ph1x
|
||||||
|
- agt_ph2
|
||||||
|
- agt_ph2x
|
||||||
|
- agt_st
|
||||||
|
- agt_zip
|
||||||
|
- area_of_damage
|
||||||
|
- asgn_date
|
||||||
|
- asgn_no
|
||||||
|
- asgn_type
|
||||||
|
- cat_no
|
||||||
|
- cieca_stl
|
||||||
|
- cieca_ttl
|
||||||
|
- ciecaid
|
||||||
|
- clm_addr1
|
||||||
|
- clm_addr2
|
||||||
|
- clm_city
|
||||||
|
- clm_ct_fn
|
||||||
|
- clm_ct_ln
|
||||||
|
- clm_ct_ph
|
||||||
|
- clm_ct_phx
|
||||||
|
- clm_ctry
|
||||||
|
- clm_ea
|
||||||
|
- clm_fax
|
||||||
|
- clm_faxx
|
||||||
|
- clm_no
|
||||||
|
- clm_ofc_id
|
||||||
|
- clm_ofc_nm
|
||||||
|
- clm_ph1
|
||||||
|
- clm_ph1x
|
||||||
|
- clm_ph2
|
||||||
|
- clm_ph2x
|
||||||
|
- clm_st
|
||||||
|
- clm_title
|
||||||
|
- clm_total
|
||||||
|
- clm_zip
|
||||||
|
- converted
|
||||||
|
- created_at
|
||||||
|
- csr
|
||||||
|
- cust_pr
|
||||||
|
- date_closed
|
||||||
|
- date_estimated
|
||||||
|
- date_exported
|
||||||
|
- date_invoiced
|
||||||
|
- date_open
|
||||||
|
- date_scheduled
|
||||||
|
- ded_amt
|
||||||
|
- ded_status
|
||||||
|
- depreciation_taxes
|
||||||
|
- est_addr1
|
||||||
|
- est_addr2
|
||||||
|
- est_city
|
||||||
|
- est_co_nm
|
||||||
|
- est_ct_fn
|
||||||
|
- est_ct_ln
|
||||||
|
- est_ctry
|
||||||
|
- est_ea
|
||||||
|
- est_number
|
||||||
|
- est_ph1
|
||||||
|
- est_st
|
||||||
|
- est_zip
|
||||||
|
- federal_tax_payable
|
||||||
|
- federal_tax_rate
|
||||||
|
- g_bett_amt
|
||||||
|
- id
|
||||||
|
- inproduction
|
||||||
|
- ins_addr1
|
||||||
|
- ins_addr2
|
||||||
|
- ins_city
|
||||||
|
- ins_co_id
|
||||||
|
- ins_co_nm
|
||||||
|
- ins_ct_fn
|
||||||
|
- ins_ct_ln
|
||||||
|
- ins_ct_ph
|
||||||
|
- ins_ct_phx
|
||||||
|
- ins_ctry
|
||||||
|
- ins_ea
|
||||||
|
- ins_fax
|
||||||
|
- ins_faxx
|
||||||
|
- ins_memo
|
||||||
|
- ins_ph1
|
||||||
|
- ins_ph1x
|
||||||
|
- ins_ph2
|
||||||
|
- ins_ph2x
|
||||||
|
- ins_st
|
||||||
|
- ins_title
|
||||||
|
- ins_zip
|
||||||
|
- insd_addr1
|
||||||
|
- insd_addr2
|
||||||
|
- insd_city
|
||||||
|
- insd_co_nm
|
||||||
|
- insd_ctry
|
||||||
|
- insd_ea
|
||||||
|
- insd_fax
|
||||||
|
- insd_faxx
|
||||||
|
- insd_fn
|
||||||
|
- insd_ln
|
||||||
|
- insd_ph1
|
||||||
|
- insd_ph1x
|
||||||
|
- insd_ph2
|
||||||
|
- insd_ph2x
|
||||||
|
- insd_st
|
||||||
|
- insd_title
|
||||||
|
- insd_zip
|
||||||
|
- invoice_date
|
||||||
|
- kmin
|
||||||
|
- kmout
|
||||||
|
- labor_rate_desc
|
||||||
|
- labor_rate_id
|
||||||
|
- local_tax_rate
|
||||||
|
- loss_cat
|
||||||
|
- loss_date
|
||||||
|
- loss_desc
|
||||||
|
- loss_type
|
||||||
|
- other_amount_payable
|
||||||
|
- owner_owing
|
||||||
|
- ownerid
|
||||||
|
- ownr_addr1
|
||||||
|
- ownr_addr2
|
||||||
|
- ownr_city
|
||||||
|
- ownr_co_nm
|
||||||
|
- ownr_ctry
|
||||||
|
- ownr_ea
|
||||||
|
- ownr_fax
|
||||||
|
- ownr_faxx
|
||||||
|
- ownr_fn
|
||||||
|
- ownr_ln
|
||||||
|
- ownr_ph1
|
||||||
|
- ownr_ph1x
|
||||||
|
- ownr_ph2
|
||||||
|
- ownr_ph2x
|
||||||
|
- ownr_st
|
||||||
|
- ownr_title
|
||||||
|
- ownr_zip
|
||||||
|
- parts_tax_rates
|
||||||
|
- pay_amt
|
||||||
|
- pay_chknm
|
||||||
|
- pay_date
|
||||||
|
- pay_type
|
||||||
|
- payee_nms
|
||||||
|
- plate_no
|
||||||
|
- plate_st
|
||||||
|
- po_number
|
||||||
|
- policy_no
|
||||||
|
- rate_atp
|
||||||
|
- rate_la1
|
||||||
|
- rate_la2
|
||||||
|
- rate_la3
|
||||||
|
- rate_la4
|
||||||
|
- rate_laa
|
||||||
|
- rate_lab
|
||||||
|
- rate_lad
|
||||||
|
- rate_lae
|
||||||
|
- rate_laf
|
||||||
|
- rate_lag
|
||||||
|
- rate_lam
|
||||||
|
- rate_lar
|
||||||
|
- rate_las
|
||||||
|
- rate_lau
|
||||||
|
- rate_ma2s
|
||||||
|
- rate_ma2t
|
||||||
|
- rate_ma3s
|
||||||
|
- rate_mabl
|
||||||
|
- rate_macs
|
||||||
|
- rate_mahw
|
||||||
|
- rate_mapa
|
||||||
|
- rate_mash
|
||||||
|
- rate_matd
|
||||||
|
- referral_source
|
||||||
|
- regie_number
|
||||||
|
- ro_number
|
||||||
|
- scheduled_completion
|
||||||
|
- scheduled_delivery
|
||||||
|
- scheduled_in
|
||||||
|
- selling_dealer
|
||||||
|
- selling_dealer_contact
|
||||||
|
- servicing_dealer
|
||||||
|
- servicing_dealer_contact
|
||||||
|
- shopid
|
||||||
|
- special_coverage_policy
|
||||||
|
- state_tax_rate
|
||||||
|
- status
|
||||||
|
- statusid
|
||||||
|
- storage_payable
|
||||||
|
- tax_lbr_rt
|
||||||
|
- tax_levies_rt
|
||||||
|
- tax_paint_mat_rt
|
||||||
|
- tax_predis
|
||||||
|
- tax_prethr
|
||||||
|
- tax_pstthr
|
||||||
|
- tax_str_rt
|
||||||
|
- tax_sub_rt
|
||||||
|
- tax_thramt
|
||||||
|
- tax_tow_rt
|
||||||
|
- theft_ind
|
||||||
|
- tlos_ind
|
||||||
|
- towing_payable
|
||||||
|
- unit_number
|
||||||
|
- updated_at
|
||||||
|
- v_color
|
||||||
|
- v_make_desc
|
||||||
|
- v_model_desc
|
||||||
|
- v_model_yr
|
||||||
|
- v_vin
|
||||||
|
- vehicleid
|
||||||
|
localPresets:
|
||||||
|
- key: ""
|
||||||
|
value: ""
|
||||||
|
set: {}
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: jobs
|
||||||
|
schema: public
|
||||||
|
type: create_insert_permission
|
||||||
@@ -0,0 +1,254 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: jobs
|
||||||
|
schema: public
|
||||||
|
type: drop_insert_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
check:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
columns:
|
||||||
|
- actual_completion
|
||||||
|
- actual_delivery
|
||||||
|
- actual_in
|
||||||
|
- adj_g_disc
|
||||||
|
- adj_strdis
|
||||||
|
- adj_towdis
|
||||||
|
- adjustment_bottom_line
|
||||||
|
- agt_addr1
|
||||||
|
- agt_addr2
|
||||||
|
- agt_city
|
||||||
|
- agt_co_id
|
||||||
|
- agt_co_nm
|
||||||
|
- agt_ct_fn
|
||||||
|
- agt_ct_ln
|
||||||
|
- agt_ct_ph
|
||||||
|
- agt_ct_phx
|
||||||
|
- agt_ctry
|
||||||
|
- agt_ea
|
||||||
|
- agt_fax
|
||||||
|
- agt_faxx
|
||||||
|
- agt_lic_no
|
||||||
|
- agt_ph1
|
||||||
|
- agt_ph1x
|
||||||
|
- agt_ph2
|
||||||
|
- agt_ph2x
|
||||||
|
- agt_st
|
||||||
|
- agt_zip
|
||||||
|
- area_of_damage
|
||||||
|
- asgn_date
|
||||||
|
- asgn_no
|
||||||
|
- asgn_type
|
||||||
|
- cat_no
|
||||||
|
- cieca_stl
|
||||||
|
- cieca_ttl
|
||||||
|
- ciecaid
|
||||||
|
- clm_addr1
|
||||||
|
- clm_addr2
|
||||||
|
- clm_city
|
||||||
|
- clm_ct_fn
|
||||||
|
- clm_ct_ln
|
||||||
|
- clm_ct_ph
|
||||||
|
- clm_ct_phx
|
||||||
|
- clm_ctry
|
||||||
|
- clm_ea
|
||||||
|
- clm_fax
|
||||||
|
- clm_faxx
|
||||||
|
- clm_no
|
||||||
|
- clm_ofc_id
|
||||||
|
- clm_ofc_nm
|
||||||
|
- clm_ph1
|
||||||
|
- clm_ph1x
|
||||||
|
- clm_ph2
|
||||||
|
- clm_ph2x
|
||||||
|
- clm_st
|
||||||
|
- clm_title
|
||||||
|
- clm_total
|
||||||
|
- clm_zip
|
||||||
|
- converted
|
||||||
|
- created_at
|
||||||
|
- csr
|
||||||
|
- cust_pr
|
||||||
|
- date_closed
|
||||||
|
- date_estimated
|
||||||
|
- date_exported
|
||||||
|
- date_invoiced
|
||||||
|
- date_open
|
||||||
|
- date_scheduled
|
||||||
|
- ded_amt
|
||||||
|
- ded_status
|
||||||
|
- depreciation_taxes
|
||||||
|
- est_addr1
|
||||||
|
- est_addr2
|
||||||
|
- est_city
|
||||||
|
- est_co_nm
|
||||||
|
- est_ct_fn
|
||||||
|
- est_ct_ln
|
||||||
|
- est_ctry
|
||||||
|
- est_ea
|
||||||
|
- est_number
|
||||||
|
- est_ph1
|
||||||
|
- est_st
|
||||||
|
- est_zip
|
||||||
|
- federal_tax_payable
|
||||||
|
- federal_tax_rate
|
||||||
|
- g_bett_amt
|
||||||
|
- id
|
||||||
|
- inproduction
|
||||||
|
- ins_addr1
|
||||||
|
- ins_addr2
|
||||||
|
- ins_city
|
||||||
|
- ins_co_id
|
||||||
|
- ins_co_nm
|
||||||
|
- ins_ct_fn
|
||||||
|
- ins_ct_ln
|
||||||
|
- ins_ct_ph
|
||||||
|
- ins_ct_phx
|
||||||
|
- ins_ctry
|
||||||
|
- ins_ea
|
||||||
|
- ins_fax
|
||||||
|
- ins_faxx
|
||||||
|
- ins_memo
|
||||||
|
- ins_ph1
|
||||||
|
- ins_ph1x
|
||||||
|
- ins_ph2
|
||||||
|
- ins_ph2x
|
||||||
|
- ins_st
|
||||||
|
- ins_title
|
||||||
|
- ins_zip
|
||||||
|
- insd_addr1
|
||||||
|
- insd_addr2
|
||||||
|
- insd_city
|
||||||
|
- insd_co_nm
|
||||||
|
- insd_ctry
|
||||||
|
- insd_ea
|
||||||
|
- insd_fax
|
||||||
|
- insd_faxx
|
||||||
|
- insd_fn
|
||||||
|
- insd_ln
|
||||||
|
- insd_ph1
|
||||||
|
- insd_ph1x
|
||||||
|
- insd_ph2
|
||||||
|
- insd_ph2x
|
||||||
|
- insd_st
|
||||||
|
- insd_title
|
||||||
|
- insd_zip
|
||||||
|
- invoice_date
|
||||||
|
- job_totals
|
||||||
|
- kmin
|
||||||
|
- kmout
|
||||||
|
- labor_rate_desc
|
||||||
|
- labor_rate_id
|
||||||
|
- local_tax_rate
|
||||||
|
- loss_cat
|
||||||
|
- loss_date
|
||||||
|
- loss_desc
|
||||||
|
- loss_type
|
||||||
|
- other_amount_payable
|
||||||
|
- owner_owing
|
||||||
|
- ownerid
|
||||||
|
- ownr_addr1
|
||||||
|
- ownr_addr2
|
||||||
|
- ownr_city
|
||||||
|
- ownr_co_nm
|
||||||
|
- ownr_ctry
|
||||||
|
- ownr_ea
|
||||||
|
- ownr_fax
|
||||||
|
- ownr_faxx
|
||||||
|
- ownr_fn
|
||||||
|
- ownr_ln
|
||||||
|
- ownr_ph1
|
||||||
|
- ownr_ph1x
|
||||||
|
- ownr_ph2
|
||||||
|
- ownr_ph2x
|
||||||
|
- ownr_st
|
||||||
|
- ownr_title
|
||||||
|
- ownr_zip
|
||||||
|
- parts_tax_rates
|
||||||
|
- pay_amt
|
||||||
|
- pay_chknm
|
||||||
|
- pay_date
|
||||||
|
- pay_type
|
||||||
|
- payee_nms
|
||||||
|
- plate_no
|
||||||
|
- plate_st
|
||||||
|
- po_number
|
||||||
|
- policy_no
|
||||||
|
- rate_atp
|
||||||
|
- rate_la1
|
||||||
|
- rate_la2
|
||||||
|
- rate_la3
|
||||||
|
- rate_la4
|
||||||
|
- rate_laa
|
||||||
|
- rate_lab
|
||||||
|
- rate_lad
|
||||||
|
- rate_lae
|
||||||
|
- rate_laf
|
||||||
|
- rate_lag
|
||||||
|
- rate_lam
|
||||||
|
- rate_lar
|
||||||
|
- rate_las
|
||||||
|
- rate_lau
|
||||||
|
- rate_ma2s
|
||||||
|
- rate_ma2t
|
||||||
|
- rate_ma3s
|
||||||
|
- rate_mabl
|
||||||
|
- rate_macs
|
||||||
|
- rate_mahw
|
||||||
|
- rate_mapa
|
||||||
|
- rate_mash
|
||||||
|
- rate_matd
|
||||||
|
- referral_source
|
||||||
|
- regie_number
|
||||||
|
- ro_number
|
||||||
|
- scheduled_completion
|
||||||
|
- scheduled_delivery
|
||||||
|
- scheduled_in
|
||||||
|
- selling_dealer
|
||||||
|
- selling_dealer_contact
|
||||||
|
- servicing_dealer
|
||||||
|
- servicing_dealer_contact
|
||||||
|
- shopid
|
||||||
|
- special_coverage_policy
|
||||||
|
- state_tax_rate
|
||||||
|
- status
|
||||||
|
- statusid
|
||||||
|
- storage_payable
|
||||||
|
- tax_lbr_rt
|
||||||
|
- tax_levies_rt
|
||||||
|
- tax_paint_mat_rt
|
||||||
|
- tax_predis
|
||||||
|
- tax_prethr
|
||||||
|
- tax_pstthr
|
||||||
|
- tax_str_rt
|
||||||
|
- tax_sub_rt
|
||||||
|
- tax_thramt
|
||||||
|
- tax_tow_rt
|
||||||
|
- theft_ind
|
||||||
|
- tlos_ind
|
||||||
|
- towing_payable
|
||||||
|
- unit_number
|
||||||
|
- updated_at
|
||||||
|
- v_color
|
||||||
|
- v_make_desc
|
||||||
|
- v_model_desc
|
||||||
|
- v_model_yr
|
||||||
|
- v_vin
|
||||||
|
- vehicleid
|
||||||
|
localPresets:
|
||||||
|
- key: ""
|
||||||
|
value: ""
|
||||||
|
set: {}
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: jobs
|
||||||
|
schema: public
|
||||||
|
type: create_insert_permission
|
||||||
@@ -0,0 +1,251 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: jobs
|
||||||
|
schema: public
|
||||||
|
type: drop_select_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
allow_aggregations: false
|
||||||
|
columns:
|
||||||
|
- actual_completion
|
||||||
|
- actual_delivery
|
||||||
|
- actual_in
|
||||||
|
- adj_g_disc
|
||||||
|
- adj_strdis
|
||||||
|
- adj_towdis
|
||||||
|
- adjustment_bottom_line
|
||||||
|
- agt_addr1
|
||||||
|
- agt_addr2
|
||||||
|
- agt_city
|
||||||
|
- agt_co_id
|
||||||
|
- agt_co_nm
|
||||||
|
- agt_ct_fn
|
||||||
|
- agt_ct_ln
|
||||||
|
- agt_ct_ph
|
||||||
|
- agt_ct_phx
|
||||||
|
- agt_ctry
|
||||||
|
- agt_ea
|
||||||
|
- agt_fax
|
||||||
|
- agt_faxx
|
||||||
|
- agt_lic_no
|
||||||
|
- agt_ph1
|
||||||
|
- agt_ph1x
|
||||||
|
- agt_ph2
|
||||||
|
- agt_ph2x
|
||||||
|
- agt_st
|
||||||
|
- agt_zip
|
||||||
|
- area_of_damage
|
||||||
|
- asgn_date
|
||||||
|
- asgn_no
|
||||||
|
- asgn_type
|
||||||
|
- cat_no
|
||||||
|
- cieca_stl
|
||||||
|
- cieca_ttl
|
||||||
|
- ciecaid
|
||||||
|
- clm_addr1
|
||||||
|
- clm_addr2
|
||||||
|
- clm_city
|
||||||
|
- clm_ct_fn
|
||||||
|
- clm_ct_ln
|
||||||
|
- clm_ct_ph
|
||||||
|
- clm_ct_phx
|
||||||
|
- clm_ctry
|
||||||
|
- clm_ea
|
||||||
|
- clm_fax
|
||||||
|
- clm_faxx
|
||||||
|
- clm_no
|
||||||
|
- clm_ofc_id
|
||||||
|
- clm_ofc_nm
|
||||||
|
- clm_ph1
|
||||||
|
- clm_ph1x
|
||||||
|
- clm_ph2
|
||||||
|
- clm_ph2x
|
||||||
|
- clm_st
|
||||||
|
- clm_title
|
||||||
|
- clm_total
|
||||||
|
- clm_zip
|
||||||
|
- converted
|
||||||
|
- created_at
|
||||||
|
- csr
|
||||||
|
- cust_pr
|
||||||
|
- date_closed
|
||||||
|
- date_estimated
|
||||||
|
- date_exported
|
||||||
|
- date_invoiced
|
||||||
|
- date_open
|
||||||
|
- date_scheduled
|
||||||
|
- ded_amt
|
||||||
|
- ded_status
|
||||||
|
- depreciation_taxes
|
||||||
|
- est_addr1
|
||||||
|
- est_addr2
|
||||||
|
- est_city
|
||||||
|
- est_co_nm
|
||||||
|
- est_ct_fn
|
||||||
|
- est_ct_ln
|
||||||
|
- est_ctry
|
||||||
|
- est_ea
|
||||||
|
- est_number
|
||||||
|
- est_ph1
|
||||||
|
- est_st
|
||||||
|
- est_zip
|
||||||
|
- federal_tax_payable
|
||||||
|
- federal_tax_rate
|
||||||
|
- g_bett_amt
|
||||||
|
- id
|
||||||
|
- inproduction
|
||||||
|
- ins_addr1
|
||||||
|
- ins_addr2
|
||||||
|
- ins_city
|
||||||
|
- ins_co_id
|
||||||
|
- ins_co_nm
|
||||||
|
- ins_ct_fn
|
||||||
|
- ins_ct_ln
|
||||||
|
- ins_ct_ph
|
||||||
|
- ins_ct_phx
|
||||||
|
- ins_ctry
|
||||||
|
- ins_ea
|
||||||
|
- ins_fax
|
||||||
|
- ins_faxx
|
||||||
|
- ins_memo
|
||||||
|
- ins_ph1
|
||||||
|
- ins_ph1x
|
||||||
|
- ins_ph2
|
||||||
|
- ins_ph2x
|
||||||
|
- ins_st
|
||||||
|
- ins_title
|
||||||
|
- ins_zip
|
||||||
|
- insd_addr1
|
||||||
|
- insd_addr2
|
||||||
|
- insd_city
|
||||||
|
- insd_co_nm
|
||||||
|
- insd_ctry
|
||||||
|
- insd_ea
|
||||||
|
- insd_fax
|
||||||
|
- insd_faxx
|
||||||
|
- insd_fn
|
||||||
|
- insd_ln
|
||||||
|
- insd_ph1
|
||||||
|
- insd_ph1x
|
||||||
|
- insd_ph2
|
||||||
|
- insd_ph2x
|
||||||
|
- insd_st
|
||||||
|
- insd_title
|
||||||
|
- insd_zip
|
||||||
|
- invoice_date
|
||||||
|
- kmin
|
||||||
|
- kmout
|
||||||
|
- labor_rate_desc
|
||||||
|
- labor_rate_id
|
||||||
|
- local_tax_rate
|
||||||
|
- loss_cat
|
||||||
|
- loss_date
|
||||||
|
- loss_desc
|
||||||
|
- loss_type
|
||||||
|
- other_amount_payable
|
||||||
|
- owner_owing
|
||||||
|
- ownerid
|
||||||
|
- ownr_addr1
|
||||||
|
- ownr_addr2
|
||||||
|
- ownr_city
|
||||||
|
- ownr_co_nm
|
||||||
|
- ownr_ctry
|
||||||
|
- ownr_ea
|
||||||
|
- ownr_fax
|
||||||
|
- ownr_faxx
|
||||||
|
- ownr_fn
|
||||||
|
- ownr_ln
|
||||||
|
- ownr_ph1
|
||||||
|
- ownr_ph1x
|
||||||
|
- ownr_ph2
|
||||||
|
- ownr_ph2x
|
||||||
|
- ownr_st
|
||||||
|
- ownr_title
|
||||||
|
- ownr_zip
|
||||||
|
- parts_tax_rates
|
||||||
|
- pay_amt
|
||||||
|
- pay_chknm
|
||||||
|
- pay_date
|
||||||
|
- pay_type
|
||||||
|
- payee_nms
|
||||||
|
- plate_no
|
||||||
|
- plate_st
|
||||||
|
- po_number
|
||||||
|
- policy_no
|
||||||
|
- rate_atp
|
||||||
|
- rate_la1
|
||||||
|
- rate_la2
|
||||||
|
- rate_la3
|
||||||
|
- rate_la4
|
||||||
|
- rate_laa
|
||||||
|
- rate_lab
|
||||||
|
- rate_lad
|
||||||
|
- rate_lae
|
||||||
|
- rate_laf
|
||||||
|
- rate_lag
|
||||||
|
- rate_lam
|
||||||
|
- rate_lar
|
||||||
|
- rate_las
|
||||||
|
- rate_lau
|
||||||
|
- rate_ma2s
|
||||||
|
- rate_ma2t
|
||||||
|
- rate_ma3s
|
||||||
|
- rate_mabl
|
||||||
|
- rate_macs
|
||||||
|
- rate_mahw
|
||||||
|
- rate_mapa
|
||||||
|
- rate_mash
|
||||||
|
- rate_matd
|
||||||
|
- referral_source
|
||||||
|
- regie_number
|
||||||
|
- ro_number
|
||||||
|
- scheduled_completion
|
||||||
|
- scheduled_delivery
|
||||||
|
- scheduled_in
|
||||||
|
- selling_dealer
|
||||||
|
- selling_dealer_contact
|
||||||
|
- servicing_dealer
|
||||||
|
- servicing_dealer_contact
|
||||||
|
- shopid
|
||||||
|
- special_coverage_policy
|
||||||
|
- state_tax_rate
|
||||||
|
- status
|
||||||
|
- statusid
|
||||||
|
- storage_payable
|
||||||
|
- tax_lbr_rt
|
||||||
|
- tax_levies_rt
|
||||||
|
- tax_paint_mat_rt
|
||||||
|
- tax_predis
|
||||||
|
- tax_prethr
|
||||||
|
- tax_pstthr
|
||||||
|
- tax_str_rt
|
||||||
|
- tax_sub_rt
|
||||||
|
- tax_thramt
|
||||||
|
- tax_tow_rt
|
||||||
|
- theft_ind
|
||||||
|
- tlos_ind
|
||||||
|
- towing_payable
|
||||||
|
- unit_number
|
||||||
|
- updated_at
|
||||||
|
- v_color
|
||||||
|
- v_make_desc
|
||||||
|
- v_model_desc
|
||||||
|
- v_model_yr
|
||||||
|
- v_vin
|
||||||
|
- vehicleid
|
||||||
|
computed_fields: []
|
||||||
|
filter:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: jobs
|
||||||
|
schema: public
|
||||||
|
type: create_select_permission
|
||||||
@@ -0,0 +1,252 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: jobs
|
||||||
|
schema: public
|
||||||
|
type: drop_select_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
allow_aggregations: false
|
||||||
|
columns:
|
||||||
|
- actual_completion
|
||||||
|
- actual_delivery
|
||||||
|
- actual_in
|
||||||
|
- adj_g_disc
|
||||||
|
- adj_strdis
|
||||||
|
- adj_towdis
|
||||||
|
- adjustment_bottom_line
|
||||||
|
- agt_addr1
|
||||||
|
- agt_addr2
|
||||||
|
- agt_city
|
||||||
|
- agt_co_id
|
||||||
|
- agt_co_nm
|
||||||
|
- agt_ct_fn
|
||||||
|
- agt_ct_ln
|
||||||
|
- agt_ct_ph
|
||||||
|
- agt_ct_phx
|
||||||
|
- agt_ctry
|
||||||
|
- agt_ea
|
||||||
|
- agt_fax
|
||||||
|
- agt_faxx
|
||||||
|
- agt_lic_no
|
||||||
|
- agt_ph1
|
||||||
|
- agt_ph1x
|
||||||
|
- agt_ph2
|
||||||
|
- agt_ph2x
|
||||||
|
- agt_st
|
||||||
|
- agt_zip
|
||||||
|
- area_of_damage
|
||||||
|
- asgn_date
|
||||||
|
- asgn_no
|
||||||
|
- asgn_type
|
||||||
|
- cat_no
|
||||||
|
- cieca_stl
|
||||||
|
- cieca_ttl
|
||||||
|
- ciecaid
|
||||||
|
- clm_addr1
|
||||||
|
- clm_addr2
|
||||||
|
- clm_city
|
||||||
|
- clm_ct_fn
|
||||||
|
- clm_ct_ln
|
||||||
|
- clm_ct_ph
|
||||||
|
- clm_ct_phx
|
||||||
|
- clm_ctry
|
||||||
|
- clm_ea
|
||||||
|
- clm_fax
|
||||||
|
- clm_faxx
|
||||||
|
- clm_no
|
||||||
|
- clm_ofc_id
|
||||||
|
- clm_ofc_nm
|
||||||
|
- clm_ph1
|
||||||
|
- clm_ph1x
|
||||||
|
- clm_ph2
|
||||||
|
- clm_ph2x
|
||||||
|
- clm_st
|
||||||
|
- clm_title
|
||||||
|
- clm_total
|
||||||
|
- clm_zip
|
||||||
|
- converted
|
||||||
|
- created_at
|
||||||
|
- csr
|
||||||
|
- cust_pr
|
||||||
|
- date_closed
|
||||||
|
- date_estimated
|
||||||
|
- date_exported
|
||||||
|
- date_invoiced
|
||||||
|
- date_open
|
||||||
|
- date_scheduled
|
||||||
|
- ded_amt
|
||||||
|
- ded_status
|
||||||
|
- depreciation_taxes
|
||||||
|
- est_addr1
|
||||||
|
- est_addr2
|
||||||
|
- est_city
|
||||||
|
- est_co_nm
|
||||||
|
- est_ct_fn
|
||||||
|
- est_ct_ln
|
||||||
|
- est_ctry
|
||||||
|
- est_ea
|
||||||
|
- est_number
|
||||||
|
- est_ph1
|
||||||
|
- est_st
|
||||||
|
- est_zip
|
||||||
|
- federal_tax_payable
|
||||||
|
- federal_tax_rate
|
||||||
|
- g_bett_amt
|
||||||
|
- id
|
||||||
|
- inproduction
|
||||||
|
- ins_addr1
|
||||||
|
- ins_addr2
|
||||||
|
- ins_city
|
||||||
|
- ins_co_id
|
||||||
|
- ins_co_nm
|
||||||
|
- ins_ct_fn
|
||||||
|
- ins_ct_ln
|
||||||
|
- ins_ct_ph
|
||||||
|
- ins_ct_phx
|
||||||
|
- ins_ctry
|
||||||
|
- ins_ea
|
||||||
|
- ins_fax
|
||||||
|
- ins_faxx
|
||||||
|
- ins_memo
|
||||||
|
- ins_ph1
|
||||||
|
- ins_ph1x
|
||||||
|
- ins_ph2
|
||||||
|
- ins_ph2x
|
||||||
|
- ins_st
|
||||||
|
- ins_title
|
||||||
|
- ins_zip
|
||||||
|
- insd_addr1
|
||||||
|
- insd_addr2
|
||||||
|
- insd_city
|
||||||
|
- insd_co_nm
|
||||||
|
- insd_ctry
|
||||||
|
- insd_ea
|
||||||
|
- insd_fax
|
||||||
|
- insd_faxx
|
||||||
|
- insd_fn
|
||||||
|
- insd_ln
|
||||||
|
- insd_ph1
|
||||||
|
- insd_ph1x
|
||||||
|
- insd_ph2
|
||||||
|
- insd_ph2x
|
||||||
|
- insd_st
|
||||||
|
- insd_title
|
||||||
|
- insd_zip
|
||||||
|
- invoice_date
|
||||||
|
- job_totals
|
||||||
|
- kmin
|
||||||
|
- kmout
|
||||||
|
- labor_rate_desc
|
||||||
|
- labor_rate_id
|
||||||
|
- local_tax_rate
|
||||||
|
- loss_cat
|
||||||
|
- loss_date
|
||||||
|
- loss_desc
|
||||||
|
- loss_type
|
||||||
|
- other_amount_payable
|
||||||
|
- owner_owing
|
||||||
|
- ownerid
|
||||||
|
- ownr_addr1
|
||||||
|
- ownr_addr2
|
||||||
|
- ownr_city
|
||||||
|
- ownr_co_nm
|
||||||
|
- ownr_ctry
|
||||||
|
- ownr_ea
|
||||||
|
- ownr_fax
|
||||||
|
- ownr_faxx
|
||||||
|
- ownr_fn
|
||||||
|
- ownr_ln
|
||||||
|
- ownr_ph1
|
||||||
|
- ownr_ph1x
|
||||||
|
- ownr_ph2
|
||||||
|
- ownr_ph2x
|
||||||
|
- ownr_st
|
||||||
|
- ownr_title
|
||||||
|
- ownr_zip
|
||||||
|
- parts_tax_rates
|
||||||
|
- pay_amt
|
||||||
|
- pay_chknm
|
||||||
|
- pay_date
|
||||||
|
- pay_type
|
||||||
|
- payee_nms
|
||||||
|
- plate_no
|
||||||
|
- plate_st
|
||||||
|
- po_number
|
||||||
|
- policy_no
|
||||||
|
- rate_atp
|
||||||
|
- rate_la1
|
||||||
|
- rate_la2
|
||||||
|
- rate_la3
|
||||||
|
- rate_la4
|
||||||
|
- rate_laa
|
||||||
|
- rate_lab
|
||||||
|
- rate_lad
|
||||||
|
- rate_lae
|
||||||
|
- rate_laf
|
||||||
|
- rate_lag
|
||||||
|
- rate_lam
|
||||||
|
- rate_lar
|
||||||
|
- rate_las
|
||||||
|
- rate_lau
|
||||||
|
- rate_ma2s
|
||||||
|
- rate_ma2t
|
||||||
|
- rate_ma3s
|
||||||
|
- rate_mabl
|
||||||
|
- rate_macs
|
||||||
|
- rate_mahw
|
||||||
|
- rate_mapa
|
||||||
|
- rate_mash
|
||||||
|
- rate_matd
|
||||||
|
- referral_source
|
||||||
|
- regie_number
|
||||||
|
- ro_number
|
||||||
|
- scheduled_completion
|
||||||
|
- scheduled_delivery
|
||||||
|
- scheduled_in
|
||||||
|
- selling_dealer
|
||||||
|
- selling_dealer_contact
|
||||||
|
- servicing_dealer
|
||||||
|
- servicing_dealer_contact
|
||||||
|
- shopid
|
||||||
|
- special_coverage_policy
|
||||||
|
- state_tax_rate
|
||||||
|
- status
|
||||||
|
- statusid
|
||||||
|
- storage_payable
|
||||||
|
- tax_lbr_rt
|
||||||
|
- tax_levies_rt
|
||||||
|
- tax_paint_mat_rt
|
||||||
|
- tax_predis
|
||||||
|
- tax_prethr
|
||||||
|
- tax_pstthr
|
||||||
|
- tax_str_rt
|
||||||
|
- tax_sub_rt
|
||||||
|
- tax_thramt
|
||||||
|
- tax_tow_rt
|
||||||
|
- theft_ind
|
||||||
|
- tlos_ind
|
||||||
|
- towing_payable
|
||||||
|
- unit_number
|
||||||
|
- updated_at
|
||||||
|
- v_color
|
||||||
|
- v_make_desc
|
||||||
|
- v_model_desc
|
||||||
|
- v_model_yr
|
||||||
|
- v_vin
|
||||||
|
- vehicleid
|
||||||
|
computed_fields: []
|
||||||
|
filter:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: jobs
|
||||||
|
schema: public
|
||||||
|
type: create_select_permission
|
||||||
@@ -0,0 +1,253 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: jobs
|
||||||
|
schema: public
|
||||||
|
type: drop_update_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
columns:
|
||||||
|
- actual_completion
|
||||||
|
- actual_delivery
|
||||||
|
- actual_in
|
||||||
|
- adj_g_disc
|
||||||
|
- adj_strdis
|
||||||
|
- adj_towdis
|
||||||
|
- adjustment_bottom_line
|
||||||
|
- agt_addr1
|
||||||
|
- agt_addr2
|
||||||
|
- agt_city
|
||||||
|
- agt_co_id
|
||||||
|
- agt_co_nm
|
||||||
|
- agt_ct_fn
|
||||||
|
- agt_ct_ln
|
||||||
|
- agt_ct_ph
|
||||||
|
- agt_ct_phx
|
||||||
|
- agt_ctry
|
||||||
|
- agt_ea
|
||||||
|
- agt_fax
|
||||||
|
- agt_faxx
|
||||||
|
- agt_lic_no
|
||||||
|
- agt_ph1
|
||||||
|
- agt_ph1x
|
||||||
|
- agt_ph2
|
||||||
|
- agt_ph2x
|
||||||
|
- agt_st
|
||||||
|
- agt_zip
|
||||||
|
- area_of_damage
|
||||||
|
- asgn_date
|
||||||
|
- asgn_no
|
||||||
|
- asgn_type
|
||||||
|
- cat_no
|
||||||
|
- cieca_stl
|
||||||
|
- cieca_ttl
|
||||||
|
- ciecaid
|
||||||
|
- clm_addr1
|
||||||
|
- clm_addr2
|
||||||
|
- clm_city
|
||||||
|
- clm_ct_fn
|
||||||
|
- clm_ct_ln
|
||||||
|
- clm_ct_ph
|
||||||
|
- clm_ct_phx
|
||||||
|
- clm_ctry
|
||||||
|
- clm_ea
|
||||||
|
- clm_fax
|
||||||
|
- clm_faxx
|
||||||
|
- clm_no
|
||||||
|
- clm_ofc_id
|
||||||
|
- clm_ofc_nm
|
||||||
|
- clm_ph1
|
||||||
|
- clm_ph1x
|
||||||
|
- clm_ph2
|
||||||
|
- clm_ph2x
|
||||||
|
- clm_st
|
||||||
|
- clm_title
|
||||||
|
- clm_total
|
||||||
|
- clm_zip
|
||||||
|
- converted
|
||||||
|
- created_at
|
||||||
|
- csr
|
||||||
|
- cust_pr
|
||||||
|
- date_closed
|
||||||
|
- date_estimated
|
||||||
|
- date_exported
|
||||||
|
- date_invoiced
|
||||||
|
- date_open
|
||||||
|
- date_scheduled
|
||||||
|
- ded_amt
|
||||||
|
- ded_status
|
||||||
|
- depreciation_taxes
|
||||||
|
- est_addr1
|
||||||
|
- est_addr2
|
||||||
|
- est_city
|
||||||
|
- est_co_nm
|
||||||
|
- est_ct_fn
|
||||||
|
- est_ct_ln
|
||||||
|
- est_ctry
|
||||||
|
- est_ea
|
||||||
|
- est_number
|
||||||
|
- est_ph1
|
||||||
|
- est_st
|
||||||
|
- est_zip
|
||||||
|
- federal_tax_payable
|
||||||
|
- federal_tax_rate
|
||||||
|
- g_bett_amt
|
||||||
|
- id
|
||||||
|
- inproduction
|
||||||
|
- ins_addr1
|
||||||
|
- ins_addr2
|
||||||
|
- ins_city
|
||||||
|
- ins_co_id
|
||||||
|
- ins_co_nm
|
||||||
|
- ins_ct_fn
|
||||||
|
- ins_ct_ln
|
||||||
|
- ins_ct_ph
|
||||||
|
- ins_ct_phx
|
||||||
|
- ins_ctry
|
||||||
|
- ins_ea
|
||||||
|
- ins_fax
|
||||||
|
- ins_faxx
|
||||||
|
- ins_memo
|
||||||
|
- ins_ph1
|
||||||
|
- ins_ph1x
|
||||||
|
- ins_ph2
|
||||||
|
- ins_ph2x
|
||||||
|
- ins_st
|
||||||
|
- ins_title
|
||||||
|
- ins_zip
|
||||||
|
- insd_addr1
|
||||||
|
- insd_addr2
|
||||||
|
- insd_city
|
||||||
|
- insd_co_nm
|
||||||
|
- insd_ctry
|
||||||
|
- insd_ea
|
||||||
|
- insd_fax
|
||||||
|
- insd_faxx
|
||||||
|
- insd_fn
|
||||||
|
- insd_ln
|
||||||
|
- insd_ph1
|
||||||
|
- insd_ph1x
|
||||||
|
- insd_ph2
|
||||||
|
- insd_ph2x
|
||||||
|
- insd_st
|
||||||
|
- insd_title
|
||||||
|
- insd_zip
|
||||||
|
- invoice_date
|
||||||
|
- kmin
|
||||||
|
- kmout
|
||||||
|
- labor_rate_desc
|
||||||
|
- labor_rate_id
|
||||||
|
- local_tax_rate
|
||||||
|
- loss_cat
|
||||||
|
- loss_date
|
||||||
|
- loss_desc
|
||||||
|
- loss_type
|
||||||
|
- other_amount_payable
|
||||||
|
- owner_owing
|
||||||
|
- ownerid
|
||||||
|
- ownr_addr1
|
||||||
|
- ownr_addr2
|
||||||
|
- ownr_city
|
||||||
|
- ownr_co_nm
|
||||||
|
- ownr_ctry
|
||||||
|
- ownr_ea
|
||||||
|
- ownr_fax
|
||||||
|
- ownr_faxx
|
||||||
|
- ownr_fn
|
||||||
|
- ownr_ln
|
||||||
|
- ownr_ph1
|
||||||
|
- ownr_ph1x
|
||||||
|
- ownr_ph2
|
||||||
|
- ownr_ph2x
|
||||||
|
- ownr_st
|
||||||
|
- ownr_title
|
||||||
|
- ownr_zip
|
||||||
|
- parts_tax_rates
|
||||||
|
- pay_amt
|
||||||
|
- pay_chknm
|
||||||
|
- pay_date
|
||||||
|
- pay_type
|
||||||
|
- payee_nms
|
||||||
|
- plate_no
|
||||||
|
- plate_st
|
||||||
|
- po_number
|
||||||
|
- policy_no
|
||||||
|
- rate_atp
|
||||||
|
- rate_la1
|
||||||
|
- rate_la2
|
||||||
|
- rate_la3
|
||||||
|
- rate_la4
|
||||||
|
- rate_laa
|
||||||
|
- rate_lab
|
||||||
|
- rate_lad
|
||||||
|
- rate_lae
|
||||||
|
- rate_laf
|
||||||
|
- rate_lag
|
||||||
|
- rate_lam
|
||||||
|
- rate_lar
|
||||||
|
- rate_las
|
||||||
|
- rate_lau
|
||||||
|
- rate_ma2s
|
||||||
|
- rate_ma2t
|
||||||
|
- rate_ma3s
|
||||||
|
- rate_mabl
|
||||||
|
- rate_macs
|
||||||
|
- rate_mahw
|
||||||
|
- rate_mapa
|
||||||
|
- rate_mash
|
||||||
|
- rate_matd
|
||||||
|
- referral_source
|
||||||
|
- regie_number
|
||||||
|
- ro_number
|
||||||
|
- scheduled_completion
|
||||||
|
- scheduled_delivery
|
||||||
|
- scheduled_in
|
||||||
|
- selling_dealer
|
||||||
|
- selling_dealer_contact
|
||||||
|
- servicing_dealer
|
||||||
|
- servicing_dealer_contact
|
||||||
|
- shopid
|
||||||
|
- special_coverage_policy
|
||||||
|
- state_tax_rate
|
||||||
|
- status
|
||||||
|
- statusid
|
||||||
|
- storage_payable
|
||||||
|
- tax_lbr_rt
|
||||||
|
- tax_levies_rt
|
||||||
|
- tax_paint_mat_rt
|
||||||
|
- tax_predis
|
||||||
|
- tax_prethr
|
||||||
|
- tax_pstthr
|
||||||
|
- tax_str_rt
|
||||||
|
- tax_sub_rt
|
||||||
|
- tax_thramt
|
||||||
|
- tax_tow_rt
|
||||||
|
- theft_ind
|
||||||
|
- tlos_ind
|
||||||
|
- towing_payable
|
||||||
|
- unit_number
|
||||||
|
- updated_at
|
||||||
|
- v_color
|
||||||
|
- v_make_desc
|
||||||
|
- v_model_desc
|
||||||
|
- v_model_yr
|
||||||
|
- v_vin
|
||||||
|
- vehicleid
|
||||||
|
filter:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
localPresets:
|
||||||
|
- key: ""
|
||||||
|
value: ""
|
||||||
|
set: {}
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: jobs
|
||||||
|
schema: public
|
||||||
|
type: create_update_permission
|
||||||
@@ -0,0 +1,254 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: jobs
|
||||||
|
schema: public
|
||||||
|
type: drop_update_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
columns:
|
||||||
|
- actual_completion
|
||||||
|
- actual_delivery
|
||||||
|
- actual_in
|
||||||
|
- adj_g_disc
|
||||||
|
- adj_strdis
|
||||||
|
- adj_towdis
|
||||||
|
- adjustment_bottom_line
|
||||||
|
- agt_addr1
|
||||||
|
- agt_addr2
|
||||||
|
- agt_city
|
||||||
|
- agt_co_id
|
||||||
|
- agt_co_nm
|
||||||
|
- agt_ct_fn
|
||||||
|
- agt_ct_ln
|
||||||
|
- agt_ct_ph
|
||||||
|
- agt_ct_phx
|
||||||
|
- agt_ctry
|
||||||
|
- agt_ea
|
||||||
|
- agt_fax
|
||||||
|
- agt_faxx
|
||||||
|
- agt_lic_no
|
||||||
|
- agt_ph1
|
||||||
|
- agt_ph1x
|
||||||
|
- agt_ph2
|
||||||
|
- agt_ph2x
|
||||||
|
- agt_st
|
||||||
|
- agt_zip
|
||||||
|
- area_of_damage
|
||||||
|
- asgn_date
|
||||||
|
- asgn_no
|
||||||
|
- asgn_type
|
||||||
|
- cat_no
|
||||||
|
- cieca_stl
|
||||||
|
- cieca_ttl
|
||||||
|
- ciecaid
|
||||||
|
- clm_addr1
|
||||||
|
- clm_addr2
|
||||||
|
- clm_city
|
||||||
|
- clm_ct_fn
|
||||||
|
- clm_ct_ln
|
||||||
|
- clm_ct_ph
|
||||||
|
- clm_ct_phx
|
||||||
|
- clm_ctry
|
||||||
|
- clm_ea
|
||||||
|
- clm_fax
|
||||||
|
- clm_faxx
|
||||||
|
- clm_no
|
||||||
|
- clm_ofc_id
|
||||||
|
- clm_ofc_nm
|
||||||
|
- clm_ph1
|
||||||
|
- clm_ph1x
|
||||||
|
- clm_ph2
|
||||||
|
- clm_ph2x
|
||||||
|
- clm_st
|
||||||
|
- clm_title
|
||||||
|
- clm_total
|
||||||
|
- clm_zip
|
||||||
|
- converted
|
||||||
|
- created_at
|
||||||
|
- csr
|
||||||
|
- cust_pr
|
||||||
|
- date_closed
|
||||||
|
- date_estimated
|
||||||
|
- date_exported
|
||||||
|
- date_invoiced
|
||||||
|
- date_open
|
||||||
|
- date_scheduled
|
||||||
|
- ded_amt
|
||||||
|
- ded_status
|
||||||
|
- depreciation_taxes
|
||||||
|
- est_addr1
|
||||||
|
- est_addr2
|
||||||
|
- est_city
|
||||||
|
- est_co_nm
|
||||||
|
- est_ct_fn
|
||||||
|
- est_ct_ln
|
||||||
|
- est_ctry
|
||||||
|
- est_ea
|
||||||
|
- est_number
|
||||||
|
- est_ph1
|
||||||
|
- est_st
|
||||||
|
- est_zip
|
||||||
|
- federal_tax_payable
|
||||||
|
- federal_tax_rate
|
||||||
|
- g_bett_amt
|
||||||
|
- id
|
||||||
|
- inproduction
|
||||||
|
- ins_addr1
|
||||||
|
- ins_addr2
|
||||||
|
- ins_city
|
||||||
|
- ins_co_id
|
||||||
|
- ins_co_nm
|
||||||
|
- ins_ct_fn
|
||||||
|
- ins_ct_ln
|
||||||
|
- ins_ct_ph
|
||||||
|
- ins_ct_phx
|
||||||
|
- ins_ctry
|
||||||
|
- ins_ea
|
||||||
|
- ins_fax
|
||||||
|
- ins_faxx
|
||||||
|
- ins_memo
|
||||||
|
- ins_ph1
|
||||||
|
- ins_ph1x
|
||||||
|
- ins_ph2
|
||||||
|
- ins_ph2x
|
||||||
|
- ins_st
|
||||||
|
- ins_title
|
||||||
|
- ins_zip
|
||||||
|
- insd_addr1
|
||||||
|
- insd_addr2
|
||||||
|
- insd_city
|
||||||
|
- insd_co_nm
|
||||||
|
- insd_ctry
|
||||||
|
- insd_ea
|
||||||
|
- insd_fax
|
||||||
|
- insd_faxx
|
||||||
|
- insd_fn
|
||||||
|
- insd_ln
|
||||||
|
- insd_ph1
|
||||||
|
- insd_ph1x
|
||||||
|
- insd_ph2
|
||||||
|
- insd_ph2x
|
||||||
|
- insd_st
|
||||||
|
- insd_title
|
||||||
|
- insd_zip
|
||||||
|
- invoice_date
|
||||||
|
- job_totals
|
||||||
|
- kmin
|
||||||
|
- kmout
|
||||||
|
- labor_rate_desc
|
||||||
|
- labor_rate_id
|
||||||
|
- local_tax_rate
|
||||||
|
- loss_cat
|
||||||
|
- loss_date
|
||||||
|
- loss_desc
|
||||||
|
- loss_type
|
||||||
|
- other_amount_payable
|
||||||
|
- owner_owing
|
||||||
|
- ownerid
|
||||||
|
- ownr_addr1
|
||||||
|
- ownr_addr2
|
||||||
|
- ownr_city
|
||||||
|
- ownr_co_nm
|
||||||
|
- ownr_ctry
|
||||||
|
- ownr_ea
|
||||||
|
- ownr_fax
|
||||||
|
- ownr_faxx
|
||||||
|
- ownr_fn
|
||||||
|
- ownr_ln
|
||||||
|
- ownr_ph1
|
||||||
|
- ownr_ph1x
|
||||||
|
- ownr_ph2
|
||||||
|
- ownr_ph2x
|
||||||
|
- ownr_st
|
||||||
|
- ownr_title
|
||||||
|
- ownr_zip
|
||||||
|
- parts_tax_rates
|
||||||
|
- pay_amt
|
||||||
|
- pay_chknm
|
||||||
|
- pay_date
|
||||||
|
- pay_type
|
||||||
|
- payee_nms
|
||||||
|
- plate_no
|
||||||
|
- plate_st
|
||||||
|
- po_number
|
||||||
|
- policy_no
|
||||||
|
- rate_atp
|
||||||
|
- rate_la1
|
||||||
|
- rate_la2
|
||||||
|
- rate_la3
|
||||||
|
- rate_la4
|
||||||
|
- rate_laa
|
||||||
|
- rate_lab
|
||||||
|
- rate_lad
|
||||||
|
- rate_lae
|
||||||
|
- rate_laf
|
||||||
|
- rate_lag
|
||||||
|
- rate_lam
|
||||||
|
- rate_lar
|
||||||
|
- rate_las
|
||||||
|
- rate_lau
|
||||||
|
- rate_ma2s
|
||||||
|
- rate_ma2t
|
||||||
|
- rate_ma3s
|
||||||
|
- rate_mabl
|
||||||
|
- rate_macs
|
||||||
|
- rate_mahw
|
||||||
|
- rate_mapa
|
||||||
|
- rate_mash
|
||||||
|
- rate_matd
|
||||||
|
- referral_source
|
||||||
|
- regie_number
|
||||||
|
- ro_number
|
||||||
|
- scheduled_completion
|
||||||
|
- scheduled_delivery
|
||||||
|
- scheduled_in
|
||||||
|
- selling_dealer
|
||||||
|
- selling_dealer_contact
|
||||||
|
- servicing_dealer
|
||||||
|
- servicing_dealer_contact
|
||||||
|
- shopid
|
||||||
|
- special_coverage_policy
|
||||||
|
- state_tax_rate
|
||||||
|
- status
|
||||||
|
- statusid
|
||||||
|
- storage_payable
|
||||||
|
- tax_lbr_rt
|
||||||
|
- tax_levies_rt
|
||||||
|
- tax_paint_mat_rt
|
||||||
|
- tax_predis
|
||||||
|
- tax_prethr
|
||||||
|
- tax_pstthr
|
||||||
|
- tax_str_rt
|
||||||
|
- tax_sub_rt
|
||||||
|
- tax_thramt
|
||||||
|
- tax_tow_rt
|
||||||
|
- theft_ind
|
||||||
|
- tlos_ind
|
||||||
|
- towing_payable
|
||||||
|
- unit_number
|
||||||
|
- updated_at
|
||||||
|
- v_color
|
||||||
|
- v_make_desc
|
||||||
|
- v_model_desc
|
||||||
|
- v_model_yr
|
||||||
|
- v_vin
|
||||||
|
- vehicleid
|
||||||
|
filter:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
localPresets:
|
||||||
|
- key: ""
|
||||||
|
value: ""
|
||||||
|
set: {}
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: jobs
|
||||||
|
schema: public
|
||||||
|
type: create_update_permission
|
||||||
Reference in New Issue
Block a user