Correct custom task fields

This commit is contained in:
Hillel Coren 2021-04-19 19:13:26 +03:00
parent f624488ea9
commit 4ce7ad4444
3 changed files with 49 additions and 32 deletions

View File

@ -33,6 +33,7 @@ class CustomField extends StatefulWidget {
class _CustomFieldState extends State<CustomField> {
TextEditingController _controller;
String _value;
@override
void initState() {
@ -40,6 +41,7 @@ class _CustomFieldState extends State<CustomField> {
_controller = widget.controller ?? TextEditingController();
_controller.text = widget.value ?? '';
_value = widget.value;
}
@override
@ -110,7 +112,7 @@ class _CustomFieldState extends State<CustomField> {
);
case kFieldTypeDropdown:
return AppDropdownButton<String>(
value: widget.value,
value: _value,
items: fieldOptions
.map((option) => DropdownMenuItem<String>(
value: option,
@ -118,7 +120,9 @@ class _CustomFieldState extends State<CustomField> {
))
.toList(),
onChanged: (dynamic value) {
_controller.text = value;
setState(() {
_controller.text = _value = value;
});
Debouncer.complete();
if (widget.onChanged != null) {
widget.onChanged(value);

View File

@ -250,27 +250,35 @@ class ItemEditDetailsState extends State<ItemEditDetails> {
),
CustomField(
controller: _custom1Controller,
field: CustomFieldType.product1,
value: widget.invoiceItem.customValue1,
field: widget.invoiceItem.isTask
? CustomFieldType.task1
: CustomFieldType.product1,
onSavePressed: widget.entityViewModel.onSavePressed,
value: _custom1Controller.text,
),
CustomField(
controller: _custom2Controller,
field: CustomFieldType.product2,
value: widget.invoiceItem.customValue2,
field: widget.invoiceItem.isTask
? CustomFieldType.task2
: CustomFieldType.product2,
onSavePressed: widget.entityViewModel.onSavePressed,
value: _custom2Controller.text,
),
CustomField(
controller: _custom3Controller,
field: CustomFieldType.product3,
value: widget.invoiceItem.customValue3,
field: widget.invoiceItem.isTask
? CustomFieldType.task3
: CustomFieldType.product3,
onSavePressed: widget.entityViewModel.onSavePressed,
value: _custom3Controller.text,
),
CustomField(
controller: _custom4Controller,
field: CustomFieldType.product4,
value: widget.invoiceItem.customValue4,
field: widget.invoiceItem.isTask
? CustomFieldType.task4
: CustomFieldType.product4,
onSavePressed: widget.entityViewModel.onSavePressed,
value: _custom4Controller.text,
),
DecoratedFormField(
label: localization.unitCost,

View File

@ -68,6 +68,15 @@ class _InvoiceEditItemsDesktopState extends State<InvoiceEditItemsDesktop> {
final hasTax3 = company.enableThirdItemTaxRate ||
includedLineItems.any((item) => item.taxName3.isNotEmpty);
final customField1 =
widget.isTasks ? CustomFieldType.task1 : CustomFieldType.product1;
final customField2 =
widget.isTasks ? CustomFieldType.task2 : CustomFieldType.product2;
final customField3 =
widget.isTasks ? CustomFieldType.task3 : CustomFieldType.product3;
final customField4 =
widget.isTasks ? CustomFieldType.task4 : CustomFieldType.product4;
if (lineItems.where((item) => item.isEmpty).isEmpty) {
lineItems.add(InvoiceItemEntity());
}
@ -88,16 +97,16 @@ class _InvoiceEditItemsDesktopState extends State<InvoiceEditItemsDesktop> {
if (company.enableProductDiscount) {
lastIndex++;
}
if (company.hasCustomField(CustomFieldType.product1)) {
if (company.hasCustomField(customField1)) {
lastIndex++;
}
if (company.hasCustomField(CustomFieldType.product2)) {
if (company.hasCustomField(customField2)) {
lastIndex++;
}
if (company.hasCustomField(CustomFieldType.product3)) {
if (company.hasCustomField(customField3)) {
lastIndex++;
}
if (company.hasCustomField(CustomFieldType.product4)) {
if (company.hasCustomField(customField4)) {
lastIndex++;
}
@ -116,18 +125,14 @@ class _InvoiceEditItemsDesktopState extends State<InvoiceEditItemsDesktop> {
TableRow(children: [
TableHeader(localization.item),
TableHeader(localization.description),
if (company.hasCustomField(CustomFieldType.product1))
TableHeader(
company.getCustomFieldLabel(CustomFieldType.product1)),
if (company.hasCustomField(CustomFieldType.product2))
TableHeader(
company.getCustomFieldLabel(CustomFieldType.product2)),
if (company.hasCustomField(CustomFieldType.product3))
TableHeader(
company.getCustomFieldLabel(CustomFieldType.product3)),
if (company.hasCustomField(CustomFieldType.product4))
TableHeader(
company.getCustomFieldLabel(CustomFieldType.product4)),
if (company.hasCustomField(customField1))
TableHeader(company.getCustomFieldLabel(customField1)),
if (company.hasCustomField(customField2))
TableHeader(company.getCustomFieldLabel(customField2)),
if (company.hasCustomField(customField3))
TableHeader(company.getCustomFieldLabel(customField3)),
if (company.hasCustomField(customField4))
TableHeader(company.getCustomFieldLabel(customField4)),
if (hasTax1) TableHeader(localization.tax),
if (hasTax2) TableHeader(localization.tax),
if (hasTax3) TableHeader(localization.tax),
@ -388,11 +393,11 @@ class _InvoiceEditItemsDesktopState extends State<InvoiceEditItemsDesktop> {
keyboardType: TextInputType.multiline,
),
),
if (company.hasCustomField(CustomFieldType.product1))
if (company.hasCustomField(customField1))
Padding(
padding: const EdgeInsets.only(right: kTableColumnGap),
child: CustomField(
field: CustomFieldType.product1,
field: customField1,
value: lineItems[index].customValue1,
hideFieldLabel: true,
onChanged: (value) => viewModel.onChangedInvoiceItem(
@ -402,11 +407,11 @@ class _InvoiceEditItemsDesktopState extends State<InvoiceEditItemsDesktop> {
onSavePressed: widget.entityViewModel.onSavePressed,
),
),
if (company.hasCustomField(CustomFieldType.product2))
if (company.hasCustomField(customField2))
Padding(
padding: const EdgeInsets.only(right: kTableColumnGap),
child: CustomField(
field: CustomFieldType.product2,
field: customField2,
value: lineItems[index].customValue2,
hideFieldLabel: true,
onChanged: (value) => viewModel.onChangedInvoiceItem(
@ -430,11 +435,11 @@ class _InvoiceEditItemsDesktopState extends State<InvoiceEditItemsDesktop> {
onSavePressed: widget.entityViewModel.onSavePressed,
),
),
if (company.hasCustomField(CustomFieldType.product4))
if (company.hasCustomField(customField4))
Padding(
padding: const EdgeInsets.only(right: kTableColumnGap),
child: CustomField(
field: CustomFieldType.product4,
field: customField4,
value: lineItems[index].customValue4,
hideFieldLabel: true,
onChanged: (value) => viewModel.onChangedInvoiceItem(