private static Result <SalesOrder> CreateSalesOrder( WineMsSalesOrderTransactionDocument salesOrderTransactionDocument) => ExceptionWrapper .Wrap( () => { var customer = new Customer(salesOrderTransactionDocument.CustomerAccountCode); var salesOrder = (SalesOrder) new SalesOrder { Customer = customer, DeliveryDate = salesOrderTransactionDocument.TransactionDate, Description = "Tax Invoice", DiscountPercent = (double)salesOrderTransactionDocument.DocumentDiscountPercentage, DueDate = salesOrderTransactionDocument.TransactionDate, InvoiceDate = salesOrderTransactionDocument.TransactionDate, OrderDate = salesOrderTransactionDocument.TransactionDate, OrderNo = salesOrderTransactionDocument.DocumentNumber } .SetDeliveryAddress(customer) .SetPostalAddress(customer) .SetMessageLines(salesOrderTransactionDocument) .SetTaxMode(customer) .SetExchangeRate(customer, salesOrderTransactionDocument.ExchangeRate) ; return(Result.Ok(salesOrder)); });
public static Result <WineMsSalesOrderTransactionDocument> ProcessTransaction( WineMsSalesOrderTransactionDocument wineMsSalesOrderTransactionDocument) => CreateSalesOrder(wineMsSalesOrderTransactionDocument) .OnSuccess( order => order.AddSalesOrderLines(wineMsSalesOrderTransactionDocument)) .OnSuccess( order => ExceptionWrapper .Wrap( () => { order.Save(); wineMsSalesOrderTransactionDocument.IntegrationDocumentNumber = order.OrderNo; return(Result.Ok(wineMsSalesOrderTransactionDocument)); }));