private static void AddSalesOrderHeader(SalesOrder order, SPList salesOrderList)
 {
     var salesOrder = salesOrderList.AddItem();
     salesOrder["Title"] = order.Customer.Name + "_" + order.OrderDate.ToString("yyyy-MM-dd");
     salesOrder["OrderDate"] = order.OrderDate;
     salesOrder["Status"] = order.Status.ToString();
     salesOrder["Customer"] = order.Customer.CustomerId;
     salesOrder.Update();
 }
        private static void GetOrderLines(SPList orderLineList, SalesOrder salesOrder)
        {
            var lineQuery = new SPQuery();
            lineQuery.Query = "<Where><Eq><FieldRef Name='SalesOrder' LookupId='TRUE' /><Value Type='Lookup' >" + salesOrder.SalesOrderId + "</Value></Eq></Where>";
            var orderLines = orderLineList.GetItems(lineQuery);

            foreach (SPListItem line in orderLines)
            {
                salesOrder.Lines.Add(new OrderLine { Product = line.Title, Price = (double)line["Price"], Quantity = Convert.ToInt32(line["Quantity"]) });
            }
        }
        public void Add(SalesOrder order)
        {
            var web = SPContext.Current.Web;
            var salesOrderList = web.Lists[SalesOrderListName];
            var orderLineList = web.Lists[OrderLinesListName];

            AddSalesOrderHeader(order, salesOrderList);

            foreach (var line in order.Lines)
            {
                AddOrderLine(orderLineList, line);
            }
        }
        public void CanCreateSalesOrder()
        {
            using (var context = new SPEmulationContext(Settings.Default.IsolationLevel, Settings.Default.Url))
            {
                var salesOrderList = context.GetOrCreateList(
                    SalesOrderListRepository.SalesOrderListName,
                    SPListTemplateType.GenericList,
                    "OrderDate", "Customer", "Status");

                var orderLinesList = context.GetOrCreateList(
                    SalesOrderListRepository.OrderLinesListName,
                    SPListTemplateType.GenericList,
                    "SalesOrder", "Price", "Quantity");

                var repository = new SalesOrderListRepository();

                var customer = new Customer
                {
                    CustomerId = 2,
                    Name = "Customer 2"
                };

                var order = new SalesOrder
                {
                    SalesOrderId = 0,
                    Customer = customer,
                    OrderDate = DateTime.Today,
                    Status = OrderStatus.New
                };


                order.Lines.Add(new OrderLine
                {
                    Product = "Product 1",
                    Quantity = 5,
                    Price = 5.5
                });

                order.Lines.Add(new OrderLine
                {
                    Product = "Product 2",
                    Quantity = 2,
                    Price = 106.5
                });

                int salesOrderCount = salesOrderList.ItemCount;
                int orderLineCount = orderLinesList.ItemCount;

                repository.Add(order);

                Assert.AreEqual<int>(salesOrderCount + 1, salesOrderList.Items.Count);
                Assert.AreEqual<int>(orderLineCount + 2, orderLinesList.Items.Count);
            }
        }
 public void Add(SalesOrder order)
 {
     salesOrders.Add(order);
 }