Merged in release/2022-05-27 (pull request #495)
Remove console log statmenets. Approved-by: Patrick Fic
This commit is contained in:
@@ -32076,6 +32076,27 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>note</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>
|
<concept_node>
|
||||||
<name>ownr_addr1</name>
|
<name>ownr_addr1</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import { connect } from "react-redux";
|
|||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import ExportLogsCountDisplay from "../export-logs-count-display/export-logs-count-display.component";
|
import ExportLogsCountDisplay from "../export-logs-count-display/export-logs-count-display.component";
|
||||||
|
import BillMarkSelectedExported from "../payable-mark-selected-exported/payable-mark-selected-exported.component";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
@@ -28,7 +29,12 @@ export default connect(
|
|||||||
mapDispatchToProps
|
mapDispatchToProps
|
||||||
)(AccountingPayablesTableComponent);
|
)(AccountingPayablesTableComponent);
|
||||||
|
|
||||||
export function AccountingPayablesTableComponent({ bodyshop, loading, bills, refetch }) {
|
export function AccountingPayablesTableComponent({
|
||||||
|
bodyshop,
|
||||||
|
loading,
|
||||||
|
bills,
|
||||||
|
refetch,
|
||||||
|
}) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const [selectedBills, setSelectedBills] = useState([]);
|
const [selectedBills, setSelectedBills] = useState([]);
|
||||||
const [transInProgress, setTransInProgress] = useState(false);
|
const [transInProgress, setTransInProgress] = useState(false);
|
||||||
@@ -143,15 +149,13 @@ export function AccountingPayablesTableComponent({ bodyshop, loading, bills, ref
|
|||||||
sorter: (a, b) => a.clm_total - b.clm_total,
|
sorter: (a, b) => a.clm_total - b.clm_total,
|
||||||
|
|
||||||
render: (text, record) => (
|
render: (text, record) => (
|
||||||
<div>
|
<PayableExportButton
|
||||||
<PayableExportButton
|
billId={record.id}
|
||||||
billId={record.id}
|
disabled={transInProgress || !!record.exported}
|
||||||
disabled={transInProgress || !!record.exported}
|
loadingCallback={setTransInProgress}
|
||||||
loadingCallback={setTransInProgress}
|
setSelectedBills={setSelectedBills}
|
||||||
setSelectedBills={setSelectedBills}
|
refetch={refetch}
|
||||||
refetch={refetch}
|
/>
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
@@ -177,6 +181,13 @@ export function AccountingPayablesTableComponent({ bodyshop, loading, bills, ref
|
|||||||
<Card
|
<Card
|
||||||
extra={
|
extra={
|
||||||
<Space wrap>
|
<Space wrap>
|
||||||
|
<BillMarkSelectedExported
|
||||||
|
billids={selectedBills}
|
||||||
|
disabled={transInProgress || selectedBills.length === 0}
|
||||||
|
loadingCallback={setTransInProgress}
|
||||||
|
completedCallback={setSelectedBills}
|
||||||
|
refetch={refetch}
|
||||||
|
/>
|
||||||
<PayableExportAll
|
<PayableExportAll
|
||||||
billids={selectedBills}
|
billids={selectedBills}
|
||||||
disabled={transInProgress || selectedBills.length === 0}
|
disabled={transInProgress || selectedBills.length === 0}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import React, { useState } from "react";
|
|||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
|
import { selectJobReadOnly } from "../../redux/application/application.selectors";
|
||||||
import { setModalContext } from "../../redux/modals/modals.actions";
|
import { setModalContext } from "../../redux/modals/modals.actions";
|
||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import CurrencyFormatter from "../../utils/CurrencyFormatter";
|
import CurrencyFormatter from "../../utils/CurrencyFormatter";
|
||||||
@@ -14,7 +15,7 @@ import BillDeleteButton from "../bill-delete-button/bill-delete-button.component
|
|||||||
import PrintWrapperComponent from "../print-wrapper/print-wrapper.component";
|
import PrintWrapperComponent from "../print-wrapper/print-wrapper.component";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
//jobRO: selectJobReadOnly,
|
jobRO: selectJobReadOnly,
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -29,6 +30,7 @@ const mapDispatchToProps = (dispatch) => ({
|
|||||||
|
|
||||||
export function BillsListTableComponent({
|
export function BillsListTableComponent({
|
||||||
bodyshop,
|
bodyshop,
|
||||||
|
jobRO,
|
||||||
job,
|
job,
|
||||||
billsQuery,
|
billsQuery,
|
||||||
handleOnRowClick,
|
handleOnRowClick,
|
||||||
@@ -58,7 +60,9 @@ export function BillsListTableComponent({
|
|||||||
<BillDeleteButton bill={record} />
|
<BillDeleteButton bill={record} />
|
||||||
<Button
|
<Button
|
||||||
disabled={
|
disabled={
|
||||||
record.is_credit_memo || record.vendorid === bodyshop.inhousevendorid
|
record.is_credit_memo ||
|
||||||
|
record.vendorid === bodyshop.inhousevendorid ||
|
||||||
|
jobRO
|
||||||
}
|
}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setPartsOrderContext({
|
setPartsOrderContext({
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ export default function CABCpvrtCalculator({ disabled, form }) {
|
|||||||
|
|
||||||
const handleFinish = async (values) => {
|
const handleFinish = async (values) => {
|
||||||
logImEXEvent("job_ca_bc_pvrt_calculate");
|
logImEXEvent("job_ca_bc_pvrt_calculate");
|
||||||
form.setFieldsValue({ ca_bc_pvrt: (values.rate * values.days).toFixed(2) });
|
form.setFieldsValue({ ca_bc_pvrt: ((values.rate||0) * (values.days||0)).toFixed(2) });
|
||||||
setVisibility(false);
|
setVisibility(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -137,9 +137,9 @@ export function JobsList({ bodyshop }) {
|
|||||||
sortOrder:
|
sortOrder:
|
||||||
state.sortedInfo.columnKey === "owner" && state.sortedInfo.order,
|
state.sortedInfo.columnKey === "owner" && state.sortedInfo.order,
|
||||||
render: (text, record) => {
|
render: (text, record) => {
|
||||||
return record.owner ? (
|
return record.ownerid ? (
|
||||||
<Link
|
<Link
|
||||||
to={"/manage/owners/" + record.owner.id}
|
to={"/manage/owners/" + record.ownerid}
|
||||||
onClick={(e) => e.stopPropagation()}
|
onClick={(e) => e.stopPropagation()}
|
||||||
>
|
>
|
||||||
<OwnerNameDisplay ownerObject={record} />
|
<OwnerNameDisplay ownerObject={record} />
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ export default function OwnerDetailFormComponent({ form, loading }) {
|
|||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<FormFieldsChanged form={form} />
|
<FormFieldsChanged form={form} />
|
||||||
|
|
||||||
<LayoutFormRow header={t("owners.forms.name")}>
|
<LayoutFormRow header={t("owners.forms.name")}>
|
||||||
<Form.Item label={t("owners.fields.ownr_title")} name="ownr_title">
|
<Form.Item label={t("owners.fields.ownr_title")} name="ownr_title">
|
||||||
<Input />
|
<Input />
|
||||||
@@ -29,7 +28,6 @@ export default function OwnerDetailFormComponent({ form, loading }) {
|
|||||||
<Input />
|
<Input />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</LayoutFormRow>
|
</LayoutFormRow>
|
||||||
|
|
||||||
<LayoutFormRow header={t("owners.forms.address")}>
|
<LayoutFormRow header={t("owners.forms.address")}>
|
||||||
<Form.Item label={t("owners.fields.ownr_addr1")} name="ownr_addr1">
|
<Form.Item label={t("owners.fields.ownr_addr1")} name="ownr_addr1">
|
||||||
<Input />
|
<Input />
|
||||||
@@ -50,7 +48,6 @@ export default function OwnerDetailFormComponent({ form, loading }) {
|
|||||||
<Input />
|
<Input />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</LayoutFormRow>
|
</LayoutFormRow>
|
||||||
|
|
||||||
<LayoutFormRow header={t("owners.forms.contact")}>
|
<LayoutFormRow header={t("owners.forms.contact")}>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("owners.fields.allow_text_message")}
|
label={t("owners.fields.allow_text_message")}
|
||||||
@@ -98,6 +95,9 @@ export default function OwnerDetailFormComponent({ form, loading }) {
|
|||||||
<Input />
|
<Input />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</LayoutFormRow>
|
</LayoutFormRow>
|
||||||
|
<Form.Item label={t("owners.fields.note")} name="note">
|
||||||
|
<Input.TextArea rows={4} />
|
||||||
|
</Form.Item>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,14 @@ export default function OwnerFindModalComponent({
|
|||||||
<PhoneFormatter>{record.ownr_ph2}</PhoneFormatter>
|
<PhoneFormatter>{record.ownr_ph2}</PhoneFormatter>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: t("owners.fields.note"),
|
||||||
|
dataIndex: "note",
|
||||||
|
key: "note",
|
||||||
|
render: (text, record) => (
|
||||||
|
<span style={{ whiteSpace: "pre" }}>{record.note}</span>
|
||||||
|
),
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const handleOnRowClick = (record) => {
|
const handleOnRowClick = (record) => {
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ export function PartsOrderModalContainer({
|
|||||||
po: [
|
po: [
|
||||||
{
|
{
|
||||||
...values,
|
...values,
|
||||||
|
order_date: moment().format("YYYY-MM-DD"),
|
||||||
orderedby: currentUser.email,
|
orderedby: currentUser.email,
|
||||||
jobid: jobId,
|
jobid: jobId,
|
||||||
user_email: currentUser.email,
|
user_email: currentUser.email,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { useMutation } from "@apollo/client";
|
import { useMutation } from "@apollo/client";
|
||||||
import { Form, Modal, notification } from "antd";
|
import { Form, Modal, notification } from "antd";
|
||||||
import React, { useEffect } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
@@ -31,7 +31,7 @@ export function PartsReceiveModalContainer({
|
|||||||
bodyshop,
|
bodyshop,
|
||||||
}) {
|
}) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const [loading, setLoading] = useState(false);
|
||||||
const { visible, context, actions } = partsReceiveModal;
|
const { visible, context, actions } = partsReceiveModal;
|
||||||
const { partsorderlines } = context;
|
const { partsorderlines } = context;
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ export function PartsReceiveModalContainer({
|
|||||||
|
|
||||||
const handleFinish = async (values) => {
|
const handleFinish = async (values) => {
|
||||||
logImEXEvent("parts_order_receive");
|
logImEXEvent("parts_order_receive");
|
||||||
|
setLoading(true);
|
||||||
const result = await Promise.all(
|
const result = await Promise.all(
|
||||||
values.partsorderlines.map((li) => {
|
values.partsorderlines.map((li) => {
|
||||||
return receivePartsLine({
|
return receivePartsLine({
|
||||||
@@ -75,7 +75,7 @@ export function PartsReceiveModalContainer({
|
|||||||
notification["success"]({
|
notification["success"]({
|
||||||
message: t("parts_orders.successes.received"),
|
message: t("parts_orders.successes.received"),
|
||||||
});
|
});
|
||||||
|
setLoading(false);
|
||||||
if (refetch) refetch();
|
if (refetch) refetch();
|
||||||
toggleModalVisible();
|
toggleModalVisible();
|
||||||
};
|
};
|
||||||
@@ -96,6 +96,7 @@ export function PartsReceiveModalContainer({
|
|||||||
title={t("parts_orders.labels.receive")}
|
title={t("parts_orders.labels.receive")}
|
||||||
onCancel={() => toggleModalVisible()}
|
onCancel={() => toggleModalVisible()}
|
||||||
onOk={() => form.submit()}
|
onOk={() => form.submit()}
|
||||||
|
okButtonProps={{ loading: loading }}
|
||||||
destroyOnClose
|
destroyOnClose
|
||||||
forceRender
|
forceRender
|
||||||
width="50%"
|
width="50%"
|
||||||
|
|||||||
@@ -0,0 +1,79 @@
|
|||||||
|
import { gql, useMutation } from "@apollo/client";
|
||||||
|
import { Button, notification } from "antd";
|
||||||
|
import React, { useState } from "react";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { connect } from "react-redux";
|
||||||
|
import { createStructuredSelector } from "reselect";
|
||||||
|
import {
|
||||||
|
selectAuthLevel,
|
||||||
|
selectBodyshop,
|
||||||
|
} from "../../redux/user/user.selectors";
|
||||||
|
|
||||||
|
const mapStateToProps = createStructuredSelector({
|
||||||
|
bodyshop: selectBodyshop,
|
||||||
|
authLevel: selectAuthLevel,
|
||||||
|
});
|
||||||
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
|
//setUserLanguage: language => dispatch(setUserLanguage(language))
|
||||||
|
});
|
||||||
|
|
||||||
|
export default connect(
|
||||||
|
mapStateToProps,
|
||||||
|
mapDispatchToProps
|
||||||
|
)(BillMarkSelectedExported);
|
||||||
|
|
||||||
|
export function BillMarkSelectedExported({
|
||||||
|
billids,
|
||||||
|
disabled,
|
||||||
|
loadingCallback,
|
||||||
|
completedCallback,
|
||||||
|
refetch,
|
||||||
|
}) {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
const [loading, setLoading] = useState(false);
|
||||||
|
|
||||||
|
const [updateBill] = useMutation(gql`
|
||||||
|
mutation UPDATE_BILL($billIds: [uuid!]!) {
|
||||||
|
update_bills(where: { id: { _in: $billIds } }, _set: { exported: true }) {
|
||||||
|
returning {
|
||||||
|
id
|
||||||
|
exported
|
||||||
|
exported_at
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`);
|
||||||
|
|
||||||
|
const handleUpdate = async () => {
|
||||||
|
setLoading(true);
|
||||||
|
loadingCallback(true);
|
||||||
|
const result = await updateBill({
|
||||||
|
variables: { billIds: billids },
|
||||||
|
update(cache){
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!result.errors) {
|
||||||
|
notification["success"]({
|
||||||
|
message: t("bills.successes.markexported"),
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
notification["error"]({
|
||||||
|
message: t("bills.errors.saving", {
|
||||||
|
error: JSON.stringify(result.errors),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
loadingCallback(false);
|
||||||
|
completedCallback && completedCallback([]);
|
||||||
|
setLoading(false);
|
||||||
|
refetch && refetch();
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Button loading={loading} disabled={disabled} onClick={handleUpdate}>
|
||||||
|
{t("bills.labels.markexported")}
|
||||||
|
</Button>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -42,17 +42,24 @@ export function ProductionColumnsComponent({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const columnKeys = columns.map((i) => i.key);
|
const columnKeys = columns.map((i) => i.key);
|
||||||
|
const cols = dataSource({
|
||||||
|
technician,
|
||||||
|
state: tableState,
|
||||||
|
activeStatuses: bodyshop.md_ro_statuses.active_statuses,
|
||||||
|
});
|
||||||
const menu = (
|
const menu = (
|
||||||
<Menu onClick={handleAdd}>
|
<Menu
|
||||||
{dataSource({
|
onClick={handleAdd}
|
||||||
technician,
|
style={{
|
||||||
state: tableState,
|
columnCount: Math.max(Math.floor(cols.length / 10), 1),
|
||||||
activeStatuses: bodyshop.md_ro_statuses.active_statuses,
|
}}
|
||||||
})
|
>
|
||||||
|
{cols
|
||||||
.filter((i) => !columnKeys.includes(i.key))
|
.filter((i) => !columnKeys.includes(i.key))
|
||||||
.map((item) => (
|
.map((item) => (
|
||||||
<Menu.Item key={item.key}>{item.title}</Menu.Item>
|
<Menu.Item key={item.key} style={{ breakInside: "avoid" }}>
|
||||||
|
{item.title}
|
||||||
|
</Menu.Item>
|
||||||
))}
|
))}
|
||||||
</Menu>
|
</Menu>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -177,6 +177,27 @@ export function ScoreboardTargetsTable({ bodyshop, scoreBoardlist }) {
|
|||||||
<Statistic value={values.toDatePaint.toFixed(1)} />
|
<Statistic value={values.toDatePaint.toFixed(1)} />
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
|
<Row>
|
||||||
|
<Col {...statSpans}></Col>
|
||||||
|
<Col {...statSpans}>
|
||||||
|
<Statistic
|
||||||
|
value={(values.todayPaint + values.todayBody).toFixed(1)}
|
||||||
|
/>
|
||||||
|
</Col>
|
||||||
|
<Col {...statSpans}></Col>
|
||||||
|
<Col {...statSpans}>
|
||||||
|
<Statistic
|
||||||
|
value={(values.weeklyPaint + values.weeklyBody).toFixed(1)}
|
||||||
|
/>
|
||||||
|
</Col>
|
||||||
|
<Col {...statSpans}></Col>
|
||||||
|
<Col {...statSpans}></Col>
|
||||||
|
<Col {...statSpans}>
|
||||||
|
<Statistic
|
||||||
|
value={(values.toDatePaint + values.toDateBody).toFixed(1)}
|
||||||
|
/>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
</Card>
|
</Card>
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import { selectTechnician } from "../../redux/tech/tech.selectors";
|
|||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import TechClockInComponent from "./tech-job-clock-in-form.component";
|
import TechClockInComponent from "./tech-job-clock-in-form.component";
|
||||||
import TechJobPrintTickets from "../tech-job-print-tickets/tech-job-print-tickets.component";
|
import TechJobPrintTickets from "../tech-job-print-tickets/tech-job-print-tickets.component";
|
||||||
|
import moment from "moment";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
technician: selectTechnician,
|
technician: selectTechnician,
|
||||||
@@ -27,14 +28,15 @@ export function TechClockInContainer({ technician, bodyshop }) {
|
|||||||
const handleFinish = async (values) => {
|
const handleFinish = async (values) => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
const theTime = (await axios.post("/utils/time")).data;
|
const theTime = (await axios.post("/utils/time")).data;
|
||||||
|
|
||||||
const result = await insertTimeTicket({
|
const result = await insertTimeTicket({
|
||||||
variables: {
|
variables: {
|
||||||
timeTicketInput: [
|
timeTicketInput: [
|
||||||
{
|
{
|
||||||
bodyshopid: bodyshop.id,
|
bodyshopid: bodyshop.id,
|
||||||
employeeid: technician.id,
|
employeeid: technician.id,
|
||||||
date: theTime,
|
date: moment(theTime).format("YYYY-MM-DD"),
|
||||||
clockon: theTime,
|
clockon: moment(theTime),
|
||||||
jobid: values.jobid,
|
jobid: values.jobid,
|
||||||
cost_center: values.cost_center,
|
cost_center: values.cost_center,
|
||||||
ciecacode:
|
ciecacode:
|
||||||
|
|||||||
@@ -55,9 +55,10 @@ export function TechClockOffButton({
|
|||||||
timeticket: {
|
timeticket: {
|
||||||
clockoff: (await axios.post("/utils/time")).data,
|
clockoff: (await axios.post("/utils/time")).data,
|
||||||
...values,
|
...values,
|
||||||
rate: emps && emps.rates.filter(
|
rate:
|
||||||
(r) => r.cost_center === values.cost_center
|
emps &&
|
||||||
)[0]?.rate,
|
emps.rates.filter((r) => r.cost_center === values.cost_center)[0]
|
||||||
|
?.rate,
|
||||||
ciecacode:
|
ciecacode:
|
||||||
bodyshop.cdk_dealerid || bodyshop.pbs_serialnumber
|
bodyshop.cdk_dealerid || bodyshop.pbs_serialnumber
|
||||||
? values.cost_center
|
? values.cost_center
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ export const QUERY_ALL_ACTIVE_JOBS = gql`
|
|||||||
ownr_ph1
|
ownr_ph1
|
||||||
ownr_ph2
|
ownr_ph2
|
||||||
ownr_ea
|
ownr_ea
|
||||||
|
ownerid
|
||||||
comment
|
comment
|
||||||
plate_no
|
plate_no
|
||||||
plate_st
|
plate_st
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ export const QUERY_SEARCH_OWNER_BY_IDX = gql`
|
|||||||
ownr_st
|
ownr_st
|
||||||
ownr_zip
|
ownr_zip
|
||||||
id
|
id
|
||||||
|
note
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
@@ -65,6 +66,7 @@ export const QUERY_OWNER_BY_ID = gql`
|
|||||||
ownr_title
|
ownr_title
|
||||||
ownr_zip
|
ownr_zip
|
||||||
preferred_contact
|
preferred_contact
|
||||||
|
note
|
||||||
jobs {
|
jobs {
|
||||||
id
|
id
|
||||||
ro_number
|
ro_number
|
||||||
|
|||||||
@@ -1893,6 +1893,7 @@
|
|||||||
"address": "Address",
|
"address": "Address",
|
||||||
"allow_text_message": "Permission to Text?",
|
"allow_text_message": "Permission to Text?",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
|
"note": "Owner Note",
|
||||||
"ownr_addr1": "Address",
|
"ownr_addr1": "Address",
|
||||||
"ownr_addr2": "Address 2",
|
"ownr_addr2": "Address 2",
|
||||||
"ownr_city": "City",
|
"ownr_city": "City",
|
||||||
|
|||||||
@@ -1893,6 +1893,7 @@
|
|||||||
"address": "Dirección",
|
"address": "Dirección",
|
||||||
"allow_text_message": "Permiso de texto?",
|
"allow_text_message": "Permiso de texto?",
|
||||||
"name": "Nombre",
|
"name": "Nombre",
|
||||||
|
"note": "",
|
||||||
"ownr_addr1": "Dirección",
|
"ownr_addr1": "Dirección",
|
||||||
"ownr_addr2": "Dirección 2",
|
"ownr_addr2": "Dirección 2",
|
||||||
"ownr_city": "ciudad",
|
"ownr_city": "ciudad",
|
||||||
|
|||||||
@@ -1893,6 +1893,7 @@
|
|||||||
"address": "Adresse",
|
"address": "Adresse",
|
||||||
"allow_text_message": "Autorisation de texte?",
|
"allow_text_message": "Autorisation de texte?",
|
||||||
"name": "Prénom",
|
"name": "Prénom",
|
||||||
|
"note": "",
|
||||||
"ownr_addr1": "Adresse",
|
"ownr_addr1": "Adresse",
|
||||||
"ownr_addr2": "Adresse 2 ",
|
"ownr_addr2": "Adresse 2 ",
|
||||||
"ownr_city": "Ville",
|
"ownr_city": "Ville",
|
||||||
|
|||||||
@@ -3823,32 +3823,36 @@
|
|||||||
- active:
|
- active:
|
||||||
_eq: true
|
_eq: true
|
||||||
columns:
|
columns:
|
||||||
- id
|
- accountingid
|
||||||
|
- allow_text_message
|
||||||
- created_at
|
- created_at
|
||||||
- updated_at
|
- id
|
||||||
- ownr_fn
|
- note
|
||||||
- ownr_ln
|
|
||||||
- ownr_addr1
|
- ownr_addr1
|
||||||
- ownr_addr2
|
- ownr_addr2
|
||||||
- ownr_city
|
- ownr_city
|
||||||
- ownr_st
|
- ownr_co_nm
|
||||||
- ownr_zip
|
|
||||||
- ownr_ctry
|
- ownr_ctry
|
||||||
- ownr_ea
|
- ownr_ea
|
||||||
|
- ownr_fn
|
||||||
|
- ownr_ln
|
||||||
- ownr_ph1
|
- ownr_ph1
|
||||||
- preferred_contact
|
|
||||||
- allow_text_message
|
|
||||||
- shopid
|
|
||||||
- ownr_ph2
|
- ownr_ph2
|
||||||
- ownr_co_nm
|
- ownr_st
|
||||||
- ownr_title
|
- ownr_title
|
||||||
- accountingid
|
- ownr_zip
|
||||||
|
- preferred_contact
|
||||||
|
- shopid
|
||||||
|
- updated_at
|
||||||
select_permissions:
|
select_permissions:
|
||||||
- role: user
|
- role: user
|
||||||
permission:
|
permission:
|
||||||
columns:
|
columns:
|
||||||
- allow_text_message
|
|
||||||
- accountingid
|
- accountingid
|
||||||
|
- allow_text_message
|
||||||
|
- created_at
|
||||||
|
- id
|
||||||
|
- note
|
||||||
- ownr_addr1
|
- ownr_addr1
|
||||||
- ownr_addr2
|
- ownr_addr2
|
||||||
- ownr_city
|
- ownr_city
|
||||||
@@ -3863,10 +3867,8 @@
|
|||||||
- ownr_title
|
- ownr_title
|
||||||
- ownr_zip
|
- ownr_zip
|
||||||
- preferred_contact
|
- preferred_contact
|
||||||
- created_at
|
|
||||||
- updated_at
|
|
||||||
- id
|
|
||||||
- shopid
|
- shopid
|
||||||
|
- updated_at
|
||||||
filter:
|
filter:
|
||||||
bodyshop:
|
bodyshop:
|
||||||
associations:
|
associations:
|
||||||
@@ -3881,8 +3883,11 @@
|
|||||||
- role: user
|
- role: user
|
||||||
permission:
|
permission:
|
||||||
columns:
|
columns:
|
||||||
- allow_text_message
|
|
||||||
- accountingid
|
- accountingid
|
||||||
|
- allow_text_message
|
||||||
|
- created_at
|
||||||
|
- id
|
||||||
|
- note
|
||||||
- ownr_addr1
|
- ownr_addr1
|
||||||
- ownr_addr2
|
- ownr_addr2
|
||||||
- ownr_city
|
- ownr_city
|
||||||
@@ -3897,10 +3902,8 @@
|
|||||||
- ownr_title
|
- ownr_title
|
||||||
- ownr_zip
|
- ownr_zip
|
||||||
- preferred_contact
|
- preferred_contact
|
||||||
- created_at
|
|
||||||
- updated_at
|
|
||||||
- id
|
|
||||||
- shopid
|
- shopid
|
||||||
|
- updated_at
|
||||||
filter:
|
filter:
|
||||||
bodyshop:
|
bodyshop:
|
||||||
associations:
|
associations:
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
-- Could not auto-generate a down migration.
|
||||||
|
-- Please write an appropriate down migration for the SQL below:
|
||||||
|
-- alter table "public"."owners" add column "note" text
|
||||||
|
-- null;
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
alter table "public"."owners" add column "note" text
|
||||||
|
null;
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
79340
logs/oAuthClient-log.log
79340
logs/oAuthClient-log.log
File diff suppressed because one or more lines are too long
@@ -800,7 +800,7 @@ const CreateCosts = (job) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const StatusMapping = (status, md_ro_statuses) => {
|
const StatusMapping = (status, md_ro_statuses) => {
|
||||||
//EST, SCH, ARR, IPR, RDY, DEL, CLO, CAN, UNDEFINED.
|
//Possible return statuses EST, SCH, ARR, IPR, RDY, DEL, CLO, CAN, UNDEFINED.
|
||||||
const {
|
const {
|
||||||
default_imported,
|
default_imported,
|
||||||
default_open,
|
default_open,
|
||||||
@@ -823,8 +823,6 @@ const StatusMapping = (status, md_ro_statuses) => {
|
|||||||
else if (status === default_void) return "VOID";
|
else if (status === default_void) return "VOID";
|
||||||
else if (md_ro_statuses.production_statuses.includes(status)) return "IPR";
|
else if (md_ro_statuses.production_statuses.includes(status)) return "IPR";
|
||||||
else return "UNDEFINED";
|
else return "UNDEFINED";
|
||||||
|
|
||||||
// default: return "UNDEFINED"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const GenerateDetailLines = (job, line, statuses) => {
|
const GenerateDetailLines = (job, line, statuses) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user