/**
  * @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()];
 }
Example #2
0
 /**
  * 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();
 }
Example #3
0
 /**
  * @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));
 }