public ActionResult Create(SalesOrder salesorder)
        {
            if (ModelState.IsValid)
            {
                db.SalesOrders.Add(salesorder);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(salesorder);
        }
 public virtual SalesOrder_CreateOutput Create(SalesOrder_CreateInput _data)
 {
     SalesOrder_CreateOutput res = new SalesOrder_CreateOutput();
     using (AdventureWorksEntities ctx = new AdventureWorksEntities())
     {
         EntityState state = EntityState.Added;
         SalesOrder obj = new SalesOrder();
         var entry = ctx.Entry(obj);
         entry.State = state;
         entry.CurrentValues.SetValues(_data);
         // CUSTOM_CODE_START: use the Customer input parameter of Create operation below
         UpdateCustomer(ctx, obj, _data.Customer); // CUSTOM_CODE_END
         // CUSTOM_CODE_START: use the Payment input parameter of Create operation below
         UpdatePayment(ctx, obj, _data.Payment); // CUSTOM_CODE_END
         // CUSTOM_CODE_START: use the Sales input parameter of Create operation below
         UpdateSales(ctx, obj, _data.Sales); // CUSTOM_CODE_END
         // CUSTOM_CODE_START: add custom code for Create operation below
         obj.OrderDate = DateTime.Now;
         obj.ModifiedDate = DateTime.Now;
         // CUSTOM_CODE_END
         ErrorList.Current.AbortIfHasErrors(HttpStatusCode.BadRequest);
         ctx.SaveChanges();
         ServiceUtil.CopyProperties(obj, res);
     }
     return res;
 }
        public override SalesOrder HandleOrder(SalesOrder salesOrder)
        {
            salesOrder.OrderNumber = DateTime.Now.ToString("yyyyMMddHHmmss");
            Console.WriteLine("Order #{0} stored in SOP system", salesOrder.OrderNumber);

            return GetOrderOrNextStepResult(salesOrder);
        }
 // add methods that can be used in the inline custom code of the generated service
 protected CustomerInfo GetCustomerInfo(SalesOrder obj)
 {
     CustomerInfo res = new CustomerInfo();
     if (obj.CustomerIdObject != null)
     {
         res.CustomerId = obj.CustomerIdObject.CustomerId;
         res.AccountNumber = obj.CustomerIdObject.AccountNumber;
         res.PersonId = obj.CustomerIdObject.PersonIdObject == null ? null :
                  (int?)obj.CustomerIdObject.PersonIdObject.BusinessEntityId;
         res.PersonName = obj.CustomerIdObject.PersonIdObject == null ? null :
                          obj.CustomerIdObject.PersonIdObject.LastName + ", " +
                          obj.CustomerIdObject.PersonIdObject.FirstName;
         res.StoreId = obj.CustomerIdObject.StoreIdObject == null ? null :
                 (int?)obj.CustomerIdObject.StoreIdObject.BusinessEntityId;
         res.StoreName = obj.CustomerIdObject.StoreIdObject == null ? null :
                         obj.CustomerIdObject.StoreIdObject.Name;
         res.TerritoryId = obj.CustomerIdObject.TerritoryIdObject == null ? null :
                     (int?)obj.CustomerIdObject.TerritoryIdObject.TerritoryId;
     };
     if (obj.BillToAddressIdObject != null)
         res.BillingAddress = new AddressKey { AddressId = obj.BillToAddressIdObject.AddressId };
     if (obj.ShipToAddressIdObject != null)
         res.ShippingAddress = new AddressKey { AddressId = obj.ShipToAddressIdObject.AddressId };
     return res;
 }
Esempio n. 5
0
        public void Can_Add_OrderLine()
        {
            var purchaseOrderSut = new SalesOrder();

            purchaseOrderSut.AddOrderLine(new OrderLineStubifier().StubIt());

            Assert.AreEqual(1, purchaseOrderSut.OrderLineCount());
        }
 public override SalesOrder HandleOrder(SalesOrder order)
 {
     if (!order.IsSoftwareProduct)
     {
         Console.WriteLine("Product {0} allocated in SOP system", order.ProductCode);
     }
     return GetOrderOrNextStepResult(order);
 }
 public override SalesOrder HandleOrder(SalesOrder order)
 {
     if (order.IsSoftwareProduct)
     {
         Console.WriteLine("Download link sent to {0}", order.CustomerEmail);
     }
     return GetOrderOrNextStepResult(order);
 }
        //
        // GET: /SalesOrderAdmin/Create
        public ActionResult Create()
        {
            SalesOrder salesorder = new SalesOrder();
            salesorder.SODate = DateTime.Now;
            salesorder.ShipDate = DateTime.Now;
            salesorder.PaymentDate = DateTime.Now;

            return View(salesorder);
        }
        public void Can_Print_Order_With_OrderLines()
        {
            var purchaseOrder = new SalesOrder();
            purchaseOrder.AddOrderLine(new OrderLineStubifier().StubIt());

            var outPuts = new SalesOrderPrinter(purchaseOrder).Print();

            Assert.AreEqual(3, outPuts.Count);
        }
Esempio n. 10
0
        public void Can_Get_TotalAfterTaxAmount()
        {
            var purchaseOrderSut = new SalesOrder();
            purchaseOrderSut.AddOrderLine(new OrderLineStubifier().GivenAfterTaxAmount(25m).StubIt());
            purchaseOrderSut.AddOrderLine(new OrderLineStubifier().GivenAfterTaxAmount(15m).StubIt());

            var totalAfterTaxAmount = purchaseOrderSut.TotalAfterTaxAmount();

            Assert.AreEqual(25m + 15m, totalAfterTaxAmount);
        }
Esempio n. 11
0
        public void Can_Get_TotalTax()
        {
            var purchaseOrderSut = new SalesOrder();
            purchaseOrderSut.AddOrderLine(new OrderLineStubifier().GivenTax(5m).StubIt());
            purchaseOrderSut.AddOrderLine(new OrderLineStubifier().GivenTax(1m).StubIt());

            var totalTax = purchaseOrderSut.TotalTax();

            Assert.AreEqual(5m + 1m, totalTax);
        }
Esempio n. 12
0
        public void Can_Print_Empty_Order()
        {
            var purchaseOrder = new SalesOrder();

            var outPuts = new SalesOrderPrinter(purchaseOrder).Print();

            Assert.AreEqual(2, outPuts.Count);
            Assert.AreEqual(string.Format("{0}{1}0.00", PrinterConst.SALES_TAXES, PrinterConst.COLON), outPuts[0]);
            Assert.AreEqual(string.Format("{0}{1}0.00", PrinterConst.TOTAL, PrinterConst.COLON), outPuts[1]);
        }
 protected SalesInfo GetSalesInfo(SalesOrder obj)
 {
     SalesInfo res = new SalesInfo();
     if (obj.SalesPersonIdObject != null)
         res.SalesPersonId = obj.SalesPersonIdObject.BusinessEntityId;
     if (obj.TerritoryIdObject != null)
         res.TerritoryId = obj.TerritoryIdObject.TerritoryId;
     // select a list of sales reason IDs from the child list
     res.SalesReason = obj.ReasonObjectList.Select(r => r.SalesReasonId).ToList();
     return res;
 }
Esempio n. 14
0
        private SalesOrder PrepareSalesOrder(Product product)
        {
            var output = new SalesOrder
            {
                ApplyTaxes = true,
                CustomerOrderReference = "P1234",
                RequestedShippingDate = DateTime.Now,
                PaymentType = Constants.CVs.PaymentType.Values.BankTransfer,
                ShipmentType = Constants.CVs.ShippingType.Values.Post,
                OrderOrigin = Constants.CVs.OrderOrigin.Values.Manual,
                TermsOfTrade = Constants.CVs.TermsofTrade.Values.Immediate,
                SalesOrderLines = new List<SalesOrderLine>()
                {
                    new SalesOrderLine()
                        {
                            ProductID = product.ProductID,
                            Quantity = 5,
                            SellPrice = 1.00M,
                            SellPriceExTax = 1.00M,
                            SellPriceIncTax = 1.15M,
                            TaxCode = "GST"
                        }
                },
                Customer = new Customer()
                {
                    FirstName = "Joe",
                    LastName = "Bloggs",
                    Email = "*****@*****.**",
                    PhoneNumber = "021-896-435"
                },
                BillingAddress = new Address()
                {
                    AddressLine1 = "567 Lunar Crescent",
                    AddressLine2 = "Burnside",
                    TownCity = "Christchurch",
                    PostalCode = "8054",
                    RegionState = Constants.CVs.RegionsandStates.Values.Canterbury,
                    Country = Constants.CVs.Country.Values.NewZealand
                },
                ShippingAddress = new Address()
                {
                    AddressLine1 = "Warehouse 67",
                    AddressLine2 = "Parnell",
                    TownCity = "Auckland",
                    PostalCode = "5654",
                    RegionState = Constants.CVs.RegionsandStates.Values.Auckland,
                    Country = Constants.CVs.Country.Values.NewZealand
                }
            };

            return output;
        }
        public void InitialisingOrderShouldWork()
        {
            // Arrange
            var order = new SalesOrder();

            // Act
            order.Initialise(new Id(1), new Id(2), SalesOrderStatus.New);

            // Assert
            Assert.AreEqual(1, order.Id.Value);
            Assert.AreEqual(2, order.CustomerId.Value);
            Assert.AreEqual(SalesOrderStatus.New, order.Status);
        }
Esempio n. 16
0
        public ErrorCode Create(string companyId, string qty, string premium, string price, string stockId,string commodityId, string pricingType)
        {
            try
            {
            decimal? quantity = 0;
            decimal? premiumResult = 0;
            decimal? priceResult = 0;
            if (!string.IsNullOrEmpty(qty))
            {
                quantity = Convert.ToDecimal(qty);
            }
            if (!string.IsNullOrEmpty(premium))
            {
                premiumResult = Convert.ToDecimal(premium);
            }
            if (!string.IsNullOrEmpty(price))
            {
                priceResult = Convert.ToDecimal(price);
            }

            var tradeManagement = new SalesOrder { CompanyId = Convert.ToInt32(companyId), Quantity = quantity.Value, StockId = Convert.ToInt32(stockId), Date = DateTime.Now, Premium = premiumResult, Price = priceResult, PricingType = Convert.ToInt32(pricingType), Status = (int)SalesOrderStatus.OrderConfirmed };

            var stockDal = new StockDAL();
            var stock = stockDal.GetById(Convert.ToInt32(stockId), null);
            var commDal = new CommodityDAL();
            var commodity = commDal.GetById(Convert.ToInt32(commodityId),null);
            if(quantity > stock.AvailableQty)
            {
                return ErrorCode.QtyNotEnough;
            }
            if(quantity % stock.BuyUnit != 0)
            {
                return ErrorCode.NotInteger;
            }
            if(!commodity.IsOpen)
            {
                return ErrorCode.CommodityNotOpen;
            }

            TradeManagementDal.Create(tradeManagement);
            stock.AvailableQty = stock.AvailableQty - tradeManagement.Quantity;
            stockDal.Update(stock);
            return ErrorCode.NoError;
            }
            catch (Exception)
            {
                return ErrorCode.ServerError;
            }
        }
Esempio n. 17
0
        public void Execute(IServiceProvider serviceProvider)
        {
            try
            {
                var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
                var serviceFactory =
                    (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                var service = serviceFactory.CreateOrganizationService(context.UserId);

                Entity entity = (Entity)context.PostEntityImages["Post"];
                new_coordinationcontract agreementEntity = entity.ToEntity<new_coordinationcontract>();

                if (agreementEntity.new_contrsctorder.Id == null ||
                    agreementEntity.new_contrsctorder.Id == Guid.Empty) return;

                SalesOrder updateOrder = new SalesOrder();

                updateOrder.Id = agreementEntity.new_contrsctorder.Id;

                updateOrder.new_articipationof = agreementEntity.new_participationof;
                updateOrder.new_agreed= agreementEntity.new_agreed_fd;
                updateOrder.new_Dateofcoordination = agreementEntity.new_datecoordinationlac;

                updateOrder.new_participationlaw= agreementEntity.new_participationlaw;
                updateOrder.new_agreedlaw= agreementEntity.new_agreed_ld;
                updateOrder.new_Dateofcoordinationlaw= agreementEntity.new_Datecoordinationlaw;

                updateOrder.new_participationlo = agreementEntity.new_participationlo;
                updateOrder.new_agreedlog = agreementEntity.new_agreed_dd;
                updateOrder.new_Dateofcoordinationlog = agreementEntity.new_Datecoordinationlog;

                updateOrder.new_participationob = agreementEntity.new_participationob;
                updateOrder.new_agreed_ac = agreementEntity.new_agreed_ac;
                updateOrder.new_datecoordinationlac = agreementEntity.new_datecoordinationlac;

                updateOrder.new_participationsp = agreementEntity.new_participationsp;
                updateOrder.new_agreed_sd = agreementEntity.new_agreed_sd;
                updateOrder.new_datecoordinationsd = agreementEntity.new_datecoordinationsd;

                service.Update(updateOrder);
            }
            catch (Exception ex)
            {
                throw new InvalidPluginExecutionException(ex.Message);
            }
        }
 protected void UpdateCustomer(AdventureWorksEntities ctx, SalesOrder obj, CustomerUpdate _data)
 {
     obj.CustomerIdObject = ctx.Customer.Find(_data.CustomerId);
     if (obj.CustomerIdObject == null)
         ErrorList.Current.AddError("Cannot find Customer with ID {0}.", _data.CustomerId);
     if (_data.BillingAddress != null)
     {
         obj.BillToAddressIdObject = ctx.Address.Find(_data.BillingAddress.AddressId);
         if (obj.BillToAddressIdObject == null)
             ErrorList.Current.AddError("Cannot find Address with ID {0}.", _data.BillingAddress.AddressId);
     }
     if (_data.ShippingAddress != null)
     {
         obj.ShipToAddressIdObject = ctx.Address.Find(_data.ShippingAddress.AddressId);
         if (obj.ShipToAddressIdObject == null)
             ErrorList.Current.AddError("Cannot find Address with ID {0}.", _data.ShippingAddress.AddressId);
     }
 }
 protected PaymentInfo GetPaymentInfo(SalesOrder obj)
 {
     PaymentInfo res = new PaymentInfo()
     {
         CreditCard = new PaymentInfo_CreditCard {
             CreditCardApprovalCode = obj.CreditCardApprovalCode },
         DueDate = obj.DueDate,
         SubTotal = obj.SubTotal,
         Freight = obj.Freight,
         TaxAmt = obj.TaxAmt,
         TotalDue = obj.TotalDue,
     };
     if (obj.CreditCardIdObject != null)
         res.CreditCard.CreditCardId = obj.CreditCardIdObject.CreditCardId;
     if (obj.ShipMethodIdObject != null)
         res.ShipMethodId = obj.ShipMethodIdObject.ShipMethodId;
     if (obj.CurrencyRateIdObject != null)
         res.CurrencyRate = "$1 = " + obj.CurrencyRateIdObject.EndOfDayRate
                              + " " + obj.CurrencyRateIdObject.ToCurrencyCodeObject.Name;
     return res;
 }
Esempio n. 20
0
        public static SalesOrder CreateSalesOrderFromSalesOrderViewModel(SalesOrderViewModel salesOrderViewModel)
        {
            SalesOrder salesOrder = new SalesOrder()
            {
                CustomerName = salesOrderViewModel.CustomerName,
                PoNumber     = salesOrderViewModel.PoNumber,
                SalesOrderId = salesOrderViewModel.SalesOrderId,
                ObjectState  = salesOrderViewModel.ObjectState
            };

            int temporarySalesOrderItemId = -1;

            foreach (SalesOrderItemViewModel salesOrderItemViewModel in salesOrderViewModel.SalesOrderItems)
            {
                SalesOrderItem salesOrderItem = new SalesOrderItem();
                salesOrderItem.SalesOrderItemId = salesOrderItemViewModel.SalesOrderItemId;
                salesOrderItem.ProductCode      = salesOrderItemViewModel.ProductCode;
                salesOrderItem.Quantity         = salesOrderItemViewModel.Quantity;
                salesOrderItem.UnitPrice        = salesOrderItemViewModel.UnitPrice;
                salesOrderItem.ObjectState      = salesOrderItemViewModel.ObjectState;

                if (salesOrderItemViewModel.ObjectState != ObjectState.Added)
                {
                    salesOrderItem.SalesOrderItemId = salesOrderItemViewModel.SalesOrderItemId;
                }
                else
                {
                    salesOrderItem.SalesOrderItemId = temporarySalesOrderItemId;
                    temporarySalesOrderItemId--;
                }


                salesOrderItem.SalesOrderId = salesOrderViewModel.SalesOrderId;

                salesOrder.SalesOrderItems.Add(salesOrderItem);
            }

            return(salesOrder);
        }
Esempio n. 21
0
        // GET: Sales/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SalesOrder salesOrder = _db.SalesOrder.Find(id);

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

            SalesOrderViewModel salesOrderViewModel = new SalesOrderViewModel();

            salesOrderViewModel.SalesOrderId    = salesOrder.SalesOrderId;
            salesOrderViewModel.CustomerName    = salesOrder.CustomerName;
            salesOrderViewModel.PONumber        = salesOrder.PONumber;
            salesOrderViewModel.MessageToClient = "message to client from view model";

            return(View(salesOrderViewModel));
        }
Esempio n. 22
0
            /// <summary>
            /// Prepare the header for a receipt.
            /// </summary>
            /// <param name="reportLayout">The receipt string.</param>
            /// <param name="salesOrder">The sales order.</param>
            /// <param name="channelDateTimeOffset">The current time of the channel.</param>
            public static void PrepareGiftCardHeader(StringBuilder reportLayout, SalesOrder salesOrder, DateTimeOffset channelDateTimeOffset)
            {
                ThrowIf.Null(reportLayout, "reportLayout");
                ThrowIf.Null(salesOrder, "salesOrder");

                string channelDate = channelDateTimeOffset.ToString("d");
                string channelTime = channelDateTimeOffset.ToString("T");

                reportLayout.AppendLine();

                reportLayout.AppendLine("<T:string_6150>"); // Report Title
                reportLayout.AppendLine();
                reportLayout.AppendLine(string.Empty.PadLeft(55, '='));

                reportLayout.Append(FormatHeaderLine("<T:string_6149>", salesOrder.StaffId, true));
                reportLayout.Append("\t\t");
                reportLayout.AppendLine(FormatHeaderLine("<T:string_6139>", channelDate, false));
                reportLayout.Append(FormatHeaderLine("<T:string_6138>", salesOrder.StoreId, true));
                reportLayout.Append("\t\t");
                reportLayout.AppendLine(FormatHeaderLine("<T:string_6141>", channelTime, false));
                reportLayout.AppendLine(FormatHeaderLine("<T:string_6140>", salesOrder.TerminalId, true));
            }
        private PickupInformationViewModel ShowPickupForm(int rowIndex)
        {
            // Before we show the pickup form, check that a pickup code exists
            if (string.IsNullOrWhiteSpace(ApplicationSettings.Terminal.PickupDeliveryModeCode))
            {
                // "Pickup cannot be used for delivery because a pickup delivery code was not found."
                string errorMessage = LSRetailPosis.ApplicationLocalizer.Language.Translate(56382);
                SalesOrder.LogMessage(errorMessage, LSRetailPosis.LogTraceLevel.Error);
                SalesOrder.InternalApplication.Services.Dialog.ShowMessage(errorMessage, MessageBoxButtons.OK, MessageBoxIcon.Error);

                return(null);
            }

            PickupInformationViewModel vm = new PickupInformationViewModel(this.ViewModel.Transaction);

            vm.IsDeliveryChangeAllowed = this.ViewModel.IsDeliveryChangeAllowed;

            // Load any existing values
            if (rowIndex >= 0 && rowIndex < this.gridSource.Count)
            {
                LineLevelInformationViewModel viewModel = this.gridSource[rowIndex];

                vm.PickupDate    = viewModel.DeliveryDate;
                vm.SelectedStore = viewModel.DeliveryStore;
            }

            using (formPickupInformation pickup = new formPickupInformation(vm))
            {
                LSRetailPosis.POSProcesses.POSFormsManager.ShowPOSForm(pickup);

                if (pickup.DialogResult == DialogResult.OK)
                {
                    return(pickup.ViewModel);
                }
            }

            return(null);
        }
Esempio n. 24
0
        public IActionResult Print(int id)
        {
            SalesOrder salesOrder = _context.SalesOrder
                                    .Include(x => x.SalesOrderLines)
                                    .SingleOrDefault(x => x.SalesOrderId.Equals(id));

            if (salesOrder == null)
            {
                return(NotFound());
            }

            Branch branch = _context.Branch
                            .SingleOrDefault(x => x.BranchId.Equals(salesOrder.BranchId));
            Customer customer = _context.Customer
                                .SingleOrDefault(x => x.CustomerId.Equals(salesOrder.CustomerId));
            Currency currency = _context.Currency
                                .SingleOrDefault(x => x.CurrencyId.Equals(branch.CurrencyId));

            PrintSalesOrderViewModel vm = new PrintSalesOrderViewModel();

            vm.SalesOrder = salesOrder;
            vm.Branch     = branch;
            vm.Customer   = customer;
            vm.Currency   = currency;
            vm.Lines      = new List <PrintSalesOrderLineViewModel>();
            foreach (var item in salesOrder.SalesOrderLines)
            {
                PrintSalesOrderLineViewModel lineVm = new PrintSalesOrderLineViewModel();
                Product product = _context.Product
                                  .SingleOrDefault(x => x.ProductId.Equals(item.ProductId));

                lineVm.SalesOrderLine = item;
                lineVm.Product        = product;

                vm.Lines.Add(lineVm);
            }
            return(View(vm));
        }
Esempio n. 25
0
        public SalesOrder GetSalesOrder(Guid orderId)
        {
            if (orderId.Equals(Guid.Empty))
            {
                return(null);
            }

            int cByte = ParamFieldLength.PACKAGE_HEAD + ParamFieldLength.ORDER_ID;

            byte[] sendByte   = new byte[cByte];
            int    byteOffset = 0;

            Array.Copy(BitConverter.GetBytes((int)Command.ID_GET_SALESORDER), sendByte, BasicTypeLength.INT32);
            byteOffset = BasicTypeLength.INT32;
            Array.Copy(BitConverter.GetBytes(cByte), 0, sendByte, byteOffset, BasicTypeLength.INT32);
            byteOffset += BasicTypeLength.INT32;

            //orderID
            byte[] tempByte = Encoding.UTF8.GetBytes(orderId.ToString());
            Array.Copy(tempByte, 0, sendByte, byteOffset, tempByte.Length);
            byteOffset += ParamFieldLength.ORDER_ID;

            Int32      operCode   = 0;
            SalesOrder salesOrder = null;

            using (SocketClient socket = new SocketClient(ConstantValuePool.BizSettingConfig.IPAddress, ConstantValuePool.BizSettingConfig.Port))
            {
                Byte[] receiveData = null;
                operCode = socket.SendReceive(sendByte, out receiveData);
                if (operCode == (int)RET_VALUE.SUCCEEDED)
                {
                    string strReceive = Encoding.UTF8.GetString(receiveData, ParamFieldLength.PACKAGE_HEAD, receiveData.Length - ParamFieldLength.PACKAGE_HEAD);
                    salesOrder = JsonConvert.DeserializeObject <SalesOrder>(strReceive);
                }
                socket.Close();
            }
            return(salesOrder);
        }
Esempio n. 26
0
        public ServiceResponse <bool> GenerateInvoiceForOrder(SalesOrder order)
        {
            logger.LogInformation($"generating new order");

            foreach (var item in order.SalesOrderItem)
            {
                item.Product  = productService.GetProductById(item.Product.Id);
                item.Quantity = item.Quantity;

                var inventoryId = inventoryService.GetByProductId(item.Product.Id);

                inventoryService.UpdateUnitsAvalible(inventoryId.Id, -item.Quantity);
            }

            try
            {
                context.SalesOrders.Add(order);
                context.SaveChanges();

                return(new ServiceResponse <bool>
                {
                    isSuccess = true,
                    Data = true,
                    Message = "Open order created",
                    Time = DateTime.UtcNow,
                });
            }
            catch (System.Exception e)
            {
                return(new ServiceResponse <bool>
                {
                    isSuccess = false,
                    Data = false,
                    Message = e.StackTrace,
                    Time = DateTime.UtcNow,
                });
            }
        }
Esempio n. 27
0
        public static void coba()
        {
            //INSERT
            using (var context = new Contoh02Context())
            {
                var std = new SalesOrder()
                {
                    TransNo   = "trans01",
                    TransDate = DateTime.Now,
                    Items     = new List <SalesOrderItem>()
                    {
                        new SalesOrderItem
                        {
                            ItemCode = "item01",
                            Qty      = 1
                        },
                        new SalesOrderItem
                        {
                            ItemCode = "item02",
                            Qty      = 2
                        }
                    }
                };
                context.SalesOrders.Add(std);
                context.SaveChanges();
            }

            //DELETE
            using (var context = new Contoh02Context())
            {
                var std = new SalesOrder()
                {
                    Id = 1
                };
                context.SalesOrders.Remove(std);
                context.SaveChanges();
            }
        }
Esempio n. 28
0
        public ActionResult CreateOrder()
        {
            string addressId = Request.QueryString["addressId"];
            int    shipId    = Convert.ToInt32(addressId);
            var    user      = User.Identity;
            Guid   userId    = Guid.Parse(user.GetUserId());
            Cart   cart      = db.Carts.FirstOrDefault(s => s.userId == userId);

            List <CartItem> cartItems = db.CartItems.Where(c => c.cartId == cart.Id).ToList();
            SalesOrder      so        = new SalesOrder();

            so.Id = Guid.NewGuid();
            foreach (CartItem c in cartItems)
            {
                Recipe pd = db.Recipes.FirstOrDefault(p => p.Id == c.productId);
                so.orderCost += pd.Price;
            }
            so.customerId   = userId;
            so.shippingId   = shipId;
            so.shippingCost = 100;
            so.status       = "Order Created";
            so.totalCost    = so.orderCost + so.shippingCost;
            db.SalesOrders.Add(so);
            db.SaveChanges();

            foreach (CartItem c in cartItems)
            {
                OrderDetails od = new OrderDetails();
                od.orderId        = so.Id;
                od.productId      = c.productId;
                od.quantity       = c.quantity;
                od.specialOfferId = 1;
                db.OrderDetails.Add(od);
                db.SaveChanges();
            }

            return(RedirectToAction("index"));
        }
Esempio n. 29
0
        /// <summary>
        /// Create an Open Sales Order
        /// </summary>
        /// <param name="order"></param>
        /// <returns></returns>
        public ServiceResponse <bool> GenerateOpenOrder(SalesOrder order)
        {
            var now = DateTime.UtcNow;

            _logger.LogInformation("Generating New Order");

            foreach (var item in order.SalesOrderItems)
            {
                item.Product = _productService.GetProductById(item.Product.Id);
                var inventoryId = _inventoryService.GetByProductId(item.Product.Id).Id;

                _inventoryService.UpdateUnitsAvailable(inventoryId, -item.Quantity);
            }

            try
            {
                _db.SalesOrders.Add(order);
                _db.SaveChanges();

                return(new ServiceResponse <bool>
                {
                    IsSuccess = true,
                    Data = true,
                    Time = now,
                    Message = "Open Order Created"
                });
            }
            catch (Exception e)
            {
                return(new ServiceResponse <bool>
                {
                    IsSuccess = false,
                    Data = false,
                    Time = now,
                    Message = e.StackTrace
                });
            }
        }
Esempio n. 30
0
        public ServiceResponse <bool> GenerateOpenOrder(SalesOrder order)
        {
            _logger.LogInformation("Generating new order");

            foreach (var item in order.SalesOrderItems)
            {
                item.InventoryProduct = _productService.GetProductById(item.InventoryProduct.Id);

                var inventoryId = _inventoryService.GetByProductId(item.InventoryProduct.Id).Id;

                _inventoryService.UpdateUnitsAvailable(inventoryId, -item.Quantity);
            }
            ;

            try
            {
                _context.SalesOrders.Add(order);
                _context.SaveChanges();

                return(new ServiceResponse <bool>
                {
                    IsSuccess = true,
                    Data = true,
                    Message = $"Open Order Created",
                    Time = DateTime.UtcNow
                });
            }
            catch (Exception ex)
            {
                return(new ServiceResponse <bool>
                {
                    IsSuccess = false,
                    Data = false,
                    Message = $"Failed to generate invoice: {ex.StackTrace}",
                    Time = DateTime.UtcNow
                });
            }
        }
Esempio n. 31
0
 public void saveSoShipMstr(SalesOrder soitem, string username, string guid, string ship_guid)
 {
     Context.soship_mstr model = new Context.soship_mstr();
     model.soship_oid         = ship_guid; // uuid NOT NULL, Random uid
     model.soship_dom_id      = 1;
     model.soship_en_id       = 1;
     model.soship_add_by      = username;
     model.soship_add_date    = DateTime.Now;
     model.soship_upd_by      = username;
     model.soship_upd_date    = DateTime.Now;
     model.soship_code        = soitem.SalesOrderOncallId.HasValue ? soitem.SalesOrderOncall.SONumber : soitem.SalesOrderProsesKonsolidasiId.HasValue ? soitem.SalesOrderProsesKonsolidasi.SONumber : soitem.SalesOrderPickupId.HasValue ? soitem.SalesOrderPickup.SONumber : soitem.SalesOrderPickup.SONumber;
     model.soship_date        = soitem.SalesOrderOncallId.HasValue ? soitem.SalesOrderOncall.TanggalMuat : soitem.SalesOrderProsesKonsolidasiId.HasValue ? soitem.SalesOrderProsesKonsolidasi.TanggalMuat : soitem.SalesOrderPickupId.HasValue ? soitem.SalesOrderPickup.TanggalPickup : soitem.SalesOrderPickup.TanggalPickup;// date,    tgl settlement
     model.soship_so_oid      = guid;
     model.soship_si_id       = 1;
     model.soship_is_shipment = "Y";
     model.soship_dt          = DateTime.Now;
     model.soship_exc_rate    = 1;
     model.soship_cu_id       = 1;
     model.soship_branch_id   = 10001;
     model.soship_expeditur   = 0;
     context.soship_mstr.Add(model);
     context.SaveChanges();
 }
Esempio n. 32
0
        // GET: SalesOrder/Create
        public IActionResult Create()
        {
            var username = HttpContext.User.Identity.Name;

            if (!(HttpContext.User.IsInRole("ApplicationUser") || HttpContext.User.IsInRole("Secretary")))
            {
                ViewData["customerId"] = new SelectList(_context.Customer.Where(c => c.Employee.UserName == username && c.Active == true), "customerId", "customerName");
                ViewData["employeeId"] = new SelectList(_context.Employee.Where(e => e.UserName == username), "EmployeeId", "DisplayName");
            }
            else
            {
                ViewData["customerId"] = new SelectList(_context.Customer.Where(c => c.Active == true), "customerId", "customerName");
                ViewData["employeeId"] = new SelectList(_context.Employee, "EmployeeId", "DisplayName");
            }
            Branch defaultBranch = _context.Branch.Where(x => x.isDefaultBranch.Equals(true)).FirstOrDefault();

            ViewData["branchId"]       = new SelectList(_context.Branch, "branchId", "branchName", defaultBranch != null ? defaultBranch.branchId : null);
            ViewData["customerLineId"] = new SelectList(_context.CustomerLine, "customerLineId", "street1");

            SalesOrder so = new SalesOrder();

            return(View(so));
        }
        private void SetCurrent(SalesOrder current)
        {
            if (current == null)
            {
                if (CurrentItem == null)
                {
                    return;
                }
                ItemsCollection.Remove(CurrentItem);
                return;
            }
            var index = ItemsCollection.IndexOf(current);

            if (index >= 0)
            {
                ItemsCollection[index] = current;
            }
            else
            {
                ItemsCollection.Add(current);
            }
            ChangeCurrentItem(current);
        }
Esempio n. 34
0
        public void OrderPrice_TotalsUpdated()
        {
            PXGraph.OnPrepare += Entry_OnPrepare;
            var soe = PXGraph.CreateInstance <SalesOrderEntry>();

            PXGraph.OnPrepare -= Entry_OnPrepare;
            foreach (PXCache cache in soe.Caches.Values)
            {
                cache.Interceptor = new PXUIEmulatorAttribute();
            }

            SalesOrder SO1  = soe.Orders.Insert(new SalesOrder());
            OrderLine  line = soe.OrderDetails.Insert(new OrderLine());

            line.UnitPrice = 20.0m;
            line.OrderQty  = 10;
            line.DiscPct   = 5.0m;
            line.TaxAmt    = 10.0m;
            line           = soe.OrderDetails.Update(line);
            line.LinePrice.Should().Be(190.0m);
            soe.Orders.Current.LinesTotal.Should().Be(190.0m);
            soe.Orders.Current.TaxTotal.Should().Be(10.0m);
        }
Esempio n. 35
0
        // GET: Sales/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SalesOrder salesOrder = _salesContext.SalesOrders.Find(id);

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

            SalesOrderViewModel salesOrderViewModel = new SalesOrderViewModel()
            {
                SalesOrderId    = salesOrder.SalesOrderId,
                CustomerName    = salesOrder.CustomerName,
                PONumber        = salesOrder.PONumber,
                MessageToClient = "From viewmodel"
            };

            return(View(salesOrderViewModel));
        }
Esempio n. 36
0
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SalesOrder salesOrder = _salesContext.SalesOrders.Find(id);

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

            SalesOrderViewModel _salesOrderViewModel = new SalesOrderViewModel();

            _salesOrderViewModel.SalesOrderId    = salesOrder.SalesOrderId;
            _salesOrderViewModel.CustomerName    = salesOrder.CustomerName;
            _salesOrderViewModel.PONumber        = salesOrder.PONumber;
            _salesOrderViewModel.MessageToClient = "Hello View Model";
            _salesOrderViewModel.ObjectState     = ObjectState.Deleted;

            return(View(_salesOrderViewModel));
        }
        public void CalculateOrderPrice_ReturnCorrectPrice()
        {
            var order = new SalesOrder
            {
                Lines = new List <SalesOrderLine>
                {
                    new SalesOrderLine
                    {
                        Price = 10
                    },
                    new SalesOrderLine
                    {
                        Price = 20
                    }
                }
            };

            // Act
            var price = order.GetOrderPrice();

            // Assert
            Assert.Equal(30, price);
        }
Esempio n. 38
0
        // GET: Sales/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SalesOrder salesOrder = _salesContext.SalesOrders.Find(id);

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

            SalesOrderViewModel salesOrderViewModel = new SalesOrderViewModel();

            salesOrderViewModel.SalesOrderId    = salesOrder.SalesOrderId;
            salesOrderViewModel.CustomerName    = salesOrder.CustomerName;
            salesOrderViewModel.PONumber        = salesOrder.PONumber;
            salesOrderViewModel.ObjectState     = ObjectState.Unchanged;
            salesOrderViewModel.MessageToClient = string.Format("The original value of Customer Name is {0}.", salesOrderViewModel.CustomerName);

            return(View(salesOrderViewModel));
        }
Esempio n. 39
0
        public void BlocksOnlySensitiveFields()
        {
            SalesOrder salesOrder = new SalesOrder {
                SalesOrderId = 1,
                OrderDate    = DateTime.Now,
                CustomerId   = 1,
                Total        = 1,
                CardNumber   = "378282246310005",
                CardExpires  = DateTime.Now,
                Filled       = DateTime.Now
            };

            SalesOrderDto salesOrderDto = new SalesOrderDto(salesOrder);

            Assert.Equal(salesOrder.SalesOrderId, salesOrderDto.SalesOrderId);
            Assert.Equal(salesOrder.OrderDate, salesOrderDto.OrderDate);
            Assert.Equal(salesOrder.CustomerId, salesOrderDto.CustomerId);
            Assert.Equal(salesOrder.Total, salesOrderDto.Total);
            Assert.Null(salesOrderDto.CardNumber);
            Assert.Null(salesOrderDto.CardExpires);
            // Assert.Null(salesOrderDto.CardAuthorized);
            Assert.Equal(salesOrder.Filled, salesOrderDto.Filled);
        }
Esempio n. 40
0
        public virtual SalesOrder_ReadOutput Read(int _salesOrderId)
        {
            SalesOrder_ReadOutput res = new SalesOrder_ReadOutput();

            using (AdventureWorksEntities ctx = new AdventureWorksEntities())
            {
                SalesOrder obj = ctx.SalesOrder.Find(_salesOrderId);
                if (obj == null)
                {
                    ErrorList.Current.CriticalError(HttpStatusCode.NotFound, "SalesOrder with id {0} not found", _salesOrderId);
                }
                ServiceUtil.CopyProperties(obj, res);
                // CUSTOM_CODE_START: populate the Customer output structure of Read operation below
                res.Customer = GetCustomerInfo(obj); // CUSTOM_CODE_END
                // CUSTOM_CODE_START: populate the Payment output structure of Read operation below
                res.Payment = GetPaymentInfo(obj);   // CUSTOM_CODE_END
                // CUSTOM_CODE_START: populate the Sales output structure of Read operation below
                res.Sales = GetSalesInfo(obj);       // CUSTOM_CODE_END
                // CUSTOM_CODE_START: add custom code for Read operation below
                // CUSTOM_CODE_END
            }
            return(res);
        }
Esempio n. 41
0
        public IHttpActionResult SetUserClaimed(int UserId, int orderitemid)
        {
            ARCOeCardEntities arcodb = new eCard.ARCOeCardEntities();

            try
            {
                SalesOrder   So   = arcodb.SalesOrders.Where(a => a.ID == orderitemid).FirstOrDefault();
                PrenotesUser User = arcodb.PrenotesUsers.Where(a => a.Id == UserId).FirstOrDefault();
                So.ModifiedDate = DateTime.Now;
                So.Status       = 4;
                So.ModifiedBy   = UserId;
                So.AssignedTO   = User.Id;
                arcodb.SaveChanges();


                return(Content(HttpStatusCode.OK, "SUCCESS"));
            }
            catch (Exception ex)
            {
                Log.Error("There was an error while assigning the user.", ex);
                return(Content(HttpStatusCode.InternalServerError, "There was an error while assigning the user."));
            }
        }
Esempio n. 42
0
        private static IEnumerable <string> GetErrors(SalesOrder salesOrder)
        {
            if (salesOrder == null)
            {
                yield return("Order is null");

                yield break;
            }

            if (salesOrder.OrderPickDate == null)
            {
                yield return("Order has not been picked, cannot invoice");
            }

            if (salesOrder.Customer == null)
            {
                yield return("Order has no customer");
            }
            else if (salesOrder.Customer.Tariff == null)
            {
                yield return("Cannot determine tariff for customer");
            }
        }
Esempio n. 43
0
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0 || e.ColumnIndex < 0)
            {
                return;
            }
            var c = this.dataGridView1.Rows[e.RowIndex].DataBoundItem as Business.Models.SaleOrderModel;

            if (c == null)
            {
                return;
            }
            Guid       id = c.Id;
            SalesOrder so = this.PharmacyDatabaseService.GetSalesOrder(out msg, id);

            if (so == null)
            {
                return;
            }
            FormSalesOrderEdit frm = new FormSalesOrderEdit(so, true, true, Editable);

            frm.ShowDialog();
        }
        private void dgvMain_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0 || e.ColumnIndex < 0)
            {
                return;
            }
            try
            {
                if (_salesOrderList != null && _salesOrderList.Count > 0)
                {
                    var        c  = (Business.Models.SaleOrderModel) this.dgvMain.Rows[e.RowIndex].DataBoundItem;
                    SalesOrder so = this.PharmacyDatabaseService.GetSalesOrder(out msg, c.Id);

                    FormSalesOrderEdit form = new FormSalesOrderEdit(so, true);
                    form.ShowDialog();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Log.Error(ex);
            }
        }
        private bool AdexLineItemIsReceivable()
        {
            return(true);

            if (m_lineItem.PurchaseOrder.Order.OrderType == OrderType.ADEX)
            {
                SalesOrder so =
                    m_lineItem.PurchaseOrder.Order.GetContract <SalesOrder>() as SalesOrder;

                if (so != null)
                {
                    SalesLineItem sli = so.GetLineByPart(m_lineItem.Part);

                    if (sli.ProcessedQty <= m_lineItem.ProcessedQty)
                    {
                        m_error = "This line cannot be received against until more units are shipped for this part.";
                        return(false);
                    }
                }
            }

            return(true);
        }
Esempio n. 46
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,Destination,estimatedPrice,Tip,Published")] SalesOrderUpdateView salesOrderView)
        {
            if (id != salesOrderView.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                var salesOrder = new SalesOrder()
                {
                    TraderID    = salesOrderView.TraderUsername,
                    BuyerID     = salesOrderView.BuyerUsername,
                    Destination = salesOrderView.Destination,
                    Tip         = salesOrderView.Tip,
                    Id          = salesOrderView.Id
                };
                var response = await salesOrderRepository.UpdateAsync(salesOrder);

                return(RedirectToAction(nameof(Index)));
            }
            return(View(salesOrderView));
        }
Esempio n. 47
0
        /// <summary>
        /// 提交处理
        /// </summary>
        /// <param name="order"></param>
        /// <param name="outInventory"></param>
        public void SaveOutInventoryByOrderOutInventory(SalesOrder order, OutInventory outInventory)
        {
            //1. 更新订单表()
            //2. 添加出库表
            //3. 添加出库明细表
            SalesOrder neworder = BusinessHandlerFactory.SalesOrderBusinessHandler.Get(order.Id);

            this.BusinessHandlerFactory.SalesOrderBusinessHandler.Save(order);
            outInventory.Id = Guid.NewGuid();
            neworder.OrderOutInventoryCode = outInventory.OutInventoryNumber;
            neworder.OrderOutInventoryTime = outInventory.CreateTime;
            this.Add(outInventory);
            ICollection <OutInventoryDetail> details = outInventory.SalesOutInventoryDetails;

            foreach (OutInventoryDetail detail in details)
            {
                detail.SalesOutInventoryID = outInventory.Id;
                detail.UpdateTime          = DateTime.Now;
                detail.CreateTime          = DateTime.Now;
                BusinessHandlerFactory.OutInventoryDetailBusinessHandler.Add(detail);
            }
            this.Save();
        }
Esempio n. 48
0
        public ServiceResponse <bool> GenerateOpenOrder(SalesOrder order)
        {
            _logger.LogInformation("Generating new order");

            foreach (var item in order.SalesOrderItems)
            {
                item.Product = _productService.GetProductById(item.Product.Id);

                var inventoryId = _inventoryService.GetProductId(item.Product.Id).Id;

                _inventoryService.UpdateUnitsAvailable(inventoryId, -item.Quantity);
            }

            try
            {
                _dbContext.SalesOrders.Add(order);
                _dbContext.SaveChanges();

                return(new ServiceResponse <bool>
                {
                    IsSuccess = true,
                    Data = true,
                    Message = "An order was created",
                    Time = DateTime.UtcNow
                });
            }
            catch (Exception ex)
            {
                return(new ServiceResponse <bool>
                {
                    IsSuccess = false,
                    Data = false,
                    Message = $"An error occurred with the following: {ex}",
                    Time = DateTime.UtcNow
                });
            }
        }
Esempio n. 49
0
        // [Create] / [Update]
        void okButton_Click(object sender, RoutedEventArgs e)
        {
            SalesOrder so = (SalesOrder)DataContext;

            so.LockVersion++; // TODO: check
            var customer = MyApp.dbContext.Customers.First(c => c.Id == so.CustomerId);

            if (so.CustomerShipTo != customer.ShipTo)
            {
                customer.ShipTo = so.CustomerShipTo;
            }

            if (so.Id == 0)
            {
                MyApp.dbContext.SalesOrders.Add(so);
            }

            try {
                MyApp.dbContext.SaveChanges();
            }
            catch (DbEntityValidationException ex) {
                var msg = "";
                foreach (var err in ex.EntityValidationErrors)
                {
                    foreach (var f in err.ValidationErrors)
                    {
                        msg += f.ErrorMessage;
                    }
                }
                errMsg.Text       = msg;
                errMsg.Visibility = Visibility.Visible;
                return;
            }

            Changed.Invoke(this, null);
            Close();
        }
        private bool CreateSalesOrderRecords(int nCustomerId, string[] szDetailsIds, string tradeId, ref int nSalesOrderIdHlp, ref string szError)
        {
            bool bStatus = false;
            int nQuoteid = 0;
            int nItemPos = 1;
            int nSalesOrderId = 0;
            int nQuoteDetailsId = 0;
            int nSubItemid = 0;
            int nPos = -1;
            int nTradeid = 0;
            int nSalesOrderNo = 0;
            double dOnHand = 0;
            double dQtyQuote = 0;
            double dReqQty = 0;
            double dShipQty = 0;
            double dPOQty = 0;
            double dUnitPrice = 0;
            double dTaxRate = 0;
            string szDetailsId = "";
            string szDescription = "";
            string szSalesOrderIdHlp = "";
            string szItemIdHlp = "";

            List<String> quotedetailsList = null;
            IQueryable<SUB_ITEM> qySubItem = null;
            SUB_ITEM subitem = null;
            UserQuotation quotation = null;
            UserQuotationDetail quotationdetail = null;
            SalesOrderDetail salesorderdetail = null;
            InitialInfo initialinfo = null;
            Trade trade = null;
            SetupChargeDetail setupcharge = null;

            try
            {
                if (string.IsNullOrEmpty(tradeId))
                {
                    trade = db.Trades.FirstOrDefault<Trade>();
                    if (trade != null)
                    {
                        nTradeid = trade.TradeId;
                    }
                }
                else
                {
                    nTradeid = Convert.ToInt32(tradeId);
                }

                //Get the sales order no
                initialinfo = db.InitialInfoes.FirstOrDefault<InitialInfo>();
                if (initialinfo == null)
                {
                    initialinfo = new InitialInfo();
                    initialinfo.InvoiceNo = 0;
                    initialinfo.PaymentNo = 0;
                    initialinfo.PurchaseOrderNo = 0;
                    initialinfo.SalesOrderNo = 1;
                    nSalesOrderNo = 1;
                    initialinfo.TaxRate = 0;
                    db.InitialInfoes.Add(initialinfo);
                }
                else
                {
                    nSalesOrderNo = initialinfo.SalesOrderNo;
                    nSalesOrderNo++;
                    initialinfo.SalesOrderNo = nSalesOrderNo;
                    dTaxRate = initialinfo.TaxRate;
                    db.Entry(initialinfo).State = EntityState.Modified;
                }

                quotedetailsList = szDetailsIds.ToList<string>();

                SalesOrder salesorder = new SalesOrder();
                salesorder.CustomerId = nCustomerId;
                salesorder.SODate = DateTime.Now;
                salesorder.IsBlindShip = false;
                salesorder.TradeId = nTradeid;
                salesorder.SalesOrderNo = nSalesOrderNo.ToString();
                salesorder.Tax_rate = Convert.ToDouble(dTaxRate);
                salesorder.Invs_Tax = Convert.ToDouble(dTaxRate);
                db.SalesOrders.Add(salesorder);
                db.SaveChanges();

                nSalesOrderIdHlp = salesorder.SalesOrderId;

                nSalesOrderId = salesorder.SalesOrderId;

                //
                // Con szDetailsIds leer UserQuotationDetails, luego leer el inventario para establecer las cantidades disponible y
                // luego crear el detalle de la Sales Order, lee el inventario e incluye setup charge y runcharge
                foreach (var item in quotedetailsList)
                {
                    nPos = -1;
                    nPos = item.IndexOf("chk_");
                    if (nPos != -1)
                    {

                        szDetailsId = item.Replace("chk_", "");

                        nQuoteDetailsId = Convert.ToInt16(szDetailsId);
                        quotationdetail = db.UserQuotationDetails.Find(nQuoteDetailsId);
                        if (quotationdetail != null)
                        {
                            if (quotationdetail.Status == 0)
                            {
                                if (nQuoteid == 0)
                                {
                                    nQuoteid = Convert.ToInt32(quotationdetail.DetailId);
                                }

                                dQtyQuote = Convert.ToDouble(quotationdetail.Quantity) - Convert.ToDouble(quotationdetail.ShippedQuantity);
                                dReqQty = Convert.ToDouble(quotationdetail.Quantity);
                                dShipQty = 0;
                                dPOQty = 0;

                                quotation = db.UserQuotations.Find(quotationdetail.DetailId);
                                if (quotation != null)
                                {
                                    subitem = db.SUB_ITEM.Where(sbit => sbit.ItemID == quotation.ProductId && sbit.Description == quotationdetail.ProductType).FirstOrDefault<SUB_ITEM>();

                                }
                                else
                                {
                                    nSubItemid = Convert.ToInt32(quotationdetail.ItemID);
                                    subitem = db.SUB_ITEM.Find(nSubItemid);
                                }

                                if (subitem != null)
                                {
                                    szDescription = subitem.Description;

                                    //Get OnHand inventory
                                    dOnHand = Convert.ToDouble(subitem.OnHand_Db) - Convert.ToDouble(subitem.OnHand_Cr);

                                    if (dQtyQuote >= dOnHand)
                                    {
                                        if (dOnHand == 0)
                                        {
                                            dPOQty = dQtyQuote;
                                        }
                                        else
                                        {
                                            dPOQty = dQtyQuote - dOnHand;
                                            dShipQty = dOnHand;
                                        }
                                    }
                                    else
                                    {
                                    }

                                    //Create sales order detail
                                    salesorderdetail = new SalesOrderDetail();
                                    salesorderdetail.SalesOrderId = nSalesOrderId;
                                    salesorderdetail.ItemID = subitem.ItemID;
                                    salesorderdetail.Sub_ItemID = subitem.Sub_ItemID;
                                    salesorderdetail.Description = szDescription;
                                    salesorderdetail.Quantity = dReqQty;
                                    salesorderdetail.ShipQuantity = dShipQty;
                                    salesorderdetail.BackOrderQuantity = dPOQty;
                                    salesorderdetail.Tax = 0;
                                    salesorderdetail.UnitPrice = quotationdetail.Amount;
                                    salesorderdetail.ItemPosition = nItemPos;
                                    salesorderdetail.ItemOrder = 0;
                                    salesorderdetail.Tax = Convert.ToDouble(dTaxRate);
                                    db.SalesOrderDetails.Add(salesorderdetail);
                                    db.SaveChanges();
                                    nItemPos++;

                                    szSalesOrderIdHlp = salesorderdetail.SalesOrderId.ToString();
                                    szItemIdHlp = salesorderdetail.ItemID;

                                    //Create setup charge
                                    setupcharge = db.SetupChargeDetails.Where(stup => stup.itemid == subitem.ItemID).FirstOrDefault<SetupChargeDetail>();
                                    if (setupcharge != null)
                                    {
                                        salesorderdetail = new SalesOrderDetail();
                                        salesorderdetail.SalesOrderId = nSalesOrderId;
                                        salesorderdetail.ItemID = string.Empty;
                                        salesorderdetail.Sub_ItemID = string.Empty;
                                        salesorderdetail.Description = string.Format("Set up Charge {0} {1}", szSalesOrderIdHlp, szItemIdHlp);
                                        salesorderdetail.Quantity = dReqQty;
                                        salesorderdetail.ShipQuantity = 0;
                                        salesorderdetail.BackOrderQuantity = 0;
                                        salesorderdetail.Tax = 0;
                                        salesorderdetail.UnitPrice = setupcharge.SetUpCharge;
                                        salesorderdetail.ItemPosition = 0;
                                        salesorderdetail.ItemOrder = 0;
                                        salesorderdetail.Tax = Convert.ToDouble(dTaxRate);
                                        db.SalesOrderDetails.Add(salesorderdetail);

                                        //Create run charge
                                        salesorderdetail = new SalesOrderDetail();
                                        salesorderdetail.SalesOrderId = nSalesOrderId;
                                        salesorderdetail.ItemID = string.Empty;
                                        salesorderdetail.Sub_ItemID = string.Empty;
                                        salesorderdetail.Description = string.Format("Run Charge {0} {1}", szSalesOrderIdHlp, szItemIdHlp);
                                        salesorderdetail.Quantity = dReqQty;
                                        salesorderdetail.ShipQuantity = 0;
                                        salesorderdetail.BackOrderQuantity = 0;
                                        salesorderdetail.Tax = 0;
                                        salesorderdetail.UnitPrice = setupcharge.RunCharge;
                                        salesorderdetail.ItemPosition = 0;
                                        salesorderdetail.ItemOrder = 0;
                                        salesorderdetail.Tax = Convert.ToDouble(dTaxRate);
                                        db.SalesOrderDetails.Add(salesorderdetail);

                                    }

                                    //Update Quote Details
                                    quotationdetail.ShippedQuantity = dShipQty;
                                    quotationdetail.BOQuantity = dPOQty;
                                    if (dShipQty >= Convert.ToDouble(quotationdetail.Quantity))
                                    {
                                        quotationdetail.Status = 1;
                                    }
                                    else
                                    {
                                        quotationdetail.Status = 1;
                                    }

                                }
                                else
                                {
                                    //szDescription = quotationdetail.ProductType;

                                    ////Create sales order detail
                                    //salesorderdetail = new SalesOrderDetail();
                                    //salesorderdetail.SalesOrderId = nSalesOrderId;
                                    //salesorderdetail.Description = szDescription;
                                    //salesorderdetail.Quantity = dReqQty;
                                    ////salesorderdetail.ShipQuantity = dShipQty;
                                    ////salesorderdetail.BackOrderQuantity = dPOQty;
                                    //salesorderdetail.Tax = 0;
                                    //salesorderdetail.UnitPrice = quotationdetail.Amount;
                                    //salesorderdetail.ItemPosition = nItemPos;
                                    //salesorderdetail.ItemOrder = 0;
                                    //db.SalesOrderDetails.Add(salesorderdetail);
                                    //nItemPos++;

                                    //quotationdetail.Status = 1;
                                }

                                //Update Sub Item Inventory

                            }
                        }
                    }
                }

                //Update the sales order record with the quoteid
                if (nQuoteid != 0)
                {
                    SalesOrder salesorderHlp = db.SalesOrders.Find(nSalesOrderId);
                    if (salesorderHlp != null)
                    {
                        salesorderHlp.QuoteId = nQuoteid;
                        db.Entry(salesorderHlp).State = EntityState.Modified;
                    }
                }

                //Save all changes
                db.SaveChanges();

                bStatus = true;

            }
            catch (Exception err)
            {
                szError = err.Message;
            }

            return bStatus;
        }
        /// <summary>
        /// This method first connects to the Organization service. Afterwards, an 
        /// opportunity is created to demonstrate a negative estimated value. This is
        /// followed by the creation of a quote with a negative product quantity. 
        /// Finally, a sales order with a negative product price is shown.
        /// </summary>
        /// <param name="serverConfig">Contains server connection information.</param>
        /// <param name="promptforDelete">When True, the user will be prompted to delete all
        /// created entities.</param>
        public void Run(ServerConnection.Configuration serverConfig, bool promptforDelete)
        {
            try
            {
                //<snippetWorkingWithNegativePrices1>
                // Connect to the Organization service. 
                // The using statement assures that the service proxy will be properly disposed.
                using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri,serverConfig.Credentials, serverConfig.DeviceCredentials))
                {
                    // This statement is required to enable early-bound type support.
                    _serviceProxy.EnableProxyTypes();

                    CreateRequiredRecords();

                    #region Opportunity with negative estimated value

                    // Create a new opportunity with user-specified negative 
                    // estimated value.
                    Opportunity opportunity = new Opportunity
                    {
                        Name = "Example Opportunity",
                        CustomerId = new EntityReference(Account.EntityLogicalName,
                            _accountId),
                        PriceLevelId = new EntityReference(PriceLevel.EntityLogicalName,
                            _priceListId),
                        IsRevenueSystemCalculated = false,
                        EstimatedValue = new Money(-400.00m),
                        FreightAmount = new Money(10.00m),
                        ActualValue = new Money(-390.00m),
                        OwnerId = new EntityReference
                        {
                            Id = _salesRepresentativeIds[0],
                            LogicalName = SystemUser.EntityLogicalName
                        }
                    };
                    _opportunityId = _serviceProxy.Create(opportunity);
                    opportunity.Id = _opportunityId;

                    // Create a catalog product for the opportunity.
                    OpportunityProduct catalogProduct = new OpportunityProduct
                    {
                        OpportunityId = opportunity.ToEntityReference(),
                        ProductId = new EntityReference(Product.EntityLogicalName,
                            _product1Id),
                        UoMId = new EntityReference(UoM.EntityLogicalName,
                            _defaultUnitId),
                        Quantity = 8,
                        Tax = new Money(12.42m),
                    };
                    _catalogProductId = _serviceProxy.Create(catalogProduct);

                    Console.WriteLine("Created opportunity with negative estimated value.");

                    #endregion

                    #region Quote with negative quantity

                    // Create the quote.
                    Quote quote = new Quote()
                    {
                        CustomerId = new EntityReference(Account.EntityLogicalName, 
                            _accountId),
                        Name = "Sample Quote",
                        PriceLevelId = new EntityReference(PriceLevel.EntityLogicalName,
                            _priceListId)
                    };
                    _quoteId = _serviceProxy.Create(quote);
                    quote.Id = _quoteId;

                    // Set the quote's product quantity to a negative value.
                    QuoteDetail quoteDetail = new QuoteDetail()
                    {
                        ProductId = new EntityReference(Product.EntityLogicalName,
                            _product1Id),
                        Quantity = -4,
                        QuoteId = quote.ToEntityReference(),
                        UoMId = new EntityReference(UoM.EntityLogicalName, 
                            _defaultUnitId)
                    };
                    _quoteDetailId = _serviceProxy.Create(quoteDetail);

                    Console.WriteLine("Created quote with negative quantity.");

                    #endregion

                    #region Sales Order with negative price

                    // Create the sales order.
                    SalesOrder order = new SalesOrder()
                    {
                        Name = "Faux Order",
                        DateFulfilled = new DateTime(2010, 8, 1),
                        PriceLevelId = new EntityReference(PriceLevel.EntityLogicalName,
                            _priceListId),
                        CustomerId = new EntityReference(Account.EntityLogicalName,
                            _accountId),
                        FreightAmount = new Money(20.0M)
                    };
                    _orderId = _serviceProxy.Create(order);
                    order.Id = _orderId;

                    // Add the product to the order with the price overriden with a
                    // negative value.
                    SalesOrderDetail orderDetail = new SalesOrderDetail()
                    {
                        ProductId = new EntityReference(Product.EntityLogicalName, 
                            _product1Id),
                        Quantity = 4,
                        SalesOrderId = order.ToEntityReference(),
                        IsPriceOverridden = true,
                        PricePerUnit = new Money(-40.0M),
                        UoMId = new EntityReference(UoM.EntityLogicalName, 
                            _defaultUnitId)
                    };
                    _orderDetailId = _serviceProxy.Create(orderDetail);

                    Console.WriteLine("Created order with negative price per unit.");

                    #endregion

                    DeleteRequiredRecords(promptforDelete);
                }
                //</snippetWorkingWithNegativePrices1>
            }

            // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
            catch (FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault>)
            {
                // You can handle an exception here or pass it back to the calling method.
                throw;
            }
        }
Esempio n. 52
0
        public IHttpActionResult Order(SalesOrder order)
        {
            if (order != null)
            {
                Customer customer = db.Customers.Find(order.CustomerId);
                if (customer != null)
                {
                    order.Customer = customer;
                    order.CustomerName = customer.Name;
                    order.CustomerMobile = customer.Mobile;
                    order.CustomerEmailAddress = customer.EmailAddress;

                    foreach (SalesOrderItem orderItem in order.OrderItems)
                    {
                        Product product = db.Products.GetAll()
                            .Where(prod => !prod.Discontinued)
                            .FirstOrDefault(prod => prod.Code == orderItem.ProductCode);

                        if (product != null)
                        {
                            if (orderItem.Quantity < product.Stocks)
                            {
                                product.Stocks -= orderItem.Quantity;

                                orderItem.Product = product;
                                orderItem.ProductId = product.Id;
                                orderItem.UnitPrice = product.UnitPrice;
                                orderItem.ProductDisplayName = product.DisplayName;
                                orderItem.StocksRemaining = product.Stocks + orderItem.Quantity;

                                orderItem.CategoryId = product.CategoryId;
                            }
                            else
                            {
                                ModelState.AddModelError(key: "Quantity", errorMessage: orderItem.ProductCode + " insufficient stocks.");
                            }
                        }
                        else
                        {
                            ModelState.AddModelError(key: "ProductCode", errorMessage: orderItem.ProductCode + " not found or has been discontinued.");
                        }
                    }

                    if (ModelState.IsValid)
                    {
                        db.SalesOrders.Add(order);
                        db.Commit();

                        return Created(location: "orders/id/" + order.Id, content: new { Id = order.Id });
                    }
                }
                else
                {
                    ModelState.AddModelError(key: "CustomerId", errorMessage: order.CustomerId + " not found.");
                }

                BadRequest(ModelState);
            }

            return Conflict();
        }
		/// <summary>
		/// Creates any entity records that this sample requires.
		/// </summary>
		public void CreateRequiredRecords()
		{
			// Create a unit group.
			UoMSchedule unitGroup = new UoMSchedule
			{
				Name = "Example Unit Group",
				BaseUoMName = "Example Primary Unit"
			};
			_unitGroupId = _service.Create(unitGroup);

			// Retrieve the unit.
			QueryExpression unitQuery = new QueryExpression()
			{
				EntityName = UoM.EntityLogicalName,
				ColumnSet = new ColumnSet("uomid", "name"),
				Criteria =
				{
					Conditions = 
					{
						new ConditionExpression ("uomscheduleid", ConditionOperator.Equal, _unitGroupId)
					}
				},
				PageInfo = new PagingInfo
				{
					PageNumber = 1,
					Count = 1
				}
			};
			UoM unit = (UoM)_service.RetrieveMultiple(unitQuery).Entities[0];

			// Create an account.
			Account account = new Account
			{
				Name = "Litware, Inc.",
				Address1_StateOrProvince = "Colorado"
			};
			_accountId = (_service.Create(account));

			// Create the 2 contacts.
			Contact contact = new Contact()
			{
				FirstName = "Ben",
				LastName = "Andrews",
				EMailAddress1 = "*****@*****.**",
				Address1_City = "Redmond",
				Address1_StateOrProvince = "WA",
				Address1_Telephone1 = "(206)555-5555",
				ParentCustomerId = new EntityReference
				{
					Id = _accountId,
					LogicalName = account.LogicalName
				}
			};
			_contactIdList.Add(_service.Create(contact));

			contact = new Contact()
			{
				FirstName = "Colin",
				LastName = "Wilcox",
				EMailAddress1 = "*****@*****.**",
				Address1_City = "Bellevue",
				Address1_StateOrProvince = "WA",
				Address1_Telephone1 = "(425)555-5555",
				ParentCustomerId = new EntityReference
				{
					Id = _accountId,
					LogicalName = account.LogicalName
				}
			};
			_contactIdList.Add(_service.Create(contact));

			// Create pricing and product objects.
			PriceLevel priceLevel = new PriceLevel()
			{
				Name = "Faux Price List"
			};
			_priceLevelId = _service.Create(priceLevel);

			Product product = new Product()
			{
				ProductNumber = "1",
				QuantityDecimal = 4,
				Name = "Faux Product",
				Price = new Money(20.0M),
				DefaultUoMId = new EntityReference
				{
					Id = unit.Id,
					LogicalName = UoM.EntityLogicalName
				},
				DefaultUoMScheduleId = new EntityReference
				{
					Id = _unitGroupId,
					LogicalName = UoMSchedule.EntityLogicalName
				}
			};
			_productId = _service.Create(product);

			ProductPriceLevel productPrice = new ProductPriceLevel()
			{
				PriceLevelId = new EntityReference()
				{
					Id = _priceLevelId,
					LogicalName = PriceLevel.EntityLogicalName
				},
				ProductId = new EntityReference()
				{
					Id = _productId,
					LogicalName = Product.EntityLogicalName
				},
				UoMId = new EntityReference
				{
					Id = unit.Id,
					LogicalName = UoM.EntityLogicalName
				},
				Amount = new Money(20.0M),
			};
			_productPriceId = _service.Create(productPrice);

			// Create 3 orders.
			SalesOrder order = new SalesOrder()
			{
				Name = "Faux Order",
				DateFulfilled = new DateTime(2010, 8, 1),
				PriceLevelId = new EntityReference
				{
					Id = _priceLevelId,
					LogicalName = PriceLevel.EntityLogicalName
				},
				CustomerId = new EntityReference
				{
					Id = _accountId,
					LogicalName = account.LogicalName
				},
				FreightAmount = new Money(20.0M)
			};
			_orderIdList.Add(_service.Create(order));

			order = new SalesOrder()
			{
				Name = "Old Faux Order",
				DateFulfilled = new DateTime(2010, 4, 1),
				PriceLevelId = new EntityReference
				{
					Id = _priceLevelId,
					LogicalName = PriceLevel.EntityLogicalName
				},
				CustomerId = new EntityReference
				{
					Id = _accountId,
					LogicalName = account.LogicalName
				},
				FreightAmount = new Money(20.0M)
			};
			_orderIdList.Add(_service.Create(order));

			order = new SalesOrder()
			{
				Name = "Oldest Faux Order",
				DateFulfilled = new DateTime(2008, 8, 1),
				PriceLevelId = new EntityReference
				{
					Id = _priceLevelId,
					LogicalName = PriceLevel.EntityLogicalName
				},
				CustomerId = new EntityReference
				{
					Id = _accountId,
					LogicalName = account.LogicalName
				},
				FreightAmount = new Money(20.0M)
			};
			_orderIdList.Add(_service.Create(order));

			// Create 2 opportunities.
			Opportunity opportunity = new Opportunity()
			{
				Name = "Litware, Inc. Opportunity 1",
				EstimatedCloseDate = new DateTime(2011, 1, 1),
				CustomerId = new EntityReference
				{
					Id = _accountId,
					LogicalName = account.LogicalName
				}
			};
			_opportunityIdList.Add(_service.Create(opportunity));

			opportunity = new Opportunity()
			{
				Name = "Litware, Inc. Opportunity 2",
				EstimatedCloseDate = new DateTime(2020, 1, 1),
				CustomerId = new EntityReference
				{
					Id = _accountId,
					LogicalName = account.LogicalName
				}
			};
			_opportunityIdList.Add(_service.Create(opportunity));
		}
        public ActionResult Edit(SalesOrder salesorder, string SODateHlp, string ShipDateHlp, string RequiredateHlp, string AprovedDateHlp, string billtoid)
        {
            int nBilltoId = 0;
            int nYear = 0;
            int nMonth = 0;
            int nDay = 0;
            string szMsg = "";
            string szError = "";
            string[] szShipDateHlp = null;
            string[] szSODateHlp = null;
            DateTime dShipDate = DateTime.Now;
            DateTime dSODate = DateTime.Now;
            DateTime dRequiredDate = DateTime.Now;
            DateTime dApprovedDate = DateTime.Now;

            List<KeyValuePair<string, string>> listSelector = new List<KeyValuePair<string, string>>();
            IQueryable<Trade> qryTrade = null;
            IQueryable<Warehouses> qryWarehouse = null;
            CultureInfo provider = CultureInfo.InvariantCulture;

            dSODate = !string.IsNullOrEmpty(SODateHlp) ? DateTime.ParseExact(SODateHlp, "MM-dd-yyyy", provider) : Convert.ToDateTime(salesorder.SODate);
            dRequiredDate = !string.IsNullOrEmpty(RequiredateHlp) ? DateTime.ParseExact(RequiredateHlp, "MM-dd-yyyy", provider).Date : Convert.ToDateTime(salesorder.Requiredate);
            dShipDate = !string.IsNullOrEmpty(ShipDateHlp) ? DateTime.ParseExact(ShipDateHlp, "MM-dd-yyyy", provider).Date : DateTime.Now;
            dApprovedDate = !string.IsNullOrEmpty(AprovedDateHlp) ? DateTime.ParseExact(AprovedDateHlp, "MM-dd-yyyy", provider).Date : Convert.ToDateTime(salesorder.ShipDate);

            if (ModelState.IsValid)
            {
                salesorder.SODate = dSODate;
                salesorder.ShipDate = dShipDate;
                salesorder.Requiredate = dRequiredDate;
                salesorder.AprovedDate = dApprovedDate;

                if (salesorder.Tax_rate == null)
                {
                    salesorder.Tax_rate = 0;
                }

                if (!string.IsNullOrEmpty(billtoid))
                {
                    try
                    {
                        nBilltoId = Convert.ToInt32(billtoid);
                    }
                    catch (Exception)
                    {
                        nBilltoId = 0;
                    }

                    if (nBilltoId == 0)
                    {
                        salesorder.CustomerShiptoId = null;
                    }
                    else
                    {
                        salesorder.CustomerShiptoId = nBilltoId;
                    }
                }

                db.Entry(salesorder).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            else
            {
                //Get the drop down data to enabel the display of errors
                qryTrade = db.Trades.OrderBy(trd => trd.TradeName);
                if (qryTrade.Count() > 0)
                {
                    foreach (var item in qryTrade)
                    {
                        listSelector.Add(new KeyValuePair<string, string>(item.TradeId.ToString(), item.TradeName));
                    }
                }
                SelectList tradeselectorlist = new SelectList(listSelector, "Key", "Value");
                ViewBag.TradeList = tradeselectorlist;

                listSelector = new List<KeyValuePair<string, string>>();
                qryWarehouse = db.Warehouses.OrderBy(csp => csp.Warehouse);
                if (qryWarehouse.Count() > 0)
                {
                    foreach (var item in qryWarehouse)
                    {
                        listSelector.Add(new KeyValuePair<string, string>(item.Warehouse, item.Warehouse));
                    }
                }
                SelectList warehouselist = new SelectList(listSelector, "Key", "Value");
                ViewBag.WarehouseList = warehouselist;

                //Get the error
                foreach (var item in ModelState.Values)
                {
                    if (item.Errors.Count > 0)
                    {
                        foreach (var itemError in item.Errors)
                        {
                            szMsg = itemError.ErrorMessage;
                            szError = string.Format("{0} {1}", szError, szMsg);
                        }
                    }
                }
                ViewBag.ErrorSalesOrder = szError;

            }
            return View(salesorder);
        }
        //
        // GET: //CreateSalesOrder
        public ActionResult CreateSalesOrder(string id)
        {
            int nSalesOrderNo = 0;
            int nTradeid = 0;
            int nCustomerId = 0;
            double dTaxRate = 0;
            InitialInfo initialinfo = null;
            Customers customer = null;
            SalesOrder salesorder = null;

            //Get the sales order no
            initialinfo = db.InitialInfoes.FirstOrDefault<InitialInfo>();
            if (initialinfo == null)
            {
                initialinfo = new InitialInfo();
                initialinfo.InvoiceNo = 0;
                initialinfo.PaymentNo = 0;
                initialinfo.PurchaseOrderNo = 0;
                initialinfo.SalesOrderNo = 1;
                nSalesOrderNo = 1;
                initialinfo.TaxRate = 0;
                db.InitialInfoes.Add(initialinfo);
            }
            else
            {
                nSalesOrderNo = initialinfo.SalesOrderNo;
                nSalesOrderNo++;
                initialinfo.SalesOrderNo = nSalesOrderNo;
                dTaxRate = initialinfo.TaxRate;
                db.Entry(initialinfo).State = EntityState.Modified;
            }

            //Get the customer id
            customer = db.Customers.Where(cst => cst.CustomerNo == id).FirstOrDefault<Customers>();
            if (customer != null)
            {
                nCustomerId = customer.Id;

                salesorder = new SalesOrder();
                salesorder.CustomerId = nCustomerId;
                salesorder.SODate = DateTime.Now;
                salesorder.IsBlindShip = false;
                salesorder.TradeId = nTradeid;
                salesorder.SalesOrderNo = nSalesOrderNo.ToString();
                salesorder.Tax_rate = Convert.ToDouble(dTaxRate);
                salesorder.Invs_Tax = Convert.ToDouble(dTaxRate);
                db.SalesOrders.Add(salesorder);
                db.SaveChanges();
            }

            return RedirectToAction("Edit", new { id = salesorder.SalesOrderId });
            //return View("Edit", new { id = salesorder.SalesOrderId });
        }
 public void Add(SalesOrder salesOrder)
 {
     context.SalesOrder.AddObject(salesOrder);
     context.SaveChanges();
 }
        public void When_related_entities_are_used_without_relationship_info_exception_is_raised()
        {
            var ctx = new XrmFakedContext();
            var service = ctx.GetFakedOrganizationService();

            var order = new SalesOrder();

            var orderItems = new EntityCollection(new List<Entity>()
            {
                new SalesOrderDetail(),
                new SalesOrderDetail()
            });

            // Add related order items so it can be created in one request
            order.RelatedEntities.Add(new Relationship
            {
                PrimaryEntityRole = EntityRole.Referenced,
                SchemaName = "order_details"
            }, orderItems);

            var request = new CreateRequest
            {
                Target = order
            };

            var exception = Assert.Throws<Exception>(() => service.Execute(request));
            Assert.Equal(exception.Message, "Relationship order_details does not exist in the metadata cache");
        }
        public void When_related_entities_and_relationship_are_used_child_entities_are_created()
        {
            var ctx = new XrmFakedContext();
            var service = ctx.GetFakedOrganizationService();

            ctx.AddRelationship("order_details",
                new XrmFakedRelationship()
                {
                    Entity1LogicalName = SalesOrder.EntityLogicalName,  //Referenced
                    Entity1Attribute = "salesorderid",              //Pk
                    Entity2LogicalName = SalesOrderDetail.EntityLogicalName,
                    Entity2Attribute = "salesorderid",              //Lookup attribute
                    RelationshipType = XrmFakedRelationship.enmFakeRelationshipType.OneToMany
                });

            var order = new SalesOrder();

            var orderItems = new EntityCollection(new List<Entity>()
            {
                new SalesOrderDetail(),
                new SalesOrderDetail()
            });

            // Add related order items so it can be created in one request
            order.RelatedEntities.Add(new Relationship
            {
                PrimaryEntityRole = EntityRole.Referenced,
                SchemaName = "order_details"
            }, orderItems);

            var request = new CreateRequest
            {
                Target = order
            };

            var id = (service.Execute(request) as CreateResponse).id;
            var createdOrderDetails = ctx.CreateQuery<SalesOrderDetail>().ToList();

            Assert.Equal(createdOrderDetails.Count, 2);
            Assert.Equal(createdOrderDetails[0].SalesOrderId.Id, id);
            Assert.Equal(createdOrderDetails[1].SalesOrderId.Id, id);
        }
 public static SalesOrder CreateSalesOrder(string soId)
 {
     SalesOrder salesOrder = new SalesOrder();
     salesOrder.SoId = soId;
     return salesOrder;
 }
 public void AddToSalesOrderCollection(SalesOrder salesOrder)
 {
     base.AddObject("SalesOrderCollection", salesOrder);
 }