Refactored capturing of resp. centers. + added auto allocate BOD-131

This commit is contained in:
Patrick Fic
2020-05-20 16:21:17 -07:00
parent 0dbacf0b9e
commit d8a4c87d3a
24 changed files with 3251 additions and 203 deletions

View File

@@ -1340,6 +1340,48 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>mapa</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>mash</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>paa</name>
<definition_loaded>false</definition_loaded>
@@ -1508,6 +1550,27 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>pas</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>tow</name>
<definition_loaded>false</definition_loaded>
@@ -1828,6 +1891,27 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>default_returned</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>default_scheduled</name>
<definition_loaded>false</definition_loaded>
@@ -6640,6 +6724,27 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>autoallocate</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>changestatus</name>
<definition_loaded>false</definition_loaded>
@@ -7889,6 +7994,132 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>la1</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>la2</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>la3</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>la4</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>laa</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>lab</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>labor_rate_desc</name>
<definition_loaded>false</definition_loaded>
@@ -7910,6 +8141,174 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>lad</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>lae</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>laf</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>lag</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>lam</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>lar</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>las</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>lau</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>loss_date</name>
<definition_loaded>false</definition_loaded>
@@ -7952,6 +8351,48 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>mapa</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>mash</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>other_amount_payable</name>
<definition_loaded>false</definition_loaded>
@@ -8057,6 +8498,174 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>paa</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>pal</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>pam</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>pan</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>pao</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>pap</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>par</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>pas</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>pay_date</name>
<definition_loaded>false</definition_loaded>
@@ -10109,6 +10718,27 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>suspense</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>total_repairs</name>
<definition_loaded>false</definition_loaded>

View File

@@ -28,165 +28,167 @@ export function JobsTotalsTableComponent({ bodyshop, job }) {
<Row>
<Descriptions
bordered
size='small'
size="small"
column={3}
title={t("jobs.labels.rates")}>
title={t("jobs.labels.rates")}
>
<Descriptions.Item label={t("jobs.fields.rate_laa")}>
<Statistic
value={totals.rates.rate_laa.total.toFormat()}
value={totals.rates.laa.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_laa.hours.toFixed(
2
)} @ ${totals.rates.rate_laa.rate})`}
suffix={`(${totals.rates.laa.hours.toFixed(2)} @ ${
totals.rates.laa.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.rate_lab")}>
<Statistic
value={totals.rates.rate_lab.total.toFormat()}
value={totals.rates.lab.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_lab.hours.toFixed(
2
)} @ ${totals.rates.rate_lab.rate})`}
suffix={`(${totals.rates.lab.hours.toFixed(2)} @ ${
totals.rates.lab.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.rate_lad")}>
<Statistic
value={totals.rates.rate_lad.total.toFormat()}
value={totals.rates.lad.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_lad.hours.toFixed(
2
)} @ ${totals.rates.rate_lad.rate})`}
suffix={`(${totals.rates.lad.hours.toFixed(2)} @ ${
totals.rates.lad.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.rate_lae")}>
<Statistic
value={totals.rates.rate_lae.total.toFormat()}
value={totals.rates.lae.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_lae.hours.toFixed(
2
)} @ ${totals.rates.rate_lae.rate})`}
suffix={`(${totals.rates.lae.hours.toFixed(2)} @ ${
totals.rates.lae.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.rate_laf")}>
<Statistic
value={totals.rates.rate_laf.total.toFormat()}
value={totals.rates.laf.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_laf.hours.toFixed(
2
)} @ ${totals.rates.rate_laf.rate})`}
suffix={`(${totals.rates.laf.hours.toFixed(2)} @ ${
totals.rates.laf.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.rate_lag")}>
<Statistic
value={totals.rates.rate_lag.total.toFormat()}
value={totals.rates.lag.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_lag.hours.toFixed(
2
)} @ ${totals.rates.rate_lag.rate})`}
suffix={`(${totals.rates.lag.hours.toFixed(2)} @ ${
totals.rates.lag.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.rate_lam")}>
<Statistic
value={totals.rates.rate_lam.total.toFormat()}
value={totals.rates.lam.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_lam.hours.toFixed(
2
)} @ ${totals.rates.rate_lam.rate})`}
suffix={`(${totals.rates.lam.hours.toFixed(2)} @ ${
totals.rates.lam.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.rate_lar")}>
<Statistic
value={totals.rates.rate_lar.total.toFormat()}
value={totals.rates.lar.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_lar.hours.toFixed(
2
)} @ ${totals.rates.rate_lar.rate})`}
suffix={`(${totals.rates.lar.hours.toFixed(2)} @ ${
totals.rates.lar.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.rate_las")}>
<Statistic
value={totals.rates.rate_las.total.toFormat()}
value={totals.rates.las.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_las.hours.toFixed(
2
)} @ ${totals.rates.rate_las.rate})`}
suffix={`(${totals.rates.las.hours.toFixed(2)} @ ${
totals.rates.las.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.rate_lau")}>
<Statistic
value={totals.rates.rate_lau.total.toFormat()}
value={totals.rates.lau.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_lau.hours.toFixed(
2
)} @ ${totals.rates.rate_lau.rate})`}
suffix={`(${totals.rates.lau.hours.toFixed(2)} @ ${
totals.rates.lau.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.rate_la1")}>
<Statistic
value={totals.rates.rate_la1.total.toFormat()}
value={totals.rates.la1.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_la1.hours.toFixed(
2
)} @ ${totals.rates.rate_la1.rate})`}
suffix={`(${totals.rates.la1.hours.toFixed(2)} @ ${
totals.rates.la1.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.rate_la2")}>
<Statistic
value={totals.rates.rate_la2.total.toFormat()}
value={totals.rates.la2.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_la2.hours.toFixed(
2
)} @ ${totals.rates.rate_la2.rate})`}
suffix={`(${totals.rates.la2.hours.toFixed(2)} @ ${
totals.rates.la2.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.rate_la3")}>
<Statistic
value={totals.rates.rate_la3.total.toFormat()}
value={totals.rates.la3.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_la3.hours.toFixed(
2
)} @ ${totals.rates.rate_la3.rate})`}
suffix={`(${totals.rates.la3.hours.toFixed(2)} @ ${
totals.rates.la3.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.rate_la4")}>
<Statistic
value={totals.rates.rate_la4.total.toFormat()}
value={totals.rates.la4.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_la4.hours.toFixed(
2
)} @ ${totals.rates.rate_la4.rate})`}
suffix={`(${totals.rates.la4.hours.toFixed(2)} @ ${
totals.rates.la4.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.fields.rate_atp")}>
<Statistic
value={totals.rates.rate_atp.total.toFormat()}
value={totals.rates.atp.total.toFormat()}
precision={2}
suffix={`(${totals.rates.rate_atp.hours.toFixed(
2
)} @ ${totals.rates.rate_atp.rate})`}
suffix={`(${totals.rates.atp.hours.toFixed(2)} @ ${
totals.rates.atp.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.labels.paint_mat")}>
<Descriptions.Item label={t("jobs.labels.mapa")}>
<Statistic
value={totals.rates.paint_mat.total.toFormat()}
value={totals.rates.mapa.total.toFormat()}
precision={2}
suffix={`(${totals.rates.paint_mat.hours.toFixed(
2
)} @ ${totals.rates.paint_mat.rate})`}
suffix={`(${totals.rates.mapa.hours.toFixed(2)} @ ${
totals.rates.mapa.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item label={t("jobs.labels.shop_mat")}>
<Statistic
value={totals.rates.shop_mat.total.toFormat()}
value={totals.rates.mash.total.toFormat()}
precision={2}
suffix={`(${totals.rates.shop_mat.hours.toFixed(
2
)} @ ${totals.rates.shop_mat.rate})`}
suffix={`(${totals.rates.mash.hours.toFixed(2)} @ ${
totals.rates.mash.rate
})`}
/>
</Descriptions.Item>
<Descriptions.Item
style={{ color: "red" }}
label={t("jobs.labels.rates_subtotal")}>
label={t("jobs.labels.rates_subtotal")}
>
<Statistic value={totals.rates.subtotal.toFormat()} />
</Descriptions.Item>
</Descriptions>
@@ -195,9 +197,10 @@ export function JobsTotalsTableComponent({ bodyshop, job }) {
<Col span={8}>
<Descriptions
bordered
size='small'
size="small"
column={1}
title={t("jobs.labels.partssubletstotal")}>
title={t("jobs.labels.partssubletstotal")}
>
<Descriptions.Item label={t("jobs.labels.partstotal")}>
<Statistic
value={totals.parts.parts.total.toFormat()}
@@ -216,9 +219,10 @@ export function JobsTotalsTableComponent({ bodyshop, job }) {
<Col span={8}>
<Descriptions
bordered
size='small'
size="small"
column={1}
title={t("jobs.labels.totals")}>
title={t("jobs.labels.totals")}
>
<Descriptions.Item label={t("jobs.labels.subtotal")}>
<Statistic value={totals.totals.subtotal.toFormat()} />
</Descriptions.Item>

View File

@@ -23,7 +23,7 @@ function CalculateTaxesTotals(job, otherTotals) {
if (!!!val.tax_part) return acc;
if (!!job.parts_tax_rates[val.part_type]) {
return acc.add(
Dinero({ amount: val.act_price * 100 })
Dinero({ amount: Math.round(val.act_price * 100) })
.multiply(val.part_qty)
.percentage(
(job.parts_tax_rates[val.part_type].prt_tax_rt || 0) * 100
@@ -43,18 +43,18 @@ function CalculateTaxesTotals(job, otherTotals) {
otherTotals.rates.rates_subtotal.percentage((job.tax_lbr_rt || 0) * 100)
)
.add(
Dinero({ amount: (job.towing_payable || 0) * 100 }).percentage(
(job.tax_tow_rt || 0) * 100
)
Dinero({
amount: Math.round((job.towing_payable || 0) * 100),
}).percentage((job.tax_tow_rt || 0) * 100)
)
.add(
Dinero({ amount: (job.storage_payable || 0) * 100 }).percentage(
(job.tax_str_rt || 0) * 100
)
Dinero({
amount: Math.round((job.storage_payable || 0) * 100),
}).percentage((job.tax_str_rt || 0) * 100)
)
.add(
otherTotals.rates.paint_mat.total
.add(otherTotals.rates.shop_mat.total)
otherTotals.rates.mapa.total
.add(otherTotals.rates.mash.total)
.percentage((job.tax_paint_mat_rt || 0) * 100)
),
local_tax: subtotal.percentage((job.local_tax_rate || 0) * 100),
@@ -74,91 +74,91 @@ function CalculateRatesTotals(ratesList, shoprates) {
const jobLines = ratesList.joblines;
let ret = {
rate_la1: {
la1: {
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LA1")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
rate: ratesList.rate_la1 || 0,
},
rate_la2: {
la2: {
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LA2")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
rate: ratesList.rate_la2 || 0,
},
rate_la3: {
la3: {
rate: ratesList.rate_la3 || 0,
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LA3")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
},
rate_la4: {
la4: {
rate: ratesList.rate_la4 || 0,
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LA4")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
},
rate_laa: {
laa: {
rate: ratesList.rate_laa || 0,
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LAA")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
},
rate_lab: {
lab: {
rate: ratesList.rate_lab || 0,
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LAB")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
},
rate_lad: {
lad: {
rate: ratesList.rate_lad || 0,
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LAD")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
},
rate_lae: {
lae: {
rate: ratesList.rate_lae || 0,
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LAE")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
},
rate_laf: {
laf: {
rate: ratesList.rate_laf || 0,
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LAF")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
},
rate_lag: {
lag: {
rate: ratesList.rate_lag || 0,
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LAG")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
},
rate_lam: {
lam: {
rate: ratesList.rate_lam || 0,
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LAM")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
},
rate_lar: {
lar: {
rate: ratesList.rate_lar || 0,
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LAR")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
},
rate_las: {
las: {
rate: ratesList.rate_las || 0,
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LAS")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
},
rate_lau: {
lau: {
rate: ratesList.rate_lau || 0,
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LAU")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
},
rate_atp: {
atp: {
rate: shoprates.rate_atp || 0,
hours:
jobLines.filter((item) => item.line_desc.includes("ATS Amount"))
@@ -178,13 +178,13 @@ function CalculateRatesTotals(ratesList, shoprates) {
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0)
: 0,
},
paint_mat: {
mapa: {
rate: ratesList.rate_mapa || 0,
hours: jobLines
.filter((item) => item.mod_lbr_ty === "LAR")
.reduce((acc, value) => acc + value.mod_lb_hrs * 10, 0),
},
shop_mat: {
mash: {
rate: ratesList.rate_mash || 0,
hours: jobLines
.filter((item) => item.mod_lbr_ty !== "LAR")
@@ -200,8 +200,8 @@ function CalculateRatesTotals(ratesList, shoprates) {
.divide(10);
subtotal = subtotal.add(ret[property].total);
if (
property !== "paint_mat" &&
property !== "shop_mat"
property !== "mapa" &&
property !== "mash"
//&& property !== "rate_atp"
)
rates_subtotal = rates_subtotal.add(ret[property].total);
@@ -236,19 +236,19 @@ function CalculatePartsTotals(jobLines) {
acc.parts.list[value.part_type].total
? {
total: acc.parts.list[value.part_type].total.add(
Dinero({ amount: value.act_price * 100 }).multiply(
value.part_qty
)
Dinero({
amount: Math.round((value.act_price || 0) * 100),
}).multiply(value.part_qty || 1)
),
}
: {
total: Dinero({
amount: (value.act_price || 0) * 100,
}).multiply(value.part_qty),
amount: Math.round((value.act_price || 0) * 100),
}).multiply(value.part_qty || 1),
},
},
subtotal: acc.parts.subtotal.add(
Dinero({ amount: value.act_price * 100 }).multiply(
Dinero({ amount: Math.round(value.act_price * 100) }).multiply(
value.part_qty
)
),
@@ -262,7 +262,7 @@ function CalculatePartsTotals(jobLines) {
sublets: {
...acc.sublets,
subtotal: acc.sublets.subtotal.add(
Dinero({ amount: value.act_price * 100 })
Dinero({ amount: Math.round(value.act_price * 100) })
),
//TODO Add Adjustments in
},

View File

@@ -1,7 +1,7 @@
import { PlusCircleFilled, CloseCircleFilled } from "@ant-design/icons";
import { Button, InputNumber, Select } from "antd";
import Dinero from "dinero.js";
import React, { useState } from "react";
import React, { useState, useEffect } from "react";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors";
@@ -14,6 +14,7 @@ const mapStateToProps = createStructuredSelector({
const { Option } = Select;
export function JobsCloseLabmatAllocationButton({
remainingAmount,
allocationKey,
allocation,
setAllocations,
@@ -27,20 +28,19 @@ export function JobsCloseLabmatAllocationButton({
const existingIndex = allocation.allocations.findIndex(
(e) => e.center === state.center
);
console.log("handleAllocate -> existingIndex", existingIndex);
const newAllocations = allocation.allocations.slice(0);
if (existingIndex > -1) {
newAllocations[existingIndex] = {
center: state.center,
amount: newAllocations[existingIndex].amount.add(
Dinero({ amount: state.amount * 100 })
Dinero({ amount: (state.amount || 0) * 100 })
),
};
} else {
newAllocations.push({
center: state.center,
amount: Dinero({ amount: state.amount * 100 }),
amount: Dinero({ amount: (state.amount || 0) * 100 }),
});
}
@@ -56,7 +56,11 @@ export function JobsCloseLabmatAllocationButton({
setState({ center: "", amount: 0 });
};
const showAllocation = allocation.total.getAmount() > 0;
useEffect(() => {
if (remainingAmount === 0) setVisible(false);
}, [remainingAmount, setVisible]);
if (!showAllocation) return null;
return (
@@ -78,11 +82,13 @@ export function JobsCloseLabmatAllocationButton({
min={0}
value={state.amount}
onChange={(val) => setState({ ...state, amount: val })}
max={allocation.total.getAmount() / 100}
max={remainingAmount / 100}
/>
<Button
onClick={handleAllocate}
disabled={state.amount === 0 || state.center === ""}
disabled={
state.amount === 0 || state.center === "" || remainingAmount === 0
}
>
{t("jobs.actions.allocate")}
</Button>

View File

@@ -11,6 +11,7 @@ export default function JobsCloseLabMatAllocationTags({
<Tag
closable
visible
color='green'
onClose={() => {
setAllocations((state) => {
return {

View File

@@ -0,0 +1,67 @@
import React from "react";
import { Button } from "antd";
import { selectBodyshop } from "../../redux/user/user.selectors";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { useTranslation } from "react-i18next";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
});
export function JobsCloseAutoAllocate({
bodyshop,
labmatAllocations,
setLabmatAllocations,
partsAllocations,
setPartsAllocations,
}) {
const { t } = useTranslation();
const handleAllocate = () => {
const { defaults } = bodyshop.md_responsibility_centers;
Object.keys(labmatAllocations).forEach((i) => {
const defaultProfitCenter = defaults.profits[i.toUpperCase()];
if (!!defaultProfitCenter && labmatAllocations[i].total.getAmount() > 0) {
setLabmatAllocations((st) => {
return {
...st,
[i]: {
...labmatAllocations[i],
allocations: [
{
center: defaultProfitCenter,
amount: labmatAllocations[i].total,
},
],
},
};
});
}
});
Object.keys(partsAllocations).forEach((i) => {
const defaultProfitCenter = defaults.profits[i.toUpperCase()];
if (!!defaultProfitCenter && partsAllocations[i].total.getAmount() > 0) {
setPartsAllocations((st) => {
return {
...st,
[i]: {
...partsAllocations[i],
allocations: [
{
center: defaultProfitCenter,
amount: partsAllocations[i].total,
},
],
},
};
});
}
});
};
return <Button onClick={handleAllocate}>{t("jobs.actions.autoallocate")}</Button>;
}
export default connect(mapStateToProps, null)(JobsCloseAutoAllocate);

View File

@@ -4,16 +4,13 @@ import { useTranslation } from "react-i18next";
import AllocationButton from "../jobs-close-allocation-button/jobs-close-allocation-button.component";
import AllocationTags from "../jobs-close-allocation-tags/jobs-close-allocation-tags.component";
export default function JobCloseLabMatAllocation({
labmatAllocations,
setLabmatAllocations,
labMatTotalAllocation
labMatTotalAllocation,
}) {
const { t } = useTranslation();
return (
<div style={{ display: "flex" }}>
<table>
@@ -53,6 +50,18 @@ export default function JobCloseLabMatAllocation({
<td>
<AllocationButton
allocationKey={alloc}
remainingAmount={labmatAllocations[alloc].total
.subtract(
Dinero({
amount: labmatAllocations[alloc].allocations.reduce(
(acc, val) => {
return acc + val.amount.getAmount();
},
0
),
})
)
.getAmount()}
allocation={labmatAllocations[alloc]}
setAllocations={setLabmatAllocations}
/>
@@ -71,9 +80,9 @@ export default function JobCloseLabMatAllocation({
<tr>
<td></td>
<td>{labmatAllocations.subtotal.toFormat()}</td>
<td></td>
<td></td>
<td>{labMatTotalAllocation.toFormat()}</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>

View File

@@ -28,7 +28,7 @@ export default function JobsClosePartsAllocation({
{Object.keys(partsAllocations).map((alloc, idx) => {
return (
<tr key={idx}>
<td>{t(`jobs.fields.${alloc}`)}</td>
<td>{t(`jobs.fields.${alloc.toLowerCase()}`)}</td>
<td>
{partsAllocations[alloc].total &&
partsAllocations[alloc].total.toFormat()}
@@ -50,6 +50,18 @@ export default function JobsClosePartsAllocation({
<td>
<AllocationButton
allocationKey={alloc}
remainingAmount={partsAllocations[alloc].total
.subtract(
Dinero({
amount: partsAllocations[alloc].allocations.reduce(
(acc, val) => {
return acc + val.amount.getAmount();
},
0
),
})
)
.getAmount()}
allocation={partsAllocations[alloc]}
setAllocations={setPartsAllocations}
/>
@@ -74,9 +86,9 @@ export default function JobsClosePartsAllocation({
}, 0),
}).toFormat()}
</td>
<td></td>
<td></td>
<td>{partsAllocatedTotal.toFormat()}</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>

View File

@@ -50,6 +50,13 @@ export default function JobsCloseTotals({
/>
<Statistic
title={t("jobs.labels.suspense")}
valueStyle={{
color:
jobTotals.totals.subtotal.subtract(labMatTotal).subtract(partsTotal)
.getAmount() === 0
? "green"
: "red",
}}
value={jobTotals.totals.subtotal
.subtract(labMatTotal)
.subtract(partsTotal)

View File

@@ -6,9 +6,9 @@ import { selectBodyshop } from "../../redux/user/user.selectors";
import JobsClosePartsAllocation from "../../components/jobs-close-parts-allocation/jobs-close-parts-allocation.component";
import Dinero from "dinero.js";
import JobsCloseTotals from "../../components/jobs-close-totals/jobs-close-totals.component";
import JobsCloseAutoAllocate from "../../components/jobs-close-auto-allocate/jobs-close-auto-allocate.component";
const mapStateToProps = createStructuredSelector({
//currentUser: selectCurrentUser
bodyshop: selectBodyshop,
});
@@ -22,7 +22,6 @@ export function JobsCloseComponent({ job, bodyshop, jobTotals }) {
return acc;
}, {})
);
console.log("JobsCloseComponent -> labmatAllocations", labmatAllocations);
const [partsAllocations, setPartsAllocations] = useState({
...Object.keys(jobTotals.parts.parts.list).reduce((acc, val) => {
@@ -30,14 +29,12 @@ export function JobsCloseComponent({ job, bodyshop, jobTotals }) {
return acc;
}, {}),
sublet: {
pas: {
...jobTotals.parts.sublets,
allocations: [],
},
});
console.log("JobsCloseComponent -> partsAllocations", partsAllocations);
const labmatAllocatedTotalsArray = Object.keys(labmatAllocations)
.filter((i) => !i.includes("subtotal"))
.map((i) => labmatAllocations[i].allocations)
@@ -66,6 +63,12 @@ export function JobsCloseComponent({ job, bodyshop, jobTotals }) {
labMatTotal={labmatAllocatedTotal}
partsTotal={partsAllocatedTotal}
/>
<JobsCloseAutoAllocate
labmatAllocations={labmatAllocations}
setLabmatAllocations={setLabmatAllocations}
partsAllocations={partsAllocations}
setPartsAllocations={setPartsAllocations}
/>
<JobsCloseLaborMaterialAllocation
labmatAllocations={labmatAllocations}
setLabmatAllocations={setLabmatAllocations}

View File

@@ -13,7 +13,6 @@ import { selectBodyshop } from "../../redux/user/user.selectors";
import JobsCloseComponent from "./jobs-close.component";
const mapStateToProps = createStructuredSelector({
//currentUser: selectCurrentUser
bodyshop: selectBodyshop,
});

View File

@@ -90,7 +90,7 @@
"responsibilitycenter_accountnumber": "Account Number",
"responsibilitycenters": {
"atp": "ATP",
"lab": "Labor",
"lab": "Body",
"lad": "Diagnostic",
"lae": "Electrical",
"laf": "Frame",
@@ -99,6 +99,8 @@
"lar": "Refinish",
"las": "Structural",
"lau": "Detail",
"mapa": "Paint Materials",
"mash": "Shop Materials",
"paa": "Aftermarket",
"pac": "Chrome",
"pal": "LKQ",
@@ -107,6 +109,7 @@
"pao": "Other",
"pap": "OEM Partial",
"par": "Recored",
"pas": "Sublet",
"tow": "Towing"
},
"shopname": "Shop Name",
@@ -124,6 +127,7 @@
"default_invoiced": "Default Invoiced Status",
"default_ordered": "Default Ordered Status",
"default_received": "Default Received Status",
"default_returned": "Default Returned",
"default_scheduled": "Default Scheduled Status",
"open_statuses": "Open Statuses"
},
@@ -458,6 +462,7 @@
"addNote": "Add Note",
"addtoproduction": "Add to Production",
"allocate": "Allocate",
"autoallocate": "Auto Allocate",
"changestatus": "Change Status",
"convert": "Convert",
"gotojob": "Go to Job",
@@ -521,14 +526,38 @@
"ins_ph1": "File Handler Phone #",
"kmin": "Mileage In",
"kmout": "Mileage Out",
"la1": "LA1",
"la2": "LA2",
"la3": "LA3",
"la4": "LA4",
"laa": "Aluminum ",
"lab": "Body",
"labor_rate_desc": "Labor Rate Name",
"lad": "Diagnostic",
"lae": "Electrical",
"laf": "Frame",
"lag": "Glass",
"lam": "Mechanical",
"lar": "Refinish",
"las": "Structural",
"lau": "LAU",
"loss_date": "Loss Date",
"loss_desc": "Loss of Use",
"mapa": "Paint Materials",
"mash": "Shop Materials",
"other_amount_payable": "Other Amount Payable",
"owner": "Owner",
"owner_owing": "Cust. Owes",
"ownr_ea": "Email",
"ownr_ph1": "Phone 1",
"paa": "Aftermarket",
"pal": "LKQ",
"pam": "Remanufactured",
"pan": "OEM/New",
"pao": "Other",
"pap": "EOM Partial",
"par": "Re-cored",
"pas": "Sublet",
"pay_date": "Inspection Date",
"phoneshort": "PH",
"policy_no": "Policy #",
@@ -632,6 +661,7 @@
"state_tax_amt": "State/Provincial Taxes",
"subletstotal": "Sublets Total",
"subtotal": "Subtotal",
"suspense": "Suspense",
"total_repairs": "Total Repairs",
"totals": "Totals",
"vehicle_info": "Vehicle"

View File

@@ -99,6 +99,8 @@
"lar": "",
"las": "",
"lau": "",
"mapa": "",
"mash": "",
"paa": "",
"pac": "",
"pal": "",
@@ -107,6 +109,7 @@
"pao": "",
"pap": "",
"par": "",
"pas": "",
"tow": ""
},
"shopname": "",
@@ -124,6 +127,7 @@
"default_invoiced": "",
"default_ordered": "",
"default_received": "",
"default_returned": "",
"default_scheduled": "",
"open_statuses": ""
},
@@ -458,6 +462,7 @@
"addNote": "Añadir la nota",
"addtoproduction": "",
"allocate": "",
"autoallocate": "",
"changestatus": "Cambiar Estado",
"convert": "Convertir",
"gotojob": "",
@@ -521,14 +526,38 @@
"ins_ph1": "File Handler Phone #",
"kmin": "Kilometraje en",
"kmout": "Kilometraje",
"la1": "",
"la2": "",
"la3": "",
"la4": "",
"laa": "",
"lab": "",
"labor_rate_desc": "Nombre de la tasa laboral",
"lad": "",
"lae": "",
"laf": "",
"lag": "",
"lam": "",
"lar": "",
"las": "",
"lau": "",
"loss_date": "Fecha de pérdida",
"loss_desc": "Perdida de uso",
"mapa": "",
"mash": "",
"other_amount_payable": "Otra cantidad a pagar",
"owner": "Propietario",
"owner_owing": "Cust. Debe",
"ownr_ea": "Email",
"ownr_ph1": "Teléfono 1",
"paa": "",
"pal": "",
"pam": "",
"pan": "",
"pao": "",
"pap": "",
"par": "",
"pas": "",
"pay_date": "Fecha de inspección",
"phoneshort": "PH",
"policy_no": "Política #",
@@ -632,6 +661,7 @@
"state_tax_amt": "",
"subletstotal": "",
"subtotal": "",
"suspense": "",
"total_repairs": "",
"totals": "",
"vehicle_info": "Vehículo"

View File

@@ -99,6 +99,8 @@
"lar": "",
"las": "",
"lau": "",
"mapa": "",
"mash": "",
"paa": "",
"pac": "",
"pal": "",
@@ -107,6 +109,7 @@
"pao": "",
"pap": "",
"par": "",
"pas": "",
"tow": ""
},
"shopname": "",
@@ -124,6 +127,7 @@
"default_invoiced": "",
"default_ordered": "",
"default_received": "",
"default_returned": "",
"default_scheduled": "",
"open_statuses": ""
},
@@ -458,6 +462,7 @@
"addNote": "Ajouter une note",
"addtoproduction": "",
"allocate": "",
"autoallocate": "",
"changestatus": "Changer le statut",
"convert": "Convertir",
"gotojob": "",
@@ -521,14 +526,38 @@
"ins_ph1": "Numéro de téléphone du gestionnaire de fichiers",
"kmin": "Kilométrage en",
"kmout": "Kilométrage hors",
"la1": "",
"la2": "",
"la3": "",
"la4": "",
"laa": "",
"lab": "",
"labor_rate_desc": "Nom du taux de main-d'œuvre",
"lad": "",
"lae": "",
"laf": "",
"lag": "",
"lam": "",
"lar": "",
"las": "",
"lau": "",
"loss_date": "Date de perte",
"loss_desc": "Perte d'usage",
"mapa": "",
"mash": "",
"other_amount_payable": "Autre montant à payer",
"owner": "Propriétaire",
"owner_owing": "Cust. Owes",
"ownr_ea": "Email",
"ownr_ph1": "Téléphone 1",
"paa": "",
"pal": "",
"pam": "",
"pan": "",
"pao": "",
"pap": "",
"par": "",
"pas": "",
"pay_date": "Date d'inspection",
"phoneshort": "PH",
"policy_no": "Politique #",
@@ -632,6 +661,7 @@
"state_tax_amt": "",
"subletstotal": "",
"subtotal": "",
"suspense": "",
"total_repairs": "",
"totals": "",
"vehicle_info": "Véhicule"

View File

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

View File

@@ -0,0 +1,5 @@
- args:
cascade: false
read_only: false
sql: ALTER TABLE "public"."jobs" ADD COLUMN "invoice_allocation" jsonb NULL;
type: run_sql

View File

@@ -0,0 +1,256 @@
- 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
- intakechecklist
- 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
- production_vars
- 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

View File

@@ -0,0 +1,257 @@
- 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
- intakechecklist
- invoice_allocation
- 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
- production_vars
- 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

View File

@@ -0,0 +1,254 @@
- args:
role: user
table:
name: jobs
schema: public
type: drop_select_permission
- args:
permission:
allow_aggregations: 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
- intakechecklist
- 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
- production_vars
- 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

View File

@@ -0,0 +1,255 @@
- args:
role: user
table:
name: jobs
schema: public
type: drop_select_permission
- args:
permission:
allow_aggregations: 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
- intakechecklist
- invoice_allocation
- 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
- production_vars
- 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

View File

@@ -0,0 +1,256 @@
- 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
- intakechecklist
- 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
- production_vars
- 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

View File

@@ -0,0 +1,257 @@
- 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
- intakechecklist
- invoice_allocation
- 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
- production_vars
- 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

View File

@@ -1812,6 +1812,7 @@ tables:
- insd_title
- insd_zip
- intakechecklist
- invoice_allocation
- invoice_date
- job_totals
- kmin
@@ -2045,6 +2046,7 @@ tables:
- insd_title
- insd_zip
- intakechecklist
- invoice_allocation
- invoice_date
- job_totals
- kmin
@@ -2288,6 +2290,7 @@ tables:
- insd_title
- insd_zip
- intakechecklist
- invoice_allocation
- invoice_date
- job_totals
- kmin