/**
  * Creates a new Document entity.
  *
  * @Route("/create/sale/{id}", name="finance_document_create_from_sale")
  * @Method("GET")
  * @Template("FlowerFinancesBundle:Document:new.html.twig")
  */
 public function createFromSaleAction(Request $request, Sale $sale)
 {
     $document = new Document();
     $document->setAccount($sale->getAccount());
     $document->setDiscount($sale->getDiscount());
     $document->setTax($sale->getTax());
     $document->setTotal($sale->getTotal());
     $document->setTotalDiscount($sale->getTotalDiscount());
     $document->setTotalWithTax($sale->getTotalWithTax());
     $document->setType(Document::TYPE_CUSTOMER_INVOICE);
     $document->setSale($sale);
     foreach ($sale->getSaleItems() as $saleItem) {
         $invoiceItem = new DocumentItem();
         $invoiceItem->setProduct($saleItem->getProduct());
         $invoiceItem->setService($saleItem->getService());
         $invoiceItem->setTotal($saleItem->getTotal());
         $invoiceItem->setDocument($document);
         $invoiceItem->setUnitPrice($saleItem->getUnitPrice());
         $invoiceItem->setUnits($saleItem->getUnits());
         $document->addItem($invoiceItem);
     }
     $em = $this->getDoctrine()->getManager();
     $em->persist($document);
     $em->flush();
     $sale->setDocument($document);
     $em->flush();
     return $this->redirect($this->generateUrl('finance_document_show', array('id' => $document->getId())));
 }
 /**
  * Creates a new Document entity.
  *
  * @Route("/create/sale/{id}", name="finance_document_ci_create_from_sale")
  * @Method("GET")
  * @Template("FlowerFinancesBundle:Document:new.html.twig")
  */
 public function createFromSaleAction(Request $request, Sale $sale)
 {
     $document = new Document();
     $document->setAccount($sale->getAccount());
     $document->setDiscount($sale->getDiscount());
     $document->setTax($sale->getTax());
     $document->setTotal($sale->getTotal());
     $document->setTotalDiscount($sale->getTotalDiscount());
     $document->setTotalWithTax($sale->getTotalWithTax());
     $type = $this->getDoctrine()->getManager()->getRepository('FlowerFinancesBundle:DocumentType')->findOneBy(array('name' => \Flower\FinancesBundle\Entity\DocumentType::TYPE_CUSTOMER_INVOICE));
     $document->setFinanceAccount($sale->getFinanceAccount());
     $document->setType($type);
     $document->setSale($sale);
     foreach ($sale->getSaleItems() as $saleItem) {
         $invoiceItem = new DocumentItem();
         $invoiceItem->setProduct($saleItem->getProduct());
         $invoiceItem->setService($saleItem->getService());
         $invoiceItem->setTotal($saleItem->getTotal());
         $invoiceItem->setDocument($document);
         $invoiceItem->setUnitPrice($saleItem->getUnitPrice());
         $invoiceItem->setUnits($saleItem->getUnits());
         $document->addItem($invoiceItem);
     }
     $em = $this->getDoctrine()->getManager();
     $em->persist($document);
     $em->flush();
     $sale->setDocument($document);
     $em->flush();
     return $this->redirect($this->generateUrl('finance_document_ci_show', array('id' => $document->getId())));
 }
 /**
  * Displays a form to create a new Payment entity.
  *
  * @Route("/new_simple_expense", name="finance_payment_simple_expense_create")
  * @Method("POST")
  * @Template("FlowerFinancesBundle:Payment:newSimpleExpense.html.twig")
  */
 public function createSimpleExpenseAction(Request $request)
 {
     $payment = new Payment();
     $payment->setType(Payment::TYPE_EXPENSE);
     $em = $this->getDoctrine()->getManager();
     $expenseAccount = $em->getRepository('FlowerFinancesBundle:Account')->find($request->get('expense_account_id'));
     $assetAccount = $em->getRepository('FlowerFinancesBundle:Account')->find($request->get('asset_account_id'));
     $form = $this->createForm(new SimpleExpensePaymentType(), $payment);
     if ($form->handleRequest($request)->isValid()) {
         /* has receipt */
         if ($request->get('receipt_number')) {
             $receipt = new Document();
             $type = $this->getDoctrine()->getManager()->getRepository('FlowerFinancesBundle:DocumentType')->findOneBy(array('name' => \Flower\FinancesBundle\Entity\DocumentType::TYPE_RECEIPT));
             $receipt->setCode($request->get('receipt_number'));
             $receipt->setType($type);
             $receipt->setTotal($payment->getAmount());
             $em->persist($receipt);
             $payment->addDocument($receipt);
         }
         $transaction = $this->get('finances.service.transaction')->createSimpleExpenseTransaction($expenseAccount, $assetAccount, $payment->getAmount(), $payment->getDate());
         $payment->setTransaction($transaction);
         $em->persist($payment);
         $em->flush();
         return $this->redirect($this->generateUrl('finance_payment_show', array('id' => $payment->getId())));
     }
     $assetAccounts = $em->getRepository('FlowerFinancesBundle:Account')->findBy(array('type' => Account::TYPE_ASSET));
     $expenseAccounts = $em->getRepository('FlowerFinancesBundle:Account')->findBy(array('type' => Account::TYPE_EXPENSE));
     return array('form' => $form->createView(), 'assetAccounts' => $assetAccounts, 'expenseAccounts' => $expenseAccounts);
 }