/** * @Route("/examen/new", name="cotizador_examen_new") * @Template() * * @param Request $request * @return array */ public function newExamenAction(Request $request) { try { $user = $this->getCurrenUser(); $seller = $this->getDoctrine()->getManager()->getRepository('TSCYABundle:Seller')->getByUser($user->getId()); $quotation = new Quotation(); $quotation->setClient(new Client()); $quotation->setSeller($seller); $quotation->setType(Quotation::EXAM); $form = $this->createForm(QuotationExamType::class, $quotation); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $quotation = $this->calculateValues($quotation, Quotation::EXAM); $em = $this->getDoctrine()->getManager(); $em->persist($quotation); $em->flush(); $this->setFlashInfo('Registro agregado correctamente'); return $this->redirectToRoute('preview_invoice', ['id' => $quotation->getId()]); } } catch (\Exception $e) { $this->setFlashError(sprintf("Error: %s", $e->getMessage())); return $this->redirectToRoute('main'); } return ['form' => $form->createView()]; }
/** * Calc service price * @param Service $service * @param Quotation $quotation * @return float */ public function getPriceServiceByParameters(Service $service, Quotation $quotation) { if ($quotation->getCountry()->getUseHealthCoverage()) { if ($service->getIsHealthCoverage() && $quotation->getTotalSemanas() >= 4) { $meses = $quotation->getTotalSemanas() / 4; return $meses * $service->getPrice(); } } if ($service->getSummerSupplement()) { return $service->getPrice() * $quotation->getSemanasSummer(); } if ($service->getChargePerWeek()) { // limite de semanas if ($service->getUsesLimitWeeks()) { if ($service->getLimitWeek() <= $quotation->getTotalSemanas()) { return $service->getPrice() * $quotation->getTotalSemanas(); } else { // aplicar limite de semanas return $service->getPrice() * $service->getLimitWeek(); } } else { // multiplicar por semanas return $service->getPrice() * $quotation->getTotalSemanas(); } } else { } return $service->getPrice(); }
/** * @Route("/invoice/pdf/{id}", name="to_pdf_invoice") * @ParamConverter("id", class="\TS\CYABundle\Entity\Quotation") * * @param Quotation $quotation * @return \Symfony\Component\HttpFoundation\RedirectResponse */ public function invoiceToPDFAction(Quotation $quotation) { $html = $this->renderView('@TSCYA/Main/invoice.html.twig', ['quotation' => $quotation]); $client = $quotation->getClient(); $namePDF = sprintf('%s_%s_%s_%s', $client->getFirstName(), $client->getLastName(), $quotation->getSemanas(), $quotation->getHeadquarter()->getName()); $attachment = sprintf('attachment; filename="%s.pdf"', $namePDF); // Nombre, número de semanas y sede return new Response($this->get('knp_snappy.pdf')->getOutputFromHtml($html), 200, array('Content-Type' => 'application/pdf', 'Content-Disposition' => $attachment)); }