Purchase orders
This commit is contained in:
parent
5643c981e2
commit
be5d35d5c4
|
|
@ -483,8 +483,10 @@ Future handleCreditAction(
|
||||||
case EntityAction.emailCredit:
|
case EntityAction.emailCredit:
|
||||||
case EntityAction.bulkEmailCredit:
|
case EntityAction.bulkEmailCredit:
|
||||||
bool emailValid = true;
|
bool emailValid = true;
|
||||||
creditIds.forEach((element) {
|
credits.forEach((credit) {
|
||||||
final client = state.clientState.get(credit.clientId);
|
final client = state.clientState.get(
|
||||||
|
(credit as InvoiceEntity).clientId,
|
||||||
|
);
|
||||||
if (!client.hasEmailAddress) {
|
if (!client.hasEmailAddress) {
|
||||||
emailValid = false;
|
emailValid = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -569,8 +569,10 @@ void handleInvoiceAction(BuildContext context, List<BaseEntity> invoices,
|
||||||
case EntityAction.emailInvoice:
|
case EntityAction.emailInvoice:
|
||||||
case EntityAction.bulkEmailInvoice:
|
case EntityAction.bulkEmailInvoice:
|
||||||
bool emailValid = true;
|
bool emailValid = true;
|
||||||
invoiceIds.forEach((element) {
|
invoices.forEach((invoice) {
|
||||||
final client = state.clientState.get(invoice.clientId);
|
final client = state.clientState.get(
|
||||||
|
(invoice as InvoiceEntity).clientId,
|
||||||
|
);
|
||||||
if (!client.hasEmailAddress) {
|
if (!client.hasEmailAddress) {
|
||||||
emailValid = false;
|
emailValid = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'package:built_collection/built_collection.dart';
|
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:flutter_redux/flutter_redux.dart';
|
||||||
import 'package:invoiceninja_flutter/data/models/models.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_actions.dart';
|
||||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/completers.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/utils/localization.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart';
|
import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart';
|
||||||
|
|
||||||
|
|
@ -172,6 +173,25 @@ class SavePurchaseOrderFailure implements StopSaving {
|
||||||
final Object error;
|
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 {
|
class ArchivePurchaseOrdersRequest implements StartSaving {
|
||||||
ArchivePurchaseOrdersRequest(this.completer, this.purchaseOrderIds);
|
ArchivePurchaseOrdersRequest(this.completer, this.purchaseOrderIds);
|
||||||
|
|
||||||
|
|
@ -429,6 +449,7 @@ void handlePurchaseOrderAction(BuildContext context,
|
||||||
}
|
}
|
||||||
|
|
||||||
final store = StoreProvider.of<AppState>(context);
|
final store = StoreProvider.of<AppState>(context);
|
||||||
|
final state = store.state;
|
||||||
final localization = AppLocalization.of(context);
|
final localization = AppLocalization.of(context);
|
||||||
final purchaseOrder = purchaseOrders.first as InvoiceEntity;
|
final purchaseOrder = purchaseOrders.first as InvoiceEntity;
|
||||||
final purchaseOrderIds =
|
final purchaseOrderIds =
|
||||||
|
|
@ -480,6 +501,54 @@ void handlePurchaseOrderAction(BuildContext context,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
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:
|
case EntityAction.more:
|
||||||
showEntityActionsDialog(
|
showEntityActionsDialog(
|
||||||
entities: [purchaseOrder],
|
entities: [purchaseOrder],
|
||||||
|
|
|
||||||
|
|
@ -522,8 +522,10 @@ Future handleQuoteAction(
|
||||||
case EntityAction.emailQuote:
|
case EntityAction.emailQuote:
|
||||||
case EntityAction.bulkEmailQuote:
|
case EntityAction.bulkEmailQuote:
|
||||||
bool emailValid = true;
|
bool emailValid = true;
|
||||||
quoteIds.forEach((element) {
|
quotes.forEach((quote) {
|
||||||
final client = state.clientState.get(quote.clientId);
|
final client = state.clientState.get(
|
||||||
|
(quote as InvoiceEntity).clientId,
|
||||||
|
);
|
||||||
if (!client.hasEmailAddress) {
|
if (!client.hasEmailAddress) {
|
||||||
emailValid = false;
|
emailValid = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue