Quote counter

This commit is contained in:
Hillel Coren 2020-03-17 16:53:45 +02:00
parent 2e16dda90a
commit f64a55730a
1 changed files with 52 additions and 15 deletions

View File

@ -1,9 +1,11 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.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/ui/app/form_card.dart'; import 'package:invoiceninja_flutter/ui/app/form_card.dart';
import 'package:invoiceninja_flutter/ui/app/forms/app_dropdown_button.dart'; import 'package:invoiceninja_flutter/ui/app/forms/app_dropdown_button.dart';
import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart'; import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
import 'package:invoiceninja_flutter/ui/app/forms/date_picker.dart'; import 'package:invoiceninja_flutter/ui/app/forms/date_picker.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/settings/generated_numbers_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/generated_numbers_vm.dart';
@ -43,8 +45,18 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
@override @override
void initState() { void initState() {
super.initState(); super.initState();
final company = widget.viewModel.state.company;
int tabs = 4;
[EntityType.quote, EntityType.credit].forEach((entityType) {
if (company.isModuleEnabled(entityType)) {
tabs++;
}
});
_focusNode = FocusScopeNode(); _focusNode = FocusScopeNode();
_controller = TabController(vsync: this, length: 5); _controller = TabController(vsync: this, length: tabs);
} }
@override @override
@ -93,6 +105,7 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
final viewModel = widget.viewModel; final viewModel = widget.viewModel;
final settings = viewModel.settings; final settings = viewModel.settings;
final state = viewModel.state; final state = viewModel.state;
final company = state.company;
return EditScaffold( return EditScaffold(
title: localization.generatedNumbers, title: localization.generatedNumbers,
@ -100,7 +113,7 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
appBarBottom: TabBar( appBarBottom: TabBar(
key: ValueKey(state.settingsUIState.updatedAt), key: ValueKey(state.settingsUIState.updatedAt),
controller: _controller, controller: _controller,
isScrollable: isMobile(context), isScrollable: true,
tabs: [ tabs: [
Tab( Tab(
text: localization.settings, text: localization.settings,
@ -111,12 +124,17 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
Tab( Tab(
text: localization.invoices, text: localization.invoices,
), ),
Tab(
text: localization.credits,
),
Tab( Tab(
text: localization.payments, text: localization.payments,
), ),
if (company.isModuleEnabled(EntityType.quote))
Tab(
text: localization.quote,
),
if (company.isModuleEnabled(EntityType.credit))
Tab(
text: localization.credit,
),
], ],
), ),
body: AppTabForm( body: AppTabForm(
@ -158,6 +176,13 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
), ),
], ],
), ),
BoolDropdownButton(
iconData: Icons.content_copy,
label: localization.sharedInvoiceQuoteCounter,
value: settings.sharedInvoiceQuoteCounter,
onChanged: (value) => viewModel.onSettingsChanged(settings
.rebuild((b) => b..sharedInvoiceQuoteCounter = value)),
),
DecoratedFormField( DecoratedFormField(
label: localization.recurringPrefix, label: localization.recurringPrefix,
controller: _recurringPrefixController, controller: _recurringPrefixController,
@ -218,16 +243,6 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
..invoiceNumberPattern = pattern)), ..invoiceNumberPattern = pattern)),
), ),
]), ]),
ListView(children: <Widget>[
EntityNumberSettings(
counterValue: settings.quoteNumberCounter,
patternValue: settings.quoteNumberPattern,
onChanged: (counter, pattern) =>
viewModel.onSettingsChanged(settings.rebuild((b) => b
..quoteNumberCounter = counter
..quoteNumberPattern = pattern)),
),
]),
ListView(children: <Widget>[ ListView(children: <Widget>[
EntityNumberSettings( EntityNumberSettings(
counterValue: settings.paymentNumberCounter, counterValue: settings.paymentNumberCounter,
@ -238,6 +253,28 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
..paymentNumberPattern = pattern)), ..paymentNumberPattern = pattern)),
), ),
]), ]),
if (company.isModuleEnabled(EntityType.quote))
ListView(children: <Widget>[
EntityNumberSettings(
counterValue: settings.quoteNumberCounter,
patternValue: settings.quoteNumberPattern,
onChanged: (counter, pattern) =>
viewModel.onSettingsChanged(settings.rebuild((b) => b
..quoteNumberCounter = counter
..quoteNumberPattern = pattern)),
),
]),
if (company.isModuleEnabled(EntityType.credit))
ListView(children: <Widget>[
EntityNumberSettings(
counterValue: settings.creditNumberCounter,
patternValue: settings.creditNumberPattern,
onChanged: (counter, pattern) =>
viewModel.onSettingsChanged(settings.rebuild((b) => b
..creditNumberCounter = counter
..creditNumberPattern = pattern)),
),
]),
], ],
), ),
); );