Quote counter
This commit is contained in:
parent
2e16dda90a
commit
f64a55730a
|
|
@ -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)),
|
||||||
|
),
|
||||||
|
]),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue