Save default terms/footer

This commit is contained in:
Hillel Coren 2022-11-14 14:03:25 +02:00
parent 5fba7023b9
commit d03dd6e976
24 changed files with 86 additions and 90 deletions

View File

@ -242,6 +242,8 @@ abstract class InvoiceEntity extends Object
frequencyId: kFrequencyMonthly, frequencyId: kFrequencyMonthly,
remainingCycles: -1, remainingCycles: -1,
dueDateDays: 'terms', dueDateDays: 'terms',
saveDefaultTerms: false,
saveDefaultFooter: false,
); );
} }
@ -603,6 +605,12 @@ abstract class InvoiceEntity extends Object
@BuiltValueField(compare: false) @BuiltValueField(compare: false)
BuiltList<ActivityEntity> get activities; BuiltList<ActivityEntity> get activities;
@BuiltValueField(serialize: false)
bool get saveDefaultTerms;
@BuiltValueField(serialize: false)
bool get saveDefaultFooter;
bool get isApproved { bool get isApproved {
if (isQuote && if (isQuote &&
[ [
@ -1481,6 +1489,8 @@ abstract class InvoiceEntity extends Object
..projectId = '' ..projectId = ''
..expenseId = '' ..expenseId = ''
..vendorId = '' ..vendorId = ''
..saveDefaultTerms = false
..saveDefaultFooter = false
..autoBillEnabled = false ..autoBillEnabled = false
..subscriptionId = ''; ..subscriptionId = '';

View File

@ -1531,6 +1531,10 @@ class _$InvoiceEntity extends InvoiceEntity {
@override @override
final BuiltList<ActivityEntity> activities; final BuiltList<ActivityEntity> activities;
@override @override
final bool saveDefaultTerms;
@override
final bool saveDefaultFooter;
@override
final int loadedAt; final int loadedAt;
@override @override
final bool isChanged; final bool isChanged;
@ -1617,6 +1621,8 @@ class _$InvoiceEntity extends InvoiceEntity {
this.invitations, this.invitations,
this.documents, this.documents,
this.activities, this.activities,
this.saveDefaultTerms,
this.saveDefaultFooter,
this.loadedAt, this.loadedAt,
this.isChanged, this.isChanged,
this.createdAt, this.createdAt,
@ -1720,6 +1726,10 @@ class _$InvoiceEntity extends InvoiceEntity {
documents, 'InvoiceEntity', 'documents'); documents, 'InvoiceEntity', 'documents');
BuiltValueNullFieldError.checkNotNull( BuiltValueNullFieldError.checkNotNull(
activities, 'InvoiceEntity', 'activities'); activities, 'InvoiceEntity', 'activities');
BuiltValueNullFieldError.checkNotNull(
saveDefaultTerms, 'InvoiceEntity', 'saveDefaultTerms');
BuiltValueNullFieldError.checkNotNull(
saveDefaultFooter, 'InvoiceEntity', 'saveDefaultFooter');
BuiltValueNullFieldError.checkNotNull( BuiltValueNullFieldError.checkNotNull(
createdAt, 'InvoiceEntity', 'createdAt'); createdAt, 'InvoiceEntity', 'createdAt');
BuiltValueNullFieldError.checkNotNull( BuiltValueNullFieldError.checkNotNull(
@ -1801,6 +1811,8 @@ class _$InvoiceEntity extends InvoiceEntity {
lineItems == other.lineItems && lineItems == other.lineItems &&
invitations == other.invitations && invitations == other.invitations &&
documents == other.documents && documents == other.documents &&
saveDefaultTerms == other.saveDefaultTerms &&
saveDefaultFooter == other.saveDefaultFooter &&
isChanged == other.isChanged && isChanged == other.isChanged &&
createdAt == other.createdAt && createdAt == other.createdAt &&
updatedAt == other.updatedAt && updatedAt == other.updatedAt &&
@ -1833,17 +1845,17 @@ class _$InvoiceEntity extends InvoiceEntity {
$jc( $jc(
$jc( $jc(
$jc( $jc(
$jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc(0, amount.hashCode), balance.hashCode), paidToDate.hashCode), clientId.hashCode), projectId.hashCode), expenseId.hashCode), vendorId.hashCode), subscriptionId.hashCode), statusId.hashCode), number.hashCode), discount.hashCode), poNumber.hashCode), date.hashCode), dueDate.hashCode), publicNotes.hashCode), privateNotes.hashCode), terms.hashCode), footer.hashCode), designId.hashCode), usesInclusiveTaxes.hashCode), taxName1.hashCode), taxRate1.hashCode), taxName2.hashCode), taxRate2.hashCode), taxName3.hashCode), taxRate3.hashCode), isAmountDiscount.hashCode), partial.hashCode), taxAmount.hashCode), partialDueDate.hashCode), autoBill.hashCode), customValue1.hashCode), customValue2.hashCode), customValue3.hashCode), customValue4.hashCode), customSurcharge1.hashCode), customSurcharge2.hashCode), customSurcharge3.hashCode), customSurcharge4.hashCode), customTaxes1.hashCode), customTaxes2.hashCode), customTaxes3.hashCode), customTaxes4.hashCode), exchangeRate.hashCode), reminder1Sent.hashCode), reminder2Sent.hashCode), reminder3Sent.hashCode), reminderLastSent.hashCode), frequencyId.hashCode), lastSentDate.hashCode), nextSendDate.hashCode), $jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc(0, amount.hashCode), balance.hashCode), paidToDate.hashCode), clientId.hashCode), projectId.hashCode), expenseId.hashCode), vendorId.hashCode), subscriptionId.hashCode), statusId.hashCode), number.hashCode), discount.hashCode), poNumber.hashCode), date.hashCode), dueDate.hashCode), publicNotes.hashCode), privateNotes.hashCode), terms.hashCode), footer.hashCode), designId.hashCode), usesInclusiveTaxes.hashCode), taxName1.hashCode), taxRate1.hashCode), taxName2.hashCode), taxRate2.hashCode), taxName3.hashCode), taxRate3.hashCode), isAmountDiscount.hashCode), partial.hashCode), taxAmount.hashCode), partialDueDate.hashCode), autoBill.hashCode), customValue1.hashCode), customValue2.hashCode), customValue3.hashCode), customValue4.hashCode), customSurcharge1.hashCode), customSurcharge2.hashCode), customSurcharge3.hashCode), customSurcharge4.hashCode), customTaxes1.hashCode), customTaxes2.hashCode), customTaxes3.hashCode), customTaxes4.hashCode), exchangeRate.hashCode), reminder1Sent.hashCode), reminder2Sent.hashCode), reminder3Sent.hashCode), reminderLastSent.hashCode), frequencyId.hashCode), lastSentDate.hashCode), nextSendDate.hashCode), remainingCycles.hashCode), dueDateDays.hashCode),
remainingCycles.hashCode), invoiceId.hashCode),
dueDateDays.hashCode), recurringId.hashCode),
invoiceId.hashCode), autoBillEnabled.hashCode),
recurringId.hashCode), filename.hashCode),
autoBillEnabled.hashCode), recurringDates.hashCode),
filename.hashCode), lineItems.hashCode),
recurringDates.hashCode), invitations.hashCode),
lineItems.hashCode), documents.hashCode),
invitations.hashCode), saveDefaultTerms.hashCode),
documents.hashCode), saveDefaultFooter.hashCode),
isChanged.hashCode), isChanged.hashCode),
createdAt.hashCode), createdAt.hashCode),
updatedAt.hashCode), updatedAt.hashCode),
@ -1920,6 +1932,8 @@ class _$InvoiceEntity extends InvoiceEntity {
..add('invitations', invitations) ..add('invitations', invitations)
..add('documents', documents) ..add('documents', documents)
..add('activities', activities) ..add('activities', activities)
..add('saveDefaultTerms', saveDefaultTerms)
..add('saveDefaultFooter', saveDefaultFooter)
..add('loadedAt', loadedAt) ..add('loadedAt', loadedAt)
..add('isChanged', isChanged) ..add('isChanged', isChanged)
..add('createdAt', createdAt) ..add('createdAt', createdAt)
@ -2210,6 +2224,16 @@ class InvoiceEntityBuilder
set activities(ListBuilder<ActivityEntity> activities) => set activities(ListBuilder<ActivityEntity> activities) =>
_$this._activities = activities; _$this._activities = activities;
bool _saveDefaultTerms;
bool get saveDefaultTerms => _$this._saveDefaultTerms;
set saveDefaultTerms(bool saveDefaultTerms) =>
_$this._saveDefaultTerms = saveDefaultTerms;
bool _saveDefaultFooter;
bool get saveDefaultFooter => _$this._saveDefaultFooter;
set saveDefaultFooter(bool saveDefaultFooter) =>
_$this._saveDefaultFooter = saveDefaultFooter;
int _loadedAt; int _loadedAt;
int get loadedAt => _$this._loadedAt; int get loadedAt => _$this._loadedAt;
set loadedAt(int loadedAt) => _$this._loadedAt = loadedAt; set loadedAt(int loadedAt) => _$this._loadedAt = loadedAt;
@ -2321,6 +2345,8 @@ class InvoiceEntityBuilder
_invitations = $v.invitations.toBuilder(); _invitations = $v.invitations.toBuilder();
_documents = $v.documents.toBuilder(); _documents = $v.documents.toBuilder();
_activities = $v.activities.toBuilder(); _activities = $v.activities.toBuilder();
_saveDefaultTerms = $v.saveDefaultTerms;
_saveDefaultFooter = $v.saveDefaultFooter;
_loadedAt = $v.loadedAt; _loadedAt = $v.loadedAt;
_isChanged = $v.isChanged; _isChanged = $v.isChanged;
_createdAt = $v.createdAt; _createdAt = $v.createdAt;
@ -2424,6 +2450,8 @@ class InvoiceEntityBuilder
invitations: invitations.build(), invitations: invitations.build(),
documents: documents.build(), documents: documents.build(),
activities: activities.build(), activities: activities.build(),
saveDefaultTerms: BuiltValueNullFieldError.checkNotNull(saveDefaultTerms, 'InvoiceEntity', 'saveDefaultTerms'),
saveDefaultFooter: BuiltValueNullFieldError.checkNotNull(saveDefaultFooter, 'InvoiceEntity', 'saveDefaultFooter'),
loadedAt: loadedAt, loadedAt: loadedAt,
isChanged: isChanged, isChanged: isChanged,
createdAt: BuiltValueNullFieldError.checkNotNull(createdAt, 'InvoiceEntity', 'createdAt'), createdAt: BuiltValueNullFieldError.checkNotNull(createdAt, 'InvoiceEntity', 'createdAt'),

View File

@ -75,8 +75,6 @@ class CreditRepository {
Credentials credentials, Credentials credentials,
InvoiceEntity credit, InvoiceEntity credit,
EntityAction action, EntityAction action,
bool saveDefaultTerms,
bool saveDefaultFooter,
) async { ) async {
credit = credit.rebuild((b) => b..documents.clear()); credit = credit.rebuild((b) => b..documents.clear());
final data = serializers.serializeWith(InvoiceEntity.serializer, credit); final data = serializers.serializeWith(InvoiceEntity.serializer, credit);

View File

@ -76,8 +76,6 @@ class InvoiceRepository {
Credentials credentials, Credentials credentials,
InvoiceEntity invoice, { InvoiceEntity invoice, {
EntityAction action, EntityAction action,
bool saveDefaultTerms,
bool saveDefaultFooter,
}) async { }) async {
invoice = invoice.rebuild((b) => b..documents.clear()); invoice = invoice.rebuild((b) => b..documents.clear());
final data = serializers.serializeWith(InvoiceEntity.serializer, invoice); final data = serializers.serializeWith(InvoiceEntity.serializer, invoice);
@ -99,10 +97,10 @@ class InvoiceRepository {
url += '&cancel=true'; url += '&cancel=true';
} }
if (saveDefaultTerms) { if (invoice.saveDefaultTerms) {
url += '&save_default_terms=true'; url += '&save_default_terms=true';
} }
if (saveDefaultFooter) { if (invoice.saveDefaultFooter) {
url += '&save_default_footer=true'; url += '&save_default_footer=true';
} }

View File

@ -74,8 +74,6 @@ class PurchaseOrderRepository {
Credentials credentials, Credentials credentials,
InvoiceEntity purchaseOrder, InvoiceEntity purchaseOrder,
EntityAction action, EntityAction action,
bool saveDefaultTerms,
bool saveDefaultFooter,
) async { ) async {
purchaseOrder = purchaseOrder.rebuild((b) => b..documents.clear()); purchaseOrder = purchaseOrder.rebuild((b) => b..documents.clear());
final data = final data =
@ -96,10 +94,10 @@ class PurchaseOrderRepository {
url += '&accept=true'; url += '&accept=true';
} }
if (saveDefaultTerms) { if (purchaseOrder.saveDefaultTerms) {
url += '&save_default_terms=true'; url += '&save_default_terms=true';
} }
if (saveDefaultFooter) { if (purchaseOrder.saveDefaultFooter) {
url += '&save_default_footer=true'; url += '&save_default_footer=true';
} }

View File

@ -76,8 +76,6 @@ class QuoteRepository {
Credentials credentials, Credentials credentials,
InvoiceEntity quote, InvoiceEntity quote,
EntityAction action, EntityAction action,
bool saveDefaultTerms,
bool saveDefaultFooter,
) async { ) async {
quote = quote.rebuild((b) => b..documents.clear()); quote = quote.rebuild((b) => b..documents.clear());
final data = serializers.serializeWith(InvoiceEntity.serializer, quote); final data = serializers.serializeWith(InvoiceEntity.serializer, quote);
@ -98,10 +96,10 @@ class QuoteRepository {
url += '&approve=true'; url += '&approve=true';
} }
if (saveDefaultTerms) { if (quote.saveDefaultTerms) {
url += '&save_default_terms=true'; url += '&save_default_terms=true';
} }
if (saveDefaultFooter) { if (quote.saveDefaultFooter) {
url += '&save_default_footer=true'; url += '&save_default_footer=true';
} }

View File

@ -201,15 +201,11 @@ class SaveCreditRequest implements StartSaving {
@required this.completer, @required this.completer,
@required this.credit, @required this.credit,
@required this.action, @required this.action,
@required this.saveDefaultTerms,
@required this.saveDefaultFooter,
}); });
final Completer completer; final Completer completer;
final InvoiceEntity credit; final InvoiceEntity credit;
final EntityAction action; final EntityAction action;
final bool saveDefaultTerms;
final bool saveDefaultFooter;
} }
class SaveCreditSuccess implements StopSaving, PersistData, PersistUI { class SaveCreditSuccess implements StopSaving, PersistData, PersistUI {

View File

@ -302,8 +302,7 @@ Middleware<AppState> _saveCredit(CreditRepository repository) {
.replace(action.credit.lineItems.where((item) => !item.isEmpty))); .replace(action.credit.lineItems.where((item) => !item.isEmpty)));
repository repository
.saveData(store.state.credentials, updatedCredit, action.action, .saveData(store.state.credentials, updatedCredit, action.action)
action.saveDefaultTerms, action.saveDefaultFooter)
.then((InvoiceEntity credit) { .then((InvoiceEntity credit) {
if (action.credit.isNew) { if (action.credit.isNew) {
store.dispatch(AddCreditSuccess(credit)); store.dispatch(AddCreditSuccess(credit));

View File

@ -202,15 +202,11 @@ class SaveInvoiceRequest implements StartSaving {
@required this.completer, @required this.completer,
@required this.invoice, @required this.invoice,
@required this.entityAction, @required this.entityAction,
@required this.saveDefaultTerms,
@required this.saveDefaultFooter,
}); });
final Completer completer; final Completer completer;
final InvoiceEntity invoice; final InvoiceEntity invoice;
final EntityAction entityAction; final EntityAction entityAction;
final bool saveDefaultTerms;
final bool saveDefaultFooter;
} }
class SaveInvoiceSuccess implements StopSaving, PersistUI { class SaveInvoiceSuccess implements StopSaving, PersistUI {

View File

@ -384,8 +384,6 @@ Middleware<AppState> _saveInvoice(InvoiceRepository repository) {
store.state.credentials, store.state.credentials,
updatedInvoice, updatedInvoice,
action: action.entityAction, action: action.entityAction,
saveDefaultTerms: action.saveDefaultTerms,
saveDefaultFooter: action.saveDefaultFooter,
) )
.then((InvoiceEntity invoice) { .then((InvoiceEntity invoice) {
if (action.invoice.isNew) { if (action.invoice.isNew) {

View File

@ -181,15 +181,11 @@ class SavePurchaseOrderRequest implements StartSaving {
@required this.completer, @required this.completer,
@required this.purchaseOrder, @required this.purchaseOrder,
@required this.action, @required this.action,
@required this.saveDefaultTerms,
@required this.saveDefaultFooter,
}); });
final Completer completer; final Completer completer;
final InvoiceEntity purchaseOrder; final InvoiceEntity purchaseOrder;
final EntityAction action; final EntityAction action;
final bool saveDefaultTerms;
final bool saveDefaultFooter;
} }
class SavePurchaseOrderSuccess implements StopSaving, PersistData, PersistUI { class SavePurchaseOrderSuccess implements StopSaving, PersistData, PersistUI {

View File

@ -419,8 +419,11 @@ Middleware<AppState> _savePurchaseOrder(PurchaseOrderRepository repository) {
action.purchaseOrder.lineItems.where((item) => !item.isEmpty))); action.purchaseOrder.lineItems.where((item) => !item.isEmpty)));
repository repository
.saveData(store.state.credentials, updatedPurchaseOrder, action.action, .saveData(
action.saveDefaultTerms, action.saveDefaultFooter) store.state.credentials,
updatedPurchaseOrder,
action.action,
)
.then((InvoiceEntity purchaseOrder) { .then((InvoiceEntity purchaseOrder) {
if (action.purchaseOrder.isNew) { if (action.purchaseOrder.isNew) {
store.dispatch(AddPurchaseOrderSuccess(purchaseOrder)); store.dispatch(AddPurchaseOrderSuccess(purchaseOrder));

View File

@ -201,15 +201,11 @@ class SaveQuoteRequest implements StartSaving {
@required this.completer, @required this.completer,
@required this.quote, @required this.quote,
@required this.action, @required this.action,
@required this.saveDefaultTerms,
@required this.saveDefaultFooter,
}); });
final Completer completer; final Completer completer;
final InvoiceEntity quote; final InvoiceEntity quote;
final EntityAction action; final EntityAction action;
final bool saveDefaultTerms;
final bool saveDefaultFooter;
} }
class SaveQuoteSuccess implements StopSaving, PersistData, PersistUI { class SaveQuoteSuccess implements StopSaving, PersistData, PersistUI {

View File

@ -342,8 +342,7 @@ Middleware<AppState> _saveQuote(QuoteRepository repository) {
.replace(action.quote.lineItems.where((item) => !item.isEmpty))); .replace(action.quote.lineItems.where((item) => !item.isEmpty)));
repository repository
.saveData(store.state.credentials, updatedQuote, action.action, .saveData(store.state.credentials, updatedQuote, action.action)
action.saveDefaultTerms, action.saveDefaultFooter)
.then((InvoiceEntity quote) { .then((InvoiceEntity quote) {
if (action.quote.isNew) { if (action.quote.isNew) {
store.dispatch(AddQuoteSuccess(quote)); store.dispatch(AddQuoteSuccess(quote));

View File

@ -77,7 +77,7 @@ class _CreditEditState extends State<CreditEdit>
return; return;
} }
widget.viewModel.onSavePressed(context, false, false, action); widget.viewModel.onSavePressed(context, action);
} }
@override @override

View File

@ -53,7 +53,7 @@ class CreditEditVM extends AbstractInvoiceEditVM {
InvoiceEntity invoice, InvoiceEntity invoice,
int invoiceItemIndex, int invoiceItemIndex,
InvoiceEntity origInvoice, InvoiceEntity origInvoice,
Function(BuildContext, [bool, bool, EntityAction]) onSavePressed, Function(BuildContext, [EntityAction]) onSavePressed,
Function(List<InvoiceItemEntity>, String, String) onItemsAdded, Function(List<InvoiceItemEntity>, String, String) onItemsAdded,
bool isSaving, bool isSaving,
Function(BuildContext) onCancelPressed, Function(BuildContext) onCancelPressed,
@ -84,8 +84,7 @@ class CreditEditVM extends AbstractInvoiceEditVM {
invoice: credit, invoice: credit,
invoiceItemIndex: state.creditUIState.editingItemIndex, invoiceItemIndex: state.creditUIState.editingItemIndex,
origInvoice: store.state.creditState.map[credit.id], origInvoice: store.state.creditState.map[credit.id],
onSavePressed: (BuildContext context, onSavePressed: (BuildContext context, [EntityAction action]) {
[saveDefaultTerms, saveDefaultFooter, EntityAction action]) {
Debouncer.runOnComplete(() { Debouncer.runOnComplete(() {
final credit = store.state.creditUIState.editing; final credit = store.state.creditUIState.editing;
final localization = navigatorKey.localization; final localization = navigatorKey.localization;
@ -111,8 +110,6 @@ class CreditEditVM extends AbstractInvoiceEditVM {
completer: completer, completer: completer,
credit: credit, credit: credit,
action: action, action: action,
saveDefaultTerms: saveDefaultTerms,
saveDefaultFooter: saveDefaultFooter,
)); ));
return completer.future.then((savedCredit) { return completer.future.then((savedCredit) {
showToast(credit.isNew showToast(credit.isNew

View File

@ -85,10 +85,10 @@ class _InvoiceEditState extends State<InvoiceEdit>
context: context, context: context,
message: AppLocalization.of(context).cancelInvoice, message: AppLocalization.of(context).cancelInvoice,
callback: (_) { callback: (_) {
widget.viewModel.onSavePressed(context, false, false, action); widget.viewModel.onSavePressed(context, action);
}); });
} else { } else {
widget.viewModel.onSavePressed(context, false, false, action); widget.viewModel.onSavePressed(context, action);
} }
} }

View File

@ -81,8 +81,6 @@ class InvoiceEditDesktopState extends State<InvoiceEditDesktop>
bool _showTasksTable = false; bool _showTasksTable = false;
bool _showSaveDefault = false; bool _showSaveDefault = false;
bool _saveDefaultTerms = false;
bool _saveDefaultFooter = false;
FocusNode _focusNode; FocusNode _focusNode;
final _invoiceNumberController = TextEditingController(); final _invoiceNumberController = TextEditingController();
@ -124,9 +122,6 @@ class InvoiceEditDesktopState extends State<InvoiceEditDesktop>
@override @override
void didChangeDependencies() { void didChangeDependencies() {
_saveDefaultTerms = false;
_saveDefaultFooter = false;
_controllers = [ _controllers = [
_invoiceNumberController, _invoiceNumberController,
_poNumberController, _poNumberController,
@ -219,7 +214,7 @@ class InvoiceEditDesktopState extends State<InvoiceEditDesktop>
void _onSavePressed(BuildContext context) { void _onSavePressed(BuildContext context) {
final viewModel = widget.entityViewModel; final viewModel = widget.entityViewModel;
viewModel.onSavePressed(context, _saveDefaultTerms, _saveDefaultFooter); viewModel.onSavePressed(context);
} }
@override @override
@ -694,7 +689,7 @@ class InvoiceEditDesktopState extends State<InvoiceEditDesktop>
SizedBox(height: 8), SizedBox(height: 8),
CheckboxListTile( CheckboxListTile(
dense: true, dense: true,
value: _saveDefaultTerms, value: invoice.saveDefaultTerms,
title: Text( title: Text(
localization.saveAsDefaultTerms), localization.saveAsDefaultTerms),
controlAffinity: controlAffinity:
@ -703,9 +698,9 @@ class InvoiceEditDesktopState extends State<InvoiceEditDesktop>
.colorScheme .colorScheme
.secondary, .secondary,
onChanged: (value) { onChanged: (value) {
setState(() { viewModel.onChanged(invoice.rebuild(
_saveDefaultTerms = value; (b) =>
}); b..saveDefaultTerms = value));
}, },
), ),
], ],
@ -727,7 +722,7 @@ class InvoiceEditDesktopState extends State<InvoiceEditDesktop>
SizedBox(height: 8), SizedBox(height: 8),
CheckboxListTile( CheckboxListTile(
dense: true, dense: true,
value: _saveDefaultFooter, value: invoice.saveDefaultFooter,
title: Text( title: Text(
localization.saveAsDefaultFooter), localization.saveAsDefaultFooter),
controlAffinity: controlAffinity:
@ -736,9 +731,9 @@ class InvoiceEditDesktopState extends State<InvoiceEditDesktop>
.colorScheme .colorScheme
.secondary, .secondary,
onChanged: (value) { onChanged: (value) {
setState(() { viewModel.onChanged(invoice.rebuild(
_saveDefaultFooter = value; (b) => b
}); ..saveDefaultFooter = value));
}, },
), ),
], ],

View File

@ -66,7 +66,7 @@ abstract class AbstractInvoiceEditVM {
final InvoiceEntity invoice; final InvoiceEntity invoice;
final int invoiceItemIndex; final int invoiceItemIndex;
final InvoiceEntity origInvoice; final InvoiceEntity origInvoice;
final Function(BuildContext, [bool, bool, EntityAction]) onSavePressed; final Function(BuildContext, [EntityAction]) onSavePressed;
final Function(List<InvoiceItemEntity>, String, String) onItemsAdded; final Function(List<InvoiceItemEntity>, String, String) onItemsAdded;
final bool isSaving; final bool isSaving;
final Function(BuildContext) onCancelPressed; final Function(BuildContext) onCancelPressed;
@ -81,7 +81,7 @@ class InvoiceEditVM extends AbstractInvoiceEditVM {
InvoiceEntity invoice, InvoiceEntity invoice,
int invoiceItemIndex, int invoiceItemIndex,
InvoiceEntity origInvoice, InvoiceEntity origInvoice,
Function(BuildContext, [bool, bool, EntityAction]) onSavePressed, Function(BuildContext, [EntityAction]) onSavePressed,
Function(List<InvoiceItemEntity>, String, String) onItemsAdded, Function(List<InvoiceItemEntity>, String, String) onItemsAdded,
bool isSaving, bool isSaving,
Function(BuildContext) onCancelPressed, Function(BuildContext) onCancelPressed,
@ -112,8 +112,7 @@ class InvoiceEditVM extends AbstractInvoiceEditVM {
invoice: invoice, invoice: invoice,
invoiceItemIndex: state.invoiceUIState.editingItemIndex, invoiceItemIndex: state.invoiceUIState.editingItemIndex,
origInvoice: store.state.invoiceState.map[invoice.id], origInvoice: store.state.invoiceState.map[invoice.id],
onSavePressed: (BuildContext context, onSavePressed: (BuildContext context, [EntityAction action]) {
[saveDefaultTerms, saveDefaultFooter, EntityAction action]) {
Debouncer.runOnComplete(() { Debouncer.runOnComplete(() {
final invoice = store.state.invoiceUIState.editing; final invoice = store.state.invoiceUIState.editing;
final localization = navigatorKey.localization; final localization = navigatorKey.localization;
@ -164,8 +163,6 @@ class InvoiceEditVM extends AbstractInvoiceEditVM {
completer: completer, completer: completer,
invoice: invoice, invoice: invoice,
entityAction: action, entityAction: action,
saveDefaultFooter: saveDefaultFooter,
saveDefaultTerms: saveDefaultTerms,
)); ));
return completer.future.then((savedInvoice) { return completer.future.then((savedInvoice) {
showToast(invoice.isNew showToast(invoice.isNew

View File

@ -77,7 +77,7 @@ class _PurchaseOrderEditState extends State<PurchaseOrderEdit>
return; return;
} }
widget.viewModel.onSavePressed(context, false, false, action); widget.viewModel.onSavePressed(context, action);
} }
@override @override

View File

@ -53,7 +53,7 @@ class PurchaseOrderEditVM extends AbstractInvoiceEditVM {
InvoiceEntity purchaseOrder, InvoiceEntity purchaseOrder,
int invoiceItemIndex, int invoiceItemIndex,
InvoiceEntity origInvoice, InvoiceEntity origInvoice,
Function(BuildContext, [bool, bool, EntityAction]) onSavePressed, Function(BuildContext, [EntityAction]) onSavePressed,
Function(List<InvoiceItemEntity>, String, String) onItemsAdded, Function(List<InvoiceItemEntity>, String, String) onItemsAdded,
bool isSaving, bool isSaving,
Function(BuildContext) onCancelPressed, Function(BuildContext) onCancelPressed,
@ -84,8 +84,7 @@ class PurchaseOrderEditVM extends AbstractInvoiceEditVM {
purchaseOrder: purchaseOrder, purchaseOrder: purchaseOrder,
invoiceItemIndex: state.purchaseOrderUIState.editingItemIndex, invoiceItemIndex: state.purchaseOrderUIState.editingItemIndex,
origInvoice: store.state.purchaseOrderState.map[purchaseOrder.id], origInvoice: store.state.purchaseOrderState.map[purchaseOrder.id],
onSavePressed: (BuildContext context, onSavePressed: (BuildContext context, [EntityAction action]) {
[saveDefaultTerms, saveDefaultFooter, EntityAction action]) {
Debouncer.runOnComplete(() { Debouncer.runOnComplete(() {
final purchaseOrder = store.state.purchaseOrderUIState.editing; final purchaseOrder = store.state.purchaseOrderUIState.editing;
final localization = navigatorKey.localization; final localization = navigatorKey.localization;
@ -110,8 +109,6 @@ class PurchaseOrderEditVM extends AbstractInvoiceEditVM {
completer: completer, completer: completer,
purchaseOrder: purchaseOrder, purchaseOrder: purchaseOrder,
action: action, action: action,
saveDefaultTerms: saveDefaultTerms,
saveDefaultFooter: saveDefaultFooter,
)); ));
return completer.future.then((savedPurchaseOrder) { return completer.future.then((savedPurchaseOrder) {
showToast(purchaseOrder.isNew showToast(purchaseOrder.isNew

View File

@ -77,7 +77,7 @@ class _QuoteEditState extends State<QuoteEdit>
return; return;
} }
widget.viewModel.onSavePressed(context, false, false, action); widget.viewModel.onSavePressed(context, action);
} }
@override @override

View File

@ -53,7 +53,7 @@ class QuoteEditVM extends AbstractInvoiceEditVM {
InvoiceEntity invoice, InvoiceEntity invoice,
int invoiceItemIndex, int invoiceItemIndex,
InvoiceEntity origInvoice, InvoiceEntity origInvoice,
Function(BuildContext, [bool, bool, EntityAction]) onSavePressed, Function(BuildContext, [EntityAction]) onSavePressed,
Function(List<InvoiceItemEntity>, String, String) onItemsAdded, Function(List<InvoiceItemEntity>, String, String) onItemsAdded,
bool isSaving, bool isSaving,
Function(BuildContext) onCancelPressed, Function(BuildContext) onCancelPressed,
@ -84,8 +84,7 @@ class QuoteEditVM extends AbstractInvoiceEditVM {
invoice: quote, invoice: quote,
invoiceItemIndex: state.quoteUIState.editingItemIndex, invoiceItemIndex: state.quoteUIState.editingItemIndex,
origInvoice: store.state.quoteState.map[quote.id], origInvoice: store.state.quoteState.map[quote.id],
onSavePressed: (BuildContext context, onSavePressed: (BuildContext context, [EntityAction action]) {
[saveDefaultTerms, saveDefaultFooter, EntityAction action]) {
Debouncer.runOnComplete(() { Debouncer.runOnComplete(() {
final quote = store.state.quoteUIState.editing; final quote = store.state.quoteUIState.editing;
final localization = navigatorKey.localization; final localization = navigatorKey.localization;
@ -110,8 +109,6 @@ class QuoteEditVM extends AbstractInvoiceEditVM {
completer: completer, completer: completer,
quote: quote, quote: quote,
action: action, action: action,
saveDefaultTerms: saveDefaultTerms,
saveDefaultFooter: saveDefaultFooter,
)); ));
return completer.future.then((savedQuote) { return completer.future.then((savedQuote) {
showToast(quote.isNew showToast(quote.isNew

View File

@ -76,7 +76,7 @@ class _RecurringInvoiceEditState extends State<RecurringInvoiceEdit>
return; return;
} }
widget.viewModel.onSavePressed(context, false, false, action); widget.viewModel.onSavePressed(context, action);
} }
@override @override