Merge release & add time ticket calculations.
This commit is contained in:
@@ -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
|
||||||
@@ -3683,6 +3683,69 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>itc_federal</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>itc_local</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>itc_state</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>mappingname</name>
|
<name>mappingname</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
@@ -5819,27 +5882,6 @@
|
|||||||
<folder_node>
|
<folder_node>
|
||||||
<name>responsibilitycenters</name>
|
<name>responsibilitycenters</name>
|
||||||
<children>
|
<children>
|
||||||
<concept_node>
|
|
||||||
<name>LA4</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>ap</name>
|
<name>ap</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
@@ -5987,6 +6029,27 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>la4</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>lab</name>
|
<name>lab</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
@@ -17284,6 +17347,27 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>getmakes</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>post</name>
|
<name>post</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
|
|||||||
@@ -120,7 +120,9 @@ export function DmsAllocationsSummary({ socket, bodyshop, jobId, title }) {
|
|||||||
{totals.totalSale.toFormat()}
|
{totals.totalSale.toFormat()}
|
||||||
</Table.Summary.Cell>
|
</Table.Summary.Cell>
|
||||||
<Table.Summary.Cell>
|
<Table.Summary.Cell>
|
||||||
{totals.totalCost.toFormat()}
|
{
|
||||||
|
// totals.totalCost.toFormat()
|
||||||
|
}
|
||||||
</Table.Summary.Cell>
|
</Table.Summary.Cell>
|
||||||
<Table.Summary.Cell></Table.Summary.Cell>
|
<Table.Summary.Cell></Table.Summary.Cell>
|
||||||
<Table.Summary.Cell></Table.Summary.Cell>
|
<Table.Summary.Cell></Table.Summary.Cell>
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ 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 { selectJobReadOnly } from "../../redux/application/application.selectors";
|
||||||
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import CABCpvrtCalculator from "../ca-bc-pvrt-calculator/ca-bc-pvrt-calculator.component";
|
import CABCpvrtCalculator from "../ca-bc-pvrt-calculator/ca-bc-pvrt-calculator.component";
|
||||||
import CurrencyInput from "../form-items-formatted/currency-form-item.component";
|
import CurrencyInput from "../form-items-formatted/currency-form-item.component";
|
||||||
import JobsDetailRatesChangeButton from "../jobs-detail-rates-change-button/jobs-detail-rates-change-button.component";
|
import JobsDetailRatesChangeButton from "../jobs-detail-rates-change-button/jobs-detail-rates-change-button.component";
|
||||||
@@ -22,9 +23,10 @@ import JobsDetailRatesParts from "./jobs-detail-rates.parts.component";
|
|||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
jobRO: selectJobReadOnly,
|
jobRO: selectJobReadOnly,
|
||||||
|
bodyshop: selectBodyshop,
|
||||||
});
|
});
|
||||||
|
|
||||||
export function JobsDetailRates({ jobRO, form, job }) {
|
export function JobsDetailRates({ jobRO, form, job, bodyshop }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
@@ -77,7 +79,7 @@ export function JobsDetailRates({ jobRO, form, job }) {
|
|||||||
label={t("jobs.fields.adjustment_bottom_line")}
|
label={t("jobs.fields.adjustment_bottom_line")}
|
||||||
name="adjustment_bottom_line"
|
name="adjustment_bottom_line"
|
||||||
>
|
>
|
||||||
<CurrencyInput disabled={jobRO} />
|
<CurrencyInput disabled={jobRO || bodyshop.cdk_dealerid} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Space align="end">
|
<Space align="end">
|
||||||
<Form.Item label={t("jobs.fields.ca_bc_pvrt")} name="ca_bc_pvrt">
|
<Form.Item label={t("jobs.fields.ca_bc_pvrt")} name="ca_bc_pvrt">
|
||||||
|
|||||||
@@ -121,6 +121,27 @@ export function ShopInfoResponsibilityCenterComponent({ bodyshop, form }) {
|
|||||||
>
|
>
|
||||||
<Input />
|
<Input />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("bodyshop.fields.dms.itc_federal")}
|
||||||
|
valuePropName="checked"
|
||||||
|
name={["cdk_configuration", "itc_federal"]}
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("bodyshop.fields.dms.itc_state")}
|
||||||
|
valuePropName="checked"
|
||||||
|
name={["cdk_configuration", "itc_state"]}
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("bodyshop.fields.dms.itc_local")}
|
||||||
|
valuePropName="checked"
|
||||||
|
name={["cdk_configuration", "itc_local"]}
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</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"]}>
|
||||||
@@ -471,6 +492,7 @@ export function ShopInfoResponsibilityCenterComponent({ bodyshop, form }) {
|
|||||||
{fields.map((field, index) => (
|
{fields.map((field, index) => (
|
||||||
<Form.Item key={field.key}>
|
<Form.Item key={field.key}>
|
||||||
<div>
|
<div>
|
||||||
|
<LayoutFormRow>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("bodyshop.fields.dms.mappingname")}
|
label={t("bodyshop.fields.dms.mappingname")}
|
||||||
key={`${index}name`}
|
key={`${index}name`}
|
||||||
@@ -484,7 +506,12 @@ export function ShopInfoResponsibilityCenterComponent({ bodyshop, form }) {
|
|||||||
>
|
>
|
||||||
<Input />
|
<Input />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
<DeleteFilled
|
||||||
|
onClick={() => {
|
||||||
|
remove(field.name);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</LayoutFormRow>
|
||||||
<LayoutFormRow
|
<LayoutFormRow
|
||||||
header={t("bodyshop.labels.defaultcostsmapping")}
|
header={t("bodyshop.labels.defaultcostsmapping")}
|
||||||
>
|
>
|
||||||
@@ -1627,12 +1654,6 @@ export function ShopInfoResponsibilityCenterComponent({ bodyshop, form }) {
|
|||||||
</Select>
|
</Select>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</LayoutFormRow>
|
</LayoutFormRow>
|
||||||
|
|
||||||
<DeleteFilled
|
|
||||||
onClick={() => {
|
|
||||||
remove(field.name);
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
))}
|
))}
|
||||||
@@ -2717,7 +2738,7 @@ export function ShopInfoResponsibilityCenterComponent({ bodyshop, form }) {
|
|||||||
</Form.Item>
|
</Form.Item>
|
||||||
{bodyshop.cdk_dealerid && (
|
{bodyshop.cdk_dealerid && (
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("bodyshop.fields.responsibilitycenter_dms_acctnumber")}
|
label={t("bodyshop.fields.dms.dms_acctnumber")}
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
@@ -2815,7 +2836,7 @@ export function ShopInfoResponsibilityCenterComponent({ bodyshop, form }) {
|
|||||||
</Form.Item>
|
</Form.Item>
|
||||||
{bodyshop.cdk_dealerid && (
|
{bodyshop.cdk_dealerid && (
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("bodyshop.fields.responsibilitycenter_dms_acctnumber")}
|
label={t("bodyshop.fields.dms.dms_acctnumber")}
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
@@ -2911,21 +2932,9 @@ export function ShopInfoResponsibilityCenterComponent({ bodyshop, form }) {
|
|||||||
>
|
>
|
||||||
<Input />
|
<Input />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
|
||||||
label={t("bodyshop.fields.responsibilitycenter_rate")}
|
|
||||||
rules={[
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
//message: t("general.validation.required"),
|
|
||||||
},
|
|
||||||
]}
|
|
||||||
name={["md_responsibility_centers", "taxes", "local", "rate"]}
|
|
||||||
>
|
|
||||||
<InputNumber precision={2} />
|
|
||||||
</Form.Item>
|
|
||||||
{bodyshop.cdk_dealerid && (
|
{bodyshop.cdk_dealerid && (
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("bodyshop.fields.responsibilitycenter_dms_acctnumber")}
|
label={t("bodyshop.fields.dms.dms_acctnumber")}
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
@@ -2942,6 +2951,18 @@ export function ShopInfoResponsibilityCenterComponent({ bodyshop, form }) {
|
|||||||
<Input />
|
<Input />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
)}
|
)}
|
||||||
|
<Form.Item
|
||||||
|
label={t("bodyshop.fields.responsibilitycenter_rate")}
|
||||||
|
rules={[
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
//message: t("general.validation.required"),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
name={["md_responsibility_centers", "taxes", "local", "rate"]}
|
||||||
|
>
|
||||||
|
<InputNumber precision={2} />
|
||||||
|
</Form.Item>
|
||||||
</LayoutFormRow>
|
</LayoutFormRow>
|
||||||
<LayoutFormRow header={<div>AR</div>}>
|
<LayoutFormRow header={<div>AR</div>}>
|
||||||
{/* <Form.Item
|
{/* <Form.Item
|
||||||
|
|||||||
@@ -108,6 +108,8 @@ export function DmsContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }) {
|
|||||||
});
|
});
|
||||||
history.push("/manage/accounting/receivables");
|
history.push("/manage/accounting/receivables");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (socket.disconnected) socket.connect();
|
||||||
return () => {
|
return () => {
|
||||||
socket.removeAllListeners();
|
socket.removeAllListeners();
|
||||||
socket.disconnect();
|
socket.disconnect();
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ export function JobsCloseComponent({ job, bodyshop, jobRO }) {
|
|||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputNumber disabled={jobRO} />
|
<InputNumber precision={0} disabled={jobRO} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
)}
|
)}
|
||||||
{bodyshop.cdk_dealerid && (
|
{bodyshop.cdk_dealerid && (
|
||||||
@@ -244,7 +244,7 @@ export function JobsCloseComponent({ job, bodyshop, jobRO }) {
|
|||||||
}),
|
}),
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputNumber disabled={jobRO} />
|
<InputNumber precision={0} disabled={jobRO} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
)}
|
)}
|
||||||
</LayoutFormRow>
|
</LayoutFormRow>
|
||||||
|
|||||||
@@ -237,6 +237,9 @@
|
|||||||
"dms_acctnumber": "DMS Account #",
|
"dms_acctnumber": "DMS Account #",
|
||||||
"dms_wip_acctnumber": "DMS W.I.P. Account #",
|
"dms_wip_acctnumber": "DMS W.I.P. Account #",
|
||||||
"generic_customer_number": "Generic Customer Number",
|
"generic_customer_number": "Generic Customer Number",
|
||||||
|
"itc_federal": "Federal Tax is ITC?",
|
||||||
|
"itc_local": "Local Tax is ITC?",
|
||||||
|
"itc_state": "State Tax is ITC?",
|
||||||
"mappingname": "DMS Mapping Name",
|
"mappingname": "DMS Mapping Name",
|
||||||
"srcco": "Source Company #/Dealer #"
|
"srcco": "Source Company #/Dealer #"
|
||||||
},
|
},
|
||||||
@@ -381,7 +384,6 @@
|
|||||||
"responsibilitycenter_accountnumber": "Account Number",
|
"responsibilitycenter_accountnumber": "Account Number",
|
||||||
"responsibilitycenter_rate": "Rate",
|
"responsibilitycenter_rate": "Rate",
|
||||||
"responsibilitycenters": {
|
"responsibilitycenters": {
|
||||||
"LA4": "LA4",
|
|
||||||
"ap": "Accounts Payable",
|
"ap": "Accounts Payable",
|
||||||
"ar": "Accounts Receivable",
|
"ar": "Accounts Receivable",
|
||||||
"ats": "ATS",
|
"ats": "ATS",
|
||||||
@@ -389,6 +391,7 @@
|
|||||||
"la1": "LA1",
|
"la1": "LA1",
|
||||||
"la2": "LA2",
|
"la2": "LA2",
|
||||||
"la3": "LA3",
|
"la3": "LA3",
|
||||||
|
"la4": "LA4",
|
||||||
"lab": "Body",
|
"lab": "Body",
|
||||||
"lad": "Diagnostic",
|
"lad": "Diagnostic",
|
||||||
"lae": "Electrical",
|
"lae": "Electrical",
|
||||||
@@ -1082,6 +1085,7 @@
|
|||||||
"addpayer": "Add Payer",
|
"addpayer": "Add Payer",
|
||||||
"createnewcustomer": "Create New Customer",
|
"createnewcustomer": "Create New Customer",
|
||||||
"findmakemodelcode": "Find Make/Model Code",
|
"findmakemodelcode": "Find Make/Model Code",
|
||||||
|
"getmakes": "",
|
||||||
"post": "Post",
|
"post": "Post",
|
||||||
"refetchmakesmodels": "Refetch Make and Model Codes",
|
"refetchmakesmodels": "Refetch Make and Model Codes",
|
||||||
"usegeneric": "Use Generic Customer",
|
"usegeneric": "Use Generic Customer",
|
||||||
|
|||||||
@@ -237,6 +237,9 @@
|
|||||||
"dms_acctnumber": "",
|
"dms_acctnumber": "",
|
||||||
"dms_wip_acctnumber": "",
|
"dms_wip_acctnumber": "",
|
||||||
"generic_customer_number": "",
|
"generic_customer_number": "",
|
||||||
|
"itc_federal": "",
|
||||||
|
"itc_local": "",
|
||||||
|
"itc_state": "",
|
||||||
"mappingname": "",
|
"mappingname": "",
|
||||||
"srcco": ""
|
"srcco": ""
|
||||||
},
|
},
|
||||||
@@ -381,7 +384,6 @@
|
|||||||
"responsibilitycenter_accountnumber": "",
|
"responsibilitycenter_accountnumber": "",
|
||||||
"responsibilitycenter_rate": "",
|
"responsibilitycenter_rate": "",
|
||||||
"responsibilitycenters": {
|
"responsibilitycenters": {
|
||||||
"LA4": "",
|
|
||||||
"ap": "",
|
"ap": "",
|
||||||
"ar": "",
|
"ar": "",
|
||||||
"ats": "",
|
"ats": "",
|
||||||
@@ -389,6 +391,7 @@
|
|||||||
"la1": "",
|
"la1": "",
|
||||||
"la2": "",
|
"la2": "",
|
||||||
"la3": "",
|
"la3": "",
|
||||||
|
"la4": "",
|
||||||
"lab": "",
|
"lab": "",
|
||||||
"lad": "",
|
"lad": "",
|
||||||
"lae": "",
|
"lae": "",
|
||||||
@@ -1082,6 +1085,7 @@
|
|||||||
"addpayer": "",
|
"addpayer": "",
|
||||||
"createnewcustomer": "",
|
"createnewcustomer": "",
|
||||||
"findmakemodelcode": "",
|
"findmakemodelcode": "",
|
||||||
|
"getmakes": "",
|
||||||
"post": "",
|
"post": "",
|
||||||
"refetchmakesmodels": "",
|
"refetchmakesmodels": "",
|
||||||
"usegeneric": "",
|
"usegeneric": "",
|
||||||
|
|||||||
@@ -237,6 +237,9 @@
|
|||||||
"dms_acctnumber": "",
|
"dms_acctnumber": "",
|
||||||
"dms_wip_acctnumber": "",
|
"dms_wip_acctnumber": "",
|
||||||
"generic_customer_number": "",
|
"generic_customer_number": "",
|
||||||
|
"itc_federal": "",
|
||||||
|
"itc_local": "",
|
||||||
|
"itc_state": "",
|
||||||
"mappingname": "",
|
"mappingname": "",
|
||||||
"srcco": ""
|
"srcco": ""
|
||||||
},
|
},
|
||||||
@@ -381,7 +384,6 @@
|
|||||||
"responsibilitycenter_accountnumber": "",
|
"responsibilitycenter_accountnumber": "",
|
||||||
"responsibilitycenter_rate": "",
|
"responsibilitycenter_rate": "",
|
||||||
"responsibilitycenters": {
|
"responsibilitycenters": {
|
||||||
"LA4": "",
|
|
||||||
"ap": "",
|
"ap": "",
|
||||||
"ar": "",
|
"ar": "",
|
||||||
"ats": "",
|
"ats": "",
|
||||||
@@ -389,6 +391,7 @@
|
|||||||
"la1": "",
|
"la1": "",
|
||||||
"la2": "",
|
"la2": "",
|
||||||
"la3": "",
|
"la3": "",
|
||||||
|
"la4": "",
|
||||||
"lab": "",
|
"lab": "",
|
||||||
"lad": "",
|
"lad": "",
|
||||||
"lae": "",
|
"lae": "",
|
||||||
@@ -1082,6 +1085,7 @@
|
|||||||
"addpayer": "",
|
"addpayer": "",
|
||||||
"createnewcustomer": "",
|
"createnewcustomer": "",
|
||||||
"findmakemodelcode": "",
|
"findmakemodelcode": "",
|
||||||
|
"getmakes": "",
|
||||||
"post": "",
|
"post": "",
|
||||||
"refetchmakesmodels": "",
|
"refetchmakesmodels": "",
|
||||||
"usegeneric": "",
|
"usegeneric": "",
|
||||||
|
|||||||
@@ -79,40 +79,78 @@ exports.default = async function (socket, jobid) {
|
|||||||
bill_val.billlines.map((line_val) => {
|
bill_val.billlines.map((line_val) => {
|
||||||
if (!bill_acc[line_val.cost_center])
|
if (!bill_acc[line_val.cost_center])
|
||||||
bill_acc[line_val.cost_center] = Dinero();
|
bill_acc[line_val.cost_center] = Dinero();
|
||||||
const lineDinero = Dinero({
|
|
||||||
|
let lineDinero = Dinero({
|
||||||
amount: Math.round((line_val.actual_cost || 0) * 100),
|
amount: Math.round((line_val.actual_cost || 0) * 100),
|
||||||
})
|
})
|
||||||
.multiply(line_val.quantity)
|
.multiply(line_val.quantity)
|
||||||
.multiply(bill_val.is_credit_memo ? -1 : 1);
|
.multiply(bill_val.is_credit_memo ? -1 : 1);
|
||||||
|
|
||||||
bill_acc[line_val.cost_center] =
|
|
||||||
bill_acc[line_val.cost_center].add(lineDinero);
|
|
||||||
|
|
||||||
//Add appropriate tax amounts.
|
//Add appropriate tax amounts.
|
||||||
const {
|
const {
|
||||||
applicable_taxes: { local, state, federal },
|
applicable_taxes: { local, state, federal },
|
||||||
} = line_val;
|
} = line_val;
|
||||||
|
|
||||||
if (local) {
|
if (local) {
|
||||||
|
if (bodyshop.cdk_configuration.itc_local)
|
||||||
taxAllocations.local.cost = taxAllocations.local.cost.add(
|
taxAllocations.local.cost = taxAllocations.local.cost.add(
|
||||||
lineDinero.percentage(bill_val.local_tax_rate || 0)
|
lineDinero.percentage(bill_val.local_tax_rate || 0)
|
||||||
);
|
);
|
||||||
|
lineDinero = lineDinero.add(
|
||||||
|
lineDinero.percentage(bill_val.local_tax_rate || 0)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (state) {
|
if (state) {
|
||||||
|
if (bodyshop.cdk_configuration.itc_state)
|
||||||
taxAllocations.state.cost = taxAllocations.state.cost.add(
|
taxAllocations.state.cost = taxAllocations.state.cost.add(
|
||||||
lineDinero.percentage(bill_val.state_tax_rate || 0)
|
lineDinero.percentage(bill_val.state_tax_rate || 0)
|
||||||
);
|
);
|
||||||
|
lineDinero = lineDinero.add(
|
||||||
|
lineDinero.percentage(bill_val.state_tax_rate || 0)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (federal) {
|
if (federal) {
|
||||||
|
//If it's an ITC, add it as a negative cost, otherwise add it to the item cost.
|
||||||
|
if (bodyshop.cdk_configuration.itc_federal)
|
||||||
taxAllocations.federal.cost = taxAllocations.federal.cost.add(
|
taxAllocations.federal.cost = taxAllocations.federal.cost.add(
|
||||||
lineDinero.percentage(bill_val.federal_tax_rate || 0)
|
lineDinero.percentage(bill_val.federal_tax_rate || 0)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
lineDinero = lineDinero.add(
|
||||||
|
lineDinero.percentage(bill_val.federal_tax_rate || 0)
|
||||||
|
);
|
||||||
|
|
||||||
|
// bill_acc[line_val.cost_center] = bill_acc[line_val.cost_center].add(
|
||||||
|
// lineDinero.percentage(bill_val.federal_tax_rate || 0)
|
||||||
|
// );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bill_acc[line_val.cost_center] =
|
||||||
|
bill_acc[line_val.cost_center].add(lineDinero);
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
return bill_acc;
|
return bill_acc;
|
||||||
}, {});
|
}, {});
|
||||||
|
|
||||||
|
job.timetickets.forEach((ticket) => {
|
||||||
|
//Get the total amount of the ticket.
|
||||||
|
let TicketTotal = Dinero({
|
||||||
|
amount: Math.round(
|
||||||
|
ticket.rate *
|
||||||
|
(ticket.employee && ticket.employee.flat_rate
|
||||||
|
? ticket.productivehrs || 0
|
||||||
|
: ticket.actualhrs || 0) *
|
||||||
|
100
|
||||||
|
),
|
||||||
|
});
|
||||||
|
//Add it to the right cost center.
|
||||||
|
if (!costCenterHash[ticket.cost_center])
|
||||||
|
costCenterHash[ticket.cost_center] = Dinero();
|
||||||
|
|
||||||
|
costCenterHash[ticket.cost_center] =
|
||||||
|
costCenterHash[ticket.cost_center].add(TicketTotal);
|
||||||
|
});
|
||||||
|
|
||||||
const jobAllocations = _.union(
|
const jobAllocations = _.union(
|
||||||
Object.keys(profitCenterHash),
|
Object.keys(profitCenterHash),
|
||||||
Object.keys(costCenterHash)
|
Object.keys(costCenterHash)
|
||||||
|
|||||||
@@ -976,7 +976,7 @@ async function GenerateTransWips(socket) {
|
|||||||
const allocations = await CalcualteAllocations(socket, socket.JobData.id);
|
const allocations = await CalcualteAllocations(socket, socket.JobData.id);
|
||||||
const wips = [];
|
const wips = [];
|
||||||
allocations.forEach((alloc) => {
|
allocations.forEach((alloc) => {
|
||||||
//Add the sale item
|
//Add the sale item from each allocation.
|
||||||
if (alloc.sale.getAmount() > 0 && !alloc.tax) {
|
if (alloc.sale.getAmount() > 0 && !alloc.tax) {
|
||||||
const item = {
|
const item = {
|
||||||
acct: alloc.profitCenter.dms_acctnumber,
|
acct: alloc.profitCenter.dms_acctnumber,
|
||||||
@@ -993,6 +993,7 @@ async function GenerateTransWips(socket) {
|
|||||||
wips.push(item);
|
wips.push(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Add the cost Item.
|
||||||
if (alloc.cost.getAmount() > 0 && !alloc.tax) {
|
if (alloc.cost.getAmount() > 0 && !alloc.tax) {
|
||||||
const item = {
|
const item = {
|
||||||
acct: alloc.costCenter.dms_acctnumber,
|
acct: alloc.costCenter.dms_acctnumber,
|
||||||
@@ -1025,20 +1026,24 @@ async function GenerateTransWips(socket) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (alloc.tax) {
|
if (alloc.tax) {
|
||||||
const item = {
|
// if (alloc.cost.getAmount() > 0) {
|
||||||
acct: alloc.costCenter.dms_acctnumber,
|
// const item = {
|
||||||
cntl: socket.JobData.ro_number,
|
// acct: alloc.costCenter.dms_acctnumber,
|
||||||
cntl2: null,
|
// cntl: socket.JobData.ro_number,
|
||||||
credtMemoNo: null,
|
// cntl2: null,
|
||||||
postAmt: alloc.cost.getAmount(),
|
// credtMemoNo: null,
|
||||||
postDesc: null,
|
// postAmt: alloc.cost.getAmount(),
|
||||||
prod: null,
|
// postDesc: null,
|
||||||
statCnt: 1,
|
// prod: null,
|
||||||
transID: socket.DMSTransHeader.transID,
|
// statCnt: 1,
|
||||||
trgtCoID: socket.JobData.bodyshop.cdk_configuration.srcco,
|
// transID: socket.DMSTransHeader.transID,
|
||||||
};
|
// trgtCoID: socket.JobData.bodyshop.cdk_configuration.srcco,
|
||||||
|
// };
|
||||||
|
|
||||||
wips.push(item);
|
// wips.push(item);
|
||||||
|
// }
|
||||||
|
|
||||||
|
if (alloc.sale.getAmount() > 0) {
|
||||||
const item2 = {
|
const item2 = {
|
||||||
acct: alloc.profitCenter.dms_acctnumber,
|
acct: alloc.profitCenter.dms_acctnumber,
|
||||||
cntl: socket.JobData.ro_number,
|
cntl: socket.JobData.ro_number,
|
||||||
@@ -1053,6 +1058,7 @@ async function GenerateTransWips(socket) {
|
|||||||
};
|
};
|
||||||
wips.push(item2);
|
wips.push(item2);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.txEnvelope.payers.forEach((payer) => {
|
socket.txEnvelope.payers.forEach((payer) => {
|
||||||
@@ -1076,7 +1082,11 @@ async function GenerateTransWips(socket) {
|
|||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
"WIPS TOTAL",
|
"WIPS TOTAL",
|
||||||
wips.reduce((acc, val) => acc + val.postAmt, 0)
|
wips.reduce((acc, val) => {
|
||||||
|
console.log(val);
|
||||||
|
console.log(acc + val.postAmt);
|
||||||
|
return acc + val.postAmt;
|
||||||
|
}, 0)
|
||||||
);
|
);
|
||||||
|
|
||||||
return wips;
|
return wips;
|
||||||
|
|||||||
@@ -954,12 +954,12 @@ affected_rows
|
|||||||
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports.GET_CDK_ALLOCATIONS = `
|
exports.GET_CDK_ALLOCATIONS = `query QUERY_JOB_CLOSE_DETAILS($id: uuid!) {
|
||||||
query QUERY_JOB_CLOSE_DETAILS($id: uuid!) {
|
|
||||||
jobs_by_pk(id: $id) {
|
jobs_by_pk(id: $id) {
|
||||||
bodyshop {
|
bodyshop {
|
||||||
id
|
id
|
||||||
md_responsibility_centers
|
md_responsibility_centers
|
||||||
|
cdk_configuration
|
||||||
}
|
}
|
||||||
ro_number
|
ro_number
|
||||||
invoice_allocation
|
invoice_allocation
|
||||||
@@ -1016,7 +1016,17 @@ exports.GET_CDK_ALLOCATIONS = `
|
|||||||
actual_delivery
|
actual_delivery
|
||||||
scheduled_in
|
scheduled_in
|
||||||
actual_in
|
actual_in
|
||||||
bills {
|
timetickets {
|
||||||
|
id
|
||||||
|
actualhrs
|
||||||
|
cost_center
|
||||||
|
productivehrs
|
||||||
|
rate
|
||||||
|
employee {
|
||||||
|
flat_rate
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bills(where: {isinhouse: {_eq: false}}) {
|
||||||
id
|
id
|
||||||
federal_tax_rate
|
federal_tax_rate
|
||||||
local_tax_rate
|
local_tax_rate
|
||||||
|
|||||||
@@ -50,7 +50,11 @@ io.on("connection", (socket) => {
|
|||||||
|
|
||||||
socket.on("set-log-level", (level) => {
|
socket.on("set-log-level", (level) => {
|
||||||
socket.log_level = level;
|
socket.log_level = level;
|
||||||
createLogEvent(socket, "DEBUG", `Updated log level to ${level}`);
|
socket.emit("log-event", {
|
||||||
|
timestamp: new Date(),
|
||||||
|
level: "INFO",
|
||||||
|
message: `Updated log level to ${level}`,
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on("cdk-export-job", (jobid) => {
|
socket.on("cdk-export-job", (jobid) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user