Added sublets tracking to production board. BOD-415
This commit is contained in:
@@ -21884,6 +21884,27 @@
|
||||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
<concept_node>
|
||||
<name>sublets</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>
|
||||
</children>
|
||||
</folder_node>
|
||||
<folder_node>
|
||||
|
||||
35
cert.pem
35
cert.pem
@@ -1,35 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
@@ -37,7 +37,6 @@
|
||||
"query-string": "^6.13.2",
|
||||
"react": "^16.13.1",
|
||||
"react-apollo": "^3.1.5",
|
||||
"react-barcode": "^1.4.0",
|
||||
"react-big-calendar": "^0.28.0",
|
||||
"react-codemirror2": "^7.2.1",
|
||||
"react-color": "^2.18.1",
|
||||
|
||||
@@ -6,7 +6,6 @@ import { useTranslation } from "react-i18next";
|
||||
import { connect } from "react-redux";
|
||||
import { Link, useLocation } from "react-router-dom";
|
||||
import { createStructuredSelector } from "reselect";
|
||||
import { selectJobReadOnly } from "../../redux/application/application.selectors";
|
||||
import { setModalContext } from "../../redux/modals/modals.actions";
|
||||
import CurrencyFormatter from "../../utils/CurrencyFormatter";
|
||||
import { DateFormatter } from "../../utils/DateFormatter";
|
||||
|
||||
@@ -7,6 +7,7 @@ import { Link } from "react-router-dom";
|
||||
import "./production-board-card.styles.scss";
|
||||
import ProductionRemoveButton from "../production-remove-button/production-remove-button.component";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import ProductionSubletsManageComponent from "../production-sublets-manage/production-sublets-manage.component";
|
||||
|
||||
export default function ProductionBoardCard(card) {
|
||||
const { t } = useTranslation();
|
||||
@@ -77,8 +78,9 @@ export default function ProductionBoardCard(card) {
|
||||
</Row>
|
||||
<div className="imex-flex-row imex-flex-row__flex-space-around">
|
||||
<ProductionAlert record={card} key="alert" />
|
||||
<ProductionSubletsManageComponent subletJobLines={card.subletLines} />
|
||||
<Link to={`/manage/jobs/${card.id}`}>
|
||||
<EyeFilled key="setting" />
|
||||
<EyeFilled />
|
||||
</Link>
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
@@ -5,12 +5,13 @@ import CurrencyFormatter from "../../utils/CurrencyFormatter";
|
||||
import { DateFormatter } from "../../utils/DateFormatter";
|
||||
import PhoneFormatter from "../../utils/PhoneFormatter";
|
||||
import { alphaSort } from "../../utils/sorters";
|
||||
import ProductionSubletsManageComponent from "../production-sublets-manage/production-sublets-manage.component";
|
||||
import ProductionListColumnAlert from "./production-list-columns.alert.component";
|
||||
import ProductionListColumnBodyPriority from "./production-list-columns.bodypriority.component";
|
||||
import ProductionListColumnPaintPriority from "./production-list-columns.paintpriority.component";
|
||||
import ProductionListColumnStatus from "./production-list-columns.status.component";
|
||||
import ProductionListColumnNote from "./production-list-columns.productionnote.component";
|
||||
|
||||
import ProductionListColumnStatus from "./production-list-columns.status.component";
|
||||
import ProductionlistColumnTouchTime from "./prodution-list-columns.touchtime.component";
|
||||
|
||||
export default [
|
||||
{
|
||||
@@ -19,7 +20,9 @@ export default [
|
||||
key: "viewdetail",
|
||||
ellipsis: true,
|
||||
render: (text, record) => (
|
||||
<Link to={{search:`?selected=${record.id}`}} >{i18n.t("general.labels.view")}</Link>
|
||||
<Link to={{ search: `?selected=${record.id}` }}>
|
||||
{i18n.t("general.labels.view")}
|
||||
</Link>
|
||||
),
|
||||
},
|
||||
{
|
||||
@@ -179,16 +182,8 @@ export default [
|
||||
title: i18n.t("production.labels.cycletime"),
|
||||
dataIndex: "ct",
|
||||
key: "ct",
|
||||
|
||||
render: (text, record) => {
|
||||
let ct = 0;
|
||||
if (!!record.actual_in) {
|
||||
const totalHrs = record.larhrs + record.labhrs;
|
||||
const Difference_In_Time = new Date() - new Date(record.actual_in);
|
||||
const Difference_In_Days = Difference_In_Time / (1000 * 3600 * 24);
|
||||
ct = (totalHrs / Difference_In_Days).toFixed(2);
|
||||
}
|
||||
return <span>{ct || 0}</span>;
|
||||
return <ProductionlistColumnTouchTime job={record} />;
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -215,4 +210,12 @@ export default [
|
||||
<ProductionListColumnPaintPriority record={record} />
|
||||
),
|
||||
},
|
||||
{
|
||||
title: i18n.t("production.labels.sublets"),
|
||||
dataIndex: "sublets",
|
||||
key: "sublets",
|
||||
render: (text, record) => (
|
||||
<ProductionSubletsManageComponent subletJobLines={record.subletLines} />
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
import moment from "moment";
|
||||
import React, { useMemo } from "react";
|
||||
export default function ProductionlistColumnTouchTime({ job }) {
|
||||
let ct = useMemo(() => {
|
||||
if (!!job.actual_in) {
|
||||
const totalHrs =
|
||||
(job.larhrs.aggregate.sum.mod_lb_hrs || 0) +
|
||||
(job.labhrs.aggregate.sum.mod_lb_hrs || 0);
|
||||
|
||||
const Difference_In_Days = moment().diff(
|
||||
moment(job.actual_in),
|
||||
"days",
|
||||
true
|
||||
);
|
||||
|
||||
return (totalHrs / Difference_In_Days).toFixed(2);
|
||||
}
|
||||
return 0;
|
||||
}, [job]);
|
||||
|
||||
return <span>{ct}</span>;
|
||||
}
|
||||
@@ -1,13 +1,12 @@
|
||||
import React from "react";
|
||||
import { Descriptions, Drawer } from "antd";
|
||||
import queryString from "query-string";
|
||||
import React from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { useHistory, useLocation } from "react-router-dom";
|
||||
import CurrencyFormatter from "../../utils/CurrencyFormatter";
|
||||
import { DateFormatter } from "../../utils/DateFormatter";
|
||||
import PartsStatusPie from "../parts-status-pie/parts-status-pie.component";
|
||||
import Barcode from "react-barcode";
|
||||
import ProductionRemoveButton from "../production-remove-button/production-remove-button.component";
|
||||
import queryString from "query-string";
|
||||
import { useHistory, useLocation } from "react-router-dom";
|
||||
|
||||
export default function ProductionListDetail({ jobs }) {
|
||||
const search = queryString.parse(useLocation().search);
|
||||
@@ -31,13 +30,6 @@ export default function ProductionListDetail({ jobs }) {
|
||||
visible={!!selected}
|
||||
>
|
||||
<div>
|
||||
<Barcode
|
||||
value={theJob.id || ""}
|
||||
background="transparent"
|
||||
displayValue={false}
|
||||
width={1}
|
||||
height={15}
|
||||
/>
|
||||
<Descriptions bordered size="small" column={1}>
|
||||
<Descriptions.Item label={t("jobs.fields.ro_number")}>
|
||||
{theJob.ro_number || ""}
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
import { CheckCircleFilled, EyeInvisibleFilled } from "@ant-design/icons";
|
||||
import { Button, List, notification, Popover } from "antd";
|
||||
import React, { useMemo, useState } from "react";
|
||||
import { useMutation } from "react-apollo";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { UPDATE_JOB_LINE } from "../../graphql/jobs-lines.queries";
|
||||
export default function ProductionSubletsManageComponent({ subletJobLines }) {
|
||||
const { t } = useTranslation();
|
||||
const [updateJobLine] = useMutation(UPDATE_JOB_LINE);
|
||||
const [loading, setLoading] = useState(false);
|
||||
const subletCount = useMemo(() => {
|
||||
return {
|
||||
total: subletJobLines.filter((s) => !s.sublet_ignored).length,
|
||||
outstanding: subletJobLines.filter(
|
||||
(s) => !s.sublet_ignored && !s.sublet_completed
|
||||
).length,
|
||||
};
|
||||
}, [subletJobLines]);
|
||||
|
||||
const handleSubletMark = async (sublet, action) => {
|
||||
setLoading(true);
|
||||
|
||||
const result = await updateJobLine({
|
||||
variables: {
|
||||
lineId: sublet.id,
|
||||
line: {
|
||||
sublet_completed:
|
||||
action === "complete" ? !sublet.sublet_completed : false,
|
||||
sublet_ignored: action === "ignore" ? !sublet.sublet_ignored : false,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
if (!!result.errors) {
|
||||
notification["error"]({
|
||||
message: t("joblines.errors.updating", {
|
||||
message: JSON.stringify(result.errors),
|
||||
}),
|
||||
});
|
||||
} else {
|
||||
notification["success"]({
|
||||
message: t("joblines.successes.updated"),
|
||||
});
|
||||
}
|
||||
setLoading(false);
|
||||
};
|
||||
|
||||
const popContent = (
|
||||
<div style={{ minWidth: "20rem" }}>
|
||||
<List
|
||||
size="small"
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
dataSource={subletJobLines}
|
||||
renderItem={(s) => (
|
||||
<List.Item
|
||||
actions={[
|
||||
<Button
|
||||
key="complete"
|
||||
loading={loading}
|
||||
onClick={() => handleSubletMark(s, "complete")}
|
||||
type={s.sublet_completed ? "primary" : "ghost"}
|
||||
>
|
||||
<CheckCircleFilled
|
||||
color={s.sublet_completed ? "green" : null}
|
||||
/>
|
||||
</Button>,
|
||||
<Button
|
||||
key="sublet"
|
||||
loading={loading}
|
||||
onClick={() => handleSubletMark(s, "ignore")}
|
||||
type={s.sublet_ignored ? "primary" : "ghost"}
|
||||
>
|
||||
<EyeInvisibleFilled
|
||||
color={s.sublet_ignored ? "tomato" : null}
|
||||
/>
|
||||
</Button>,
|
||||
]}
|
||||
>
|
||||
<List.Item.Meta title={s.line_desc} />
|
||||
</List.Item>
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
return (
|
||||
<Popover
|
||||
trigger={["click"]}
|
||||
content={popContent}
|
||||
style={{ cursor: "pointer" }}
|
||||
placement="bottom"
|
||||
title={t("production.labels.sublets")}
|
||||
>
|
||||
<span>{`${subletCount.outstanding} / ${subletCount.total} rem.`}</span>
|
||||
</Popover>
|
||||
);
|
||||
}
|
||||
@@ -173,6 +173,17 @@ export const SUBSCRIPTION_JOBS_IN_PRODUCTION = gql`
|
||||
}
|
||||
}
|
||||
}
|
||||
subletLines: joblines(
|
||||
where: {
|
||||
_and: { part_type: { _in: ["PAS", "PASL"] }, removed: { _eq: false } }
|
||||
}
|
||||
order_by: { line_no: asc }
|
||||
) {
|
||||
id
|
||||
line_desc
|
||||
sublet_ignored
|
||||
sublet_completed
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
@@ -1345,7 +1345,8 @@
|
||||
"jobdetail": "Job Details",
|
||||
"note": "Production Note",
|
||||
"paintpriority": "P/P",
|
||||
"refinishhours": "R"
|
||||
"refinishhours": "R",
|
||||
"sublets": "Sublets"
|
||||
},
|
||||
"successes": {
|
||||
"removed": "Job removed from production."
|
||||
|
||||
@@ -1345,7 +1345,8 @@
|
||||
"jobdetail": "",
|
||||
"note": "",
|
||||
"paintpriority": "",
|
||||
"refinishhours": ""
|
||||
"refinishhours": "",
|
||||
"sublets": ""
|
||||
},
|
||||
"successes": {
|
||||
"removed": ""
|
||||
|
||||
@@ -1345,7 +1345,8 @@
|
||||
"jobdetail": "",
|
||||
"note": "",
|
||||
"paintpriority": "",
|
||||
"refinishhours": ""
|
||||
"refinishhours": "",
|
||||
"sublets": ""
|
||||
},
|
||||
"successes": {
|
||||
"removed": ""
|
||||
|
||||
@@ -7930,11 +7930,6 @@ js-yaml@^3.13.1:
|
||||
argparse "^1.0.7"
|
||||
esprima "^4.0.0"
|
||||
|
||||
jsbarcode@^3.8.0:
|
||||
version "3.11.0"
|
||||
resolved "https://registry.yarnpkg.com/jsbarcode/-/jsbarcode-3.11.0.tgz#20623e008b101ef45d0cce9c8022cdf49be28547"
|
||||
integrity sha512-/ozCd7wsa+VIHo9sUc03HneVEQrH7cVWfJolUT/WOW1m8mJ2e3iYZje6C9X3LFHdczlesqFHRpxLtbVsNtjyow==
|
||||
|
||||
jsbn@~0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
|
||||
@@ -11327,14 +11322,6 @@ react-app-polyfill@^1.0.6:
|
||||
regenerator-runtime "^0.13.3"
|
||||
whatwg-fetch "^3.0.0"
|
||||
|
||||
react-barcode@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/react-barcode/-/react-barcode-1.4.0.tgz#ebc85ff1b8b49ac4b947b7f3745d684c6c363902"
|
||||
integrity sha512-xDxIc9WUTQPMcwc3kbCVsjh03WiPyynms9OSdsNSh2AAgB6XqMiy9hYWkCNHgdNdvurkvKB6hm25AZHXyQfvlQ==
|
||||
dependencies:
|
||||
jsbarcode "^3.8.0"
|
||||
prop-types "^15.6.2"
|
||||
|
||||
react-beautiful-dnd@^13.0.0:
|
||||
version "13.0.0"
|
||||
resolved "https://registry.yarnpkg.com/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz#f70cc8ff82b84bc718f8af157c9f95757a6c3b40"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: ALTER TABLE "public"."joblines" DROP COLUMN "sublet_ignored";
|
||||
type: run_sql
|
||||
@@ -0,0 +1,6 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: ALTER TABLE "public"."joblines" ADD COLUMN "sublet_ignored" bool NOT NULL
|
||||
DEFAULT false;
|
||||
type: run_sql
|
||||
@@ -0,0 +1,5 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: ALTER TABLE "public"."joblines" DROP COLUMN "sublet_completed";
|
||||
type: run_sql
|
||||
@@ -0,0 +1,6 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: ALTER TABLE "public"."joblines" ADD COLUMN "sublet_completed" bool NOT NULL
|
||||
DEFAULT false;
|
||||
type: run_sql
|
||||
@@ -0,0 +1,79 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: joblines
|
||||
schema: public
|
||||
type: drop_insert_permission
|
||||
- args:
|
||||
permission:
|
||||
check:
|
||||
job:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
columns:
|
||||
- act_price
|
||||
- alt_co_id
|
||||
- alt_overrd
|
||||
- alt_part_i
|
||||
- alt_partm
|
||||
- alt_partno
|
||||
- bett_amt
|
||||
- bett_pctg
|
||||
- bett_tax
|
||||
- bett_type
|
||||
- cert_part
|
||||
- created_at
|
||||
- db_hrs
|
||||
- db_price
|
||||
- db_ref
|
||||
- est_seq
|
||||
- glass_flag
|
||||
- id
|
||||
- jobid
|
||||
- lbr_amt
|
||||
- lbr_hrs_j
|
||||
- lbr_inc
|
||||
- lbr_op
|
||||
- lbr_op_j
|
||||
- lbr_tax
|
||||
- lbr_typ_j
|
||||
- line_desc
|
||||
- line_ind
|
||||
- line_no
|
||||
- line_ref
|
||||
- location
|
||||
- misc_amt
|
||||
- misc_sublt
|
||||
- misc_tax
|
||||
- mod_lb_hrs
|
||||
- mod_lbr_ty
|
||||
- notes
|
||||
- oem_partno
|
||||
- op_code_desc
|
||||
- paint_stg
|
||||
- paint_tone
|
||||
- part_qty
|
||||
- part_type
|
||||
- price_inc
|
||||
- price_j
|
||||
- profitcenter_labor
|
||||
- profitcenter_part
|
||||
- prt_dsmk_m
|
||||
- prt_dsmk_p
|
||||
- removed
|
||||
- status
|
||||
- tax_part
|
||||
- unq_seq
|
||||
- updated_at
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: joblines
|
||||
schema: public
|
||||
type: create_insert_permission
|
||||
@@ -0,0 +1,81 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: joblines
|
||||
schema: public
|
||||
type: drop_insert_permission
|
||||
- args:
|
||||
permission:
|
||||
check:
|
||||
job:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
columns:
|
||||
- act_price
|
||||
- alt_co_id
|
||||
- alt_overrd
|
||||
- alt_part_i
|
||||
- alt_partm
|
||||
- alt_partno
|
||||
- bett_amt
|
||||
- bett_pctg
|
||||
- bett_tax
|
||||
- bett_type
|
||||
- cert_part
|
||||
- created_at
|
||||
- db_hrs
|
||||
- db_price
|
||||
- db_ref
|
||||
- est_seq
|
||||
- glass_flag
|
||||
- id
|
||||
- jobid
|
||||
- lbr_amt
|
||||
- lbr_hrs_j
|
||||
- lbr_inc
|
||||
- lbr_op
|
||||
- lbr_op_j
|
||||
- lbr_tax
|
||||
- lbr_typ_j
|
||||
- line_desc
|
||||
- line_ind
|
||||
- line_no
|
||||
- line_ref
|
||||
- location
|
||||
- misc_amt
|
||||
- misc_sublt
|
||||
- misc_tax
|
||||
- mod_lb_hrs
|
||||
- mod_lbr_ty
|
||||
- notes
|
||||
- oem_partno
|
||||
- op_code_desc
|
||||
- paint_stg
|
||||
- paint_tone
|
||||
- part_qty
|
||||
- part_type
|
||||
- price_inc
|
||||
- price_j
|
||||
- profitcenter_labor
|
||||
- profitcenter_part
|
||||
- prt_dsmk_m
|
||||
- prt_dsmk_p
|
||||
- removed
|
||||
- status
|
||||
- sublet_completed
|
||||
- sublet_ignored
|
||||
- tax_part
|
||||
- unq_seq
|
||||
- updated_at
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: joblines
|
||||
schema: public
|
||||
type: create_insert_permission
|
||||
@@ -0,0 +1,80 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: joblines
|
||||
schema: public
|
||||
type: drop_select_permission
|
||||
- args:
|
||||
permission:
|
||||
allow_aggregations: true
|
||||
columns:
|
||||
- act_price
|
||||
- alt_co_id
|
||||
- alt_overrd
|
||||
- alt_part_i
|
||||
- alt_partm
|
||||
- alt_partno
|
||||
- bett_amt
|
||||
- bett_pctg
|
||||
- bett_tax
|
||||
- bett_type
|
||||
- cert_part
|
||||
- created_at
|
||||
- db_hrs
|
||||
- db_price
|
||||
- db_ref
|
||||
- est_seq
|
||||
- glass_flag
|
||||
- id
|
||||
- jobid
|
||||
- lbr_amt
|
||||
- lbr_hrs_j
|
||||
- lbr_inc
|
||||
- lbr_op
|
||||
- lbr_op_j
|
||||
- lbr_tax
|
||||
- lbr_typ_j
|
||||
- line_desc
|
||||
- line_ind
|
||||
- line_no
|
||||
- line_ref
|
||||
- location
|
||||
- misc_amt
|
||||
- misc_sublt
|
||||
- misc_tax
|
||||
- mod_lb_hrs
|
||||
- mod_lbr_ty
|
||||
- notes
|
||||
- oem_partno
|
||||
- op_code_desc
|
||||
- paint_stg
|
||||
- paint_tone
|
||||
- part_qty
|
||||
- part_type
|
||||
- price_inc
|
||||
- price_j
|
||||
- profitcenter_labor
|
||||
- profitcenter_part
|
||||
- prt_dsmk_m
|
||||
- prt_dsmk_p
|
||||
- removed
|
||||
- status
|
||||
- tax_part
|
||||
- unq_seq
|
||||
- updated_at
|
||||
computed_fields: []
|
||||
filter:
|
||||
job:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
role: user
|
||||
table:
|
||||
name: joblines
|
||||
schema: public
|
||||
type: create_select_permission
|
||||
@@ -0,0 +1,82 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: joblines
|
||||
schema: public
|
||||
type: drop_select_permission
|
||||
- args:
|
||||
permission:
|
||||
allow_aggregations: true
|
||||
columns:
|
||||
- act_price
|
||||
- alt_co_id
|
||||
- alt_overrd
|
||||
- alt_part_i
|
||||
- alt_partm
|
||||
- alt_partno
|
||||
- bett_amt
|
||||
- bett_pctg
|
||||
- bett_tax
|
||||
- bett_type
|
||||
- cert_part
|
||||
- created_at
|
||||
- db_hrs
|
||||
- db_price
|
||||
- db_ref
|
||||
- est_seq
|
||||
- glass_flag
|
||||
- id
|
||||
- jobid
|
||||
- lbr_amt
|
||||
- lbr_hrs_j
|
||||
- lbr_inc
|
||||
- lbr_op
|
||||
- lbr_op_j
|
||||
- lbr_tax
|
||||
- lbr_typ_j
|
||||
- line_desc
|
||||
- line_ind
|
||||
- line_no
|
||||
- line_ref
|
||||
- location
|
||||
- misc_amt
|
||||
- misc_sublt
|
||||
- misc_tax
|
||||
- mod_lb_hrs
|
||||
- mod_lbr_ty
|
||||
- notes
|
||||
- oem_partno
|
||||
- op_code_desc
|
||||
- paint_stg
|
||||
- paint_tone
|
||||
- part_qty
|
||||
- part_type
|
||||
- price_inc
|
||||
- price_j
|
||||
- profitcenter_labor
|
||||
- profitcenter_part
|
||||
- prt_dsmk_m
|
||||
- prt_dsmk_p
|
||||
- removed
|
||||
- status
|
||||
- sublet_completed
|
||||
- sublet_ignored
|
||||
- tax_part
|
||||
- unq_seq
|
||||
- updated_at
|
||||
computed_fields: []
|
||||
filter:
|
||||
job:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
role: user
|
||||
table:
|
||||
name: joblines
|
||||
schema: public
|
||||
type: create_select_permission
|
||||
@@ -0,0 +1,79 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: joblines
|
||||
schema: public
|
||||
type: drop_update_permission
|
||||
- args:
|
||||
permission:
|
||||
columns:
|
||||
- act_price
|
||||
- alt_co_id
|
||||
- alt_overrd
|
||||
- alt_part_i
|
||||
- alt_partm
|
||||
- alt_partno
|
||||
- bett_amt
|
||||
- bett_pctg
|
||||
- bett_tax
|
||||
- bett_type
|
||||
- cert_part
|
||||
- created_at
|
||||
- db_hrs
|
||||
- db_price
|
||||
- db_ref
|
||||
- est_seq
|
||||
- glass_flag
|
||||
- id
|
||||
- jobid
|
||||
- lbr_amt
|
||||
- lbr_hrs_j
|
||||
- lbr_inc
|
||||
- lbr_op
|
||||
- lbr_op_j
|
||||
- lbr_tax
|
||||
- lbr_typ_j
|
||||
- line_desc
|
||||
- line_ind
|
||||
- line_no
|
||||
- line_ref
|
||||
- location
|
||||
- misc_amt
|
||||
- misc_sublt
|
||||
- misc_tax
|
||||
- mod_lb_hrs
|
||||
- mod_lbr_ty
|
||||
- notes
|
||||
- oem_partno
|
||||
- op_code_desc
|
||||
- paint_stg
|
||||
- paint_tone
|
||||
- part_qty
|
||||
- part_type
|
||||
- price_inc
|
||||
- price_j
|
||||
- profitcenter_labor
|
||||
- profitcenter_part
|
||||
- prt_dsmk_m
|
||||
- prt_dsmk_p
|
||||
- removed
|
||||
- status
|
||||
- tax_part
|
||||
- unq_seq
|
||||
- updated_at
|
||||
filter:
|
||||
job:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: joblines
|
||||
schema: public
|
||||
type: create_update_permission
|
||||
@@ -0,0 +1,81 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: joblines
|
||||
schema: public
|
||||
type: drop_update_permission
|
||||
- args:
|
||||
permission:
|
||||
columns:
|
||||
- act_price
|
||||
- alt_co_id
|
||||
- alt_overrd
|
||||
- alt_part_i
|
||||
- alt_partm
|
||||
- alt_partno
|
||||
- bett_amt
|
||||
- bett_pctg
|
||||
- bett_tax
|
||||
- bett_type
|
||||
- cert_part
|
||||
- created_at
|
||||
- db_hrs
|
||||
- db_price
|
||||
- db_ref
|
||||
- est_seq
|
||||
- glass_flag
|
||||
- id
|
||||
- jobid
|
||||
- lbr_amt
|
||||
- lbr_hrs_j
|
||||
- lbr_inc
|
||||
- lbr_op
|
||||
- lbr_op_j
|
||||
- lbr_tax
|
||||
- lbr_typ_j
|
||||
- line_desc
|
||||
- line_ind
|
||||
- line_no
|
||||
- line_ref
|
||||
- location
|
||||
- misc_amt
|
||||
- misc_sublt
|
||||
- misc_tax
|
||||
- mod_lb_hrs
|
||||
- mod_lbr_ty
|
||||
- notes
|
||||
- oem_partno
|
||||
- op_code_desc
|
||||
- paint_stg
|
||||
- paint_tone
|
||||
- part_qty
|
||||
- part_type
|
||||
- price_inc
|
||||
- price_j
|
||||
- profitcenter_labor
|
||||
- profitcenter_part
|
||||
- prt_dsmk_m
|
||||
- prt_dsmk_p
|
||||
- removed
|
||||
- status
|
||||
- sublet_completed
|
||||
- sublet_ignored
|
||||
- tax_part
|
||||
- unq_seq
|
||||
- updated_at
|
||||
filter:
|
||||
job:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: joblines
|
||||
schema: public
|
||||
type: create_update_permission
|
||||
@@ -1778,6 +1778,8 @@ tables:
|
||||
- prt_dsmk_p
|
||||
- removed
|
||||
- status
|
||||
- sublet_completed
|
||||
- sublet_ignored
|
||||
- tax_part
|
||||
- unq_seq
|
||||
- updated_at
|
||||
@@ -1836,6 +1838,8 @@ tables:
|
||||
- prt_dsmk_p
|
||||
- removed
|
||||
- status
|
||||
- sublet_completed
|
||||
- sublet_ignored
|
||||
- tax_part
|
||||
- unq_seq
|
||||
- updated_at
|
||||
@@ -1905,6 +1909,8 @@ tables:
|
||||
- prt_dsmk_p
|
||||
- removed
|
||||
- status
|
||||
- sublet_completed
|
||||
- sublet_ignored
|
||||
- tax_part
|
||||
- unq_seq
|
||||
- updated_at
|
||||
|
||||
54
key.pem
54
key.pem
@@ -1,54 +0,0 @@
|
||||
-----BEGIN ENCRYPTED PRIVATE KEY-----
|
||||
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
|
||||
lprkK8/B3YTkfi7ZmfapZA==
|
||||
-----END ENCRYPTED PRIVATE KEY-----
|
||||
Reference in New Issue
Block a user