コード例 #1
0
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $builder->add('distribution_method', 'choice', array('choices' => AccountContribution::getDistributionMethodChoices(), 'expanded' => true, 'multiple' => false, 'required' => false))->add('has_federal_withholding', 'choice', array('choices' => array(1 => 'Yes', 0 => 'No'), 'expanded' => true, 'multiple' => false, 'required' => false))->add('percent_tax_rate', 'text', array('required' => false))->add('money_tax_rate', 'text', array('required' => false));
     if (!$this->isPreSaved) {
         $builder->addEventListener(FormEvents::BIND, array($this, 'onBind'));
     }
 }
コード例 #2
0
 public function preSetData(FormEvent $event)
 {
     /** @var $data AccountContribution */
     $data = $event->getData();
     $form = $event->getForm();
     $frequencyChoices = array_reverse(array_slice(AccountContribution::getTransactionFrequencyChoices(), 1, 3, true), true);
     if ($data && $data->getId()) {
         $frequency = $data->getTransactionFrequency() ? $data->getTransactionFrequency() : null;
     } else {
         $frequency = null;
     }
     $form->add($this->factory->createNamed('transaction_frequency', 'choice', null, array('choices' => $frequencyChoices, 'expanded' => true, 'multiple' => false, 'data' => $frequency, 'required' => false)));
     $data->setType(AccountContribution::TYPE_FUNDING_BANK);
     parent::preSetData($event);
 }
コード例 #3
0
 /**
  * @param ObjectManager $manager
  * @param array $data
  * @param User $clientUser
  * @return ClientAccount
  */
 private function createClientAccount(ObjectManager $manager, array $data, User $clientUser)
 {
     $securityRepository = $manager->getRepository('WealthbotAdminBundle:Security');
     $account = new ClientAccount();
     $account->setClient($clientUser);
     $account->setGroupType($this->getReference('client-account-group-type-' . $data['group_type_key']));
     $account->setFinancialInstitution($data['financial_institution']);
     $account->setValue($data['value']);
     $account->setMonthlyContributions($data['monthly_contributions']);
     $account->setMonthlyDistributions($data['monthly_distributions']);
     $account->setSasCash($data['sas_cash']);
     $account->setProcessStep($data['process_step']);
     $account->setStepAction($data['step_action']);
     $account->setIsPreSaved($data['is_pre_saved']);
     $account->setUnconsolidated($data['unconsolidated']);
     if ($data['consolidator_index']) {
         $consolidator = $clientUser->getClientAccounts()->get($data['consolidator_index'] - 1);
         $account->setConsolidator($consolidator);
     }
     foreach ($data['owners'] as $ownerType) {
         $accountOwner = new ClientAccountOwner();
         if ($ownerType === ClientAccountOwner::OWNER_TYPE_SELF) {
             $accountOwner->setClient($clientUser);
         } else {
             $accountOwner->setContact($clientUser->getAdditionalContacts()->first());
         }
         $accountOwner->setOwnerType($ownerType);
         $accountOwner->setAccount($account);
         $account->addAccountOwner($accountOwner);
     }
     $manager->persist($account);
     $manager->flush();
     $manager->refresh($account);
     if (isset($data['account_contribution'])) {
         $accountContribution = new AccountContribution();
         $accountContribution->setAccount($account);
         $accountContribution->setType($data['account_contribution']['type']);
         $accountContribution->setTransactionFrequency($data['account_contribution']['transaction_frequency']);
         $account->setAccountContribution($accountContribution);
         $manager->persist($accountContribution);
     }
     if (isset($data['securities'])) {
         foreach ($data['securities'] as $securityItem) {
             //ToDo: CE-402. Check that code is not needed more.
             //                $security = $securityRepository->findOneBySymbol($securityItem['symbol']);
             //                if (!$security) {
             //                    /** @var SecurityType $securityType */
             //                    $securityType = $this->getReference('security-type-' . $securityItem['type']);
             //
             //                    $security = new Security();
             //                    $security->setName($securityItem['name']);
             //                    $security->setSymbol($securityItem['symbol']);
             //                    $security->setSecurityType($securityType);
             //                    $security->setExpenseRatio($securityItem['exp_ratio']);
             //                }
             //                $securityAssignment = new SecurityAssignment();
             //                $securityAssignment->setSecurity($security);
             //                $securityAssignment->setRia($clientUser->getRia()); Deprecated
             //                $accountOutsideFund = new AccountOutsideFund();
             //                $accountOutsideFund->setAccount($account);
             //                $accountOutsideFund->setSecurityAssignment($securityAssignment);
             //                $accountOutsideFund->setIsPreferred(false);
             //
             //                $manager->persist($accountOutsideFund);
         }
     }
     $manager->persist($account);
     $manager->flush();
     $this->addReference('client-account-' . $account->getId(), $account);
     return $account;
 }
コード例 #4
0
 /**
  * Build data for contribution form with create action
  *
  * @param AccountContribution $existContribution
  * @return AccountContribution
  * @throws \Exception
  */
 private function buildUpdateContributionData(AccountContribution $existContribution = null)
 {
     if (!$existContribution || $existContribution->isOneTimeContribution()) {
         throw new \Exception('No object with auto-invest instructions for update.');
     }
     return $existContribution;
 }
コード例 #5
0
 protected function getChoicesForTransactionFrequency()
 {
     $transactionFrequencyChoices = AccountContribution::getTransactionFrequencyChoices();
     return $transactionFrequencyChoices;
 }
コード例 #6
0
 public function fundingDistributingAction(Request $request)
 {
     $em = $this->get('doctrine.orm.entity_manager');
     $adm = $this->get('wealthbot_docusign.account_docusign.manager');
     $documentSignatureManager = $this->get('wealthbot_docusign.document_signature.manager');
     $repo = $em->getRepository('WealthbotClientBundle:ClientAccount');
     $custodianMessagesRepo = $em->getRepository('WealthbotAdminBundle:CustodianMessage');
     /** @var User $client */
     $client = $this->getUser();
     $riaCompanyInformation = $client->getRiaCompanyInformation();
     /** @var $account ClientAccount */
     $account = $repo->findOneBy(array('id' => $request->get('account_id'), 'client_id' => $client->getId()));
     if (!$account) {
         $this->createNotFoundException('You have not account with id: ' . $request->get('account_id') . '.');
     }
     $this->denyAccessForCurrentRetirementAccount($account);
     $transferFunding = $account->getAccountContribution();
     if (!$transferFunding) {
         $transferFunding = new AccountContribution();
         $transferFunding->setAccount($account);
     }
     $isPreSaved = $request->isXmlHttpRequest();
     $formData = array('funding' => $transferFunding);
     $form = $this->createForm(new TransferFundingDistributingFormType($em, $account, $isPreSaved), $formData);
     $bankInfoForm = $this->createForm(new BankInformationFormType());
     if ($request->isMethod('post')) {
         $form->bind($request);
         if ($form->isValid()) {
             if ($account->hasFunding() || $account->hasGroup(AccountGroup::GROUP_DEPOSIT_MONEY) || $adm->hasElectronicallySignError($account)) {
                 $transferFunding = $form->get('funding')->getData();
                 $em->persist($transferFunding);
                 $em->flush($transferFunding);
             } else {
                 $em->remove($transferFunding);
             }
             $account->setStepAction(ClientAccount::STEP_ACTION_FUNDING_DISTRIBUTING);
             $account->setIsPreSaved($isPreSaved);
             $em->persist($account);
             $em->flush();
             $em->refresh($account);
             $consolidatedAccounts = $account->getConsolidatedAccountsCollection();
             $bankTransferAccounts = $consolidatedAccounts->getBankTransferredAccounts();
             if ($bankTransferAccounts->count()) {
                 $accountContribution = $account->getAccountContribution();
                 if (!$documentSignatureManager->isDocumentSignatureForObjectExist($accountContribution)) {
                     $documentSignatureManager->createSignature($accountContribution);
                 }
             }
             $redirectUrl = $this->getRedirectUrl($account, ClientAccount::STEP_ACTION_FUNDING_DISTRIBUTING);
             if ($isPreSaved) {
                 return $this->getJsonResponse(array('status' => 'success', 'redirect_url' => $redirectUrl));
             }
             return $this->redirect($redirectUrl);
         } else {
             if ($isPreSaved) {
                 return $this->getJsonResponse(array('status' => 'error'));
             }
         }
     }
     $hasDocusignError = false;
     if ($account->getTransferInformation()) {
         $adm = $this->get('wealthbot_docusign.account_docusign.manager');
         $isAllowedNonElectronicallyTransfer = $riaCompanyInformation->getAllowNonElectronicallySigning();
         $hasDocusignError = !$isAllowedNonElectronicallyTransfer && !$adm->isUsedDocusign($account->getId());
     }
     return $this->render($this->getTemplate('funding_distributing.html.twig'), array('client' => $client, 'account' => $account, 'transfer_funding' => $transferFunding, 'form' => $form->createView(), 'bank_info_form' => $this->renderView($this->getTemplate('_create_bank_account_form.html.twig'), array('form' => $bankInfoForm->createView(), 'account_id' => $account->getId())), 'messages' => $custodianMessagesRepo->getAssocByCustodianId($riaCompanyInformation->getCustodianId()), 'has_docusign_error' => $hasDocusignError));
 }