/* ******************************* Order Request *********************************
         * Required Fields:
         *
         * Items        -	List of items to order      -	ArrayOfOrderRequestItems   -    N/A
         * JobNumber    -	Customer contract number    -  	int
         * OrderedBy    -	Person placing order        -	OrderedByRequest
         * ShipTo	    -   Person receiving order      -	ShipToRequest
         *
         * *******************************************************************************/
        public OrderRequest EmitOrderRequest(Order order, MasterOrder masterOrder, List<OrderLineItem> orderItems, ShipAddress shipAddress, string uniqueId = null)
        {
            var orderRequest = new OrderRequest();
            var itemArray = new OrderRequestItem[orderItems.Count];
            // add item request for each item
            for (var i = 0; i < orderItems.Count; i++)
            {
                itemArray[i] = EmitOrderRequestItem(orderItems[i]);
            }
            orderRequest.Items = itemArray;

            orderRequest.OrderName = masterOrder.MasterOrderId.ToString(CultureInfo.InvariantCulture);
            orderRequest.JobNumber = 52000;
            orderRequest.OrderedBy = EmitOrderedByRequest(shipAddress);
            orderRequest.ShipTo = new[] { EmitShipToRequest(shipAddress) };
            orderRequest.Comment = "TEST ORDER: DO NOT SHIP";
            orderRequest.Transaction = 0; //*int.Parse(*/masterOrder.MasterOrderId;//.ToString() + masterOrder.CreateDateTime.Hour.ToString() + masterOrder.CreateDateTime.Minute.ToString()
            orderRequest.OrderPrefix = "FI";

            orderRequest.CreatedBy = uniqueId;

            orderRequest.TType = TransactionTypes.StandardOrder;

            #region Additional Fields

            orderRequest.REC_NUM = 0;
            //+ masterOrder.CreateDateTime.Second.ToString());
            orderRequest.Sequence = 0;
            //orderRequest.METHOD = 0;
            //orderRequest.WarehouseID = 0;
            orderRequest.OrderOrigination = OrderSources.Web;
            //orderRequest.Status = OrderStatuses.Open;
            //orderRequest.OrderApprovalStatus = ApprovalStatus.Approved;
            //orderRequest.CreatedDate = DateTime.Now;
            //orderRequest.CustReference = string.Empty;
            //orderRequest.CustomerNumber = string.Empty;
            // orderRequest.CustomerOrderType = string.Empty;
            //orderRequest.LastModDate = DateTime.Now;
            // orderRequest.LastUpdatedBy = string.Empty;
            //orderRequest.DiscountCode = 'a';
            // orderRequest.UsageCode = 'a';
            orderRequest.CustomerID = shipAddress.SubscriberId;
            #endregion

            System.Diagnostics.Debug.WriteLine(orderRequest.ToString());
            return orderRequest;
        }
 /* **************************** Order Request Item *****************************
  * Required Fields:
  *
  * stockNumber  -	Identifying number for the inventory item   -	string  -	24
  * quantity     -	Number of items desired                     -	int     -	N/A
  *
  * *****************************************************************************/
 private OrderRequestItem EmitOrderRequestItem(OrderLineItem item)
 {
     var orderRequestItem = new OrderRequestItem
         {
             StockNumber = DBCache.EquipmentTypes.First(e => e.EquipmentTypeId == item.EquipTypeId).FrontierSKU,
             Quantity = item.Quantity,
             ShipQuantity = item.Quantity,
             JobNumber = 52000,
             Transaction = _masterOrder.MasterOrderId,
             Sequence = 1
         };
     System.Diagnostics.Debug.WriteLine(orderRequestItem.ToString());
     return orderRequestItem;
 }