BOD-61 Fixed invoice enter modal to simplify + follow new modal pattern.

This commit is contained in:
Patrick Fic
2020-04-02 11:05:04 -07:00
parent b93bb293e9
commit 53a567d65f
6 changed files with 278 additions and 268 deletions

View File

@@ -16,6 +16,19 @@ export default function InvoiceEnterModalLinesComponent({
const [amounts, setAmounts] = useState({ invoiceTotal: 0, enteredAmount: 0 });
const calculateTotals = () => {
setAmounts({
invoiceTotal: getFieldsValue().total,
enteredTotal: getFieldsValue("invoicelines").invoicelines
? getFieldsValue("invoicelines").invoicelines.reduce(
(acc, value) =>
acc + (value && value.actual_cost ? value.actual_cost : 0),
0
)
: 0
});
};
return (
<div>
<Form.List name="invoicelines">
@@ -28,7 +41,6 @@ export default function InvoiceEnterModalLinesComponent({
<Form.Item
label={t("invoicelines.fields.line_desc")}
key={`${index}joblinename`}
name={[field.name, "joblinename"]}
rules={[
{
required: true,
@@ -110,6 +122,13 @@ export default function InvoiceEnterModalLinesComponent({
label={t("invoicelines.fields.line_desc")}
key={`${index}line_desc`}
name={[field.name, "line_desc"]}
rules={[
{
required: !getFieldsValue("invoicelines")
.invoicelines[index].joblineid,
message: t("general.validation.required")
}
]}
>
<Input />
</Form.Item>
@@ -135,8 +154,10 @@ export default function InvoiceEnterModalLinesComponent({
if (idx === index) {
return {
...item,
actual_cost:
parseFloat(e.target.value) * (1 - discount)
actual_cost: !!item.actual_cost
? item.actual_cost
: parseFloat(e.target.value) *
(1 - discount)
};
}
return item;
@@ -156,26 +177,7 @@ export default function InvoiceEnterModalLinesComponent({
}
]}
>
<CurrencyInput
onBlur={() =>
setAmounts({
invoiceTotal: getFieldsValue().total,
enteredTotal: getFieldsValue("invoicelines")
.invoicelines
? getFieldsValue(
"invoicelines"
).invoicelines.reduce(
(acc, value) =>
acc +
(value && value.actual_cost
? value.actual_cost
: 0),
0
)
: 0
})
}
/>
<CurrencyInput onBlur={() => calculateTotals()} />
</Form.Item>
<Form.Item
label={t("invoicelines.fields.cost_center")}
@@ -198,6 +200,7 @@ export default function InvoiceEnterModalLinesComponent({
<DeleteFilled
onClick={() => {
remove(field.name);
calculateTotals();
}}
/>
</div>