public async Task <ActionResult> CancelPO(PurchaseOrderCancelVM vm)
        {
            var purchaseOrder = await FindAsyncPurchaseOrder(vm.Id);

            if (purchaseOrder == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.NotFound));
            }

            if (!string.IsNullOrEmpty(vm.CancellationReason) && vm.Cancelled)
            {
                purchaseOrder.CancellationReason = vm.CancellationReason;
                CancelCancellation(purchaseOrder);
                foreach (var item in purchaseOrder.Processes)
                {
                    item.CancellationReason = vm.CancellationReason;
                    CancelCancellation(item);
                }
                await DataContext.SaveChangesAsync(this);

                return(RedirectToAction("Details", new { id = purchaseOrder.Id }));
            }
            var poVM = new PurchaseOrderCancelVM(purchaseOrder);

            return(View(poVM));
        }
        public async Task <ActionResult> CancelPO(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var purchaseOrder = await FindAsyncPurchaseOrder(id.Value);

            if (purchaseOrder == null)
            {
                return(HttpNotFound());
            }

            if (purchaseOrder.Cancelled)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var purchaseOrderVM = new PurchaseOrderCancelVM(purchaseOrder);

            await PutCanUserInViewBag();

            return(View(purchaseOrderVM));
        }