/// <summary>
        /// Add a single sales order to the SalesOrder Datatable
        /// </summary>
        /// <param name="salesOrder"></param>
        public void AddSalesOrder(DTO.SalesOrder.DTO_SalesOrder salesOrder)
        {
            lock (SalesOrderTableLock)
            {
                //Generate datatable if it does not exists
                if (SalesOrderTable == null)
                {
                    GenerateSalesOrderDatatable(SalesOrderIndexerConfig.IndexName);
                }

                DataRow NewRow = SalesOrderTable.NewRow();

                Type t = typeof(DTO.SalesOrder.DTO_SalesOrder);
                // Get the public properties.
                PropertyInfo[] propInfos = t.GetProperties(BindingFlags.Public | BindingFlags.Instance);

                //Load new row with data.
                foreach (var propInfo in propInfos)
                {
                    NewRow[propInfo.Name] = propInfo.GetValue(salesOrder);
                }

                //add new row to datatable.
                SalesOrderTable.Rows.Add(NewRow);
            }
        }
        /// <summary>
        /// Sends a single SalesOrder object for onboarding into eMite.
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public override DTO_Result Onboard(DTO_Base data)
        {
            bcl.DTO.DTO_Result Results = new DTO_Result();

            //Create a sales order list object
            DTO.SalesOrder.DTO_SalesOrderList SalesOrders = new DTO.SalesOrder.DTO_SalesOrderList();

            //check if the DTO passed is of type DTO_SalesOrder
            if (data.GetType() == typeof(DTO.SalesOrder.DTO_SalesOrder))
            {
                //cast the dto to DTO_SalesOrder object
                DTO.SalesOrder.DTO_SalesOrder salesOrder = (DTO.SalesOrder.DTO_SalesOrder)data;

                //add the sales order to the list
                SalesOrders.Add(salesOrder);

                //onboard the sales order.
                Results = Onboard(SalesOrders);
            }
            else
            {
                //Log DTO not of type DTO_SalesOrder
                Log.Error("Record not of type: DTO_SalesOrder");
            }


            return(Results);
        }