public void ForceCloseOrder(ForceCloseDetails order)
        { /* command modify Products, Order and OrderDeatails */
          // Validation

            List <Exception> errors = new List <Exception>();

            if (order == null)
            {
                throw new ArgumentNullException(nameof(order), $"No {nameof(ForceCloseDetails)} was supplied for an existing PO.");
            }
            else
            {
                if (order.Comment.Trim().Equals(null))
                {
                    throw new Exception("Please give a reason in the comment box for why the order is being closed.");
                }
            }


            using (var context = new eRaceContext())
            {
                var given = context.Orders.Find(order.OrderID);
                if (given == null)
                {
                    throw new ArgumentException($"The given order id of {order.OrderID} does not exist in the database.");
                }

                given.Comment = order.Comment;
                given.Closed  = true;

                var existingOrder = context.Entry(given);

                existingOrder.Property(nameof(given.Comment)).IsModified = true;
                existingOrder.Property(nameof(given.Closed)).IsModified  = true;

                foreach (var item in order.Items)
                {
                    var givenOrder   = context.OrderDetails.Find(item.ProductID);
                    var givenProduct = context.Products.Find(givenOrder.ProductID);

                    if (givenProduct == null)
                    {
                        throw new ArgumentException($"The given product id of {item.ProductID} does not exist in the database.");
                    }

                    givenProduct.QuantityOnOrder = givenProduct.QuantityOnOrder - item.QuantityOutstanding;

                    if (givenProduct.QuantityOnOrder < 0)
                    {
                        givenProduct.QuantityOnOrder = 0;
                    }

                    var existingProduct = context.Entry(givenProduct);

                    existingProduct.Property(nameof(givenProduct.QuantityOnOrder)).IsModified = true;
                }

                context.SaveChanges();
            }
        }
        public void Force_Closure(int orderid, string comment)
        {
            using (var context = new eRaceContext())
            {
                var ForceClosure = from x in context.OrderDetails
                                   where x.OrderID == orderid
                                   //select x;
                                   select x.OrderDetailID;

                //var OrderDetail = context.OrderDetails.Find(orderid);
                //var OrderDetailQuantity = OrderDetail.Quantity;

                //var results = (from x in context.ReceiveOrderItems
                //               where x.OrderDetail.OrderID == orderid
                //               select x.OrderDetailID).ToList();

                //foreach (var order in orderlist)
                //{
                //    var quantityzero = from x in context.OrderDetails
                //                       where
                //}

                var commitClosure = context.Orders.Find(orderid);
                commitClosure.Comment = comment;
                commitClosure.Closed  = true;

                context.Entry(commitClosure).State = EntityState.Modified;
                context.SaveChanges();
            }
        }
        public int Pay_ForCart(NewInvoice invoice)
        {
            using (var context = new eRaceContext())
            {
                Invoice newitem = new Invoice();
                newitem.EmployeeID  = invoice.EmployeeID;
                newitem.InvoiceDate = invoice.InvoiceDate;
                newitem.SubTotal    = invoice.Subtotal;
                newitem.GST         = invoice.GST;
                newitem.Total       = invoice.Total;

                newitem = context.Invoices.Add(newitem);


                InvoiceDetail newDetail = null;
                foreach (var item in invoice.NewDetails)
                {
                    newDetail           = new InvoiceDetail();
                    newDetail.ProductID = item.ProductID;
                    newDetail.Quantity  = item.Quantity;
                    newDetail.Price     = item.Price;
                    context.InvoiceDetails.Add(newDetail);

                    var product = (from x in context.Products
                                   where x.ProductID == item.ProductID
                                   select x).FirstOrDefault();
                    product.QuantityOnHand -= newDetail.Quantity;
                    context.Entry(product).Property(y => y.QuantityOnHand).IsModified = true;
                }

                return(context.SaveChanges());
            }
        }
Beispiel #4
0
        public void ClearButton_Shopping(int employeeid)
        {
            using (var context = new eRaceContext())
            {
                SalesCartItem exists = (from x in context.SalesCartItems
                                        .Where(x => x.EmployeeID.Equals(employeeid))
                                        select x).FirstOrDefault();

                var clearCart = context.SalesCartItems.Where(x => x.EmployeeID == employeeid).ToList();
                foreach (var item in clearCart)
                {
                    context.Entry(item).State = System.Data.Entity.EntityState.Deleted;
                }
                context.Entry(exists).State = System.Data.Entity.EntityState.Deleted;
                context.SaveChanges();
            }
        }
Beispiel #5
0
 public int Driver_Update(RaceDetail driver)
 {
     using (var context = new eRaceContext())
     {
         context.Entry(driver).State =
             System.Data.Entity.EntityState.Modified;
         return(context.SaveChanges());
     }
 }
        }//end of Delete_ProductItem

        public void Delete_Order(int OrderID)
        {
            using (var context = new eRaceContext())
            {
                OrderDetail exists = (from x in context.OrderDetails
                                      .Where(x => x.OrderID.Equals(OrderID))
                                      select x).FirstOrDefault();

                var findItem = context.OrderDetails.Where(x => x.OrderDetailID == OrderID).FirstOrDefault();
                context.Entry(findItem).State = System.Data.Entity.EntityState.Deleted;
                context.SaveChanges();
            }
        }//end of Delete_ProductItem
Beispiel #7
0
        }//end of Add_ItemToCart

        public void Delete_ProductItem(int employeeid, int productid)
        {
            using (var context = new eRaceContext())
            {
                SalesCartItem exists = (from x in context.SalesCartItems
                                        .Where(x => x.EmployeeID.Equals(employeeid) && x.ProductID.Equals(productid))
                                        select x).FirstOrDefault();

                var findItem = context.SalesCartItems.Where(x => x.ProductID == productid).FirstOrDefault();
                context.Entry(findItem).State = System.Data.Entity.EntityState.Deleted;
                context.SaveChanges();
            }
        }//end of Delete_ProductItem
 public void Quantity_Refresh(int orderDetailID, int quantity, decimal unitCost)
 {
     using (var context = new eRaceContext())
     {
         OrderDetail exists = (from x in context.OrderDetails
                               .Where(x => x.OrderDetailID.Equals(orderDetailID))
                               select x).FirstOrDefault();
         exists.OrderDetailID        = orderDetailID;
         exists.Quantity             = quantity;
         exists.Cost                 = unitCost;
         context.Entry(exists).State = System.Data.Entity.EntityState.Modified;
         context.SaveChanges();
     }
 }//End of Quantity_Refresh
        public void CreateRefund(RefundRequired request)
        {
            using (var context = new eRaceContext())
            {
                foreach (var item in request.RequiredInvoice)
                {
                    var newinvoice = new Invoice
                    {
                        EmployeeID  = item.EmployeeID,
                        InvoiceDate = item.InvoiceDate,
                        SubTotal    = item.SubTotal,
                        GST         = item.GST,
                        Total       = item.Total
                    };
                    context.Invoices.Add(newinvoice);
                }

                foreach (var item in request.ReuquiredDetail)
                {
                    var newdetail = new InvoiceDetail
                    {
                        ProductID = item.ProductID,
                        Quantity  = item.Quantity
                    };

                    var product = (from x in context.Products
                                   where x.ProductID == item.ProductID
                                   select x).FirstOrDefault();
                    product.QuantityOnHand += newdetail.Quantity;
                    context.Entry(product).Property(y => y.QuantityOnHand).IsModified = true;
                }


                foreach (var item in request.RequiredStore)
                {
                    var newstore = new StoreRefund
                    {
                        OriginalInvoiceID = item.OriginalInvoiceID,
                        ProductID         = item.ProductID,
                        Reason            = item.Reason,
                    };
                    context.StoreRefunds.Add(newstore);
                }
                context.SaveChanges();
            }
        }
Beispiel #10
0
        }//end of Delete_ProductItem

        public void Quantity_Refresh(int employeeid, int productid, int quantity)
        {
            using (var context = new eRaceContext())
            {
                SalesCartItem exists = (from x in context.SalesCartItems
                                        .Where(x => x.EmployeeID.Equals(employeeid) && x.ProductID.Equals(productid))
                                        select x).FirstOrDefault();



                exists.EmployeeID = employeeid;
                exists.ProductID  = productid;
                exists.Quantity   = quantity;

                context.Entry(exists).State = System.Data.Entity.EntityState.Modified;
                context.SaveChanges();
            }
        }//End of Quantity_Refresh
        public void PlaceOrder(UpdatedOrder item)
        {
            using (var context = new eRaceContext())
            {
                if (item.OrderID == 0)
                { // adding a new order
                    var order = new Order();

                    order.TaxGST    = item.Tax;
                    order.SubTotal  = item.SubTotal;
                    order.VendorID  = item.VendorID;
                    order.Comment   = item.VendorComment;
                    order.Closed    = false;
                    order.OrderDate = DateTime.Now;
                    var list = (from a in context.Orders
                                where a.OrderNumber != null
                                select a.OrderNumber);
                    order.OrderNumber = int.Parse(list.Max().ToString()) + 1;
                    order.EmployeeID  = 1;

                    context.Orders.Add(order);
                    foreach (var y in item.UpdatedOrderDetails)
                    {
                        var additem = new OrderDetail
                        {
                            ProductID     = y.ProductID,
                            Quantity      = y.OrderQty,
                            Cost          = y.UnitCost,
                            OrderUnitSize = y.UnitSize
                        };
                        var product = context.Products.Find(additem.ProductID);
                        product.QuantityOnOrder     += additem.Quantity * additem.OrderUnitSize;
                        context.Entry(product).State = System.Data.Entity.EntityState.Modified;
                        order.OrderDetails.Add(additem);
                    }
                    context.SaveChanges();
                }
                else // updating an pending order
                {
                    var order        = context.Orders.Find(item.OrderID);
                    var orderdetails = context.OrderDetails.Where(x => x.OrderID == order.OrderID).ToList();

                    order.OrderID   = item.OrderID;
                    order.TaxGST    = item.Tax;
                    order.SubTotal  = item.SubTotal;
                    order.VendorID  = item.VendorID;
                    order.Comment   = item.VendorComment;
                    order.Closed    = false;
                    order.OrderDate = DateTime.Now;
                    var list = (from a in context.Orders
                                where a.OrderNumber != null
                                select a.OrderNumber);
                    order.OrderNumber = int.Parse(list.Max().ToString()) + 1;
                    order.EmployeeID  = 1;

                    foreach (var a in orderdetails)
                    {
                        var existingitem = item.UpdatedOrderDetails.SingleOrDefault(x => x.ProductID == a.ProductID);

                        if (existingitem == null)
                        {
                            context.Entry(a).State = System.Data.Entity.EntityState.Deleted;
                        }
                        else
                        {
                            a.Cost                 = existingitem.UnitCost;
                            a.Quantity             = existingitem.OrderQty;
                            context.Entry(a).State = System.Data.Entity.EntityState.Modified;
                            var product = context.Products.Find(a.ProductID);
                            product.QuantityOnOrder     += existingitem.OrderQty * existingitem.UnitSize;
                            context.Entry(product).State = System.Data.Entity.EntityState.Modified;
                        }
                    }
                    foreach (var y in item.UpdatedOrderDetails)
                    {
                        var newproduct = !orderdetails.Any(x => x.ProductID == y.ProductID);
                        if (newproduct == true)
                        {
                            var additem = new OrderDetail
                            {
                                ProductID     = y.ProductID,
                                OrderID       = item.OrderID,
                                Quantity      = y.OrderQty,
                                Cost          = y.UnitCost,
                                OrderUnitSize = y.UnitSize
                            };
                            order.OrderDetails.Add(additem);
                            var product = context.Products.Find(additem.ProductID);
                            product.QuantityOnOrder     += additem.Quantity * additem.OrderUnitSize;
                            context.Entry(product).State = System.Data.Entity.EntityState.Modified;
                        }
                    }
                    context.Entry(order).State = System.Data.Entity.EntityState.Modified;
                    context.SaveChanges();
                }
            }
        }
        public void SaveOrder(UpdatedOrder item, int?EmployeeID)
        {
            using (var context = new eRaceContext())
            {
                if (item.OrderID == 0)   // adding a new order
                {
                    var order = new Order();

                    order.TaxGST      = item.Tax;
                    order.SubTotal    = item.SubTotal;
                    order.VendorID    = item.VendorID;
                    order.Comment     = item.VendorComment;
                    order.Closed      = false;
                    order.OrderDate   = null;
                    order.OrderNumber = null;
                    order.EmployeeID  = EmployeeID.Value;

                    context.Orders.Add(order);
                    foreach (var y in item.UpdatedOrderDetails)
                    {
                        var addskill = new OrderDetail
                        {
                            ProductID = y.ProductID,

                            Quantity      = y.OrderQty,
                            Cost          = y.UnitCost,
                            OrderUnitSize = y.UnitSize
                        };
                        order.OrderDetails.Add(addskill);
                    }
                    context.SaveChanges();
                }
                else // updating an existing order
                {
                    var order        = context.Orders.Find(item.OrderID);
                    var orderdetails = context.OrderDetails.Where(x => x.OrderID == order.OrderID).ToList();

                    order.OrderID     = item.OrderID;
                    order.TaxGST      = item.Tax;
                    order.SubTotal    = item.SubTotal;
                    order.VendorID    = item.VendorID;
                    order.Comment     = item.VendorComment;
                    order.Closed      = false;
                    order.OrderDate   = null;
                    order.OrderNumber = null;
                    order.EmployeeID  = 1;

                    foreach (var a in orderdetails)
                    {
                        var existingitem = item.UpdatedOrderDetails.SingleOrDefault(x => x.ProductID == a.ProductID);
                        if (existingitem == null)
                        {
                            context.Entry(a).State = System.Data.Entity.EntityState.Deleted;
                        }
                        else
                        {
                            a.Cost                 = existingitem.UnitCost;
                            a.Quantity             = existingitem.OrderQty;
                            context.Entry(a).State = System.Data.Entity.EntityState.Modified;
                        }
                    }
                    foreach (var y in item.UpdatedOrderDetails)
                    {
                        var newproduct = !orderdetails.Any(x => x.ProductID == y.ProductID);
                        if (newproduct == true)
                        {
                            var addskill = new OrderDetail
                            {
                                ProductID     = y.ProductID,
                                OrderID       = item.OrderID,
                                Quantity      = y.OrderQty,
                                Cost          = y.UnitCost,
                                OrderUnitSize = y.UnitSize
                            };
                            order.OrderDetails.Add(addskill);
                        }
                    }
                    context.Entry(order).State = System.Data.Entity.EntityState.Modified;
                    context.SaveChanges();
                }
            }
        }
        public void ReceiveShimpmentOrder(ReceivedOrderDetails order)
        { /* command modify Products, ReceiveOrders, ReceiveOrderItems and ReturnOrderItems */
            List <Exception> errors = new List <Exception>();

            using (var context = new eRaceContext())
            {
                var existing = context.Orders.Find(order.OrderID);

                if (order == null)
                {
                    errors.Add(new ArgumentNullException(nameof(order), $"No {nameof(order)} was supplied for "));
                }
                else
                {
                    if (existing.Closed == true)
                    {
                        errors.Add(new BusinessRuleException <bool>("The order you are accessing is already closed.", nameof(existing.Closed), existing.Closed));
                    }
                    if (order.OrderID == 0)
                    {
                        errors.Add(new BusinessRuleException <int>("The OrderID is required.", nameof(order.OrderID), order.OrderID));
                    }
                    if (order.ReceivedOrder.OrderID == 0)
                    {
                        errors.Add(new BusinessRuleException <int>("The OrderID is required.", nameof(order.ReceivedOrder.OrderID), order.ReceivedOrder.OrderID));
                    }
                    if (order.ReceivedOrder.EmployeeID == 0)
                    {
                        errors.Add(new BusinessRuleException <int>("The Employee ID is required.", nameof(order.ReceivedOrder.EmployeeID), order.ReceivedOrder.EmployeeID));
                    }

                    foreach (var item in order.ReceiveOrderItems)
                    {
                        var existingOrderDetail = context.OrderDetails.Find(item.OrderDetailID);
                        var itemsize            = context.OrderDetails.Find(item.OrderDetailID).OrderUnitSize;
                        if (existingOrderDetail == null)
                        {
                            errors.Add(new ArgumentNullException(nameof(item.OrderDetailID), $"There is no Order Detail with the ID given."));
                        }
                        if (item.ItemQuantity < 1)
                        {
                            errors.Add(new BusinessRuleException <int>("The item quantity must be greater than 0", nameof(item.ItemQuantity), item.ItemQuantity));
                        }
                        if (item.ItemQuantity / itemsize >= context.OrderDetails.Find(item.OrderDetailID).Quantity + 1)
                        {
                            errors.Add(new BusinessRuleException <int>("The total amount received cannot exceed the amount ordered by 1 package.", nameof(item.ItemQuantity), item.ItemQuantity));
                        }
                    }

                    foreach (var item in order.Products)
                    {
                        if (item.QuantityReceived < 1)
                        {
                            errors.Add(new BusinessRuleException <int>("The number of received items must be postive. ", nameof(item.QuantityReceived), item.QuantityReceived));
                        }
                    }

                    foreach (var item in order.ReturnOrderItems)
                    {
                        if (item.ItemQuantity < 1)
                        {
                            errors.Add(new BusinessRuleException <int>("The number of returned items is required.", nameof(item.ItemQuantity), item.ItemQuantity));
                        }
                    }
                }

                if (errors.Any())
                {
                    throw new BusinessRuleCollectionException("Unable to receive shipment.", errors);
                }

                // ReceiveOrder
                var newReceiveOrder = new ReceiveOrder
                {
                    OrderID     = order.ReceivedOrder.OrderID,
                    ReceiveDate = order.ReceivedOrder.ReceiveDate,
                    EmployeeID  = order.ReceivedOrder.EmployeeID
                };
                context.ReceiveOrders.Add(newReceiveOrder);

                int id = newReceiveOrder.ReceiveOrderID;


                // ReceiveOrderItems
                foreach (var item in order.ReceiveOrderItems)
                {
                    var newReceiveOrderItem = new ReceiveOrderItem
                    {
                        ReceiveOrderID = id,
                        OrderDetailID  = item.OrderDetailID,
                        ItemQuantity   = item.ItemQuantity
                    };
                    context.ReceiveOrderItems.Add(newReceiveOrderItem);
                }

                // ReturnOrderItems
                foreach (var item in order.ReturnOrderItems)
                {
                    var newReturnOrderItem = new ReturnOrderItem
                    {
                        ReceiveOrderID  = id,
                        OrderDetailID   = item.OrderDetailID,
                        ItemQuantity    = item.ItemQuantity,
                        Comment         = item.Comment,
                        UnOrderedItem   = item.UnOrderedItem,
                        VendorProductID = item.VendorProductID
                    };
                    context.ReturnOrderItems.Add(newReturnOrderItem);
                }

                // Products
                foreach (var item in order.Products)
                {
                    var given = context.Products.Find(context.OrderDetails.Find(item.ProductID).ProductID);

                    if (given == null)
                    {
                        throw new ArgumentException($"The given product id of {item.ProductID} does not exist in the database.", nameof(item.ProductID));
                    }

                    given.QuantityOnHand  = given.QuantityOnHand + item.QuantityReceived;
                    given.QuantityOnOrder = given.QuantityOnOrder - item.QuantityReceived;

                    if (given.QuantityOnOrder < 0)
                    {
                        given.QuantityOnOrder = 0;
                    }

                    var existingProduct = context.Entry(given);

                    existingProduct.Property(nameof(given.QuantityOnHand)).IsModified  = true;
                    existingProduct.Property(nameof(given.QuantityOnOrder)).IsModified = true;
                }

                // Check if the order has been filled
                var outstanding = context.Orders.Find(order.OrderID).OrderDetails;
                var num         = 0;
                foreach (var item in outstanding)
                {
                    if (context.OrderDetails.Find(item.OrderDetailID).Quantity *context.OrderDetails.Find(item.OrderDetailID).OrderUnitSize - (context.OrderDetails.Find(item.OrderDetailID).ReceiveOrderItems.Select(x => x.ItemQuantity)).FirstOrDefault() == 0)
                    {
                        num++;
                    }
                }
                if (num == outstanding.Count)
                {
                    var givenOrder = context.Orders.Find(order.OrderID);

                    givenOrder.Closed  = true;
                    givenOrder.Comment = "Order Complete";

                    var existingOrder = context.Entry(givenOrder);

                    existingOrder.Property(nameof(givenOrder.Comment)).IsModified = true;
                    existingOrder.Property(nameof(givenOrder.Closed)).IsModified  = true;
                }

                context.SaveChanges();
            }
        }
Beispiel #14
0
        public void ReceivingShipment(int orderid, List <OrderList> orderlist)
        {
            using (var context = new eRaceContext())
            {
                var editorderid = context.OrderDetails.Find(orderid);

                // Form to Database
                foreach (var receive in orderlist)
                {
                    #region Added QuantityOnOrder And QuantityOnHand
                    var ReceiveItem = (from x in context.OrderDetails
                                       where x.ProductID == receive.ProductID
                                       select x).FirstOrDefault();
                    var quantityonhand = (from x in context.Products
                                          where x.ProductID == receive.ProductID
                                          select x.QuantityOnHand).FirstOrDefault();
                    ReceiveItem.Product.QuantityOnHand = quantityonhand + ((receive.ReceivedUnits * ReceiveItem.OrderUnitSize) + receive.SalvagedItems);
                    var quantityonorder = (from x in context.Products
                                           where x.ProductID == receive.ProductID
                                           select x.QuantityOnOrder).FirstOrDefault();
                    ReceiveItem.Product.QuantityOnOrder = quantityonorder - ((receive.ReceivedUnits * ReceiveItem.OrderUnitSize) + receive.SalvagedItems);
                    #endregion

                    #region Added ReturnOrderItems For Rejected Units and Reason
                    if (receive.RejectedUnits > 0 && receive.Reason != null)
                    {
                        //var newreturnorderitem = context.ReturnOrderItems.Add(new ReturnOrderItem());

                        //newreturnorderitem.OrderDetailID = ReceiveItem.OrderDetailID;
                        //newreturnorderitem.ItemQuantity = receive.RejectedUnits;
                        //newreturnorderitem.Comment = receive.Reason;
                    }
                    #endregion

                    #region Adding RecieveOrderItems
                    var newrecieveorderitems = context.ReceiveOrderItems.Add(new ReceiveOrderItem());

                    var receiveorderid = (from x in context.ReceiveOrders
                                          where x.OrderID == orderid
                                          select x.ReceiveOrderID).FirstOrDefault();

                    newrecieveorderitems.ReceiveOrderID = receiveorderid;
                    newrecieveorderitems.OrderDetailID  = ReceiveItem.OrderDetailID;
                    newrecieveorderitems.ItemQuantity   = (receive.ReceivedUnits * ReceiveItem.OrderUnitSize) + receive.SalvagedItems;
                    #endregion

                    #region Checking If All QuantityOutstanding = 0 To Close Form
                    // intialize a variable to count the quantity outstanding to determine the if it would be zero or collect the quantity on order count
                    //if (quantityoutstanding.Count = 0)
                    //{
                    //    var closeorder = context.Orders.Find(editorderid);
                    //    closeorder.Closed = true;
                    //}
                    #endregion

                    context.Entry(ReceiveItem).State = EntityState.Modified;
                }

                // ListView To Database
                //for (int p = 0; p < UnorderedItemsListView.Items.Count; p++)
                //{
                #region Add New UnOrderedItems to Database
                //var newunordereditems = context.ReturnOrderItems.Add(new ReturnOrderItem());

                //newunordereditems.OrderDetailID =
                //newunordereditems.ItemQuantity =
                //newunordereditems.VendorProductID =
                #endregion
                //}

                context.SaveChanges();
            }
        }