Purchase orders

This commit is contained in:
Hillel Coren 2022-06-26 12:42:49 +03:00
parent 6ef67cecb1
commit 554d619b7a
3 changed files with 61 additions and 8 deletions

View File

@ -274,15 +274,15 @@ class DownloadPurchaseOrdersFailure implements StopSaving {
final Object error; final Object error;
} }
class AcceptPurchaseOrders implements StartSaving { class AcceptPurchaseOrdersRequest implements StartSaving {
AcceptPurchaseOrders(this.completer, this.purchaseOrderIds); AcceptPurchaseOrdersRequest(this.completer, this.purchaseOrderIds);
final List<String> purchaseOrderIds; final List<String> purchaseOrderIds;
final Completer completer; final Completer completer;
} }
class AcceptPurchaseOrderSuccess implements StopSaving { class AcceptPurchaseOrderSuccess implements StopSaving {
AcceptPurchaseOrderSuccess({this.purchaseOrders}); AcceptPurchaseOrderSuccess(this.purchaseOrders);
final List<InvoiceEntity> purchaseOrders; final List<InvoiceEntity> purchaseOrders;
} }
@ -293,15 +293,15 @@ class AcceptPurchaseOrderFailure implements StopSaving {
final dynamic error; final dynamic error;
} }
class CancelPurchaseOrders implements StartSaving { class CancelPurchaseOrdersRequest implements StartSaving {
CancelPurchaseOrders(this.completer, this.purchaseOrderIds); CancelPurchaseOrdersRequest(this.completer, this.purchaseOrderIds);
final List<String> purchaseOrderIds; final List<String> purchaseOrderIds;
final Completer completer; final Completer completer;
} }
class CancelPurchaseOrderSuccess implements StopSaving { class CancelPurchaseOrderSuccess implements StopSaving {
CancelPurchaseOrderSuccess({this.purchaseOrders}); CancelPurchaseOrderSuccess(this.purchaseOrders);
final List<InvoiceEntity> purchaseOrders; final List<InvoiceEntity> purchaseOrders;
} }
@ -566,7 +566,7 @@ void handlePurchaseOrderAction(BuildContext context,
purchaseOrderIds)); purchaseOrderIds));
break; break;
case EntityAction.cancelInvoice: case EntityAction.cancelInvoice:
store.dispatch(CancelPurchaseOrders( store.dispatch(CancelPurchaseOrdersRequest(
snackBarCompleter<Null>( snackBarCompleter<Null>(
context, context,
purchaseOrders.length == 1 purchaseOrders.length == 1
@ -575,7 +575,7 @@ void handlePurchaseOrderAction(BuildContext context,
purchaseOrderIds)); purchaseOrderIds));
break; break;
case EntityAction.accept: case EntityAction.accept:
store.dispatch(AcceptPurchaseOrders( store.dispatch(AcceptPurchaseOrdersRequest(
snackBarCompleter<Null>( snackBarCompleter<Null>(
context, context,
purchaseOrders.length == 1 purchaseOrders.length == 1

View File

@ -37,6 +37,8 @@ List<Middleware<AppState>> createStorePurchaseOrdersMiddleware([
final emailPurchaseOrder = _emailPurchaseOrder(repository); final emailPurchaseOrder = _emailPurchaseOrder(repository);
final bulkEmailPurchaseOrders = _bulkEmailPurchaseOrders(repository); final bulkEmailPurchaseOrders = _bulkEmailPurchaseOrders(repository);
final markSentPurchaseOrder = _markSentPurchaseOrder(repository); final markSentPurchaseOrder = _markSentPurchaseOrder(repository);
final acceptPurchaseOrders = _acceptPurchaseOrders(repository);
final cancelPurchaseOrders = _cancelPurchaseOrders(repository);
final downloadPurchaseOrders = _downloadPurchaseOrders(repository); final downloadPurchaseOrders = _downloadPurchaseOrders(repository);
final saveDocument = _saveDocument(repository); final saveDocument = _saveDocument(repository);
@ -60,6 +62,10 @@ List<Middleware<AppState>> createStorePurchaseOrdersMiddleware([
bulkEmailPurchaseOrders), bulkEmailPurchaseOrders),
TypedMiddleware<AppState, MarkPurchaseOrdersSentRequest>( TypedMiddleware<AppState, MarkPurchaseOrdersSentRequest>(
markSentPurchaseOrder), markSentPurchaseOrder),
TypedMiddleware<AppState, AcceptPurchaseOrdersRequest>(
acceptPurchaseOrders),
TypedMiddleware<AppState, CancelPurchaseOrdersRequest>(
cancelPurchaseOrders),
TypedMiddleware<AppState, DownloadPurchaseOrdersRequest>( TypedMiddleware<AppState, DownloadPurchaseOrdersRequest>(
downloadPurchaseOrders), downloadPurchaseOrders),
TypedMiddleware<AppState, SavePurchaseOrderDocumentRequest>(saveDocument), TypedMiddleware<AppState, SavePurchaseOrderDocumentRequest>(saveDocument),
@ -274,6 +280,52 @@ Middleware<AppState> _markSentPurchaseOrder(
}; };
} }
Middleware<AppState> _acceptPurchaseOrders(PurchaseOrderRepository repository) {
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
final action = dynamicAction as AcceptPurchaseOrdersRequest;
repository
.bulkAction(store.state.credentials, action.purchaseOrderIds,
EntityAction.accept)
.then((purchaseOrders) {
store.dispatch(AcceptPurchaseOrderSuccess(purchaseOrders));
if (action.completer != null) {
action.completer.complete(null);
}
}).catchError((Object error) {
print(error);
store.dispatch(AcceptPurchaseOrderFailure(error));
if (action.completer != null) {
action.completer.completeError(error);
}
});
next(action);
};
}
Middleware<AppState> _cancelPurchaseOrders(PurchaseOrderRepository repository) {
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
final action = dynamicAction as CancelPurchaseOrdersRequest;
repository
.bulkAction(store.state.credentials, action.purchaseOrderIds,
EntityAction.cancel)
.then((purchaseOrders) {
store.dispatch(CancelPurchaseOrderSuccess(purchaseOrders));
if (action.completer != null) {
action.completer.complete(null);
}
}).catchError((Object error) {
print(error);
store.dispatch(CancelPurchaseOrderFailure(error));
if (action.completer != null) {
action.completer.completeError(error);
}
});
next(action);
};
}
Middleware<AppState> _emailPurchaseOrder(PurchaseOrderRepository repository) { Middleware<AppState> _emailPurchaseOrder(PurchaseOrderRepository repository) {
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) { return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
final action = dynamicAction as EmailPurchaseOrderRequest; final action = dynamicAction as EmailPurchaseOrderRequest;

View File

@ -27,6 +27,7 @@ class PurchaseOrderViewScreen extends StatelessWidget {
Key key, Key key,
this.isFilter = false, this.isFilter = false,
}) : super(key: key); }) : super(key: key);
final bool isFilter; final bool isFilter;
static const String route = '/purchase_order/view'; static const String route = '/purchase_order/view';