/// <summary> /// Adds a Receive Order to the database /// </summary> private void SubmitReceiveOrder() { // Stores information in a ReceivingItems instance List <ReceivingItems> receivingItems = new List <ReceivingItems>(); receivingItems = currentItemsList; foreach (var item in receivingItems) { item.PurchaseOrderID = currentOrderId; } // Submits information ReceivingController controller = new ReceivingController(); controller.ReceiveOrder(currentOrderId, receivingItems); ClearAndRefreshPage(); }
protected void ReceiveOrder_Click(object sender, EventArgs e) { string sccssDetail = "Order Received."; MessageUserControl.TryRun(() => { try { PurchaseOrderProcessed order = new PurchaseOrderProcessed(); order.POid = Convert.ToInt32((PurchaseOrderDetailsGridView.Rows[0].FindControl("POid") as HiddenField).Value); List <ReceivedPODetail> detailList = new List <ReceivedPODetail>(); foreach (GridViewRow row in PurchaseOrderDetailsGridView.Rows) { // Unpack GridViewRow: var receivingAmount = Convert.ToInt32((row.Cells[4].Controls[1] as TextBox).Text); var qtyOutstanding = Convert.ToInt32((row.Cells[3].Controls[1] as Label).Text); if (receivingAmount > qtyOutstanding) { throw new Exception("Quantity receiving cannot be be greater then quantity outstanding."); } var returnAmount = Convert.ToInt32((row.Cells[5].Controls[1] as TextBox).Text); var returnReason = (row.Cells[6].Controls[1] as TextBox).Text; if (returnAmount > 0 && returnReason == "") { throw new Exception("Must provide reason for each item returned."); } var partID = Convert.ToInt32((row.Cells[0].Controls[1] as Label).Text); var poDetailID = Convert.ToInt32((row.FindControl("PODetailID") as HiddenField).Value); var POid = Convert.ToInt32((row.FindControl("POid") as HiddenField).Value); if (receivingAmount > 0 || returnAmount > 0) { // collect the data to be sent to BLL ReceivedPODetail data = new ReceivedPODetail { POid = POid, PODetailID = poDetailID, PartID = partID, QtyReceiving = receivingAmount, QtyReturning = returnAmount, ReturnReason = returnReason }; detailList.Add(data); } } // Check what button sent the request and check for item count for processing var button = ((LinkButton)sender).ID; if (detailList.Count == 0 && button == "ReceiveOrder" && UnorderedCart.Items.Count == 0) { throw new Exception("No items received in the order."); } order.receivedDetails = detailList; var controller = new ReceivingController(); bool closed = controller.ReceiveOrder(order); // Refresh GridView and ListView update after receive. var orderDetails = controller.GetPurchaseOrderDetails(order.POid); PurchaseOrderDetailsGridView.DataSource = orderDetails; PurchaseOrderDetailsGridView.DataBind(); UnorderedCart.DataBind(); // If order is closed refresh hide Order Details and refresh Order Panel. if (closed) { OrderPanel.Visible = false; OrderPanel.Enabled = false; OutstandingOrderGridView.DataBind(); sccssDetail = "Order Fulfilled and closed."; } } catch (FormatException) { throw new Exception("Returning and Receiving must be digits. If non returned / received enter 0."); } }, "Success", sccssDetail); }