コード例 #1
0
ファイル: Engine.php プロジェクト: jaapjansma/homefinance
 public function triggerOnTransaction(Transaction $transaction)
 {
     $administration = $transaction->getAdministration();
     $repo = $this->entityManager->getRepository('HomefinanceBundle:Rule');
     $rules = $repo->findByAdministration($administration);
     foreach ($rules as $rule) {
         $this->triggerRule($transaction, $rule);
     }
 }
コード例 #2
0
 protected function edit(Transaction $transaction, Request $request, $redirect = nul)
 {
     $repo = $this->getDoctrine()->getRepository('HomefinanceBundle:BankAccount');
     $bank_accounts = $repo->choices($transaction->getAdministration());
     $transactionManager = $this->get('homefinance.transaction.manager');
     $tagManager = $this->get('homefinance.tag.manager');
     $tags = $tagManager->listAllTags();
     $categoryManager = $this->get('homefinance.category.manager');
     $categories = $categoryManager->allLeafCategories();
     $form = $this->createForm('transaction', $transaction, array('bank_accounts' => $bank_accounts, 'categories' => $categories));
     if ($transaction->getId() && !$transaction->isProcessed()) {
         $form->add('save_process_next', 'submit', array('label' => 'transaction.save_process_next.btn-label', 'attr' => array('class' => 'btn btn-lg btn-success')));
         $form->add('cancel_and_next', 'submit', array('label' => 'transaction.cancel_and_next.btn-label', 'attr' => array('class' => 'btn btn-lg btn-warning')));
     }
     $form->handleRequest($request);
     if ($form->isValid()) {
         $em = $this->getDoctrine()->getManager();
         $nextTransaction = null;
         if ($form->has('save_process_next') && $form->get('save_process_next')->isClicked()) {
             $nextTransaction = $transactionManager->getNextUnprocessedTransaction($transaction->getAdministration(), $transaction);
         } elseif ($form->has('cancel_and_next') && $form->get('cancel_and_next')->isClicked()) {
             $nextTransaction = $transactionManager->getNextUnprocessedTransaction($transaction->getAdministration(), $transaction);
             return $this->redirect($this->generateUrl('transaction_edit', array('id' => $nextTransaction->getId())));
         }
         $transaction->setProcessed(true);
         $engine = $this->get('homefinance.rules.engine');
         $engine->triggerOnTransaction($transaction);
         $em->persist($transaction);
         $em->flush();
         $this->addFlash('success', 'transaction.updated');
         if ($nextTransaction != null) {
             return $this->redirect($this->generateUrl('transaction_edit', array('id' => $nextTransaction->getId())));
         }
         if ($redirect) {
             return $this->redirect($this->generateUrl($redirect));
         }
         return $this->redirect($this->generateUrl('list_unprocessed_transactions'));
     }
     return $this->render('HomefinanceBundle:Transaction:edit.html.twig', array('form' => $form->createView(), 'tags' => $tags, 'transaction' => $transaction));
 }