/** * 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", name="finance_document_si_create") * @Method("POST") * @Template("FlowerFinancesBundle:SupplierInvoice:new.html.twig") */ public function createAction(Request $request) { $document = new Document(); $type = $this->getDoctrine()->getManager()->getRepository('FlowerFinancesBundle:DocumentType')->findOneBy(array('name' => \Flower\FinancesBundle\Entity\DocumentType::TYPE_SUPPLIER_INVOICE)); $document->setType($type); $form = $this->createForm($this->get('finances.form.type.supplier_invoice'), $document); if ($form->handleRequest($request)->isValid()) { $em = $this->getDoctrine()->getManager(); foreach ($document->getItems() as $item) { $item->setDocument($document); } $em->persist($document); $em->flush(); /* pending documents generates accounting transactions */ if ($document->getStatus() == Document::STATUS_PENDING) { $this->get('finances.service.transaction')->createSupplierInvoiceTransaction($document); } return $this->redirect($this->generateUrl('finance_document_si_show', array('id' => $document->getId()))); } return array('document' => $document, 'form' => $form->createView()); }
/** * Creates a new Document entity. * * @Route("/create", name="finance_document_ci_create") * @Method("POST") * @Template("FlowerFinancesBundle:CustomerInvoice:new.html.twig") */ public function createAction(Request $request) { $document = new Document(); $type = $this->getDoctrine()->getManager()->getRepository('FlowerFinancesBundle:DocumentType')->findOneBy(array('name' => \Flower\FinancesBundle\Entity\DocumentType::TYPE_CUSTOMER_INVOICE)); $document->setType($type); $form = $this->createForm($this->get('finances.form.type.customer_invoice'), $document); if ($form->handleRequest($request)->isValid()) { $em = $this->getDoctrine()->getManager(); foreach ($document->getItems() as $item) { $item->setDocument($document); } $em->persist($document); $em->flush(); return $this->redirect($this->generateUrl('finance_document_ci_show', array('id' => $document->getId()))); } return array('document' => $document, 'form' => $form->createView()); }
/** * 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); }