Compare commits

...

29 Commits

Author SHA1 Message Date
Allan Carr
85497eb815 IO-2370 Work In Progress Jobs 2023-08-02 16:36:47 -07:00
Allan Carr
5724d0129c Merged in release/2023-07-28 (pull request #913)
Release/2023 07 28
2023-07-29 01:10:53 +00:00
Allan Carr
fd579fc509 Merged in feature/IO-2366-Scoreboard-Sales-Calculation (pull request #911)
IO-2366 Scoreboard Sales Calculation correction of formula
2023-07-28 20:00:15 +00:00
Allan Carr
6e21b1bdf6 IO-2366 Scoreboard Sales Calculation correction of formula 2023-07-28 12:59:10 -07:00
Patrick Fic
a7ad18fae2 Timeticket schema update to include task_name 2023-07-27 11:23:44 -07:00
Allan Carr
8bfa879485 Merged in feature/IO-2364-UnInvoice-Audit-Trail (pull request #906)
Feature/IO-2364 UnInvoice Audit Trail
2023-07-26 23:44:44 +00:00
Allan Carr
ea774ff22b IO-2364 UnInvoice Audit Trail 2023-07-26 16:45:00 -07:00
Allan Carr
88101b0252 IO-2364 UnInvoice Audit Trail 2023-07-26 16:36:51 -07:00
Allan Carr
60ec76701d Merged in feature/IO-2356-Auto-CC-for-Parts-Return (pull request #904)
IO-2356 Auto CC for Parts Return
2023-07-24 22:43:47 +00:00
Allan Carr
6b52723ba9 IO-2356 Auto CC for Parts Return 2023-07-24 15:43:34 -07:00
Allan Carr
910c2a0f9b Merged in feature/IO-2117-Void-Date (pull request #902)
IO-2117 Void Date Add to table
2023-07-21 23:02:06 +00:00
Allan Carr
6c93e600c4 Merge branch 'release/2023-07-28' into feature/IO-2117-Void-Date 2023-07-21 15:58:30 -07:00
Allan Carr
e70edaec7c IO-2117 Void Date 2023-07-21 15:50:49 -07:00
Allan Carr
acaba96e3b IO-2117 Void Date Add to table 2023-07-21 14:08:42 -07:00
Allan Carr
12d1613b04 Merged in release/2023-07-21 (pull request #901)
Release/2023 07 21
2023-07-21 17:16:26 +00:00
Allan Carr
df878672fc Merged in feature/IO-2354-Available-Cars-Table (pull request #899)
IO-2354 Add Color to Available C/C Table
2023-07-21 17:07:38 +00:00
Patrick Fic
076115253f Merged in master (pull request #898)
Merged in feature/IO-2170-Tech-Console-Job-Clock-Out-Status (pull request #894)
2023-07-21 17:06:47 +00:00
Allan Carr
6f58528de2 IO-2354 Add Color to Available C/C Table 2023-07-21 09:54:20 -07:00
Patrick Fic
3defe7201f Add compelted tasks to jobs table. 2023-07-19 16:11:26 -07:00
Patrick Fic
4ce75ead52 Merged in feature/IO-2170-Tech-Console-Job-Clock-Out-Status (pull request #895)
IO-2170 Correct for Shift clock so Job Status is only on Job Clock
2023-07-17 17:11:03 +00:00
Patrick Fic
6de7ec00fe Merged in feature/IO-2170-Tech-Console-Job-Clock-Out-Status (pull request #894)
IO-2170 Correct for Shift clock so Job Status is only on Job Clock
2023-07-17 17:10:42 +00:00
Patrick Fic
800552210b Merged in release/2023-07-14 (pull request #893)
IO-2170 Job Status change on Job Clock Out
2023-07-14 23:14:51 +00:00
Patrick Fic
80abea56b4 Merged in feature/IO-2349-pbs-ap-cogs-wip (pull request #891)
IO-2349 Change control number for AP to allow RO.
2023-07-13 16:28:30 +00:00
Patrick Fic
480f081c40 Merged in feature/IO-2349-pbs-ap-cogs-wip (pull request #890)
IO-2349 Change control number for AP to allow RO.
2023-07-13 16:28:05 +00:00
Patrick Fic
9529335c96 IO-2349 Change control number for AP to allow RO. 2023-07-13 09:27:37 -07:00
Allan Carr
4334b3f419 Merged in feature/IO-2170-Tech-Console-Job-Clock-Out-Status (pull request #888)
IO-2170 Job Status change on Job Clock Out

Approved-by: Patrick Fic
2023-07-12 17:29:49 +00:00
Patrick Fic
5aad7acdd5 Merged in feature/IO-2349-pbs-ap-cogs-wip (pull request #887)
IO-2349 Allow PBS AP Posting to WIP
2023-07-12 16:39:28 +00:00
Patrick Fic
cd4f7ffb9c Merged in feature/IO-2349-pbs-ap-cogs-wip (pull request #885)
IO-2349 Allow PBS AP Posting to WIP
2023-07-11 16:16:27 +00:00
Patrick Fic
400dc79ed6 IO-2349 Allow PBS AP Posting to WIP 2023-07-11 09:10:26 -07:00
29 changed files with 458 additions and 35 deletions

View File

@@ -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
@@ -4318,6 +4318,48 @@
<folder_node> <folder_node>
<name>dms</name> <name>dms</name>
<children> <children>
<concept_node>
<name>apcontrol</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>appostingaccount</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>cashierid</name> <name>cashierid</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -6622,6 +6664,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>void</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> </children>
</folder_node> </folder_node>
<folder_node> <folder_node>
@@ -14004,6 +14067,48 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>scheduledintoday</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>scheduledouttoday</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> </children>
</folder_node> </folder_node>
</children> </children>
@@ -23844,6 +23949,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>dms_unsold</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>dms_wip_acctnumber</name> <name>dms_wip_acctnumber</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -37411,6 +37537,48 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>markexported</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>markforreexport</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>new</name> <name>new</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -37542,6 +37710,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>markreexported</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>payment</name> <name>payment</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -39355,6 +39544,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>mpi_final_repair_acct_sheet</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>paint_grid</name> <name>paint_grid</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -40433,6 +40643,27 @@
<folder_node> <folder_node>
<name>jobs</name> <name>jobs</name>
<children> <children>
<concept_node>
<name>individual_job_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>parts_order</name> <name>parts_order</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -43276,6 +43507,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>jobs_scheduled_completion</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>lag_time</name> <name>lag_time</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -44378,6 +44630,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>estimators</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>ins_co_nm_filter</name> <name>ins_co_nm_filter</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>

View File

@@ -59,6 +59,14 @@ export default function ContractsCarsComponent({
sortOrder: sortOrder:
state.sortedInfo.columnKey === "model" && state.sortedInfo.order, state.sortedInfo.columnKey === "model" && state.sortedInfo.order,
}, },
{
title: t("courtesycars.fields.color"),
dataIndex: "color",
key: "color",
sorter: (a, b) => alphaSort(a.color, b.color),
sortOrder:
state.sortedInfo.columnKey === "color" && state.sortedInfo.order,
},
{ {
title: t("courtesycars.fields.plate"), title: t("courtesycars.fields.plate"),
dataIndex: "plate", dataIndex: "plate",
@@ -93,6 +101,9 @@ export default function ContractsCarsComponent({
(cc.model || "") (cc.model || "")
.toLowerCase() .toLowerCase()
.includes(state.search.toLowerCase()) || .includes(state.search.toLowerCase()) ||
(cc.color || "")
.toLowerCase()
.includes(state.search.toLowerCase()) ||
(cc.plate || "").toLowerCase().includes(state.search.toLowerCase()) (cc.plate || "").toLowerCase().includes(state.search.toLowerCase())
); );

View File

@@ -1,14 +1,14 @@
import FormFieldsChanged from "../form-fields-changed-alert/form-fields-changed-alert.component";
import { useMutation } from "@apollo/client"; import { useMutation } from "@apollo/client";
import { Button, Form, notification } from "antd"; import { Button, Form, notification } from "antd";
import moment from "moment";
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { UPDATE_JOB } from "../../graphql/jobs.queries"; import { UPDATE_JOB } from "../../graphql/jobs.queries";
import DateTimePicker from "../form-date-time-picker/form-date-time-picker.component";
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
import moment from "moment";
import FormDatePicker from "../form-date-picker/form-date-picker.component";
import AuditTrailMapping from "../../utils/AuditTrailMappings"; import AuditTrailMapping from "../../utils/AuditTrailMappings";
import FormDatePicker from "../form-date-picker/form-date-picker.component";
import DateTimePicker from "../form-date-time-picker/form-date-time-picker.component";
import FormFieldsChanged from "../form-fields-changed-alert/form-fields-changed-alert.component";
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { createStructuredSelector } from "reselect"; import { createStructuredSelector } from "reselect";
@@ -38,8 +38,8 @@ export function JobsAdminDatesChange({ insertAuditTrail, job }) {
setLoading(true); setLoading(true);
const result = await updateJob({ const result = await updateJob({
variables: { jobId: job.id, job: values }, variables: { jobId: job.id, job: values },
refetchQueries: ['GET_JOB_BY_PK'], refetchQueries: ["GET_JOB_BY_PK"],
awaitRefetchQueries:true awaitRefetchQueries: true,
}); });
const changedAuditFields = form.getFieldsValue( const changedAuditFields = form.getFieldsValue(
@@ -126,7 +126,10 @@ export function JobsAdminDatesChange({ insertAuditTrail, job }) {
<Form.Item label={t("jobs.fields.actual_in")} name="actual_in"> <Form.Item label={t("jobs.fields.actual_in")} name="actual_in">
<DateTimePicker /> <DateTimePicker />
</Form.Item> </Form.Item>
<Form.Item label={t("jobs.fields.date_repairstarted")} name="date_repairstarted"> <Form.Item
label={t("jobs.fields.date_repairstarted")}
name="date_repairstarted"
>
<DateTimePicker /> <DateTimePicker />
</Form.Item> </Form.Item>
<Form.Item <Form.Item
@@ -173,6 +176,9 @@ export function JobsAdminDatesChange({ insertAuditTrail, job }) {
> >
<DateTimePicker /> <DateTimePicker />
</Form.Item> </Form.Item>
<Form.Item label={t("jobs.fields.date_void")} name="date_void">
<DateTimePicker />
</Form.Item>
</LayoutFormRow> </LayoutFormRow>
</Form> </Form>

View File

@@ -1,19 +1,18 @@
import { useMutation } from "@apollo/client"; import { gql, useMutation } from "@apollo/client";
import { Button, notification } from "antd"; import { Button, notification } from "antd";
import { gql } from "@apollo/client";
import React, { useState } from "react"; import React, { useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import moment from "moment";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { createStructuredSelector } from "reselect"; import { createStructuredSelector } from "reselect";
import { INSERT_EXPORT_LOG } from "../../graphql/accounting.queries";
import { insertAuditTrail } from "../../redux/application/application.actions";
import { import {
selectBodyshop, selectBodyshop,
selectCurrentUser, selectCurrentUser,
} from "../../redux/user/user.selectors"; } from "../../redux/user/user.selectors";
import moment from "moment";
import AuditTrailMapping from "../../utils/AuditTrailMappings"; import AuditTrailMapping from "../../utils/AuditTrailMappings";
import { insertAuditTrail } from "../../redux/application/application.actions";
import { INSERT_EXPORT_LOG } from "../../graphql/accounting.queries";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop, bodyshop: selectBodyshop,
currentUser: selectCurrentUser, currentUser: selectCurrentUser,
@@ -150,6 +149,10 @@ export function JobAdminMarkReexport({
if (!result.errors) { if (!result.errors) {
notification["success"]({ message: t("jobs.successes.save") }); notification["success"]({ message: t("jobs.successes.save") });
insertAuditTrail({
jobid: job.id,
operation: AuditTrailMapping.admin_jobuninvoice(),
});
} else { } else {
notification["error"]({ notification["error"]({
message: t("jobs.errors.saving", { message: t("jobs.errors.saving", {

View File

@@ -33,8 +33,9 @@ export function JobsAdminUnvoid({
mutation UNVOID_JOB($jobId: uuid!) { mutation UNVOID_JOB($jobId: uuid!) {
update_jobs_by_pk(pk_columns: {id: $jobId}, _set: {voided: false, status: "${ update_jobs_by_pk(pk_columns: {id: $jobId}, _set: {voided: false, status: "${
bodyshop.md_ro_statuses.default_imported bodyshop.md_ro_statuses.default_imported
}"}) { }", date_void: null}) {
id id
date_void
voided voided
status status
} }

View File

@@ -141,6 +141,10 @@ export function JobsDetailDatesComponent({ jobRO, job, bodyshop }) {
<Form.Item label={t("jobs.fields.date_exported")} name="date_exported"> <Form.Item label={t("jobs.fields.date_exported")} name="date_exported">
<DateTimePicker disabled={true || jobRO} /> <DateTimePicker disabled={true || jobRO} />
</Form.Item> </Form.Item>
<Form.Item label={t("jobs.fields.date_void")} name="date_void">
<DateTimePicker disabled={true || jobRO} />
</Form.Item>
</FormRow> </FormRow>
</div> </div>
); );

View File

@@ -5,10 +5,10 @@ import {
Dropdown, Dropdown,
Form, Form,
Menu, Menu,
notification,
Popconfirm, Popconfirm,
Popover, Popover,
Select, Select,
notification,
} from "antd"; } from "antd";
import React, { useMemo } from "react"; import React, { useMemo } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
@@ -24,12 +24,12 @@ import {
selectBodyshop, selectBodyshop,
selectCurrentUser, selectCurrentUser,
} from "../../redux/user/user.selectors"; } from "../../redux/user/user.selectors";
import RbacWrapper from "../rbac-wrapper/rbac-wrapper.component";
import JobsDetailHeaderActionsAddevent from "./jobs-detail-header-actions.addevent"; import JobsDetailHeaderActionsAddevent from "./jobs-detail-header-actions.addevent";
import AddToProduction from "./jobs-detail-header-actions.addtoproduction.util"; import AddToProduction from "./jobs-detail-header-actions.addtoproduction.util";
import JobsDetaiLheaderCsi from "./jobs-detail-header-actions.csi.component"; import JobsDetaiLheaderCsi from "./jobs-detail-header-actions.csi.component";
import DuplicateJob from "./jobs-detail-header-actions.duplicate.util"; import DuplicateJob from "./jobs-detail-header-actions.duplicate.util";
import JobsDetailHeaderActionsExportcustdataComponent from "./jobs-detail-header-actions.exportcustdata.component"; import JobsDetailHeaderActionsExportcustdataComponent from "./jobs-detail-header-actions.exportcustdata.component";
import RbacWrapper from "../rbac-wrapper/rbac-wrapper.component";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop, bodyshop: selectBodyshop,
@@ -480,6 +480,7 @@ export function JobsDetailHeaderActions({
scheduled_in: null, scheduled_in: null,
scheduled_completion: null, scheduled_completion: null,
inproduction: false, inproduction: false,
date_void: new Date(),
}, },
note: [ note: [
{ {

View File

@@ -47,9 +47,7 @@ export function ScoreboardChart({ sbEntriesByDate, bodyshop }) {
bodyhrs: dayAcc.bodyhrs + dayVal.bodyhrs, bodyhrs: dayAcc.bodyhrs + dayVal.bodyhrs,
painthrs: dayAcc.painthrs + dayVal.painthrs, painthrs: dayAcc.painthrs + dayVal.painthrs,
sales: sales:
dayAcc.painthrs + dayAcc.sales + dayVal.job.job_totals.totals.subtotal.amount / 100,
dayVal.job.job_totals.totals.subtotal.amount / 100 +
2500,
}; };
}, },
{ bodyhrs: 0, painthrs: 0, sales: 0 } { bodyhrs: 0, painthrs: 0, sales: 0 }

View File

@@ -602,6 +602,18 @@ export default function ShopInfoGeneral({ form }) {
> >
<Select mode="tags" /> <Select mode="tags" />
</Form.Item> </Form.Item>
<Form.Item
name={["md_email_cc", "parts_return_slip"]}
label={t("bodyshop.fields.md_email_cc", { template: "parts_return_slip" })}
rules={[
{
//message: t("general.validation.required"),
type: "array",
},
]}
>
<Select mode="tags" />
</Form.Item>
<Form.Item <Form.Item
name={["tt_allow_post_to_invoiced"]} name={["tt_allow_post_to_invoiced"]}
label={t("bodyshop.fields.tt_allow_post_to_invoiced")} label={t("bodyshop.fields.tt_allow_post_to_invoiced")}

View File

@@ -162,6 +162,32 @@ export function ShopInfoResponsibilityCenterComponent({ bodyshop, form }) {
<Switch /> <Switch />
</Form.Item> </Form.Item>
)} )}
{bodyshop.pbs_serialnumber && (
<Form.Item
label={t("bodyshop.fields.dms.appostingaccount")}
name={["pbs_configuration", "appostingaccount"]}
>
<Select
options={[
{ value: "wip", label: "WIP" },
{ value: "cogs", label: "COGS" },
]}
/>
</Form.Item>
)}
{bodyshop.pbs_serialnumber && (
<Form.Item
label={t("bodyshop.fields.dms.apcontrol")}
name={["pbs_configuration", "apcontrol"]}
>
<Select
options={[
{ value: "ro", label: "RO Number" },
{ value: "vendordmsid", label: "Vendor DMS ID" },
]}
/>
</Form.Item>
)}
</LayoutFormRow> </LayoutFormRow>
<LayoutFormRow header={t("bodyshop.labels.dms.cdk.payers")}> <LayoutFormRow header={t("bodyshop.labels.dms.cdk.payers")}>
<Form.List name={["cdk_configuration", "payers"]}> <Form.List name={["cdk_configuration", "payers"]}>

View File

@@ -682,6 +682,7 @@ export const GET_JOB_BY_PK = gql`
date_rentalresp date_rentalresp
date_exported date_exported
date_repairstarted date_repairstarted
date_void
status status
owner_owing owner_owing
tax_registration_number tax_registration_number
@@ -1078,6 +1079,7 @@ export const UPDATE_JOB = gql`
scheduled_completion scheduled_completion
actual_in actual_in
date_repairstarted date_repairstarted
date_void
} }
} }
} }
@@ -1125,6 +1127,7 @@ export const VOID_JOB = gql`
update_jobs_by_pk(_set: $job, pk_columns: { id: $jobId }) { update_jobs_by_pk(_set: $job, pk_columns: { id: $jobId }) {
id id
date_exported date_exported
date_void
status status
alt_transport alt_transport
ro_number ro_number

View File

@@ -101,6 +101,7 @@
"messages": { "messages": {
"admin_jobmarkexported": "ADMIN: Job marked as exported.", "admin_jobmarkexported": "ADMIN: Job marked as exported.",
"admin_jobmarkforreexport": "ADMIN: Job marked for re-export.", "admin_jobmarkforreexport": "ADMIN: Job marked for re-export.",
"admin_jobuninvoice": "ADMIN: Job has been uninvoiced.",
"admin_jobunvoid": "ADMIN: Job has been unvoided.", "admin_jobunvoid": "ADMIN: Job has been unvoided.",
"billposted": "Bill with invoice number {{invoice_number}} posted.", "billposted": "Bill with invoice number {{invoice_number}} posted.",
"billupdated": "Bill with invoice number {{invoice_number}} updated.", "billupdated": "Bill with invoice number {{invoice_number}} updated.",
@@ -269,6 +270,8 @@
"templates": "Delivery Templates" "templates": "Delivery Templates"
}, },
"dms": { "dms": {
"apcontrol": "AP Control Number",
"appostingaccount": "AP Posting Account",
"cashierid": "Cashier ID", "cashierid": "Cashier ID",
"default_journal": "Default Journal", "default_journal": "Default Journal",
"disablebillwip": "Disable bill WIP for A/P Posting", "disablebillwip": "Disable bill WIP for A/P Posting",
@@ -1437,6 +1440,7 @@
"date_repairstarted": "Repairs Started", "date_repairstarted": "Repairs Started",
"date_scheduled": "Scheduled", "date_scheduled": "Scheduled",
"date_towin": "Towed In", "date_towin": "Towed In",
"date_void": "Void",
"ded_amt": "Deductible", "ded_amt": "Deductible",
"ded_note": "Deductible Note", "ded_note": "Deductible Note",
"ded_status": "Deductible Status", "ded_status": "Deductible Status",
@@ -1452,8 +1456,8 @@
"cost_dms_acctnumber": "Cost DMS Acct #", "cost_dms_acctnumber": "Cost DMS Acct #",
"dms_make": "DMS Make", "dms_make": "DMS Make",
"dms_model": "DMS Model", "dms_model": "DMS Model",
"dms_wip_acctnumber": "Cost WIP DMS Acct #",
"dms_unsold": "New, Unsold Vehicle", "dms_unsold": "New, Unsold Vehicle",
"dms_wip_acctnumber": "Cost WIP DMS Acct #",
"id": "DMS ID", "id": "DMS ID",
"inservicedate": "In Service Date", "inservicedate": "In Service Date",
"journal": "Journal #", "journal": "Journal #",
@@ -2218,17 +2222,17 @@
"external": "External", "external": "External",
"findermodal": "ICBC Payment Finder", "findermodal": "ICBC Payment Finder",
"insurance": "Insurance", "insurance": "Insurance",
"markexported": "Mark Exported",
"markforreexport": "Mark for Re-export",
"new": "New Payment", "new": "New Payment",
"signup": "Please contact support to sign up for electronic payments.", "signup": "Please contact support to sign up for electronic payments.",
"title": "Payments", "title": "Payments",
"totalpayments": "Total Payments", "totalpayments": "Total Payments"
"markexported": "Mark Exported",
"markforreexport": "Mark for Re-export"
}, },
"successes": { "successes": {
"exported": "Payment(s) exported successfully.", "exported": "Payment(s) exported successfully.",
"markreexported": "Payment marked for re-export successfully",
"markexported": "Payment(s) marked exported.", "markexported": "Payment(s) marked exported.",
"markreexported": "Payment marked for re-export successfully",
"payment": "Payment created successfully. ", "payment": "Payment created successfully. ",
"stripe": "Credit card transaction charged successfully." "stripe": "Credit card transaction charged successfully."
} }
@@ -2404,6 +2408,7 @@
"jobs": { "jobs": {
"individual_job_note": "Job Note RO: {{ro_number}}", "individual_job_note": "Job Note RO: {{ro_number}}",
"parts_order": "Parts Order PO: {{ro_number}} - {{name}}", "parts_order": "Parts Order PO: {{ro_number}} - {{name}}",
"parts_return_slip":"Parts Return PO: {{ro_number}} - {{name}}",
"sublet_order": "Sublet Order PO: {{ro_number}} - {{name}}" "sublet_order": "Sublet Order PO: {{ro_number}} - {{name}}"
} }
}, },
@@ -2570,8 +2575,8 @@
"job_costing_ro_ins_co": "Job Costing by RO Source", "job_costing_ro_ins_co": "Job Costing by RO Source",
"jobs_completed_not_invoiced": "Jobs Completed not Invoiced", "jobs_completed_not_invoiced": "Jobs Completed not Invoiced",
"jobs_invoiced_not_exported": "Jobs Invoiced not Exported", "jobs_invoiced_not_exported": "Jobs Invoiced not Exported",
"jobs_scheduled_completion": "Jobs Scheduled Completion",
"jobs_reconcile": "Parts/Sublet/Labor Reconciliation", "jobs_reconcile": "Parts/Sublet/Labor Reconciliation",
"jobs_scheduled_completion": "Jobs Scheduled Completion",
"lag_time": "Lag Time", "lag_time": "Lag Time",
"open_orders": "Open Orders by Date", "open_orders": "Open Orders by Date",
"open_orders_csr": "Open Orders by CSR", "open_orders_csr": "Open Orders by CSR",
@@ -2620,6 +2625,7 @@
"timetickets_summary": "Time Tickets Summary", "timetickets_summary": "Time Tickets Summary",
"unclaimed_hrs": "Unclaimed Hours", "unclaimed_hrs": "Unclaimed Hours",
"void_ros": "Void ROs", "void_ros": "Void ROs",
"work_in_progress_jobs": "Work in Progress - Jobs",
"work_in_progress_labour": "Work in Progress - Labor", "work_in_progress_labour": "Work in Progress - Labor",
"work_in_progress_payables": "Work in Progress - Payables" "work_in_progress_payables": "Work in Progress - Payables"
} }
@@ -2628,8 +2634,8 @@
"labels": { "labels": {
"atssummary": "ATS Summary", "atssummary": "ATS Summary",
"employeevacation": "Employee Vacations", "employeevacation": "Employee Vacations",
"ins_co_nm_filter": "Filter by Insurance Company",
"estimators": "Filter by Writer/Customer Rep.", "estimators": "Filter by Writer/Customer Rep.",
"ins_co_nm_filter": "Filter by Insurance Company",
"intake": "Intake Events", "intake": "Intake Events",
"manual": "Manual Events", "manual": "Manual Events",
"manualevent": "Add Manual Event" "manualevent": "Add Manual Event"

View File

@@ -101,6 +101,7 @@
"messages": { "messages": {
"admin_jobmarkexported": "", "admin_jobmarkexported": "",
"admin_jobmarkforreexport": "", "admin_jobmarkforreexport": "",
"admin_jobuninvoice": "",
"admin_jobunvoid": "", "admin_jobunvoid": "",
"billposted": "", "billposted": "",
"billupdated": "", "billupdated": "",
@@ -269,6 +270,8 @@
"templates": "" "templates": ""
}, },
"dms": { "dms": {
"apcontrol": "",
"appostingaccount": "",
"cashierid": "", "cashierid": "",
"default_journal": "", "default_journal": "",
"disablebillwip": "", "disablebillwip": "",
@@ -1437,6 +1440,7 @@
"date_repairstarted": "", "date_repairstarted": "",
"date_scheduled": "Programado", "date_scheduled": "Programado",
"date_towin": "", "date_towin": "",
"date_void": "",
"ded_amt": "Deducible", "ded_amt": "Deducible",
"ded_note": "", "ded_note": "",
"ded_status": "Estado deducible", "ded_status": "Estado deducible",
@@ -1452,8 +1456,8 @@
"cost_dms_acctnumber": "", "cost_dms_acctnumber": "",
"dms_make": "", "dms_make": "",
"dms_model": "", "dms_model": "",
"dms_wip_acctnumber": "",
"dms_unsold": "", "dms_unsold": "",
"dms_wip_acctnumber": "",
"id": "", "id": "",
"inservicedate": "", "inservicedate": "",
"journal": "", "journal": "",
@@ -2218,6 +2222,8 @@
"external": "", "external": "",
"findermodal": "", "findermodal": "",
"insurance": "", "insurance": "",
"markexported": "",
"markforreexport": "",
"new": "", "new": "",
"signup": "", "signup": "",
"title": "", "title": "",
@@ -2226,6 +2232,7 @@
"successes": { "successes": {
"exported": "", "exported": "",
"markexported": "", "markexported": "",
"markreexported": "",
"payment": "", "payment": "",
"stripe": "" "stripe": ""
} }
@@ -2401,6 +2408,7 @@
"jobs": { "jobs": {
"individual_job_note": "", "individual_job_note": "",
"parts_order": "", "parts_order": "",
"parts_return_slip": "",
"sublet_order": "" "sublet_order": ""
} }
}, },
@@ -2567,8 +2575,8 @@
"job_costing_ro_ins_co": "", "job_costing_ro_ins_co": "",
"jobs_completed_not_invoiced": "", "jobs_completed_not_invoiced": "",
"jobs_invoiced_not_exported": "", "jobs_invoiced_not_exported": "",
"jobs_scheduled_completion": "",
"jobs_reconcile": "", "jobs_reconcile": "",
"jobs_scheduled_completion": "",
"lag_time": "", "lag_time": "",
"open_orders": "", "open_orders": "",
"open_orders_csr": "", "open_orders_csr": "",
@@ -2617,6 +2625,7 @@
"timetickets_summary": "", "timetickets_summary": "",
"unclaimed_hrs": "", "unclaimed_hrs": "",
"void_ros": "", "void_ros": "",
"work_in_progress_jobs": "",
"work_in_progress_labour": "", "work_in_progress_labour": "",
"work_in_progress_payables": "" "work_in_progress_payables": ""
} }
@@ -2625,6 +2634,7 @@
"labels": { "labels": {
"atssummary": "", "atssummary": "",
"employeevacation": "", "employeevacation": "",
"estimators": "",
"ins_co_nm_filter": "", "ins_co_nm_filter": "",
"intake": "", "intake": "",
"manual": "", "manual": "",

View File

@@ -101,6 +101,7 @@
"messages": { "messages": {
"admin_jobmarkexported": "", "admin_jobmarkexported": "",
"admin_jobmarkforreexport": "", "admin_jobmarkforreexport": "",
"admin_jobuninvoice": "",
"admin_jobunvoid": "", "admin_jobunvoid": "",
"billposted": "", "billposted": "",
"billupdated": "", "billupdated": "",
@@ -269,6 +270,8 @@
"templates": "" "templates": ""
}, },
"dms": { "dms": {
"apcontrol": "",
"appostingaccount": "",
"cashierid": "", "cashierid": "",
"default_journal": "", "default_journal": "",
"disablebillwip": "", "disablebillwip": "",
@@ -1437,6 +1440,7 @@
"date_repairstarted": "", "date_repairstarted": "",
"date_scheduled": "Prévu", "date_scheduled": "Prévu",
"date_towin": "", "date_towin": "",
"date_void": "",
"ded_amt": "Déductible", "ded_amt": "Déductible",
"ded_note": "", "ded_note": "",
"ded_status": "Statut de franchise", "ded_status": "Statut de franchise",
@@ -1452,8 +1456,8 @@
"cost_dms_acctnumber": "", "cost_dms_acctnumber": "",
"dms_make": "", "dms_make": "",
"dms_model": "", "dms_model": "",
"dms_wip_acctnumber": "",
"dms_unsold": "", "dms_unsold": "",
"dms_wip_acctnumber": "",
"id": "", "id": "",
"inservicedate": "", "inservicedate": "",
"journal": "", "journal": "",
@@ -2218,6 +2222,8 @@
"external": "", "external": "",
"findermodal": "", "findermodal": "",
"insurance": "", "insurance": "",
"markexported": "",
"markforreexport": "",
"new": "", "new": "",
"signup": "", "signup": "",
"title": "", "title": "",
@@ -2226,6 +2232,7 @@
"successes": { "successes": {
"exported": "", "exported": "",
"markexported": "", "markexported": "",
"markreexported": "",
"payment": "", "payment": "",
"stripe": "" "stripe": ""
} }
@@ -2401,6 +2408,7 @@
"jobs": { "jobs": {
"individual_job_note": "", "individual_job_note": "",
"parts_order": "", "parts_order": "",
"parts_return_slip": "",
"sublet_order": "" "sublet_order": ""
} }
}, },
@@ -2567,8 +2575,8 @@
"job_costing_ro_ins_co": "", "job_costing_ro_ins_co": "",
"jobs_completed_not_invoiced": "", "jobs_completed_not_invoiced": "",
"jobs_invoiced_not_exported": "", "jobs_invoiced_not_exported": "",
"jobs_scheduled_completion": "",
"jobs_reconcile": "", "jobs_reconcile": "",
"jobs_scheduled_completion": "",
"lag_time": "", "lag_time": "",
"open_orders": "", "open_orders": "",
"open_orders_csr": "", "open_orders_csr": "",
@@ -2617,6 +2625,7 @@
"timetickets_summary": "", "timetickets_summary": "",
"unclaimed_hrs": "", "unclaimed_hrs": "",
"void_ros": "", "void_ros": "",
"work_in_progress_jobs": "",
"work_in_progress_labour": "", "work_in_progress_labour": "",
"work_in_progress_payables": "" "work_in_progress_payables": ""
} }
@@ -2625,6 +2634,7 @@
"labels": { "labels": {
"atssummary": "", "atssummary": "",
"employeevacation": "", "employeevacation": "",
"estimators": "",
"ins_co_nm_filter": "", "ins_co_nm_filter": "",
"intake": "", "intake": "",
"manual": "", "manual": "",

View File

@@ -36,6 +36,7 @@ const AuditTrailMapping = {
jobnoteupdated: () => i18n.t("audit_trail.messages.jobnoteupdated"), jobnoteupdated: () => i18n.t("audit_trail.messages.jobnoteupdated"),
jobnotedeleted: () => i18n.t("audit_trail.messages.jobnotedeleted"), jobnotedeleted: () => i18n.t("audit_trail.messages.jobnotedeleted"),
admin_jobunvoid: () => i18n.t("audit_trail.messages.admin_jobunvoid"), admin_jobunvoid: () => i18n.t("audit_trail.messages.admin_jobunvoid"),
admin_jobuninvoice: () => i18n.t("audit_trail.messages.admin_jobuninvoice"),
admin_jobmarkforreexport: () => admin_jobmarkforreexport: () =>
i18n.t("audit_trail.messages.admin_jobmarkforreexport"), i18n.t("audit_trail.messages.admin_jobmarkforreexport"),
admin_jobmarkexported: () => admin_jobmarkexported: () =>

View File

@@ -606,7 +606,14 @@ export const TemplateList = (type, context) => {
}, },
parts_return_slip: { parts_return_slip: {
title: i18n.t("printcenter.jobs.parts_return_slip"), title: i18n.t("printcenter.jobs.parts_return_slip"),
subject: i18n.t("printcenter.jobs.parts_return_slip"), subject: i18n.t("printcenter.subjects.jobs.parts_return_slip", {
ro_number: context && context.job && context.job.ro_number,
name: (
(context && context.job && context.job.ownr_ln) ||
(context && context.job && context.job.ownr_co_nm) ||
""
).trim(),
}),
description: "", description: "",
key: "parts_return_slip", key: "parts_return_slip",
disabled: false, disabled: false,
@@ -1237,7 +1244,7 @@ export const TemplateList = (type, context) => {
disabled: false, disabled: false,
rangeFilter: { rangeFilter: {
object: i18n.t("reportcenter.labels.objects.jobs"), object: i18n.t("reportcenter.labels.objects.jobs"),
field: i18n.t("jobs.fields.date_open"), field: i18n.t("jobs.fields.date_void"),
}, },
group: "sales", group: "sales",
}, },
@@ -1540,6 +1547,19 @@ export const TemplateList = (type, context) => {
}, },
group: "payroll", group: "payroll",
}, },
work_in_progress_jobs_excel: {
title: i18n.t("reportcenter.templates.work_in_progress_jobs"),
subject: i18n.t("reportcenter.templates.work_in_progress_jobs"),
key: "work_in_progress_jobs_excel",
//idtype: "vendor",
reporttype: "excel",
disabled: false,
rangeFilter: {
object: i18n.t("reportcenter.labels.objects.jobs"),
field: i18n.t("jobs.fields.date_open"),
},
group: "jobs",
},
work_in_progress_labour: { work_in_progress_labour: {
title: i18n.t("reportcenter.templates.work_in_progress_labour"), title: i18n.t("reportcenter.templates.work_in_progress_labour"),
description: "", description: "",

View File

@@ -3300,6 +3300,7 @@
- clm_total - clm_total
- clm_zip - clm_zip
- comment - comment
- completed_tasks
- converted - converted
- created_at - created_at
- cust_pr - cust_pr
@@ -3494,6 +3495,7 @@
- v_model_yr - v_model_yr
- v_vin - v_vin
- vehicleid - vehicleid
- date_void
- voided - voided
select_permissions: select_permissions:
- role: user - role: user
@@ -3564,6 +3566,7 @@
- clm_total - clm_total
- clm_zip - clm_zip
- comment - comment
- completed_tasks
- converted - converted
- created_at - created_at
- cust_pr - cust_pr
@@ -3759,6 +3762,7 @@
- v_model_yr - v_model_yr
- v_vin - v_vin
- vehicleid - vehicleid
- date_void
- voided - voided
filter: filter:
bodyshop: bodyshop:
@@ -3839,6 +3843,7 @@
- clm_total - clm_total
- clm_zip - clm_zip
- comment - comment
- completed_tasks
- converted - converted
- created_at - created_at
- cust_pr - cust_pr
@@ -4034,6 +4039,7 @@
- v_model_yr - v_model_yr
- v_vin - v_vin
- vehicleid - vehicleid
- date_void
- voided - voided
filter: filter:
bodyshop: bodyshop:
@@ -5556,6 +5562,7 @@
- memo - memo
- productivehrs - productivehrs
- rate - rate
- task_name
- ttapprovalqueueid - ttapprovalqueueid
- updated_at - updated_at
select_permissions: select_permissions:
@@ -5579,6 +5586,7 @@
- memo - memo
- productivehrs - productivehrs
- rate - rate
- task_name
- ttapprovalqueueid - ttapprovalqueueid
- updated_at - updated_at
filter: filter:
@@ -5611,6 +5619,7 @@
- memo - memo
- productivehrs - productivehrs
- rate - rate
- task_name
- ttapprovalqueueid - ttapprovalqueueid
- updated_at - updated_at
filter: filter:

View File

@@ -0,0 +1,4 @@
-- Could not auto-generate a down migration.
-- Please write an appropriate down migration for the SQL below:
-- alter table "public"."jobs" add column "completed_tasks" jsonb
-- null default jsonb_build_array();

View File

@@ -0,0 +1,2 @@
alter table "public"."jobs" add column "completed_tasks" jsonb
null default jsonb_build_array();

View File

@@ -0,0 +1,4 @@
-- Could not auto-generate a down migration.
-- Please write an appropriate down migration for the SQL below:
-- alter table "public"."jobs" add column "void_date" Timestamp
-- null;

View File

@@ -0,0 +1,2 @@
alter table "public"."jobs" add column "void_date" Timestamp
null;

View File

@@ -0,0 +1 @@
ALTER TABLE "public"."jobs" ALTER COLUMN "void_date" TYPE timestamp without time zone;

View File

@@ -0,0 +1 @@
ALTER TABLE "public"."jobs" ALTER COLUMN "void_date" TYPE timestamptz;

View File

@@ -0,0 +1 @@
alter table "public"."jobs" rename column "date_void" to "void_date";

View File

@@ -0,0 +1 @@
alter table "public"."jobs" rename column "void_date" to "date_void";

View File

@@ -0,0 +1,4 @@
-- Could not auto-generate a down migration.
-- Please write an appropriate down migration for the SQL below:
-- alter table "public"."timetickets" add column "task_name" text
-- null;

View File

@@ -0,0 +1,2 @@
alter table "public"."timetickets" add column "task_name" text
null;

View File

@@ -123,8 +123,14 @@ async function PbsCalculateAllocationsAp(socket, billids) {
if (!billHash[cc.name]) { if (!billHash[cc.name]) {
billHash[cc.name] = { billHash[cc.name] = {
Account: cc.dms_acctnumber, Account:
ControlNumber: bill.vendor.dmsid, bodyshop.pbs_configuration.appostingaccount === "wip"
? cc.dms_wip_acctnumber
: cc.dms_acctnumber,
ControlNumber:
bodyshop.pbs_configuration.apcontrol === "ro"
? bill.job.ro_number
: bill.vendor.dmsid,
Amount: Dinero(), Amount: Dinero(),
// Comment: "String", // Comment: "String",
AdditionalInfo: bill.vendor.name, AdditionalInfo: bill.vendor.name,

View File

@@ -1697,6 +1697,7 @@ query GET_PBS_AP_ALLOCATIONS($billids: [uuid!]) {
md_responsibility_centers md_responsibility_centers
timezone timezone
pbs_serialnumber pbs_serialnumber
pbs_configuration
id id
} }
bills(where: {id: {_in: $billids}, exported:{_eq: false}}) { bills(where: {id: {_in: $billids}, exported:{_eq: false}}) {