@@ -1,4 +1,4 @@
|
|||||||
<babeledit_project be_version="2.7.1" version="1.2">
|
<babeledit_project version="1.2" be_version="2.7.1">
|
||||||
<!--
|
<!--
|
||||||
|
|
||||||
BabelEdit project file
|
BabelEdit project file
|
||||||
@@ -4509,6 +4509,27 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>enforce_conversion_csr</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>enforce_referral</name>
|
<name>enforce_referral</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
@@ -42381,6 +42402,27 @@
|
|||||||
<folder_node>
|
<folder_node>
|
||||||
<name>labels</name>
|
<name>labels</name>
|
||||||
<children>
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>atssummary</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>employeevacation</name>
|
<name>employeevacation</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
|
|||||||
@@ -166,6 +166,16 @@ export default function ScoreboardAddButton({
|
|||||||
painthrs: 0,
|
painthrs: 0,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//Add Labor Adjustments
|
||||||
|
v.painthrs = v.painthrs + (job.lbr_adjustments.LAR || 0);
|
||||||
|
v.bodyhrs =
|
||||||
|
v.bodyhrs +
|
||||||
|
Object.keys(job.lbr_adjustments)
|
||||||
|
.filter((key) => key !== "LAR")
|
||||||
|
.reduce((acc, val) => {
|
||||||
|
return acc + job.lbr_adjustments[val];
|
||||||
|
}, 0);
|
||||||
form.setFieldsValue({
|
form.setFieldsValue({
|
||||||
date: new moment(),
|
date: new moment(),
|
||||||
bodyhrs: Math.round(v.bodyhrs * 10) / 10,
|
bodyhrs: Math.round(v.bodyhrs * 10) / 10,
|
||||||
|
|||||||
@@ -83,7 +83,11 @@ export function JobsConvertButton({
|
|||||||
layout="vertical"
|
layout="vertical"
|
||||||
form={form}
|
form={form}
|
||||||
onFinish={handleConvert}
|
onFinish={handleConvert}
|
||||||
initialValues={{ driveable: true, towin: false }}
|
initialValues={{
|
||||||
|
driveable: true,
|
||||||
|
towin: false,
|
||||||
|
employee_csr: job.employee_csr,
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
name={["ins_co_nm"]}
|
name={["ins_co_nm"]}
|
||||||
@@ -151,6 +155,41 @@ export function JobsConvertButton({
|
|||||||
</Form.Item>
|
</Form.Item>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
{bodyshop.enforce_conversion_csr && (
|
||||||
|
<Form.Item
|
||||||
|
name={"employee_csr"}
|
||||||
|
label={t("jobs.fields.employee_csr")}
|
||||||
|
rules={[
|
||||||
|
{
|
||||||
|
required: bodyshop.enforce_conversion_csr,
|
||||||
|
//message: t("general.validation.required"),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<Select
|
||||||
|
showSearch
|
||||||
|
style={{ width: 200 }}
|
||||||
|
optionFilterProp="children"
|
||||||
|
filterOption={(input, option) =>
|
||||||
|
option.props.children
|
||||||
|
.toLowerCase()
|
||||||
|
.indexOf(input.toLowerCase()) >= 0
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{bodyshop.employees
|
||||||
|
.filter((emp) => emp.active)
|
||||||
|
.map((emp) => (
|
||||||
|
<Select.Option
|
||||||
|
value={emp.id}
|
||||||
|
key={emp.id}
|
||||||
|
name={`${emp.first_name} ${emp.last_name}`}
|
||||||
|
>
|
||||||
|
{`${emp.first_name} ${emp.last_name}`}
|
||||||
|
</Select.Option>
|
||||||
|
))}
|
||||||
|
</Select>
|
||||||
|
</Form.Item>
|
||||||
|
)}
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("jobs.fields.ca_gst_registrant")}
|
label={t("jobs.fields.ca_gst_registrant")}
|
||||||
name="ca_gst_registrant"
|
name="ca_gst_registrant"
|
||||||
@@ -194,7 +233,10 @@ export function JobsConvertButton({
|
|||||||
// style={{ display: job.converted ? "none" : "" }}
|
// style={{ display: job.converted ? "none" : "" }}
|
||||||
disabled={job.converted || jobRO}
|
disabled={job.converted || jobRO}
|
||||||
loading={loading}
|
loading={loading}
|
||||||
onClick={() => setVisible(true)}
|
onClick={() => {
|
||||||
|
setVisible(true);
|
||||||
|
form.resetFields();
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
{t("jobs.actions.convert")}
|
{t("jobs.actions.convert")}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
import { Button, Card, Form, InputNumber, Popover, Radio } from "antd";
|
import {
|
||||||
|
Button,
|
||||||
|
Card,
|
||||||
|
Form,
|
||||||
|
InputNumber,
|
||||||
|
notification,
|
||||||
|
Popover,
|
||||||
|
Radio,
|
||||||
|
} from "antd";
|
||||||
import React, { useState } from "react";
|
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";
|
||||||
@@ -27,7 +35,6 @@ export function PrintCenterJobsLabels({ bodyshop, jobId }) {
|
|||||||
const handleOk = (e) => {
|
const handleOk = (e) => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
form.submit();
|
form.submit();
|
||||||
setIsModalVisible(false);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleCancel = () => {
|
const handleCancel = () => {
|
||||||
@@ -37,18 +44,24 @@ export function PrintCenterJobsLabels({ bodyshop, jobId }) {
|
|||||||
const handleFinish = async ({ template, ...values }) => {
|
const handleFinish = async ({ template, ...values }) => {
|
||||||
const { sendtype, ...restVals } = values;
|
const { sendtype, ...restVals } = values;
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
await GenerateDocument(
|
try {
|
||||||
{
|
await GenerateDocument(
|
||||||
name: TemplateList("job_special")[template].key,
|
{
|
||||||
variables: { id: jobId },
|
name: TemplateList("job_special")[template].key,
|
||||||
context: restVals,
|
variables: { id: jobId },
|
||||||
},
|
context: restVals,
|
||||||
{},
|
},
|
||||||
"p",
|
{},
|
||||||
jobId
|
"p",
|
||||||
);
|
jobId
|
||||||
setLoading(false);
|
);
|
||||||
setIsModalVisible(false);
|
setIsModalVisible(false);
|
||||||
|
} catch (error) {
|
||||||
|
notification.open({ type: "error", message: JSON.stringify(error) });
|
||||||
|
} finally {
|
||||||
|
setLoading(false);
|
||||||
|
}
|
||||||
|
|
||||||
form.resetFields();
|
form.resetFields();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -60,7 +73,15 @@ export function PrintCenterJobsLabels({ bodyshop, jobId }) {
|
|||||||
layout="vertical"
|
layout="vertical"
|
||||||
form={form}
|
form={form}
|
||||||
>
|
>
|
||||||
<Form.Item required name="template">
|
<Form.Item
|
||||||
|
rules={[
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
//message: t("general.validation.required"),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
name="template"
|
||||||
|
>
|
||||||
<Radio.Group>
|
<Radio.Group>
|
||||||
<Radio.Button value="parts_label_multiple">
|
<Radio.Button value="parts_label_multiple">
|
||||||
{t("printcenter.jobs.parts_label_multiple")}
|
{t("printcenter.jobs.parts_label_multiple")}
|
||||||
@@ -71,14 +92,24 @@ export function PrintCenterJobsLabels({ bodyshop, jobId }) {
|
|||||||
</Radio.Group>
|
</Radio.Group>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
required
|
rules={[
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
//message: t("general.validation.required"),
|
||||||
|
},
|
||||||
|
]}
|
||||||
label={t("printcenter.jobs.labels.position")}
|
label={t("printcenter.jobs.labels.position")}
|
||||||
name="position"
|
name="position"
|
||||||
>
|
>
|
||||||
<InputNumber min={1} precision={0} />
|
<InputNumber min={1} precision={0} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
required
|
rules={[
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
//message: t("general.validation.required"),
|
||||||
|
},
|
||||||
|
]}
|
||||||
label={t("printcenter.jobs.labels.count")}
|
label={t("printcenter.jobs.labels.count")}
|
||||||
name="count"
|
name="count"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
import { Space } from "antd";
|
||||||
|
import React from "react";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { connect } from "react-redux";
|
||||||
|
import { useLocation } from "react-router-dom";
|
||||||
|
import { createStructuredSelector } from "reselect";
|
||||||
|
import { selectScheduleLoad } from "../../redux/application/application.selectors";
|
||||||
|
import queryString from "query-string";
|
||||||
|
const mapStateToProps = createStructuredSelector({
|
||||||
|
//currentUser: selectCurrentUser
|
||||||
|
scheduleLoad: selectScheduleLoad,
|
||||||
|
});
|
||||||
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
|
//setUserLanguage: language => dispatch(setUserLanguage(language))
|
||||||
|
});
|
||||||
|
|
||||||
|
export function ScheduleAtsSummary({ scheduleLoad }) {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
const search = queryString.parse(useLocation().search);
|
||||||
|
|
||||||
|
if (
|
||||||
|
(search.view === undefined || search.view === "week") &&
|
||||||
|
scheduleLoad.atsSummary &&
|
||||||
|
Object.keys(scheduleLoad.atsSummary).length > 0
|
||||||
|
)
|
||||||
|
return (
|
||||||
|
<Space wrap>
|
||||||
|
{t("schedule.labels.atssummary")}
|
||||||
|
{Object.keys(scheduleLoad.atsSummary).map((key) => (
|
||||||
|
<span key={key}>{`${key}: ${scheduleLoad.atsSummary[key]}`}</span>
|
||||||
|
))}
|
||||||
|
</Space>
|
||||||
|
);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
export default connect(mapStateToProps, mapDispatchToProps)(ScheduleAtsSummary);
|
||||||
@@ -3,6 +3,7 @@ import { Button, Card, Checkbox, Col, PageHeader, Row, Space } from "antd";
|
|||||||
import { t } from "i18next";
|
import { t } from "i18next";
|
||||||
import React, { useMemo } from "react";
|
import React, { useMemo } from "react";
|
||||||
import useLocalStorage from "../../utils/useLocalStorage";
|
import useLocalStorage from "../../utils/useLocalStorage";
|
||||||
|
import ScheduleAtsSummary from "../schedule-ats-summary/schedule-ats-summary.component";
|
||||||
import ScheduleCalendarWrapperComponent from "../schedule-calendar-wrapper/scheduler-calendar-wrapper.component";
|
import ScheduleCalendarWrapperComponent from "../schedule-calendar-wrapper/scheduler-calendar-wrapper.component";
|
||||||
import ScheduleModal from "../schedule-job-modal/schedule-job-modal.container";
|
import ScheduleModal from "../schedule-job-modal/schedule-job-modal.container";
|
||||||
import ScheduleManualEvent from "../schedule-manual-event/schedule-manual-event.component";
|
import ScheduleManualEvent from "../schedule-manual-event/schedule-manual-event.component";
|
||||||
@@ -10,6 +11,7 @@ import ScheduleProductionList from "../schedule-production-list/schedule-product
|
|||||||
import ScheduleVerifyIntegrity from "../schedule-verify-integrity/schedule-verify-integrity.component";
|
import ScheduleVerifyIntegrity from "../schedule-verify-integrity/schedule-verify-integrity.component";
|
||||||
|
|
||||||
export default function ScheduleCalendarComponent({ data, refetch }) {
|
export default function ScheduleCalendarComponent({ data, refetch }) {
|
||||||
|
|
||||||
const [filter, setFilter] = useLocalStorage("filter_events", {
|
const [filter, setFilter] = useLocalStorage("filter_events", {
|
||||||
intake: true,
|
intake: true,
|
||||||
manual: true,
|
manual: true,
|
||||||
@@ -35,6 +37,7 @@ export default function ScheduleCalendarComponent({ data, refetch }) {
|
|||||||
<PageHeader
|
<PageHeader
|
||||||
extra={
|
extra={
|
||||||
<Space wrap>
|
<Space wrap>
|
||||||
|
<ScheduleAtsSummary/>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
checked={filter?.intake}
|
checked={filter?.intake}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
@@ -70,6 +73,8 @@ export default function ScheduleCalendarComponent({ data, refetch }) {
|
|||||||
<ScheduleProductionList />
|
<ScheduleProductionList />
|
||||||
|
|
||||||
<ScheduleManualEvent />
|
<ScheduleManualEvent />
|
||||||
|
|
||||||
|
|
||||||
</Space>
|
</Space>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -466,6 +466,13 @@ export default function ShopInfoGeneral({ form }) {
|
|||||||
>
|
>
|
||||||
<Switch />
|
<Switch />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
name={["enforce_conversion_csr"]}
|
||||||
|
label={t("bodyshop.fields.enforce_conversion_csr")}
|
||||||
|
valuePropName="checked"
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
name={["target_touchtime"]}
|
name={["target_touchtime"]}
|
||||||
label={t("bodyshop.fields.target_touchtime")}
|
label={t("bodyshop.fields.target_touchtime")}
|
||||||
|
|||||||
@@ -364,6 +364,7 @@ export const QUERY_SCHEDULE_LOAD_DATA = gql`
|
|||||||
ownr_fn
|
ownr_fn
|
||||||
ownr_ln
|
ownr_ln
|
||||||
ownr_co_nm
|
ownr_co_nm
|
||||||
|
alt_transport
|
||||||
labhrs: joblines_aggregate(
|
labhrs: joblines_aggregate(
|
||||||
where: { mod_lbr_ty: { _neq: "LAR" }, removed: { _eq: false } }
|
where: { mod_lbr_ty: { _neq: "LAR" }, removed: { _eq: false } }
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ export const QUERY_BODYSHOP = gql`
|
|||||||
localmediaserverhttp
|
localmediaserverhttp
|
||||||
localmediaservernetwork
|
localmediaservernetwork
|
||||||
localmediatoken
|
localmediatoken
|
||||||
|
enforce_conversion_csr
|
||||||
employees {
|
employees {
|
||||||
user_email
|
user_email
|
||||||
id
|
id
|
||||||
@@ -220,6 +221,7 @@ export const UPDATE_SHOP = gql`
|
|||||||
localmediaserverhttp
|
localmediaserverhttp
|
||||||
localmediaservernetwork
|
localmediaservernetwork
|
||||||
localmediatoken
|
localmediatoken
|
||||||
|
enforce_conversion_csr
|
||||||
employees {
|
employees {
|
||||||
id
|
id
|
||||||
first_name
|
first_name
|
||||||
|
|||||||
@@ -501,6 +501,10 @@ export const GET_JOB_BY_PK = gql`
|
|||||||
first_name
|
first_name
|
||||||
last_name
|
last_name
|
||||||
}
|
}
|
||||||
|
employee_csr
|
||||||
|
employee_prep
|
||||||
|
employee_refinish
|
||||||
|
employee_body
|
||||||
alt_transport
|
alt_transport
|
||||||
intakechecklist
|
intakechecklist
|
||||||
invoice_final_note
|
invoice_final_note
|
||||||
@@ -851,6 +855,7 @@ export const QUERY_JOB_CARD_DETAILS = gql`
|
|||||||
owner_owing
|
owner_owing
|
||||||
special_coverage_policy
|
special_coverage_policy
|
||||||
suspended
|
suspended
|
||||||
|
lbr_adjustments
|
||||||
available_jobs {
|
available_jobs {
|
||||||
id
|
id
|
||||||
}
|
}
|
||||||
@@ -1153,6 +1158,7 @@ export const CONVERT_JOB_TO_RO = gql`
|
|||||||
$towin: Boolean
|
$towin: Boolean
|
||||||
$referral_source: String
|
$referral_source: String
|
||||||
$referral_source_extra: String
|
$referral_source_extra: String
|
||||||
|
$employee_csr: uuid
|
||||||
) {
|
) {
|
||||||
update_jobs(
|
update_jobs(
|
||||||
where: { id: { _eq: $jobId } }
|
where: { id: { _eq: $jobId } }
|
||||||
@@ -1165,6 +1171,7 @@ export const CONVERT_JOB_TO_RO = gql`
|
|||||||
driveable: $driveable
|
driveable: $driveable
|
||||||
referral_source: $referral_source
|
referral_source: $referral_source
|
||||||
referral_source_extra: $referral_source_extra
|
referral_source_extra: $referral_source_extra
|
||||||
|
employee_csr: $employee_csr
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
returning {
|
returning {
|
||||||
@@ -1175,6 +1182,10 @@ export const CONVERT_JOB_TO_RO = gql`
|
|||||||
ins_co_nm
|
ins_co_nm
|
||||||
referral_source
|
referral_source
|
||||||
referral_source_extra
|
referral_source_extra
|
||||||
|
employee_csr
|
||||||
|
employee_csr_rel {
|
||||||
|
id
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1900,6 +1911,7 @@ export const QUERY_JOB_CLOSE_DETAILS = gql`
|
|||||||
kmin
|
kmin
|
||||||
kmout
|
kmout
|
||||||
qb_multiple_payers
|
qb_multiple_payers
|
||||||
|
lbr_adjustments
|
||||||
joblines(where: { removed: { _eq: false } }, order_by: { line_no: asc }) {
|
joblines(where: { removed: { _eq: false } }, order_by: { line_no: asc }) {
|
||||||
id
|
id
|
||||||
removed
|
removed
|
||||||
|
|||||||
@@ -136,10 +136,6 @@ export function* calculateScheduleLoad({ payload: end }) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(
|
|
||||||
"🚀 ~ file: application.sagas.js:160 ~ function*calculateScheduleLoad ~ load.productionTotal",
|
|
||||||
load.productionTotal
|
|
||||||
);
|
|
||||||
//Propagate the expected load to each day.
|
//Propagate the expected load to each day.
|
||||||
const range = Math.round(moment.duration(end.diff(today)).asDays());
|
const range = Math.round(moment.duration(end.diff(today)).asDays());
|
||||||
for (var day = 0; day < range; day++) {
|
for (var day = 0; day < range; day++) {
|
||||||
@@ -175,6 +171,22 @@ export function* calculateScheduleLoad({ payload: end }) {
|
|||||||
(load[current].hoursOut || 0);
|
(load[current].hoursOut || 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Calculate weekly ATS summary.
|
||||||
|
const startOfWeek = moment(end).startOf("week");
|
||||||
|
const endOfWeek = moment(end).endOf("week");
|
||||||
|
load.atsSummary = {};
|
||||||
|
arrJobs
|
||||||
|
.filter((j) => moment(j.scheduled_in).isBetween(startOfWeek, endOfWeek))
|
||||||
|
.forEach((j) => {
|
||||||
|
if (!load.atsSummary[j.alt_transport]) {
|
||||||
|
load.atsSummary[j.alt_transport] = 1;
|
||||||
|
} else {
|
||||||
|
load.atsSummary[j.alt_transport] =
|
||||||
|
load.atsSummary[j.alt_transport] + 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
yield put(setProblemJobs(problemJobs));
|
yield put(setProblemJobs(problemJobs));
|
||||||
yield put(scheduleLoadSuccess(load));
|
yield put(scheduleLoadSuccess(load));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -279,6 +279,7 @@
|
|||||||
},
|
},
|
||||||
"email": "General Shop Email",
|
"email": "General Shop Email",
|
||||||
"enforce_class": "Enforce Class on Conversion?",
|
"enforce_class": "Enforce Class on Conversion?",
|
||||||
|
"enforce_conversion_csr": "Enforce CSR on Conversion?",
|
||||||
"enforce_referral": "Enforce Referrals",
|
"enforce_referral": "Enforce Referrals",
|
||||||
"federal_tax_id": "Federal Tax ID (GST/HST)",
|
"federal_tax_id": "Federal Tax ID (GST/HST)",
|
||||||
"ignoreblockeddays": "Scoreboard - Ignore Blocked Days",
|
"ignoreblockeddays": "Scoreboard - Ignore Blocked Days",
|
||||||
@@ -2500,6 +2501,7 @@
|
|||||||
},
|
},
|
||||||
"schedule": {
|
"schedule": {
|
||||||
"labels": {
|
"labels": {
|
||||||
|
"atssummary": "Weekly ATS Summary",
|
||||||
"employeevacation": "Employee Vacations",
|
"employeevacation": "Employee Vacations",
|
||||||
"intake": "Intake Events",
|
"intake": "Intake Events",
|
||||||
"manual": "Manual Events",
|
"manual": "Manual Events",
|
||||||
|
|||||||
@@ -279,6 +279,7 @@
|
|||||||
},
|
},
|
||||||
"email": "",
|
"email": "",
|
||||||
"enforce_class": "",
|
"enforce_class": "",
|
||||||
|
"enforce_conversion_csr": "",
|
||||||
"enforce_referral": "",
|
"enforce_referral": "",
|
||||||
"federal_tax_id": "",
|
"federal_tax_id": "",
|
||||||
"ignoreblockeddays": "",
|
"ignoreblockeddays": "",
|
||||||
@@ -2500,6 +2501,7 @@
|
|||||||
},
|
},
|
||||||
"schedule": {
|
"schedule": {
|
||||||
"labels": {
|
"labels": {
|
||||||
|
"atssummary": "",
|
||||||
"employeevacation": "",
|
"employeevacation": "",
|
||||||
"intake": "",
|
"intake": "",
|
||||||
"manual": "",
|
"manual": "",
|
||||||
|
|||||||
@@ -279,6 +279,7 @@
|
|||||||
},
|
},
|
||||||
"email": "",
|
"email": "",
|
||||||
"enforce_class": "",
|
"enforce_class": "",
|
||||||
|
"enforce_conversion_csr": "",
|
||||||
"enforce_referral": "",
|
"enforce_referral": "",
|
||||||
"federal_tax_id": "",
|
"federal_tax_id": "",
|
||||||
"ignoreblockeddays": "",
|
"ignoreblockeddays": "",
|
||||||
@@ -2500,6 +2501,7 @@
|
|||||||
},
|
},
|
||||||
"schedule": {
|
"schedule": {
|
||||||
"labels": {
|
"labels": {
|
||||||
|
"atssummary": "",
|
||||||
"employeevacation": "",
|
"employeevacation": "",
|
||||||
"intake": "",
|
"intake": "",
|
||||||
"manual": "",
|
"manual": "",
|
||||||
|
|||||||
@@ -855,6 +855,7 @@
|
|||||||
- deliverchecklist
|
- deliverchecklist
|
||||||
- email
|
- email
|
||||||
- enforce_class
|
- enforce_class
|
||||||
|
- enforce_conversion_csr
|
||||||
- enforce_referral
|
- enforce_referral
|
||||||
- entegral_configuration
|
- entegral_configuration
|
||||||
- entegral_id
|
- entegral_id
|
||||||
@@ -951,6 +952,7 @@
|
|||||||
- deliverchecklist
|
- deliverchecklist
|
||||||
- email
|
- email
|
||||||
- enforce_class
|
- enforce_class
|
||||||
|
- enforce_conversion_csr
|
||||||
- enforce_referral
|
- enforce_referral
|
||||||
- federal_tax_id
|
- federal_tax_id
|
||||||
- id
|
- id
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
-- Could not auto-generate a down migration.
|
||||||
|
-- Please write an appropriate down migration for the SQL below:
|
||||||
|
-- alter table "public"."bodyshops" add column "enforce_conversion_csr" boolean
|
||||||
|
-- null default 'false';
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
alter table "public"."bodyshops" add column "enforce_conversion_csr" boolean
|
||||||
|
null default 'false';
|
||||||
Reference in New Issue
Block a user