diff --git a/client/src/components/job-totals-table/job-totals-table.container.jsx b/client/src/components/job-totals-table/job-totals-table.container.jsx deleted file mode 100644 index f4cf9f19f..000000000 --- a/client/src/components/job-totals-table/job-totals-table.container.jsx +++ /dev/null @@ -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 ; - if (error) return ; - - return ( -
- -
- ); -} - -export default connect(mapStateToProps, null)(JobTotalsTableContainer); diff --git a/client/src/components/job-totals-table/job-totals.utility.js b/client/src/components/job-totals-table/job-totals.utility.js index a3c327997..3b31eb11c 100644 --- a/client/src/components/job-totals-table/job-totals.utility.js +++ b/client/src/components/job-totals-table/job-totals.utility.js @@ -15,11 +15,10 @@ function CalculateTaxesTotals(job, otherTotals) { otherTotals.parts.parts.subtotal + otherTotals.parts.sublets.subtotal + otherTotals.rates.subtotal + - job.towing_payable + - job.storage_payable; //Levies should be included?? + (job.towing_payable || 0) + + (job.storage_payable || 0); //Levies should be included?? const statePartsTax = job.joblines.reduce((acc, val) => { - console.log("val", val); if (!!!val.tax_part) return acc; if (!!job.parts_tax_rates[val.part_type]) { return ( @@ -75,82 +74,82 @@ function CalculateRatesTotals(ratesList, shoprates) { hours: jobLines .filter((item) => item.mod_lbr_ty === "LA1") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), - rate: ratesList.rate_la1, + rate: ratesList.rate_la1 || 0, }, rate_la2: { hours: jobLines .filter((item) => item.mod_lbr_ty === "LA2") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), - rate: ratesList.rate_la2, + rate: ratesList.rate_la2 || 0, }, rate_la3: { - rate: ratesList.rate_la3, + rate: ratesList.rate_la3 || 0, hours: jobLines .filter((item) => item.mod_lbr_ty === "LA3") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), }, rate_la4: { - rate: ratesList.rate_la4, + rate: ratesList.rate_la4 || 0, hours: jobLines .filter((item) => item.mod_lbr_ty === "LA4") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), }, rate_laa: { - rate: ratesList.rate_laa, + rate: ratesList.rate_laa || 0, hours: jobLines .filter((item) => item.mod_lbr_ty === "LAA") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), }, rate_lab: { - rate: ratesList.rate_lab, + rate: ratesList.rate_lab || 0, hours: jobLines .filter((item) => item.mod_lbr_ty === "LAB") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), }, rate_lad: { - rate: ratesList.rate_lad, + rate: ratesList.rate_lad || 0, hours: jobLines .filter((item) => item.mod_lbr_ty === "LAD") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), }, rate_lae: { - rate: ratesList.rate_lae, + rate: ratesList.rate_lae || 0, hours: jobLines .filter((item) => item.mod_lbr_ty === "LAE") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), }, rate_laf: { - rate: ratesList.rate_laf, + rate: ratesList.rate_laf || 0, hours: jobLines .filter((item) => item.mod_lbr_ty === "LAF") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), }, rate_lag: { - rate: ratesList.rate_lag, + rate: ratesList.rate_lag || 0, hours: jobLines .filter((item) => item.mod_lbr_ty === "LAG") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), }, rate_lam: { - rate: ratesList.rate_lam, + rate: ratesList.rate_lam || 0, hours: jobLines .filter((item) => item.mod_lbr_ty === "LAM") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), }, rate_lar: { - rate: ratesList.rate_lar, + rate: ratesList.rate_lar || 0, hours: jobLines .filter((item) => item.mod_lbr_ty === "LAR") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), }, rate_las: { - rate: ratesList.rate_las, + rate: ratesList.rate_las || 0, hours: jobLines .filter((item) => item.mod_lbr_ty === "LAS") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), }, rate_lau: { - rate: ratesList.rate_lau, + rate: ratesList.rate_lau || 0, hours: jobLines .filter((item) => item.mod_lbr_ty === "LAU") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), @@ -176,13 +175,13 @@ function CalculateRatesTotals(ratesList, shoprates) { : 0, }, paint_mat: { - rate: ratesList.rate_mapa, + rate: ratesList.rate_mapa || 0, hours: jobLines .filter((item) => item.mod_lbr_ty === "LAR") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), }, shop_mat: { - rate: ratesList.rate_mash, + rate: ratesList.rate_mash || 0, hours: jobLines .filter((item) => item.mod_lbr_ty !== "LAR") .reduce((acc, value) => acc + value.mod_lb_hrs, 0), diff --git a/client/src/components/jobs-available-new/jobs-available-new.container.jsx b/client/src/components/jobs-available-new/jobs-available-new.container.jsx index ba4e5cfbc..645013d71 100644 --- a/client/src/components/jobs-available-new/jobs-available-new.container.jsx +++ b/client/src/components/jobs-available-new/jobs-available-new.container.jsx @@ -1,23 +1,35 @@ +import { useMutation, useQuery } from "@apollo/react-hooks"; import { notification } from "antd"; import React, { useState } from "react"; -import { useMutation, useQuery } from "@apollo/react-hooks"; import { useTranslation } from "react-i18next"; -import { withRouter } from "react-router-dom"; -import { DELETE_ALL_AVAILABLE_NEW_JOBS, QUERY_AVAILABLE_NEW_JOBS } from "../../graphql/available-jobs.queries"; +import { connect } from "react-redux"; +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 { selectBodyshop } from "../../redux/user/user.selectors"; import AlertComponent from "../alert/alert.component"; import LoadingSpinner from "../loading-spinner/loading-spinner.component"; import JobsAvailableComponent from "./jobs-available-new.component"; -export default withRouter(function JobsAvailableContainer({ +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); + +export function JobsAvailableContainer({ deleteJob, estDataLazyLoad, - history + bodyshop, }) { const { loading, error, data, refetch } = useQuery(QUERY_AVAILABLE_NEW_JOBS, { - fetchPolicy: "network-only" + fetchPolicy: "network-only", }); + const history = useHistory(); const { t } = useTranslation(); const [modalVisible, setModalVisible] = useState(false); @@ -41,22 +53,38 @@ export default withRouter(function JobsAvailableContainer({ //We don't have the right data. Error! setInsertLoading(false); notification["error"]({ - message: t("jobs.errors.creating", { error: "No job data present." }) + message: t("jobs.errors.creating", { error: "No job data present." }), }); } 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({ variables: { job: selectedOwner ? Object.assign( {}, - estData.data.available_jobs_by_pk.est_data, + newJob, { owner: null }, { ownerid: selectedOwner } ) - : estData.data.available_jobs_by_pk.est_data - } + : newJob, + }, }) - .then(r => { + .then((r) => { notification["success"]({ message: t("jobs.successes.created"), onClick: () => { @@ -64,20 +92,21 @@ export default withRouter(function JobsAvailableContainer({ history.push( `/manage/jobs/${r.data.insert_jobs.returning[0].id}` ); - } + }, }); //Job has been inserted. Clean up the available jobs record. + deleteJob({ - variables: { id: estData.data.available_jobs_by_pk.id } - }).then(r => { + variables: { id: estData.data.available_jobs_by_pk.id }, + }).then((r) => { refetch(); setInsertLoading(false); }); }) - .catch(r => { + .catch((r) => { //error while inserting notification["error"]({ - message: t("jobs.errors.creating", { error: r.message }) + message: t("jobs.errors.creating", { error: r.message }), }); refetch(); setInsertLoading(false); @@ -115,4 +144,5 @@ export default withRouter(function JobsAvailableContainer({ />
); -}); +} +export default connect(mapStateToProps, null)(JobsAvailableContainer); diff --git a/client/src/components/jobs-available-supplement/jobs-available-supplement.container.jsx b/client/src/components/jobs-available-supplement/jobs-available-supplement.container.jsx index b771a76f5..a341f920f 100644 --- a/client/src/components/jobs-available-supplement/jobs-available-supplement.container.jsx +++ b/client/src/components/jobs-available-supplement/jobs-available-supplement.container.jsx @@ -1,31 +1,36 @@ +import { useMutation, useQuery } from "@apollo/react-hooks"; import { notification } from "antd"; import React, { useState } from "react"; -import { useMutation, useQuery } from "@apollo/react-hooks"; import { useTranslation } from "react-i18next"; -import { withRouter } from "react-router-dom"; -import { - DELETE_ALL_AVAILABLE_SUPPLEMENT_JOBS, - QUERY_AVAILABLE_SUPPLEMENT_JOBS -} from "../../graphql/available-jobs.queries"; +import { connect } from "react-redux"; +import { useHistory } from "react-router-dom"; +import { createStructuredSelector } from "reselect"; +import { CalculateJob } from "../../components/job-totals-table/job-totals.utility"; +import { DELETE_ALL_AVAILABLE_SUPPLEMENT_JOBS, QUERY_AVAILABLE_SUPPLEMENT_JOBS } from "../../graphql/available-jobs.queries"; import { UPDATE_JOB } from "../../graphql/jobs.queries"; +import { selectBodyshop } from "../../redux/user/user.selectors"; import AlertComponent from "../alert/alert.component"; import LoadingSpinner from "../loading-spinner/loading-spinner.component"; import JobsAvailableSupplementComponent from "./jobs-available-supplement.component"; import HeaderFields from "./jobs-available-supplement.headerfields"; -export default withRouter(function JobsAvailableSupplementContainer({ +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); + +export function JobsAvailableSupplementContainer({ deleteJob, estDataLazyLoad, - history + bodyshop, }) { const { loading, error, data, refetch } = useQuery( QUERY_AVAILABLE_SUPPLEMENT_JOBS, { - fetchPolicy: "network-only" + fetchPolicy: "network-only", } ); const { t } = useTranslation(); - + const history = useHistory(); const [deleteAllNewJobs] = useMutation(DELETE_ALL_AVAILABLE_SUPPLEMENT_JOBS); const [modalVisible, setModalVisible] = useState(false); @@ -49,48 +54,63 @@ export default withRouter(function JobsAvailableSupplementContainer({ //We don't have the right data. Error! setInsertLoading(false); notification["error"]({ - message: t("jobs.errors.creating", { error: "No job data present." }) + message: t("jobs.errors.creating", { error: "No job data present." }), }); } else { //create upsert job let supp = estData.data.available_jobs_by_pk.est_data; console.log("supp before", supp); - delete supp.joblines; + //TODO How to update the estimate lines. delete supp.owner; delete supp.vehicle; 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({ variables: { 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"]({ message: t("jobs.successes.supplemented"), onClick: () => { history.push( `/manage/jobs/${r.data.update_jobs.returning[0].id}` ); - } + }, }); //Job has been inserted. Clean up the available jobs record. deleteJob({ - variables: { id: estData.data.available_jobs_by_pk.id } - }).then(r => { + variables: { id: estData.data.available_jobs_by_pk.id }, + }).then((r) => { refetch(); setInsertLoading(false); }); }) - .catch(r => { + .catch((r) => { //error while inserting notification["error"]({ - message: t("jobs.errors.creating", { error: r.message }) + message: t("jobs.errors.creating", { error: r.message }), }); refetch(); setInsertLoading(false); @@ -128,4 +148,5 @@ export default withRouter(function JobsAvailableSupplementContainer({ /> ); -}); +} +export default connect(mapStateToProps, null)(JobsAvailableSupplementContainer); diff --git a/client/src/components/jobs-detail-financial/jobs-detail-financial.component.jsx b/client/src/components/jobs-detail-financial/jobs-detail-financial.component.jsx index 13b27d957..8b5a820cd 100644 --- a/client/src/components/jobs-detail-financial/jobs-detail-financial.component.jsx +++ b/client/src/components/jobs-detail-financial/jobs-detail-financial.component.jsx @@ -1,7 +1,7 @@ import { Divider, Form, Input, InputNumber, Row, Col } from "antd"; import React from "react"; 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 }) { const { t } = useTranslation(); @@ -9,123 +9,130 @@ export default function JobsDetailFinancials({ job }) { return ( - + - + + name="depreciation_taxes" + > TODO This is equivalent of GST payable. + name="federal_tax_payable" + > TODO equivalent of other customer amount + name="other_amount_payable" + > + name="towing_payable" + > + name="storage_payable" + > + name="adjustment_bottom_line" + > + name="labor_rate_desc" + > - + - + - + - + - + - + - + - + Note //TODO Remove ATP rate? - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + ); diff --git a/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx b/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx index d84de214a..0678c2622 100644 --- a/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx +++ b/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx @@ -9,7 +9,7 @@ import { Menu, notification, PageHeader, - Tag + Tag, } from "antd"; import React from "react"; 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 { setModalContext } from "../../redux/modals/modals.actions"; const mapStateToProps = createStructuredSelector({ - bodyshop: selectBodyshop + bodyshop: selectBodyshop, }); -const mapDispatchToProps = dispatch => ({ - setScheduleContext: context => - dispatch(setModalContext({ context: context, modal: "schedule" })) +const mapDispatchToProps = (dispatch) => ({ + setScheduleContext: (context) => + dispatch(setModalContext({ context: context, modal: "schedule" })), }); export function JobsDetailHeader({ @@ -40,7 +40,7 @@ export function JobsDetailHeader({ bodyshop, updateJobStatus, - setScheduleContext + setScheduleContext, }) { const { t } = useTranslation(); @@ -55,11 +55,11 @@ export function JobsDetailHeader({ const statusmenu = ( { + onClick={(e) => { updateJobStatus(e.key); }} > - {bodyshop.md_ro_statuses.statuses.map(item => ( + {bodyshop.md_ro_statuses.statuses.map((item) => ( {item} ))} @@ -78,8 +78,8 @@ export function JobsDetailHeader({ setScheduleContext({ actions: { refetch: refetch }, context: { - jobId: job.id - } + jobId: job.id, + }, }); }} > @@ -92,12 +92,12 @@ export function JobsDetailHeader({ disabled={job.converted} onClick={() => { mutationConvertJob({ - variables: { jobId: job.id } - }).then(r => { + variables: { jobId: job.id }, + }).then((r) => { refetch(); notification["success"]({ - message: t("jobs.successes.converted") + message: t("jobs.successes.converted"), }); }); }} @@ -107,13 +107,13 @@ export function JobsDetailHeader({ , + , ]; return ( - ##NO BINDING YET## + {job.owner_owing} {job.cccontracts && - job.cccontracts.map(item => ( + job.cccontracts.map((item) => ( { - return record.owner_owing ? ( - {record.owner_owing} - ) : ( - t("general.labels.unknown") - ); - }, + render: (text, record) => ( + {record.owner_owing} + ), }, ]; diff --git a/client/src/firebase/firebase.utils.js b/client/src/firebase/firebase.utils.js index 3d07894bc..4b1cea785 100644 --- a/client/src/firebase/firebase.utils.js +++ b/client/src/firebase/firebase.utils.js @@ -4,7 +4,6 @@ import "firebase/auth"; import "firebase/database"; 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); firebase.initializeApp(config); diff --git a/client/src/graphql/jobs.queries.js b/client/src/graphql/jobs.queries.js index 5c98851e9..4e6484020 100644 --- a/client/src/graphql/jobs.queries.js +++ b/client/src/graphql/jobs.queries.js @@ -149,6 +149,17 @@ export const GET_JOB_BY_PK = gql` towing_payable storage_payable 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_ln ownr_ea @@ -173,28 +184,29 @@ export const GET_JOB_BY_PK = gql` ownr_ph1 } labor_rate_desc - rate_lab - rate_lad - rate_lae - rate_lar - rate_las - rate_laf - rate_lam - rate_lag rate_atp - rate_lau rate_la1 rate_la2 rate_la3 rate_la4 - rate_mapa - rate_mash - rate_mahw + 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_laa + rate_mahw + rate_mapa + rate_mash rate_matd actual_in scheduled_completion @@ -209,11 +221,15 @@ export const GET_JOB_BY_PK = gql` date_closed date_exported status + owner_owing joblines { id unq_seq line_ind + tax_part line_desc + prt_dsmk_p + prt_dsmk_m part_type oem_partno 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 - } - } - } -`; diff --git a/client/src/pages/jobs-detail/jobs-detail.page.component.jsx b/client/src/pages/jobs-detail/jobs-detail.page.component.jsx index aa8ebb72a..a25b9ab1b 100644 --- a/client/src/pages/jobs-detail/jobs-detail.page.component.jsx +++ b/client/src/pages/jobs-detail/jobs-detail.page.component.jsx @@ -19,6 +19,11 @@ import { import { useHistory, useLocation } from "react-router-dom"; import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component"; 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(() => import("../../components/job-detail-lines/job-lines.container") ); @@ -65,13 +70,18 @@ const JobsDetailAuditContainer = lazy(() => import("../../components/audit-trail-list/audit-trail-list.container") ); -export default function JobsDetailPage({ +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); + +export function JobsDetailPage({ job, mutationUpdateJob, mutationConvertJob, handleSubmit, refetch, updateJobStatus, + bodyshop, }) { const { t } = useTranslation(); const [form] = Form.useForm(); @@ -90,8 +100,17 @@ export default function JobsDetailPage({ }; const handleFinish = (values) => { + const newTotals = CalculateJob({ ...job, ...values }, bodyshop.shoprates); 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) => { notification["success"]({ message: t("jobs.successes.savetitle"), @@ -270,3 +289,4 @@ export default function JobsDetailPage({ ); } +export default connect(mapStateToProps, null)(JobsDetailPage); diff --git a/hasura/migrations/1586879989913_alter_table_public_jobs_add_column_job_totals/down.yaml b/hasura/migrations/1586879989913_alter_table_public_jobs_add_column_job_totals/down.yaml new file mode 100644 index 000000000..371308f87 --- /dev/null +++ b/hasura/migrations/1586879989913_alter_table_public_jobs_add_column_job_totals/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" DROP COLUMN "job_totals"; + type: run_sql diff --git a/hasura/migrations/1586879989913_alter_table_public_jobs_add_column_job_totals/up.yaml b/hasura/migrations/1586879989913_alter_table_public_jobs_add_column_job_totals/up.yaml new file mode 100644 index 000000000..2c1b18561 --- /dev/null +++ b/hasura/migrations/1586879989913_alter_table_public_jobs_add_column_job_totals/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."jobs" ADD COLUMN "job_totals" jsonb NULL; + type: run_sql diff --git a/hasura/migrations/1586880003979_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1586880003979_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..43bf2e0ab --- /dev/null +++ b/hasura/migrations/1586880003979_update_permission_user_public_table_jobs/down.yaml @@ -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 diff --git a/hasura/migrations/1586880003979_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1586880003979_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..785d7b5d3 --- /dev/null +++ b/hasura/migrations/1586880003979_update_permission_user_public_table_jobs/up.yaml @@ -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 diff --git a/hasura/migrations/1586880014259_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1586880014259_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..1f52ac4cf --- /dev/null +++ b/hasura/migrations/1586880014259_update_permission_user_public_table_jobs/down.yaml @@ -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 diff --git a/hasura/migrations/1586880014259_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1586880014259_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..4364ff937 --- /dev/null +++ b/hasura/migrations/1586880014259_update_permission_user_public_table_jobs/up.yaml @@ -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 diff --git a/hasura/migrations/1586880020786_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1586880020786_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..68a2a7ed5 --- /dev/null +++ b/hasura/migrations/1586880020786_update_permission_user_public_table_jobs/down.yaml @@ -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 diff --git a/hasura/migrations/1586880020786_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1586880020786_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..06e843cbc --- /dev/null +++ b/hasura/migrations/1586880020786_update_permission_user_public_table_jobs/up.yaml @@ -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