Example #1
0
        private bool createMoneyTransferOrder(ICashWithdrawalInstruction instruction)
        {
            bool createMoneyOrder = false;
            if (Money.Add(instruction.Account.TotalCash, instruction.Amount).IsGreaterThanOrEqualToZero)
                createMoneyOrder = true;
            else
            {
                switch (instruction.CheckAccountCash(CashWithdrawalInstructionActions.PlaceFreeUpCashFundOrder))
                {
                    case CashWithdrawalInstructionCheckCashReturnValues.PlaceCashFundOrder:
                        instruction.Warning = true;
                        placeCashFundOrder(instruction);
                        createMoneyOrder = true;
                        break;
                    case CashWithdrawalInstructionCheckCashReturnValues.CreateRebalanceInstruction:
                        createRebalanceInstruction(instruction);
                        instruction.Warning = true;
                        instruction.Status = (int)CashWithdrawalInstructionStati.New;
                        break;
                    case CashWithdrawalInstructionCheckCashReturnValues.NotEnoughBuyingPower:
                        instruction.Message = "Not enough buying power to create the Money Transfer order.";
                        instruction.Warning = true;
                        break;
                }
            }

            if (createMoneyOrder)
            {
                IMoneyTransferOrder moneyOrder = new MoneyTransferOrder(instruction);
                string info = "";
                if (instruction.UpdateableOrders != null && instruction.UpdateableOrders.Count > 0)
                    info = " and a Cash Fund order";
                else if (instruction.Account.ActiveRebalanceInstructions.Count > 0)
                {
                    foreach (IInstruction rebInst in instruction.Account.ActiveRebalanceInstructions)
                    {
                        if (rebInst.Key == 0)
                            info = " and a Rebalance Instruction";
                    }
                }
                instruction.Message = string.Format("Money Transfer order{0} created on {1}", info, DateTime.Now.ToString("yyyy-MM-dd hh:mm"));
                instruction.Warning = (info != "");
            }
            return true;
        }