/** * Executes the action * * @param Transaction $transaction * @param RuleAction $action * @return bool */ public function executeAction(Transaction $transaction, RuleAction $action) { $params = $this->getParams($action); $repo = $this->entityManager->getRepository('HomefinanceBundle:Category'); $category = $repo->findOneBy(array('id' => $params['category_id'])); $transaction->setCategory($category); }
protected function areConditionsValid(Transaction $transaction, Rule $rule) { if ($transaction->isProcessed()) { return false; } $isValid = true; $firstCondition = true; foreach ($rule->getConditions() as $condition) { $conditionClass = $this->factory->getConditionClass($condition->getCondition()); $conditionIsValid = $conditionClass->checkCondition($transaction, $condition); if ($firstCondition) { $isValid = $conditionIsValid ? true : false; $firstCondition = false; } elseif ($condition->getConditionLink() == 'OR') { if ($isValid || $conditionIsValid) { $isValid = true; } else { $isValid = false; } } else { if ($isValid && $conditionIsValid) { $isValid = true; } else { $isValid = false; } } } return $isValid; }
/** * Checks whether this condition is true for the given transaction * * @param Transaction $transaction * @param RuleCondition $condition * @return bool */ public function checkCondition(Transaction $transaction, RuleCondition $condition) { $params = $this->getParams($condition); if (stripos(trim($transaction->getName()), $params['name']) !== false) { return true; } return false; }
/** * Checks whether this condition is true for the given transaction * * @param Transaction $transaction * @param RuleCondition $condition * @return bool */ public function checkCondition(Transaction $transaction, RuleCondition $condition) { $params = $this->getParams($condition); if ($params['iban'] == $transaction->getIban()) { return true; } return false; }
/** * Checks whether this condition is true for the given transaction * * @param Transaction $transaction * @param RuleCondition $condition * @return bool */ public function checkCondition(Transaction $transaction, RuleCondition $condition) { $params = $this->getParams($condition); if (stripos(trim($transaction->getDescription()), $params['description']) === 0) { return true; } return false; }
/** * Checks whether this condition is true for the given transaction * * @param Transaction $transaction * @param RuleCondition $condition * @return bool */ public function checkCondition(Transaction $transaction, RuleCondition $condition) { $params = $this->getParams($condition); $result = strcasecmp($params['name'], $transaction->getName()); if ($result === 0) { return true; } return false; }
/** * Executes the action * * @param Transaction $transaction * @param RuleAction $action * @return bool */ public function executeAction(Transaction $transaction, RuleAction $action) { $params = $this->getParams($action); $repo = $this->entityManager->getRepository('HomefinanceBundle:Tag'); foreach ($params['tag_ids'] as $tag_id) { $tag = $repo->findOneBy(array('id' => $tag_id)); if ($tag && !$transaction->getTags()->contains($tag)) { $transaction->getTags()->add($tag); } } }
public function getNextUnprocessedTransaction(Administration $administration, Transaction $transaction = null) { $repo = $this->entityManager->getRepository('HomefinanceBundle:Transaction'); $transactions = $repo->findUnprocessedByAdministration($administration); $found = false; if ($transaction != null) { foreach ($transactions as $t) { if ($found) { return $t; } if ($t->getId() == $transaction->getId()) { $found = true; } } } if (count($transactions)) { return reset($transactions); } return null; }
/** * Executes the action * * @param Transaction $transaction * @param RuleAction $action * @return bool */ public function executeAction(Transaction $transaction, RuleAction $action) { $transaction->setProcessed(true); }
protected function createTransactionFromRow($row, Administration $administration) { $transaction = new Transaction(); $transaction->setAdministration($administration); $bankAccount = $this->bankAccountManager->findBankAccount($row[1], $administration); if (!$bankAccount || $row[1] != $bankAccount->getIban()) { throw new InvalidBankAccountException(); } $transaction->setBankAccount($bankAccount); if ($row[9] != 'EUR') { throw new InvalidCurrencyException(); } $transaction->setDate(new \DateTime($row[0])); //boekdatum $amount = (double) $row[10]; $transaction->setAmount($amount); $transaction->setIban($row[2]); $transaction->setName($row[3]); $description = $row[16] . "\r\n" . $row[17]; $description = trim($description); $transaction->setDescription($description); if (empty($transaction->getName())) { $transaction->setName(strtok($description, "\r\n")); } $transaction->setSourceData(json_encode($row)); $transaction->setSourceId(md5($row[11] . $row[15])); return $transaction; }
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)); }