/// <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); }
/// <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); }
/// <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); }
/// <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(); }
/// <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); }