Merge work.

This commit is contained in:
Patrick Fic
2020-09-25 13:45:34 -07:00
10 changed files with 67 additions and 19 deletions

View File

@@ -202,8 +202,6 @@ export function JobsTotalsTableComponent({ bodyshop, job }) {
</td>
<td>{`(${Dinero(
job.job_totals.parts.parts.subtotal
).toFormat()} ± ${Dinero(
job.job_totals.parts.parts.adjustments
).toFormat()})`}</td>
</tr>
<tr>
@@ -213,8 +211,6 @@ export function JobsTotalsTableComponent({ bodyshop, job }) {
</td>
<td>{`(${Dinero(
job.job_totals.parts.sublets.subtotal
).toFormat()} ± ${Dinero(
job.job_totals.parts.sublets.adjustments
).toFormat()})`}</td>
</tr>
<tr>
@@ -339,7 +335,10 @@ export function JobsTotalsTableComponent({ bodyshop, job }) {
</div>
<JobCalculateTotals job={job} />
<Editor
value={{ CIECA: job.cieca_ttl.data, ImEXCalc: job.job_totals }}
value={{
CIECA: job.cieca_ttl && job.cieca_ttl.data,
ImEXCalc: job.job_totals,
}}
/>
</div>
</Col>

View File

@@ -19,8 +19,6 @@ export default function JobsCloseTotals({ jobTotals }) {
value={Dinero(jobTotals.parts.parts.total).toFormat()}
suffix={`(${Dinero(
jobTotals.parts.parts.subtotal
).toFormat()} ± ${Dinero(
jobTotals.parts.parts.adjustments
).toFormat()})`}
/>
</Descriptions.Item>
@@ -29,8 +27,6 @@ export default function JobsCloseTotals({ jobTotals }) {
value={Dinero(jobTotals.parts.sublets.total).toFormat()}
suffix={`(${Dinero(
jobTotals.parts.sublets.subtotal
).toFormat()} ± ${Dinero(
jobTotals.parts.sublets.adjustments
).toFormat()})`}
/>
</Descriptions.Item>

View File

@@ -1,9 +1,9 @@
import { Form, Select, Switch } from "antd";
import { Form, InputNumber, Select } from "antd";
import React from "react";
import { useTranslation } from "react-i18next";
import CurrencyInput from "../form-items-formatted/currency-form-item.component";
import FormRow from "../layout-form-row/layout-form-row.component";
import JobsDetailRatesChangeButton from "../jobs-detail-rates-change-button/jobs-detail-rates-change-button.component";
import FormRow from "../layout-form-row/layout-form-row.component";
export default function JobsDetailRates({ job, form }) {
const { t } = useTranslation();
@@ -120,6 +120,24 @@ export default function JobsDetailRates({ job, form }) {
<Form.Item label={t("jobs.fields.rate_matd")} name="rate_matd">
<CurrencyInput />
</Form.Item>
<Form.Item
label={t("jobs.fields.federal_tax_rate")}
name="federal_tax_rate"
>
<InputNumber min={0} max={1} precision={2} />
</Form.Item>
<Form.Item
label={t("jobs.fields.state_tax_rate")}
name="state_tax_rate"
>
<InputNumber min={0} max={1} precision={2} />
</Form.Item>
<Form.Item
label={t("jobs.fields.local_tax_rate")}
name="local_tax_rate"
>
<InputNumber min={0} max={1} precision={2} />
</Form.Item>
</FormRow>
</div>
);

View File

@@ -436,6 +436,9 @@ export const GET_JOB_BY_PK = gql`
rate_mash
rate_matd
actual_in
federal_tax_rate
local_tax_rate
state_tax_rate
scheduled_completion
scheduled_in
actual_completion

View File

@@ -10,6 +10,7 @@ import { GET_JOB_BY_PK, UPDATE_JOB } from "../../graphql/jobs.queries";
import {
addRecentItem,
setBreadcrumbs,
setJobReadOnly,
setSelectedHeader,
} from "../../redux/application/application.actions";
import { CreateRecentItem } from "../../utils/create-recent-item";
@@ -19,6 +20,7 @@ const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
addRecentItem: (item) => dispatch(addRecentItem(item)),
setSelectedHeader: (key) => dispatch(setSelectedHeader(key)),
setJobReadOnly: (bool) => dispatch(setJobReadOnly(bool)),
});
function JobsDetailPageContainer({
@@ -26,6 +28,7 @@ function JobsDetailPageContainer({
setBreadcrumbs,
addRecentItem,
setSelectedHeader,
setJobReadOnly,
}) {
const { jobId } = match.params;
const { t } = useTranslation();
@@ -64,7 +67,9 @@ function JobsDetailPageContainer({
},
]);
if (data && data.jobs_by_pk)
if (data && data.jobs_by_pk) {
setJobReadOnly(!!data.jobs_by_pk.date_exported);
addRecentItem(
CreateRecentItem(
jobId,
@@ -79,6 +84,7 @@ function JobsDetailPageContainer({
`/manage/jobs/${jobId}`
)
);
}
}, [
loading,
data,
@@ -88,6 +94,7 @@ function JobsDetailPageContainer({
jobId,
addRecentItem,
setSelectedHeader,
setJobReadOnly,
]);
if (loading) return <SpinComponent />;

View File

@@ -38,3 +38,13 @@ export const setSelectedHeader = (key) => ({
type: ApplicationActionTypes.SET_SELECTED_HEADER,
payload: key,
});
export const setJobReadOnly = (bool) => ({
type: ApplicationActionTypes.SET_JOB_READONLY,
payload: bool,
});
export const setBillReadOnly = (bool) => ({
type: ApplicationActionTypes.SET_BILL_READONLY,
payload: bool,
});

View File

@@ -10,6 +10,8 @@ const INITIAL_STATE = {
calculating: false,
error: null,
},
jobReadOnly: false,
billReadOnly: false,
};
const applicationReducer = (state = INITIAL_STATE, action) => {
@@ -63,6 +65,11 @@ const applicationReducer = (state = INITIAL_STATE, action) => {
loading: false,
};
case ApplicationActionTypes.SET_BILL_READONLY:
return { ...state, billReadOnly: action.payload };
case ApplicationActionTypes.SET_JOB_READONLY:
return { ...state, jobReadOnly: action.payload };
default:
return state;
}

View File

@@ -31,3 +31,13 @@ export const selectSelectedHeader = createSelector(
[selectApplication],
(application) => application.selectedHeader
);
export const selectJobReadOnly = createSelector(
[selectApplication],
(application) => application.jobReadOnly
);
export const selectBillReadOnly = createSelector(
[selectApplication],
(application) => application.billReadOnly
);

View File

@@ -7,5 +7,7 @@ const ApplicationActionTypes = {
CALCULATE_SCHEDULE_LOAD_FAILURE: "CALCULATE_SCHEDULE_LOAD_FAILURE",
ADD_RECENT_ITEM: "ADD_RECENT_ITEM",
SET_SELECTED_HEADER: "SET_SELECTED_HEADER",
SET_JOB_READONLY: "SET_JOB_READONLY",
SET_BILL_READONLY: "SET_BILL_READONLY",
};
export default ApplicationActionTypes;

View File

@@ -61,7 +61,7 @@ function CalculateTaxesTotals(job, otherTotals) {
const statePartsTax = job.joblines
.filter((jl) => !jl.removed)
.reduce((acc, val) => {
if (!!!val.tax_part) return acc;
if (!!!val.tax_part || !!!val.part_type) return acc;
// if (!!job.parts_tax_rates[val.part_type]) {
// console.log("val.line_desc", val.line_desc);
@@ -273,7 +273,6 @@ function CalculatePartsTotals(jobLines) {
subtotal: acc.sublets.subtotal.add(
Dinero({ amount: Math.round(value.act_price * 100) })
),
//TODO Add Adjustments in
},
};
@@ -306,7 +305,6 @@ function CalculatePartsTotals(jobLines) {
amount: Math.round(value.act_price * 100),
}).multiply(value.part_qty)
),
//TODO Add Adjustments in
},
};
// default:
@@ -317,12 +315,10 @@ function CalculatePartsTotals(jobLines) {
parts: {
list: {},
subtotal: Dinero({ amount: 0 }),
adjustments: Dinero({ amount: 0 }),
total: Dinero({ amount: 0 }),
},
sublets: {
subtotal: Dinero({ amount: 0 }),
adjustments: Dinero({ amount: 0 }),
total: Dinero({ amount: 0 }),
},
}
@@ -331,11 +327,11 @@ function CalculatePartsTotals(jobLines) {
return {
parts: {
...ret.parts,
total: ret.parts.subtotal, //+ ret.parts.adjustments
total: ret.parts.subtotal,
},
sublets: {
...ret.sublets,
total: ret.sublets.subtotal, // + ret.sublets.adjustments,
total: ret.sublets.subtotal,
},
};
}