Replaced appropriate number fields with calculator field. BOD-398
This commit is contained in:
@@ -6,6 +6,8 @@ import FormDatePicker from "../form-date-picker/form-date-picker.component";
|
|||||||
import FormFieldsChanged from "../form-fields-changed-alert/form-fields-changed-alert.component";
|
import FormFieldsChanged from "../form-fields-changed-alert/form-fields-changed-alert.component";
|
||||||
import InputPhone from "../form-items-formatted/phone-form-item.component";
|
import InputPhone from "../form-items-formatted/phone-form-item.component";
|
||||||
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
|
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
|
||||||
|
import InputNumberCalculator from "../form-input-number-calculator/form-input-number-calculator.component";
|
||||||
|
|
||||||
export default function ContractFormComponent({ form, create = false }) {
|
export default function ContractFormComponent({ form, create = false }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
return (
|
return (
|
||||||
@@ -298,16 +300,16 @@ export default function ContractFormComponent({ form, create = false }) {
|
|||||||
<InputNumber precision={2} />
|
<InputNumber precision={2} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("contracts.fields.federaltax")} name="federaltax">
|
<Form.Item label={t("contracts.fields.federaltax")} name="federaltax">
|
||||||
<InputNumber precision={2} />
|
<InputNumberCalculator precision={2} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("contracts.fields.statetax")} name="statetax">
|
<Form.Item label={t("contracts.fields.statetax")} name="statetax">
|
||||||
<InputNumber precision={2} />
|
<InputNumberCalculator precision={2} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("contracts.fields.localtax")} name="localtax">
|
<Form.Item label={t("contracts.fields.localtax")} name="localtax">
|
||||||
<InputNumber precision={2} />
|
<InputNumberCalculator precision={2} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("contracts.fields.coverage")} name="coverage">
|
<Form.Item label={t("contracts.fields.coverage")} name="coverage">
|
||||||
<InputNumber precision={2} />
|
<InputNumberCalculator precision={2} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</LayoutFormRow>
|
</LayoutFormRow>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import FormDatePicker from "../form-date-picker/form-date-picker.component";
|
|||||||
import FormFieldsChanged from "../form-fields-changed-alert/form-fields-changed-alert.component";
|
import FormFieldsChanged from "../form-fields-changed-alert/form-fields-changed-alert.component";
|
||||||
import CurrencyInput from "../form-items-formatted/currency-form-item.component";
|
import CurrencyInput from "../form-items-formatted/currency-form-item.component";
|
||||||
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
|
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
|
||||||
|
import InputNumberCalculator from "../form-input-number-calculator/form-input-number-calculator.component";
|
||||||
|
|
||||||
export default function CourtesyCarCreateFormComponent({ form, saveLoading }) {
|
export default function CourtesyCarCreateFormComponent({ form, saveLoading }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
return (
|
return (
|
||||||
@@ -172,7 +174,7 @@ export default function CourtesyCarCreateFormComponent({ form, saveLoading }) {
|
|||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("courtesycars.fields.nextservicedate")}
|
label={t("courtesycars.fields.nextservicedate")}
|
||||||
|
|||||||
@@ -1,31 +1,19 @@
|
|||||||
import { Input, Popover } from "antd";
|
import { InputNumber, Popover } from "antd";
|
||||||
import React, { useEffect, useState, forwardRef } from "react";
|
import React, { forwardRef, useEffect, useRef, useState } from "react";
|
||||||
|
|
||||||
const FormInputNUmberCalculator = (
|
const FormInputNUmberCalculator = (
|
||||||
{ value: formValue, onChange: formOnChange },
|
{ value: formValue, onChange: formOnChange, ...restProps },
|
||||||
ref
|
refProp
|
||||||
) => {
|
) => {
|
||||||
const [value, setValue] = useState(formValue);
|
const [value, setValue] = useState(formValue);
|
||||||
const [total, setTotal] = useState(0);
|
const [total, setTotal] = useState(0);
|
||||||
const [history, setHistory] = useState([]);
|
const [history, setHistory] = useState([]);
|
||||||
|
|
||||||
const handleChange = (e) => {
|
const ref = useRef(null);
|
||||||
const key = e.target.value;
|
|
||||||
switch (key) {
|
|
||||||
case "/":
|
|
||||||
case "*":
|
|
||||||
case "+":
|
|
||||||
case "-":
|
|
||||||
return;
|
|
||||||
default:
|
|
||||||
setValue(key);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleKeyDown = (e) => {
|
const handleKeyDown = (e) => {
|
||||||
|
console.log("e :>> ", e.currentTarget.value);
|
||||||
const { key } = e;
|
const { key } = e;
|
||||||
|
|
||||||
let action;
|
let action;
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case "/":
|
case "/":
|
||||||
@@ -38,11 +26,13 @@ const FormInputNUmberCalculator = (
|
|||||||
action = "=";
|
action = "=";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
setValue(e.currentTarget.value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const val = parseFloat(value);
|
const val = parseFloat(value);
|
||||||
setValue(null);
|
setValue(null);
|
||||||
|
ref.current.blur();
|
||||||
|
ref.current.focus();
|
||||||
if (!isNaN(val)) {
|
if (!isNaN(val)) {
|
||||||
setHistory([...history, val, action]);
|
setHistory([...history, val, action]);
|
||||||
}
|
}
|
||||||
@@ -82,7 +72,12 @@ const FormInputNUmberCalculator = (
|
|||||||
}
|
}
|
||||||
}, 0);
|
}, 0);
|
||||||
setTotal(subTotal);
|
setTotal(subTotal);
|
||||||
if (history[history.length - 1] === "=") setValue(subTotal);
|
if (history[history.length - 1] === "=") {
|
||||||
|
setValue(subTotal);
|
||||||
|
ref.current.blur();
|
||||||
|
ref.current.focus();
|
||||||
|
setHistory([]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, [history]);
|
}, [history]);
|
||||||
|
|
||||||
@@ -101,13 +96,13 @@ const FormInputNUmberCalculator = (
|
|||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<Popover content={popContent} visible={history.length > 0}>
|
<Popover content={popContent} visible={history.length > 0}>
|
||||||
<Input
|
<InputNumber
|
||||||
ref={ref}
|
ref={ref}
|
||||||
value={value}
|
value={value}
|
||||||
defaultValue={value}
|
defaultValue={value}
|
||||||
onChange={handleChange}
|
|
||||||
onKeyDown={handleKeyDown}
|
onKeyDown={handleKeyDown}
|
||||||
onBlur={(e) => setHistory([])}
|
onBlur={(e) => setHistory([])}
|
||||||
|
{...restProps}
|
||||||
/>
|
/>
|
||||||
</Popover>
|
</Popover>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
import { useMutation } from "@apollo/react-hooks";
|
import { useMutation } from "@apollo/react-hooks";
|
||||||
import { Button, Card, Form, InputNumber, notification, Popover } from "antd";
|
import { Button, Card, Form, notification, Popover } from "antd";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { logImEXEvent } from "../../firebase/firebase.utils";
|
import { logImEXEvent } from "../../firebase/firebase.utils";
|
||||||
import { INSERT_SCOREBOARD_ENTRY } from "../../graphql/scoreboard.queries";
|
import { INSERT_SCOREBOARD_ENTRY } from "../../graphql/scoreboard.queries";
|
||||||
import FormDatePicker from "../form-date-picker/form-date-picker.component";
|
import FormDatePicker from "../form-date-picker/form-date-picker.component";
|
||||||
|
import InputNumberCalculator from "../form-input-number-calculator/form-input-number-calculator.component";
|
||||||
|
|
||||||
export default function ScoreboardAddButton({ job, ...otherBtnProps }) {
|
export default function ScoreboardAddButton({ job, ...otherBtnProps }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -68,7 +69,7 @@ export default function ScoreboardAddButton({ job, ...otherBtnProps }) {
|
|||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputNumber precision={1} />
|
<InputNumberCalculator precision={1} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("scoreboard.fields.painthrs")}
|
label={t("scoreboard.fields.painthrs")}
|
||||||
@@ -80,7 +81,7 @@ export default function ScoreboardAddButton({ job, ...otherBtnProps }) {
|
|||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputNumber precision={1} />
|
<InputNumberCalculator precision={1} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
<Button type="primary" htmlType="submit">
|
<Button type="primary" htmlType="submit">
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
import { Collapse, Form, Input, InputNumber, Select, Switch } from "antd";
|
import { Collapse, Form, Input, Select, Switch } from "antd";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import FormDatePicker from "../form-date-picker/form-date-picker.component";
|
import FormDatePicker from "../form-date-picker/form-date-picker.component";
|
||||||
|
import InputNumberCalculator from "../form-input-number-calculator/form-input-number-calculator.component";
|
||||||
import FormItemEmail from "../form-items-formatted/email-form-item.component";
|
import FormItemEmail from "../form-items-formatted/email-form-item.component";
|
||||||
import FormItemPhone from "../form-items-formatted/phone-form-item.component";
|
import FormItemPhone from "../form-items-formatted/phone-form-item.component";
|
||||||
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
|
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
|
||||||
@@ -203,7 +204,7 @@ export function JobsCreateJobsInfo({ bodyshop, form, selected }) {
|
|||||||
>
|
>
|
||||||
<LayoutFormRow>
|
<LayoutFormRow>
|
||||||
<Form.Item label={t("jobs.fields.ded_amt")} name="ded_amt">
|
<Form.Item label={t("jobs.fields.ded_amt")} name="ded_amt">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.ded_status")} name="ded_status">
|
<Form.Item label={t("jobs.fields.ded_status")} name="ded_status">
|
||||||
<Input />
|
<Input />
|
||||||
@@ -212,38 +213,38 @@ export function JobsCreateJobsInfo({ bodyshop, form, selected }) {
|
|||||||
label={t("jobs.fields.depreciation_taxes")}
|
label={t("jobs.fields.depreciation_taxes")}
|
||||||
name="depreciation_taxes"
|
name="depreciation_taxes"
|
||||||
>
|
>
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
TODO This is equivalent of GST payable.
|
TODO This is equivalent of GST payable.
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("jobs.fields.federal_tax_payable")}
|
label={t("jobs.fields.federal_tax_payable")}
|
||||||
name="federal_tax_payable"
|
name="federal_tax_payable"
|
||||||
>
|
>
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("jobs.fields.other_amount_payable")}
|
label={t("jobs.fields.other_amount_payable")}
|
||||||
name="other_amount_payable"
|
name="other_amount_payable"
|
||||||
>
|
>
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("jobs.fields.towing_payable")}
|
label={t("jobs.fields.towing_payable")}
|
||||||
name="towing_payable"
|
name="towing_payable"
|
||||||
>
|
>
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("jobs.fields.storage_payable")}
|
label={t("jobs.fields.storage_payable")}
|
||||||
name="storage_payable"
|
name="storage_payable"
|
||||||
>
|
>
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("jobs.fields.adjustment_bottom_line")}
|
label={t("jobs.fields.adjustment_bottom_line")}
|
||||||
name="adjustment_bottom_line"
|
name="adjustment_bottom_line"
|
||||||
>
|
>
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
Totals Table
|
Totals Table
|
||||||
<Form.Item
|
<Form.Item
|
||||||
@@ -253,70 +254,70 @@ export function JobsCreateJobsInfo({ bodyshop, form, selected }) {
|
|||||||
<Input />
|
<Input />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_lab")} name="rate_lab">
|
<Form.Item label={t("jobs.fields.rate_lab")} name="rate_lab">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_lad")} name="rate_lad">
|
<Form.Item label={t("jobs.fields.rate_lad")} name="rate_lad">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_lae")} name="rate_lae">
|
<Form.Item label={t("jobs.fields.rate_lae")} name="rate_lae">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_lar")} name="rate_lar">
|
<Form.Item label={t("jobs.fields.rate_lar")} name="rate_lar">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_las")} name="rate_las">
|
<Form.Item label={t("jobs.fields.rate_las")} name="rate_las">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_laf")} name="rate_laf">
|
<Form.Item label={t("jobs.fields.rate_laf")} name="rate_laf">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_lam")} name="rate_lam">
|
<Form.Item label={t("jobs.fields.rate_lam")} name="rate_lam">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_lag")} name="rate_lag">
|
<Form.Item label={t("jobs.fields.rate_lag")} name="rate_lag">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_lau")} name="rate_lau">
|
<Form.Item label={t("jobs.fields.rate_lau")} name="rate_lau">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_la1")} name="rate_la1">
|
<Form.Item label={t("jobs.fields.rate_la1")} name="rate_la1">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_la2")} name="rate_la2">
|
<Form.Item label={t("jobs.fields.rate_la2")} name="rate_la2">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_la3")} name="rate_la3">
|
<Form.Item label={t("jobs.fields.rate_la3")} name="rate_la3">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_la4")} name="rate_la4">
|
<Form.Item label={t("jobs.fields.rate_la4")} name="rate_la4">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_mapa")} name="rate_mapa">
|
<Form.Item label={t("jobs.fields.rate_mapa")} name="rate_mapa">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_mash")} name="rate_mash">
|
<Form.Item label={t("jobs.fields.rate_mash")} name="rate_mash">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_mahw")} name="rate_mahw">
|
<Form.Item label={t("jobs.fields.rate_mahw")} name="rate_mahw">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_ma2s")} name="rate_ma2s">
|
<Form.Item label={t("jobs.fields.rate_ma2s")} name="rate_ma2s">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_ma3s")} name="rate_ma3s">
|
<Form.Item label={t("jobs.fields.rate_ma3s")} name="rate_ma3s">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_mabl")} name="rate_mabl">
|
<Form.Item label={t("jobs.fields.rate_mabl")} name="rate_mabl">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_macs")} name="rate_macs">
|
<Form.Item label={t("jobs.fields.rate_macs")} name="rate_macs">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_matd")} name="rate_matd">
|
<Form.Item label={t("jobs.fields.rate_matd")} name="rate_matd">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.rate_laa")} name="rate_laa">
|
<Form.Item label={t("jobs.fields.rate_laa")} name="rate_laa">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</LayoutFormRow>
|
</LayoutFormRow>
|
||||||
</Collapse.Panel>
|
</Collapse.Panel>
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
import { Col, Form, Input, InputNumber, Row, Select, Switch } from "antd";
|
import { Col, Form, Input, Row, Select, Switch } from "antd";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import FormDatePicker from "../form-date-picker/form-date-picker.component";
|
import FormDatePicker from "../form-date-picker/form-date-picker.component";
|
||||||
|
import InputNumberCalculator from "../form-input-number-calculator/form-input-number-calculator.component";
|
||||||
import CurrencyInput from "../form-items-formatted/currency-form-item.component";
|
import CurrencyInput from "../form-items-formatted/currency-form-item.component";
|
||||||
import FormItemEmail from "../form-items-formatted/email-form-item.component";
|
import FormItemEmail from "../form-items-formatted/email-form-item.component";
|
||||||
import FormItemPhone from "../form-items-formatted/phone-form-item.component";
|
import FormItemPhone from "../form-items-formatted/phone-form-item.component";
|
||||||
@@ -109,10 +110,10 @@ export function JobsDetailGeneral({ bodyshop, job, form }) {
|
|||||||
<FormDatePicker />
|
<FormDatePicker />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.kmin")} name="kmin">
|
<Form.Item label={t("jobs.fields.kmin")} name="kmin">
|
||||||
<InputNumber precision={1} min={0} />
|
<InputNumberCalculator precision={1} min={0} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.kmout")} name="kmout">
|
<Form.Item label={t("jobs.fields.kmout")} name="kmout">
|
||||||
<InputNumber precision={1} min={0} />
|
<InputNumberCalculator precision={1} min={0} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("jobs.fields.ponumber")} name="po_number">
|
<Form.Item label={t("jobs.fields.ponumber")} name="po_number">
|
||||||
<Input />
|
<Input />
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
import { Button, Card, Dropdown, Form, InputNumber, notification } from "antd";
|
import { Button, Card, Dropdown, Form, notification } from "antd";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
import FormDatePicker from "../form-date-picker/form-date-picker.component";
|
|
||||||
import { useMutation } from "react-apollo";
|
import { useMutation } from "react-apollo";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
import { UPDATE_SCOREBOARD_ENTRY } from "../../graphql/scoreboard.queries";
|
import { UPDATE_SCOREBOARD_ENTRY } from "../../graphql/scoreboard.queries";
|
||||||
|
import FormDatePicker from "../form-date-picker/form-date-picker.component";
|
||||||
|
import InputNumberCalculator from "../form-input-number-calculator/form-input-number-calculator.component";
|
||||||
|
|
||||||
export default function ScoreboardEntryEdit({ entry }) {
|
export default function ScoreboardEntryEdit({ entry }) {
|
||||||
const [visible, setVisible] = useState(false);
|
const [visible, setVisible] = useState(false);
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
@@ -62,7 +64,7 @@ export default function ScoreboardEntryEdit({ entry }) {
|
|||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputNumber precision={1} />
|
<InputNumberCalculator precision={1} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("scoreboard.fields.painthrs")}
|
label={t("scoreboard.fields.painthrs")}
|
||||||
@@ -74,7 +76,7 @@ export default function ScoreboardEntryEdit({ entry }) {
|
|||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputNumber precision={1} />
|
<InputNumberCalculator precision={1} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
<Button type="primary" loading={loading} htmlType="submit">
|
<Button type="primary" loading={loading} htmlType="submit">
|
||||||
|
|||||||
@@ -11,17 +11,18 @@ import {
|
|||||||
} from "antd";
|
} from "antd";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
import InputNumberCalculator from "../form-input-number-calculator/form-input-number-calculator.component";
|
||||||
|
import PhoneFormItem from "../form-items-formatted/phone-form-item.component";
|
||||||
import FormListMoveArrows from "../form-list-move-arrows/form-list-move-arrows.component";
|
import FormListMoveArrows from "../form-list-move-arrows/form-list-move-arrows.component";
|
||||||
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
|
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
|
||||||
import ShopInfoIntakeChecklistComponent from "./shop-info.intake.component";
|
import ShopInfoIntakeChecklistComponent from "./shop-info.intake.component";
|
||||||
|
import ShopInfoLaborRates from "./shop-info.laborrates.component";
|
||||||
import ShopInfoOrderStatusComponent from "./shop-info.orderstatus.component";
|
import ShopInfoOrderStatusComponent from "./shop-info.orderstatus.component";
|
||||||
import ShopInfoRbacComponent from "./shop-info.rbac.component";
|
import ShopInfoRbacComponent from "./shop-info.rbac.component";
|
||||||
import ShopInfoResponsibilityCenterComponent from "./shop-info.responsibilitycenters.component";
|
import ShopInfoResponsibilityCenterComponent from "./shop-info.responsibilitycenters.component";
|
||||||
import ShopInfoROStatusComponent from "./shop-info.rostatus.component";
|
import ShopInfoROStatusComponent from "./shop-info.rostatus.component";
|
||||||
import ShopInfoSchedulingComponent from "./shop-info.scheduling.component";
|
import ShopInfoSchedulingComponent from "./shop-info.scheduling.component";
|
||||||
import ShopInfoSpeedPrint from "./shop-info.speedprint.component";
|
import ShopInfoSpeedPrint from "./shop-info.speedprint.component";
|
||||||
import ShopInfoLaborRates from "./shop-info.laborrates.component";
|
|
||||||
import PhoneFormItem from "../form-items-formatted/phone-form-item.component";
|
|
||||||
|
|
||||||
export default function ShopInfoComponent({ form, saveLoading }) {
|
export default function ShopInfoComponent({ form, saveLoading }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -195,7 +196,7 @@ export default function ShopInfoComponent({ form, saveLoading }) {
|
|||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputNumber min={0} precision={0} />
|
<InputNumberCalculator min={0} precision={0} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
@@ -208,7 +209,7 @@ export default function ShopInfoComponent({ form, saveLoading }) {
|
|||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputNumber min={0} precision={0} />
|
<InputNumberCalculator min={0} precision={0} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
@@ -233,7 +234,7 @@ export default function ShopInfoComponent({ form, saveLoading }) {
|
|||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputNumber min={1} precision={1} />
|
<InputNumberCalculator min={1} precision={1} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
name={["md_referral_sources"]}
|
name={["md_referral_sources"]}
|
||||||
@@ -541,7 +542,7 @@ export default function ShopInfoComponent({ form, saveLoading }) {
|
|||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputNumber min={0.1} precision={1} />
|
<InputNumberCalculator min={0.1} precision={1} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Collapse.Panel>
|
</Collapse.Panel>
|
||||||
<Collapse.Panel
|
<Collapse.Panel
|
||||||
|
|||||||
@@ -1,23 +1,16 @@
|
|||||||
import { useMutation } from "@apollo/react-hooks";
|
import { useMutation } from "@apollo/react-hooks";
|
||||||
import {
|
import { Button, Card, Form, notification, Popover, Select } from "antd";
|
||||||
Button,
|
import axios from "axios";
|
||||||
Card,
|
|
||||||
Form,
|
|
||||||
InputNumber,
|
|
||||||
notification,
|
|
||||||
Popover,
|
|
||||||
Select,
|
|
||||||
} from "antd";
|
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { UPDATE_TIME_TICKET } from "../../graphql/timetickets.queries";
|
|
||||||
import axios from "axios";
|
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
|
||||||
import { selectTechnician } from "../../redux/tech/tech.selectors";
|
|
||||||
import TechJobClockoutDelete from "../tech-job-clock-out-delete/tech-job-clock-out-delete.component";
|
|
||||||
import { logImEXEvent } from "../../firebase/firebase.utils";
|
import { logImEXEvent } from "../../firebase/firebase.utils";
|
||||||
|
import { UPDATE_TIME_TICKET } from "../../graphql/timetickets.queries";
|
||||||
|
import { selectTechnician } from "../../redux/tech/tech.selectors";
|
||||||
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
|
import InputNumberCalculator from "../form-input-number-calculator/form-input-number-calculator.component";
|
||||||
|
import TechJobClockoutDelete from "../tech-job-clock-out-delete/tech-job-clock-out-delete.component";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
@@ -72,7 +65,7 @@ export function TechClockOffButton({
|
|||||||
<div>
|
<div>
|
||||||
<Form
|
<Form
|
||||||
form={form}
|
form={form}
|
||||||
layout='vertical'
|
layout="vertical"
|
||||||
onFinish={handleFinish}
|
onFinish={handleFinish}
|
||||||
initialValues={{
|
initialValues={{
|
||||||
cost_center: isShiftTicket
|
cost_center: isShiftTicket
|
||||||
@@ -80,46 +73,50 @@ export function TechClockOffButton({
|
|||||||
: technician
|
: technician
|
||||||
? technician.cost_center
|
? technician.cost_center
|
||||||
: null,
|
: null,
|
||||||
}}>
|
}}
|
||||||
|
>
|
||||||
{!isShiftTicket ? (
|
{!isShiftTicket ? (
|
||||||
<div>
|
<div>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("timetickets.fields.actualhrs")}
|
label={t("timetickets.fields.actualhrs")}
|
||||||
name='actualhrs'
|
name="actualhrs"
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: t("general.validation.required"),
|
message: t("general.validation.required"),
|
||||||
},
|
},
|
||||||
]}>
|
]}
|
||||||
<InputNumber precision={1} />
|
>
|
||||||
|
<InputNumberCalculator precision={1} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("timetickets.fields.productivehrs")}
|
label={t("timetickets.fields.productivehrs")}
|
||||||
name='productivehrs'
|
name="productivehrs"
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: t("general.validation.required"),
|
message: t("general.validation.required"),
|
||||||
},
|
},
|
||||||
]}>
|
]}
|
||||||
<InputNumber precision={1} />
|
>
|
||||||
|
<InputNumberCalculator precision={1} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
name='cost_center'
|
name="cost_center"
|
||||||
label={t("timetickets.fields.cost_center")}
|
label={t("timetickets.fields.cost_center")}
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: t("general.validation.required"),
|
message: t("general.validation.required"),
|
||||||
},
|
},
|
||||||
]}>
|
]}
|
||||||
|
>
|
||||||
<Select disabled={isShiftTicket}>
|
<Select disabled={isShiftTicket}>
|
||||||
{isShiftTicket ? (
|
{isShiftTicket ? (
|
||||||
<Select.Option value='timetickets.labels.shift'>
|
<Select.Option value="timetickets.labels.shift">
|
||||||
{t("timetickets.labels.shift")}
|
{t("timetickets.labels.shift")}
|
||||||
</Select.Option>
|
</Select.Option>
|
||||||
) : (
|
) : (
|
||||||
@@ -131,17 +128,20 @@ export function TechClockOffButton({
|
|||||||
)}
|
)}
|
||||||
</Select>
|
</Select>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Button type='primary' htmlType='submit' loading={loading}>
|
<Button type="primary" htmlType="submit" loading={loading}>
|
||||||
{t("general.actions.save")}
|
{t("general.actions.save")}
|
||||||
</Button>
|
</Button>
|
||||||
<TechJobClockoutDelete completedCallback={completedCallback} timeTicketId={timeTicketId} />
|
<TechJobClockoutDelete
|
||||||
|
completedCallback={completedCallback}
|
||||||
|
timeTicketId={timeTicketId}
|
||||||
|
/>
|
||||||
</Form>
|
</Form>
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Popover content={overlay} trigger='click'>
|
<Popover content={overlay} trigger="click">
|
||||||
<Button loading={loading} {...otherBtnProps}>
|
<Button loading={loading} {...otherBtnProps}>
|
||||||
{t("timetickets.actions.clockout")}
|
{t("timetickets.actions.clockout")}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
import { Form, Input, InputNumber, Select } from "antd";
|
import { Form, Input, Select } from "antd";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import EmployeeSearchSelect from "../employee-search-select/employee-search-select.component";
|
import EmployeeSearchSelect from "../employee-search-select/employee-search-select.component";
|
||||||
import FormDatePicker from "../form-date-picker/form-date-picker.component";
|
import FormDatePicker from "../form-date-picker/form-date-picker.component";
|
||||||
|
import InputNumberCalculator from "../form-input-number-calculator/form-input-number-calculator.component";
|
||||||
import JobSearchSelect from "../job-search-select/job-search-select.component";
|
import JobSearchSelect from "../job-search-select/job-search-select.component";
|
||||||
import LaborAllocationsTable from "../labor-allocations-table/labor-allocations-table.component";
|
import LaborAllocationsTable from "../labor-allocations-table/labor-allocations-table.component";
|
||||||
|
|
||||||
@@ -77,7 +78,7 @@ export default function TimeTicketModalComponent({
|
|||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputNumber min={0} precision={1} />
|
<InputNumberCalculator min={0} precision={1} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("timetickets.fields.actualhrs")}
|
label={t("timetickets.fields.actualhrs")}
|
||||||
@@ -89,7 +90,7 @@ export default function TimeTicketModalComponent({
|
|||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputNumber min={0} precision={1} />
|
<InputNumberCalculator min={0} precision={1} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
name="cost_center"
|
name="cost_center"
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
import { Button, Form, Input, InputNumber, Select } from "antd";
|
import { DeleteFilled } from "@ant-design/icons";
|
||||||
|
import { Button, Form, Input, InputNumber, Select } from "antd";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
import InputNumberCalculator from "../form-input-number-calculator/form-input-number-calculator.component";
|
||||||
import FormItemEmail from "../form-items-formatted/email-form-item.component";
|
import FormItemEmail from "../form-items-formatted/email-form-item.component";
|
||||||
import { DeleteFilled } from "@ant-design/icons";
|
|
||||||
|
|
||||||
export default function VendorsFormComponent({
|
export default function VendorsFormComponent({
|
||||||
form,
|
form,
|
||||||
@@ -87,7 +88,7 @@ export default function VendorsFormComponent({
|
|||||||
label={t("vendors.fields.prompt_discount")}
|
label={t("vendors.fields.prompt_discount")}
|
||||||
name="prompt_discount"
|
name="prompt_discount"
|
||||||
>
|
>
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("vendors.fields.name")} name="name">
|
<Form.Item label={t("vendors.fields.name")} name="name">
|
||||||
<Input />
|
<Input />
|
||||||
@@ -111,7 +112,7 @@ export default function VendorsFormComponent({
|
|||||||
<Input />
|
<Input />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("vendors.fields.discount")} name="discount">
|
<Form.Item label={t("vendors.fields.discount")} name="discount">
|
||||||
<InputNumber />
|
<InputNumberCalculator />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t("vendors.fields.country")} name="country">
|
<Form.Item label={t("vendors.fields.country")} name="country">
|
||||||
<Input />
|
<Input />
|
||||||
|
|||||||
Reference in New Issue
Block a user