Purchase orders
This commit is contained in:
parent
5643c981e2
commit
be5d35d5c4
|
|
@ -483,8 +483,10 @@ Future handleCreditAction(
|
|||
case EntityAction.emailCredit:
|
||||
case EntityAction.bulkEmailCredit:
|
||||
bool emailValid = true;
|
||||
creditIds.forEach((element) {
|
||||
final client = state.clientState.get(credit.clientId);
|
||||
credits.forEach((credit) {
|
||||
final client = state.clientState.get(
|
||||
(credit as InvoiceEntity).clientId,
|
||||
);
|
||||
if (!client.hasEmailAddress) {
|
||||
emailValid = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -569,8 +569,10 @@ void handleInvoiceAction(BuildContext context, List<BaseEntity> invoices,
|
|||
case EntityAction.emailInvoice:
|
||||
case EntityAction.bulkEmailInvoice:
|
||||
bool emailValid = true;
|
||||
invoiceIds.forEach((element) {
|
||||
final client = state.clientState.get(invoice.clientId);
|
||||
invoices.forEach((invoice) {
|
||||
final client = state.clientState.get(
|
||||
(invoice as InvoiceEntity).clientId,
|
||||
);
|
||||
if (!client.hasEmailAddress) {
|
||||
emailValid = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
import 'dart:async';
|
||||
import 'package:built_collection/built_collection.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/dialogs.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart';
|
||||
|
||||
|
|
@ -172,6 +173,25 @@ class SavePurchaseOrderFailure implements StopSaving {
|
|||
final Object error;
|
||||
}
|
||||
|
||||
class BulkEmailPurchaseOrdersRequest implements StartSaving {
|
||||
BulkEmailPurchaseOrdersRequest(this.completer, this.purchaseOrderIds);
|
||||
|
||||
final Completer completer;
|
||||
final List<String> purchaseOrderIds;
|
||||
}
|
||||
|
||||
class BulkEmailPurchaseOrdersSuccess implements StopSaving, PersistData {
|
||||
BulkEmailPurchaseOrdersSuccess(this.purchaseOrders);
|
||||
|
||||
final List<InvoiceEntity> purchaseOrders;
|
||||
}
|
||||
|
||||
class BulkEmailPurchaseOrdersFailure implements StopSaving {
|
||||
BulkEmailPurchaseOrdersFailure(this.error);
|
||||
|
||||
final dynamic error;
|
||||
}
|
||||
|
||||
class ArchivePurchaseOrdersRequest implements StartSaving {
|
||||
ArchivePurchaseOrdersRequest(this.completer, this.purchaseOrderIds);
|
||||
|
||||
|
|
@ -429,6 +449,7 @@ void handlePurchaseOrderAction(BuildContext context,
|
|||
}
|
||||
|
||||
final store = StoreProvider.of<AppState>(context);
|
||||
final state = store.state;
|
||||
final localization = AppLocalization.of(context);
|
||||
final purchaseOrder = purchaseOrders.first as InvoiceEntity;
|
||||
final purchaseOrderIds =
|
||||
|
|
@ -480,6 +501,54 @@ void handlePurchaseOrderAction(BuildContext context,
|
|||
}
|
||||
}
|
||||
break;
|
||||
case EntityAction.emailPurchaseOrder:
|
||||
case EntityAction.bulkEmailPurchaseOrder:
|
||||
bool emailValid = true;
|
||||
purchaseOrders.forEach((purchaseOrder) {
|
||||
final client = state.clientState.get(
|
||||
(purchaseOrder as InvoiceEntity).clientId,
|
||||
);
|
||||
if (!client.hasEmailAddress) {
|
||||
emailValid = false;
|
||||
}
|
||||
});
|
||||
if (!emailValid) {
|
||||
showMessageDialog(
|
||||
context: context,
|
||||
message: localization.clientEmailNotSet,
|
||||
secondaryActions: [
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
editEntity(
|
||||
entity: state.clientState.get(purchaseOrder.clientId));
|
||||
},
|
||||
child: Text(localization.editClient.toUpperCase()))
|
||||
]);
|
||||
return;
|
||||
}
|
||||
if (action == EntityAction.emailQuote) {
|
||||
store.dispatch(ShowEmailPurchaseOrder(
|
||||
completer: snackBarCompleter<Null>(
|
||||
context, localization.emailedPurchaseOrder),
|
||||
purchaseOrder: purchaseOrder,
|
||||
context: context));
|
||||
} else {
|
||||
confirmCallback(
|
||||
context: context,
|
||||
message: localization.bulkEmailQuote,
|
||||
callback: (_) {
|
||||
store.dispatch(BulkEmailPurchaseOrdersRequest(
|
||||
snackBarCompleter<Null>(
|
||||
context,
|
||||
purchaseOrderIds.length == 1
|
||||
? localization.emailedPurchaseOrder
|
||||
: localization.emailedPurchaseOrders),
|
||||
purchaseOrderIds));
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
||||
case EntityAction.more:
|
||||
showEntityActionsDialog(
|
||||
entities: [purchaseOrder],
|
||||
|
|
|
|||
|
|
@ -522,8 +522,10 @@ Future handleQuoteAction(
|
|||
case EntityAction.emailQuote:
|
||||
case EntityAction.bulkEmailQuote:
|
||||
bool emailValid = true;
|
||||
quoteIds.forEach((element) {
|
||||
final client = state.clientState.get(quote.clientId);
|
||||
quotes.forEach((quote) {
|
||||
final client = state.clientState.get(
|
||||
(quote as InvoiceEntity).clientId,
|
||||
);
|
||||
if (!client.hasEmailAddress) {
|
||||
emailValid = false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue