/// <summary>
        /// Saves the specified CommanderSalesOrder to the underlying data store via the configured DataProvider.
        /// If a duplicate Commander Sales Order occurs then an exception will be raised.
        /// </summary>
        /// <param name="commanderOrder">The commander order.</param>
        /// <returns></returns>
        public static int SaveSalesOrder(CommanderSalesOrder commanderOrder)
        {
            try
            {
                if (commanderOrder.IsValid)
                {
                    // Save entity
                    commanderOrder.Id = DataAccessProvider.Instance().SaveCommanderSalesOrder(commanderOrder);
                }
                else
                {
                    // Entity is not valid
                    throw new InValidBusinessObjectException(commanderOrder);
                }
            }
            catch (Exception ex)
            {
                if (ExceptionPolicy.HandleException(ex, "Business Logic"))
                {
                    throw;
                }
            }

            return(commanderOrder.Id);
        }
        /// <summary>
        /// Saves the specified CommanderSalesOrder to the underlying data store via the configured DataProvider.
        /// If a duplicate Commander Sales Order occurs then an exception will be raised.        /// </summary>
        /// <param name="commanderOrder">The commander order.</param>
        /// <param name="saveLines">if set to <c>true</c> [save lines].</param>
        /// <returns></returns>
        public static int SaveSalesOrder(CommanderSalesOrder commanderOrder, bool saveLines)
        {
            int returnValue = -1;

            try
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    returnValue = SaveSalesOrder(commanderOrder);
                    if (returnValue != -1)
                    {
                        foreach (CommanderSalesOrderLine line in commanderOrder.Lines)
                        {
                            line.CommanderSalesOrderId = returnValue;
                        }
                        SaveSalesOrderLines(commanderOrder.Lines);
                    }
                    if (Transaction.Current != null &&
                        Transaction.Current.TransactionInformation.Status == TransactionStatus.Active)
                    {
                        scope.Complete();
                    }
                }
                return(returnValue);
            }
            catch (Exception ex)
            {
                if (ExceptionPolicy.HandleException(ex, "Business Logic"))
                {
                    throw;
                }
            }

            return(returnValue);
        }
Beispiel #3
0
        /// <summary>
        /// Populates the commander sales order from the item values held in the TextFieldCollection..
        /// </summary>
        /// <param name="fields">The fields.</param>
        /// <returns></returns>
        private CommanderSalesOrder PopulateCommanderSalesOrder(TextFieldCollection fields)
        {
            CommanderSalesOrder salesOrder = new CommanderSalesOrder();

            salesOrders.Add(salesOrder);
            salesOrder.DeliveryAddress = new Address();

            PopulateProperties(fields, salesOrder);

            //set the updated by field to the name of this class
            salesOrder.UpdatedBy = GetType().ToString();

            return(salesOrder);
        }
Beispiel #4
0
        /// <summary>
        /// Saves the commander orders.
        /// </summary>
        /// <param name="requestMessage">The request message.</param>
        /// <returns></returns>
        private SubscriberStatusEnum SaveCommanderOrders(RequestMessage requestMessage)
        {
            foreach (CommanderSalesOrder salesOrder in salesOrders)
            {
                //check to see if a commander order already exists for this order reference
                CommanderSalesOrder previousRecord = CommanderController.GetSalesOrder(salesOrder.OrderReference, false);
                if (previousRecord != null)
                {
                    //check to see if the related shipment exists and if it has been sent to the warehouse yet
                    TDCShipment relatedShipment =
                        TDCShipmentController.GetShipment(requestMessage.SourceSystem, previousRecord.OrderReference, "NA");

                    if (relatedShipment != null)
                    {
                        if (Null.NullDate != relatedShipment.SentToWMS)
                        {
                            ////log
                            //LogEntry logEntry=new  LogEntry();
                            //logEntry.Message = "blah";
                            //Logger.Write(logEntry);
                            // throw new Exception("This message has already been sent to the warehouse.");
                            return(SubscriberStatusEnum.Processed);
                        }
                    }

                    salesOrder.Id = previousRecord.Id;
                    foreach (CommanderSalesOrderLine commanderSalesOrderLine in salesOrder.Lines)
                    {
                        commanderSalesOrderLine.CommanderSalesOrderId = previousRecord.Id;
                    }
                }

                //save salesOrder and lines
                try
                {
                    int savedId = CommanderController.SaveSalesOrder(salesOrder, true);
                }

                catch (InValidBusinessObjectException ex)
                {
                    //log exception
                }
            }

            return(SubscriberStatusEnum.Processed);
        }
Beispiel #5
0
        /// <summary>
        /// Processes the request.
        /// </summary>
        /// <param name="requestMessage">The request message.</param>
        /// <returns></returns>
        public override void ProcessRequest(RequestMessage requestMessage)
        {
            try
            {
                CommanderSalesOrder.SetCommanderSalesOrderFileHeaderSchema(textFieldParser.TextFields);

                base.ProcessRequest(requestMessage);
                Status = SaveCommanderOrders(requestMessage);
            }
            catch (Exception ex)
            {
                // Store the exception
                LastError = ex;

                // Failed
                Status = SubscriberStatusEnum.Failed;
            }
        }
        private static void CustomFill(CommanderSalesOrder item, IDataReader dataReader, bool fullyPopulate)
        {
            if (fullyPopulate)
            {
                List <CommanderSalesOrderLine> lines = GetSalesOrderLines(item.Id, true);
                foreach (CommanderSalesOrderLine line in lines)
                {
                    item.Lines.Add(line);
                }
            }

            item.DeliveryAddress       = new Address();
            item.DeliveryAddress.Line1 = dataReader["DeliveryAddress1"].ToString();
            item.DeliveryAddress.Line2 = dataReader["DeliveryAddress2"].ToString();
            item.DeliveryAddress.Line3 = dataReader["DeliveryAddress3"].ToString();
            item.DeliveryAddress.Line4 = dataReader["DeliveryAddress4"].ToString();
            item.DeliveryAddress.Line5 = dataReader["DeliveryAddress5"].ToString();
        }
Beispiel #7
0
        /// <summary>
        /// Texts the parser_ record read.
        /// </summary>
        /// <param name="CurrentLineNumber">The current line number.</param>
        /// <param name="lineText">The line text.</param>
        protected override void textFieldParser_RecordRead(int CurrentLineNumber, string lineText)
        {
            string type;
            string subType;

            GetRowTypeAndSubType(lineText, out type, out subType);

            //check the type and subtype so we know what schema to set the parser to and which handlers to setup
            if (type == Customer_Order && subType == "A")
            {
                CommanderSalesOrder.SetCommanderSalesOrderHeaderSchema(textFieldParser.TextFields);
                AddSalesOrderHandlers();
            }
            else if (type == Order_Item && subType == "A")
            {
                CommanderSalesOrderLine.SetCommanderSalesOrderLinesSchema(textFieldParser.TextFields);
                AddSalesOrderLineHandlers();
            }
        }
        /// <summary>
        /// Retrieves a single CommanderSalesOrder from the underlying data store via the configured DataProvider for the supplied CommanderSalesOrder ID.
        /// An instance of an CommanderSalesOrder is returned to the caller or Null if no CommanderSalesOrder record is found.  If an error occurs, an exception is thrown.
        /// </summary>
        /// <param name="salesOrderId">The sales order id.</param>
        /// <param name="fullyPopulate">if set to <c>true</c> [fully populate].</param>
        /// <returns></returns>
        public static CommanderSalesOrder GetSalesOrder(int salesOrderId, bool fullyPopulate)
        {
            CommanderSalesOrder salesOrder = null;

            try
            {
                salesOrder =
                    CBO <CommanderSalesOrder> .FillObject(
                        DataAccessProvider.Instance().GetCommanderSalesOrder(salesOrderId),
                        CustomFill,
                        fullyPopulate);
            }
            catch (Exception ex)
            {
                if (ExceptionPolicy.HandleException(ex, "Business Logic"))
                {
                    throw;
                }
            }
            return(salesOrder);
        }