diff --git a/lib/data/models/invoice_model.dart b/lib/data/models/invoice_model.dart index b8e2f4246..6d9403d42 100644 --- a/lib/data/models/invoice_model.dart +++ b/lib/data/models/invoice_model.dart @@ -16,6 +16,7 @@ import 'package:invoiceninja_flutter/data/models/tax_model.dart'; import 'package:invoiceninja_flutter/main_app.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/client/client_selectors.dart'; +import 'package:invoiceninja_flutter/redux/design/design_selectors.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/money.dart'; import 'package:invoiceninja_flutter/utils/strings.dart'; @@ -1051,6 +1052,13 @@ abstract class InvoiceEntity extends Object } } + if (!isDeleted!) { + if (hasDesignTemplatesForEntityType( + store.state.designState.map, entityType!)) { + actions.add(EntityAction.runTemplate); + } + } + if (userCompany.canEditEntity(this) && !isCancelledOrReversed) { if (!isSent && !isRecurring) { actions.add(EntityAction.markSent); diff --git a/lib/redux/invoice/invoice_actions.dart b/lib/redux/invoice/invoice_actions.dart index 764510572..dd38f0f34 100644 --- a/lib/redux/invoice/invoice_actions.dart +++ b/lib/redux/invoice/invoice_actions.dart @@ -10,6 +10,7 @@ import 'package:built_collection/built_collection.dart'; import 'package:flutter_redux/flutter_redux.dart'; import 'package:http/http.dart'; import 'package:invoiceninja_flutter/constants.dart'; +import 'package:invoiceninja_flutter/main_app.dart'; import 'package:invoiceninja_flutter/redux/client/client_selectors.dart'; import 'package:invoiceninja_flutter/redux/document/document_actions.dart'; import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart'; @@ -850,7 +851,7 @@ void handleInvoiceAction(BuildContext? context, List invoices, break; case EntityAction.bulkPrint: store.dispatch(StartSaving()); - final url = state.credentials.url+ '/invoices/bulk'; + final url = state.credentials.url + '/invoices/bulk'; final data = json.encode( {'ids': invoiceIds, 'action': EntityAction.bulkPrint.toApiParam()}); final http.Response? response = await WebClient() @@ -858,6 +859,15 @@ void handleInvoiceAction(BuildContext? context, List invoices, store.dispatch(StopSaving()); await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; + case EntityAction.runTemplate: + showDialog( + context: navigatorKey.currentContext!, + builder: (context) => RunTemplateDialog( + entityType: EntityType.invoice, + entities: invoices, + ), + ); + break; case EntityAction.more: showEntityActionsDialog( entities: [invoice],