Payment terms
This commit is contained in:
parent
41e8e237a9
commit
4217e5ca49
|
|
@ -3,7 +3,9 @@ import 'package:flutter/services.dart';
|
|||
import 'package:invoiceninja_flutter/constants.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/entities.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/payment_term_model.dart';
|
||||
import 'package:invoiceninja_flutter/redux/payment_term/payment_term_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entity_dropdown.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/app_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/client/edit/client_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -80,6 +82,7 @@ class ClientEditSettingsState extends State<ClientEditSettings> {
|
|||
Widget build(BuildContext context) {
|
||||
final localization = AppLocalization.of(context);
|
||||
final viewModel = widget.viewModel;
|
||||
final state = viewModel.state;
|
||||
final client = viewModel.client;
|
||||
|
||||
return ListView(
|
||||
|
|
@ -109,41 +112,25 @@ class ClientEditSettingsState extends State<ClientEditSettings> {
|
|||
onSelected: (SelectableEntity language) => viewModel.onChanged(
|
||||
client.rebuild((b) => b..settings.languageId = language?.id)),
|
||||
),
|
||||
PopupMenuButton<PaymentTermEntity>(
|
||||
padding: EdgeInsets.zero,
|
||||
initialValue: null,
|
||||
itemBuilder: (BuildContext context) => (<int>[]
|
||||
..addAll(kPaymentTerms)
|
||||
..addAll(viewModel.company.settings.customPaymentTerms
|
||||
.map((paymentTerm) => paymentTerm.numDays))
|
||||
..sort((a, b) => a.abs() - b.abs()))
|
||||
.map((int numDays) =>
|
||||
PaymentTermEntity().rebuild((b) => b..numDays = numDays))
|
||||
.map((paymentTerm) => PopupMenuItem<PaymentTermEntity>(
|
||||
value: paymentTerm,
|
||||
child:
|
||||
Text(paymentTerm.getPaymentTerm(localization.net)),
|
||||
))
|
||||
.toList(),
|
||||
onSelected: (paymentTerm) {
|
||||
AppDropdownButton<String>(
|
||||
showBlank: true,
|
||||
labelText: localization.paymentTerm,
|
||||
items: memoizedDropdownPaymentTermList(
|
||||
state.paymentTermState.map, state.paymentTermState.list)
|
||||
.map((paymentTermId) {
|
||||
final paymentTerm = state.paymentTermState.map[paymentTermId];
|
||||
return DropdownMenuItem<String>(
|
||||
child: Text(paymentTerm.name),
|
||||
value: paymentTerm.numDays.toString(),
|
||||
);
|
||||
}).toList(),
|
||||
value: '${client.settings.defaultPaymentTerms}',
|
||||
onChanged: (dynamic numDays) {
|
||||
print('## onChanged: $numDays');
|
||||
viewModel.onChanged(client.rebuild((b) => b
|
||||
..settings.defaultPaymentTerms = paymentTerm == null
|
||||
? null
|
||||
: paymentTerm.numDays.toString()));
|
||||
_paymentTermsController.text =
|
||||
paymentTerm.getPaymentTerm(localization.net);
|
||||
..settings.defaultPaymentTerms =
|
||||
numDays == null ? null : '$numDays'));
|
||||
},
|
||||
child: InkWell(
|
||||
child: IgnorePointer(
|
||||
child: TextFormField(
|
||||
controller: _paymentTermsController,
|
||||
decoration: InputDecoration(
|
||||
labelText: localization.paymentTerms,
|
||||
suffixIcon: const Icon(Icons.arrow_drop_down),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
DecoratedFormField(
|
||||
controller: _taskRateController,
|
||||
|
|
|
|||
Loading…
Reference in New Issue