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/material.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/forms/app_dropdown_button.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/decorated_form_field.dart';
import 'package:invoiceninja_flutter/ui/settings/generated_numbers_vm.dart';
@ -43,8 +45,18 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
@override
void 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();
_controller = TabController(vsync: this, length: 5);
_controller = TabController(vsync: this, length: tabs);
}
@override
@ -93,6 +105,7 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
final viewModel = widget.viewModel;
final settings = viewModel.settings;
final state = viewModel.state;
final company = state.company;
return EditScaffold(
title: localization.generatedNumbers,
@ -100,7 +113,7 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
appBarBottom: TabBar(
key: ValueKey(state.settingsUIState.updatedAt),
controller: _controller,
isScrollable: isMobile(context),
isScrollable: true,
tabs: [
Tab(
text: localization.settings,
@ -111,12 +124,17 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
Tab(
text: localization.invoices,
),
Tab(
text: localization.credits,
),
Tab(
text: localization.payments,
),
if (company.isModuleEnabled(EntityType.quote))
Tab(
text: localization.quote,
),
if (company.isModuleEnabled(EntityType.credit))
Tab(
text: localization.credit,
),
],
),
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(
label: localization.recurringPrefix,
controller: _recurringPrefixController,
@ -218,16 +243,6 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
..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>[
EntityNumberSettings(
counterValue: settings.paymentNumberCounter,
@ -238,6 +253,28 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
..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)),
),
]),
],
),
);