public async Task <ActionResult> Post(DeliverOrderViewModel model)
        {
            model.OrderId = await GetDeliveryId(model.OrderId);
            await SendCommandAsync <DeliverOrder>(model);

            return(Accepted());
        }
        public DeliverOrderViewModel DeliveryOrderEntryPreparation(string PONumber)
        {
            PurchaseOrder purchaseOrder = db.PurchaseOrders.Find(PONumber);
            List <PurchaseOrderDetail> purchaseOrderDetails = db.PurchaseOrderDetails.Where(x => x.poId == PONumber).ToList <PurchaseOrderDetail>();
            DeliverOrderViewModel      dovm = new DeliverOrderViewModel();

            dovm.dovmdList = new List <DeliverOrderViewModelDetail>();
            int totaldeliveredQty = 0;

            foreach (PurchaseOrderDetail pod in purchaseOrderDetails)
            {
                DeliverOrderViewModelDetail dovmd = new DeliverOrderViewModelDetail();
                // Marking fulfilled item for tracking
                totaldeliveredQty = CheckItemTotalDeliveredQty(pod.itemId, pod.poId);
                if (totaldeliveredQty >= pod.quantity)
                {
                    dovmd.remark    = "Fulfilled";
                    dovmd.IsMatched = true;
                }
                else
                {
                    dovmd.remark    = null;
                    dovmd.IsMatched = false;
                }
                dovmd.podID = pod.id;

                dovmd.itemNumber      = pod.itemId;
                dovmd.itemDescription = db.Catalogues.Find(pod.itemId).description;
                dovmd.itemUOM         = db.Catalogues.Find(pod.itemId).unitOfMeasure;
                if (dovmd.itemUOM != "Dozen" || dovmd.itemUOM != "Each")
                {
                    dovmd.itemUOM = dovmd.itemUOM + " of " + db.Catalogues.Find(pod.itemId).quantityInUnit;
                }
                dovmd.purchaseQty = pod.quantity;
                dovmd.deliverQty  = pod.quantity;
                dovm.dovmdList.Add(dovmd);
            }
            dovm.poNumber    = PONumber;
            dovm.orderRemark = purchaseOrder.remark;
            dovm.supplierID  = purchaseOrder.supplierId;
            dovm.clerkID     = purchaseOrder.storeClerk;
            dovm.orderDate   = purchaseOrder.orderDate;

            return(dovm);
        }
        public void DeliveryConfirmation(DeliverOrderViewModel dovm)
        {
            PurchaseOrder purchaseOrder = db.PurchaseOrders.Find(dovm.poNumber);

            purchaseOrder.remark = dovm.status;
            DeliveryOrder deliveryOrder = new DeliveryOrder();

            deliveryOrder.doId         = dovm.doNumber;
            deliveryOrder.poId         = dovm.poNumber;
            deliveryOrder.deliveryDate = dovm.doDate;
            deliveryOrder.remark       = dovm.deliverRemark;
            db.DeliveryOrders.Add(deliveryOrder);
            foreach (DeliverOrderViewModelDetail x in dovm.dovmdList)
            {
                DeliveryOrderDetail dod = new DeliveryOrderDetail();
                dod.doId     = dovm.doNumber;
                dod.itemId   = x.itemNumber;
                dod.quantity = x.deliverQty;
                db.DeliveryOrderDetails.Add(dod);
            }
            db.SaveChangesAsync();
        }
        public DeliverOrderViewModel DeliverOrderMatching(DeliverOrderViewModel dovm)
        {
            foreach (DeliverOrderViewModelDetail x in dovm.dovmdList)
            {
                if (x.purchaseQty == x.deliverQty)
                {
                    x.IsMatched = true;
                    x.remark    = "Complete";
                }
                else if (x.purchaseQty < x.deliverQty)
                {
                    x.IsMatched = true;
                    x.remark    = "Over";
                }
                else
                {
                    x.IsMatched = false;
                    x.remark    = "Shortage";
                }
            }
            if (dovm.dovmdList.Where(x => x.IsMatched == false).Any())
            {
                if (dovm.status == "Pending")
                {
                    dovm.status = "Partial Fulfillment by Deliver Order :" + dovm.doNumber;
                }
                else
                {
                    dovm.status = dovm.status + " , Partial Fulfillment by Deliver Order :" + dovm.doNumber;
                }
                if (dovm.deliverRemark != null)
                {
                    dovm.deliverRemark = dovm.deliverRemark + " , Partial Fulfillment by Deliver Order :" + dovm.doNumber;
                }
                else
                {
                    dovm.deliverRemark = "Partial Fulfillment by Deliver Order :" + dovm.doNumber;
                }
            }
            else
            {
                if (dovm.status == "Pending")
                {
                    dovm.status = "Fulfilled by Deliver Order :" + dovm.doNumber;
                }
                else
                {
                    dovm.status = dovm.status + " , Fulfilled by Deliver Order :" + dovm.doNumber;
                }

                if (dovm.deliverRemark != null)
                {
                    dovm.deliverRemark = dovm.deliverRemark + " , Completed by Deliver Order :" + dovm.doNumber;
                }
                else
                {
                    dovm.deliverRemark = "Completed by Deliver Order :" + dovm.doNumber;
                }
            }
            return(dovm);
        }
 public ActionResult DeliveryOrderEntrySubmission(DeliverOrderViewModel dovm)
 {
     dovm = deliverBizLogic.DeliverOrderMatching(dovm);
     deliverBizLogic.DeliveryConfirmation(dovm);
     return(RedirectToAction("PurchaseOrderList", "Purchase"));
 }
 public ActionResult DeliveryOrderEntryConfirm(DeliverOrderViewModel dovm)
 {
     return(View(dovm));
 }
        public ActionResult DeliveryOrderEntry(string PONumber)
        {
            DeliverOrderViewModel dovm = deliverBizLogic.DeliveryOrderEntryPreparation(PONumber);

            return(View(dovm));
        }