Code: Select all
transactionsManager.ApplyChanges(Constants.TestString, transaction);
Code: Select all
transactionsManager.ApplyChanges(Constants.TestString, transaction);
Code: Select all
public void ApplyTemplateAndDisburse(string orderNumber)
{
var configuration = GetConfiguration();
using (var selectServer = GetSelectServer(configuration))
{
var orderStore = selectServer.GetService<IOrderStore>();
var orderInfo = orderStore.Orders.FirstOrDefault(x => x.Number == orderNumber);
var order = orderStore.OpenOrder(orderInfo, false);
var dynamicOrder = (dynamic) order;
var accountsManager = selectServer.GetService<IAccountsManager>();
var trustAccountInfo = accountsManager.TrustAccounts.FirstOrDefault(x => x.Code == "Test");
order.SetTag("TrustAccountId", trustAccountInfo.ID.ToString());
// Figure out which template to use
string templateName;
switch (orderInfo.State.Code)
{
case "CA":
switch (orderInfo.SettlementType)
{
case SettlementType.HUD1:
templateName = "TestSPBankCA-Temp";
break;
case SettlementType.CDF:
templateName = "TestSPBankCA-CDF";
break;
default:
throw new Exception("Unrecognized Settlement Type");
}
break;
case "HI":
switch (orderInfo.SettlementType)
{
case SettlementType.HUD1:
templateName = "TestSPBankHI-Temp";
break;
case SettlementType.CDF:
templateName = "TestSPBankHI-CDF";
break;
default:
throw new Exception("Unrecognized Settlement Type");
}
break;
default:
switch (orderInfo.SettlementType)
{
case SettlementType.HUD1:
templateName = "TestSPBankWA-Temp";
break;
case SettlementType.CDF:
templateName = "TestSPBankWA-CDF";
break;
default:
throw new Exception("Unrecognized Settlement Type");
}
break;
}
var templateInfo = orderStore.Orders.FirstOrDefault((x => x.Number == templateName));
var template = orderStore.OpenOrder(templateInfo, true);
order.ApplyTemplate(template);
try
{
orderStore.ApplyChanges(dynamicOrder);
}
catch (Exception)
{
Trace.WriteLine("----- Order Messages");
foreach (var message in order.GetMessages())
{
Trace.WriteLine(message.Text);
}
Trace.WriteLine("----- End Order Messages");
throw;
}
var orderId = orderInfo.Identifier.Guid;
var ledgersManager = selectServer.GetService<ILedgersManager>();
var ledgerInfo = ledgersManager.GetLedgerForOrder(orderId);
var ledger = ledgersManager.GetLedger(ledgerInfo);
var orderLedger = (IOrderLedger)ledger;
var transactionsManager = selectServer.GetService<ITransactionsManager>();
// load the full ledger object
var ledgerOrderInfo = orderLedger.GetOrderInformation();
foreach (var transactionInfo in ledger.Transactions)
{
var transaction = transactionsManager.GetTransaction(transactionInfo);
if (transaction.Kind == TransactionKind.LedgerTransferOut)
{
var orderContactIDTags = transaction.Tags.Where(t => t.Name == "OrderContactID");
if (!orderContactIDTags.Any())
{
var underwriter = ledgerOrderInfo.Contacts.Single(c => c.Code == "U");
transaction.Tags.Add(new Tag("OrderContactID", underwriter.ID.ToString()));
}
var ledgerTransferOut = (ILedgerTransferOutTransaction) transaction;
var destinationLedgerName = "TestFeeLedger";
switch (orderInfo.State.Code)
{
// California, Colorado, and Florida are all handled by California
case "CA":
case "CO":
case "FL":
destinationLedgerName = "CATestFeeLedger";
break;
case "HI":
destinationLedgerName = "HITestFeeLedger";
break;
}
var destinationLedgerInfo = ledgersManager.Ledgers.Single(l => l.Name == destinationLedgerName);
var ledgerTransferIn = transactionsManager.NewLedgerTransferIn(ledgerTransferOut, destinationLedgerInfo, TransactionStatus.Posted, null);
transaction.Name = Constants.TestString;
transaction.Status = TransactionStatus.Posted;
try
{
transactionsManager.ApplyChanges(Constants.TestString, transaction);
}
catch (Exception e)
{
Trace.WriteLine("----------SQL Exception(s)----------");
Trace.WriteLine(e.Message);
while (e.InnerException != null)
{
e = e.InnerException;
Trace.WriteLine(e.Message);
}
throw;
}
}
}
}
}