Merged in feature/2021-07-09 (pull request #132)

Feature/2021 07 09
This commit is contained in:
Patrick Fic
2021-07-08 01:06:58 +00:00
7 changed files with 84 additions and 29 deletions

View File

@@ -0,0 +1,57 @@
import { DownCircleFilled } from "@ant-design/icons";
import { useMutation } from "@apollo/client";
import { Button, Dropdown, Menu, notification } from "antd";
import React from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { UPDATE_JOB_STATUS } from "../../graphql/jobs.queries";
import { selectBodyshop } from "../../redux/user/user.selectors";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
});
const mapDispatchToProps = (dispatch) => ({
//setUserLanguage: language => dispatch(setUserLanguage(language))
});
export default connect(mapStateToProps, mapDispatchToProps)(JobsAdminStatus);
export function JobsAdminStatus({ bodyshop, job }) {
const { t } = useTranslation();
const [mutationUpdateJobstatus] = useMutation(UPDATE_JOB_STATUS);
const updateJobStatus = (status) => {
mutationUpdateJobstatus({
variables: { jobId: job.id, status: status },
})
.then((r) => {
notification["success"]({ message: t("jobs.successes.save") });
// refetch();
})
.catch((error) => {
notification["error"]({ message: t("jobs.errors.saving") });
});
};
const statusmenu = (
<Menu
onClick={(e) => {
updateJobStatus(e.key);
}}
>
{bodyshop.md_ro_statuses.statuses.map((item) => (
<Menu.Item key={item}>{item}</Menu.Item>
))}
</Menu>
);
return (
<Dropdown overlay={statusmenu} trigger={["click"]} key="changestatus">
<Button shape="round">
<span>{job.status}</span>
<DownCircleFilled />
</Button>
</Dropdown>
);
}

View File

@@ -11,6 +11,7 @@ export const GetSupplementDelta = async (client, jobId, newLines) => {
query: GET_ALL_JOBLINES_BY_PK, query: GET_ALL_JOBLINES_BY_PK,
variables: { id: jobId }, variables: { id: jobId },
}); });
const existingLines = _.cloneDeep(existingLinesFromDb); const existingLines = _.cloneDeep(existingLinesFromDb);
const linesToInsert = []; const linesToInsert = [];
const linesToUpdate = []; const linesToUpdate = [];
@@ -19,11 +20,14 @@ export const GetSupplementDelta = async (client, jobId, newLines) => {
const matchingIndex = existingLines.findIndex( const matchingIndex = existingLines.findIndex(
(eL) => eL.unq_seq === newLine.unq_seq (eL) => eL.unq_seq === newLine.unq_seq
); );
//Should do a check to make sure there is only 1 matching unq sequence number.
if (matchingIndex >= 0) { if (matchingIndex >= 0) {
//Found a relevant matching line. Add it to lines to update. //Found a relevant matching line. Add it to lines to update.
linesToUpdate.push({ linesToUpdate.push({
id: existingLines[matchingIndex].id, id: existingLines[matchingIndex].id,
newData: newLine, newData: { ...newLine, removed: false },
}); });
//Splice out item we found for performance. //Splice out item we found for performance.

View File

@@ -23,19 +23,6 @@ export const GET_ALL_JOBLINES_BY_PK = gql`
notes notes
location location
tax_part tax_part
parts_order_lines {
id
parts_order {
id
order_number
order_date
user_email
vendor {
id
name
}
}
}
} }
} }
`; `;

View File

@@ -15,6 +15,8 @@ import JobAdminOwnerReassociate from "../../components/jobs-admin-owner-reassoci
import JobsAdminUnvoid from "../../components/jobs-admin-unvoid/jobs-admin-unvoid.component"; import JobsAdminUnvoid from "../../components/jobs-admin-unvoid/jobs-admin-unvoid.component";
import JobAdminVehicleReassociate from "../../components/jobs-admin-vehicle-reassociate/jobs-admin-vehicle-reassociate.component"; import JobAdminVehicleReassociate from "../../components/jobs-admin-vehicle-reassociate/jobs-admin-vehicle-reassociate.component";
import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component"; import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component";
import JobsAdminStatus from "../../components/jobs-admin-change-status/jobs-admin-change.status.component";
import NotFound from "../../components/not-found/not-found.component"; import NotFound from "../../components/not-found/not-found.component";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component"; import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import { GET_JOB_BY_PK } from "../../graphql/jobs.queries"; import { GET_JOB_BY_PK } from "../../graphql/jobs.queries";
@@ -96,6 +98,7 @@ export function JobsCloseContainer({ setBreadcrumbs, setSelectedHeader }) {
<JobsAdminDeleteIntake job={data ? data.jobs_by_pk : {}} /> <JobsAdminDeleteIntake job={data ? data.jobs_by_pk : {}} />
<JobsAdminMarkReexport job={data ? data.jobs_by_pk : {}} /> <JobsAdminMarkReexport job={data ? data.jobs_by_pk : {}} />
<JobsAdminUnvoid job={data ? data.jobs_by_pk : {}} /> <JobsAdminUnvoid job={data ? data.jobs_by_pk : {}} />
<JobsAdminStatus job={data ? data.jobs_by_pk : {}} />
</Space> </Space>
</Card> </Card>
</Col> </Col>

View File

@@ -288,7 +288,7 @@ const generateInvoiceQbxml = (
}); });
// console.log("Done creating hash", JSON.stringify(invoiceLineHash)); // console.log("Done creating hash", JSON.stringify(invoiceLineHash));
if (!hasMapaLine) { if (!hasMapaLine && jobs_by_pk.job_totals.rates.mapa.total.amount > 0) {
console.log("Adding MAPA Line Manually."); console.log("Adding MAPA Line Manually.");
const mapaAccountName = responsibilityCenters.defaults.profits.MAPA; const mapaAccountName = responsibilityCenters.defaults.profits.MAPA;
@@ -313,7 +313,7 @@ const generateInvoiceQbxml = (
} }
} }
if (!hasMashLine) { if (!hasMashLine && jobs_by_pk.job_totals.rates.mash.total.amount > 0) {
console.log("Adding MASH Line Manually."); console.log("Adding MASH Line Manually.");
const mashAccountName = responsibilityCenters.defaults.profits.MASH; const mashAccountName = responsibilityCenters.defaults.profits.MASH;
@@ -424,9 +424,11 @@ const generateInvoiceQbxml = (
TxnDate: moment(jobs_by_pk.date_invoiced).format("YYYY-MM-DD"), TxnDate: moment(jobs_by_pk.date_invoiced).format("YYYY-MM-DD"),
RefNumber: jobs_by_pk.ro_number, RefNumber: jobs_by_pk.ro_number,
ShipAddress: { ShipAddress: {
Addr1: `${jobs_by_pk.ownr_fn || ""} ${jobs_by_pk.ownr_ln || ""} ${ Addr1: jobs_by_pk.ownr_co_nm
jobs_by_pk.ownr_co_nm || "" ? jobs_by_pk.ownr_co_nm.substring(0, 30)
}`, : `${`${jobs_by_pk.ownr_ln || ""} ${
jobs_by_pk.ownr_fn || ""
}`.substring(0, 30)}`,
Addr2: jobs_by_pk.ownr_addr1, Addr2: jobs_by_pk.ownr_addr1,
Addr3: jobs_by_pk.ownr_addr2, Addr3: jobs_by_pk.ownr_addr2,
City: jobs_by_pk.ownr_city, City: jobs_by_pk.ownr_city,

View File

@@ -17,12 +17,13 @@ exports.generateOwnerTier = (jobs_by_pk, isThreeTier, twotierpref) => {
if (isThreeTier) { if (isThreeTier) {
//It's always gonna be the owner now. Same as 2 tier by name //It's always gonna be the owner now. Same as 2 tier by name
return jobs_by_pk.ownr_co_nm return jobs_by_pk.ownr_co_nm
? `${jobs_by_pk.ownr_co_nm} - ${jobs_by_pk.ownr_ln || ""} ${ ? `${jobs_by_pk.ownr_co_nm.substring(0, 30)} #${
jobs_by_pk.ownr_fn || ""
} #${jobs_by_pk.owner.accountingid || ""}`
: `${jobs_by_pk.ownr_ln || ""} ${jobs_by_pk.ownr_fn || ""} #${
jobs_by_pk.owner.accountingid || "" jobs_by_pk.owner.accountingid || ""
}`; }`
: `${`${jobs_by_pk.ownr_ln || ""} ${jobs_by_pk.ownr_fn || ""}`.substring(
0,
30
)} #${jobs_by_pk.owner.accountingid || ""}`;
} else { } else {
//What's the 2 tier pref? //What's the 2 tier pref?
if (twotierpref === "source") { if (twotierpref === "source") {
@@ -31,12 +32,12 @@ exports.generateOwnerTier = (jobs_by_pk, isThreeTier, twotierpref) => {
} else { } else {
//Same as 3 tier //Same as 3 tier
return jobs_by_pk.ownr_co_nm return jobs_by_pk.ownr_co_nm
? `${jobs_by_pk.ownr_co_nm} - ${jobs_by_pk.ownr_ln || ""} ${ ? `${jobs_by_pk.ownr_co_nm.substring(0, 30)} #${
jobs_by_pk.ownr_fn || ""
} #${jobs_by_pk.owner.accountingid || ""}`
: `${jobs_by_pk.ownr_ln || ""} ${jobs_by_pk.ownr_fn || ""} #${
jobs_by_pk.owner.accountingid || "" jobs_by_pk.owner.accountingid || ""
}`; }`
: `${`${jobs_by_pk.ownr_ln || ""} ${
jobs_by_pk.ownr_fn || ""
}`.substring(0, 30)} #${jobs_by_pk.owner.accountingid || ""}`;
} }
} }
}; };

View File

@@ -57,6 +57,7 @@ query QUERY_JOBS_FOR_RECEIVABLES_EXPORT($ids: [uuid!]!) {
ownerid ownerid
ownr_ln ownr_ln
ownr_fn ownr_fn
ownr_co_nm
ownr_addr1 ownr_addr1
ownr_addr2 ownr_addr2
ownr_zip ownr_zip