public function createSupplierInvoiceTransaction(Document $document)
 {
     $transaction = new Transaction();
     $description = $this->translator->trans("transaction.description.document", array("%document_code%" => $document->getType()->getCode(), "%document_number%" => $document->getId(), "%document_to%" => $document->getSupplier()->getName()), 'Finance');
     $transaction->setDescription($description);
     $transaction->setDate(new \DateTime());
     $payableAccount = $this->accountRepository->findOneBy(array('subtype' => Account::SUBTYPE_LIABILITY_PAYABLE));
     $journalEntryPayable = new JournalEntry();
     $journalEntryPayable->setAccount($payableAccount);
     $journalEntryPayable->setTransaction($transaction);
     $journalEntryPayable->setDebit($document->getTotal());
     $journalEntryPayable->setDate(new \DateTime());
     $transaction->addJournalEntry($journalEntryPayable);
     $journalEntrySupplierAccount = new JournalEntry();
     $journalEntrySupplierAccount->setAccount($document->getSupplier()->getFinanceAccount());
     $journalEntrySupplierAccount->setTransaction($transaction);
     $journalEntrySupplierAccount->setCredit($document->getTotal());
     $journalEntrySupplierAccount->setDate(new \DateTime());
     $transaction->addJournalEntry($journalEntrySupplierAccount);
     /* persist */
     $this->transactionRepository->save($transaction);
     return $transaction;
 }
 /**
  * Displays a form to edit an existing Document entity.
  *
  * @Route("/{id}/payments/new", name="finance_document_ci_payments_new", requirements={"id"="\d+"})
  * @Method("GET")
  * @Template()
  */
 public function addPaymentAction(Document $document)
 {
     $em = $this->getDoctrine()->getManager();
     $assetAccounts = $em->getRepository('FlowerFinancesBundle:Account')->findBy(array('type' => Account::TYPE_ASSET));
     $paymentAmount = 0;
     foreach ($document->getPayments() as $payment) {
         $paymentAmount += $payment->getAmount();
     }
     $balance = $document->getTotal() - $paymentAmount;
     return array('assetAccounts' => $assetAccounts, 'balance' => $balance, 'document' => $document);
 }