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