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')); } }
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); }
/** * @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; }
/** * 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; }
protected function getChoicesForTransactionFrequency() { $transactionFrequencyChoices = AccountContribution::getTransactionFrequencyChoices(); return $transactionFrequencyChoices; }
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)); }