src/AppBundle/Controller/OrdenDeTrabajoController.php
/**
     * Creates a new ordenDeTrabajo entity.
     *
     * @Route("/nueva", name="ordendetrabajo_new")
     * @Method({"GET", "POST"})
     * @param Request $request
     * @param \Swift_Mailer $mailer
     *
     * @return RedirectResponse|\Symfony\Component\HttpFoundation\Response
     */
Creates a new ordenDeTrabajo entity.


Creates a new ordenDeTrabajo entity .
public function newAction(Request $request, \Swift_Mailer $mailer)
    {
        $ordenDeTrabajo = new Ordendetrabajo();
        $this->denyAccessUnlessGranted('ROLE_ODT_CREATE', $ordenDeTrabajo);
        $precioTotal = 0;
        $utilidadvvTotal = 0;
        $preciovvTotal = 0;
        $ivaTotal = 0;
        $granTotal = 0;
        $form = $this->createForm('AppBundle\Form\OrdenDeTrabajoType', $ordenDeTrabajo);
        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {
            $em = $this->getDoctrine()->getManager();
            $iva = $ordenDeTrabajo->getAstilleroCotizacion()->getIva();
            $notificados = [];
            foreach ($ordenDeTrabajo->getContratistas() as $contratista) {
                $precioTotal += $contratista->getPrecio();
                $utilidadvvTotal += $contratista->getUtilidadvv();
                $preciovvTotal += $contratista->getPreciovv();
                $ivatot = ($contratista->getPrecio() * $iva) / 100;
                $total = $contratista->getPrecio() + $ivatot;
                $porcentajevv = $contratista->getProveedor()->getPorcentaje();
                $contratista
                    ->setPorcentajevv($porcentajevv)
                    ->setIvatot($ivatot)
                    ->setTotal($total);
                $ivaTotal += $ivatot;
                $granTotal += $total;
                if($contratista->getProveedor()->getCorreo()){
                    array_push($notificados,$contratista->getProveedor()->getCorreo());
                }
            }
            $fechaHoraActual = new \DateTime();
            $ordenDeTrabajo
                ->setPrecioTotal($precioTotal)
                ->setUtilidadvvTotal($utilidadvvTotal)
                ->setPreciovvTotal($preciovvTotal)
                ->setIvaTotal($ivaTotal)
                ->setGranTotal($granTotal)
                ->setPagosTotal(0)
                ->setSaldoTotal($granTotal)
                ->setFecha($fechaHoraActual);
            $em->persist($ordenDeTrabajo);
            $em->flush();
            if(!empty($notificados)){
                if($ordenDeTrabajo->getAstilleroCotizacion()->getFoliorecotiza() == 0){
                    $folio = $ordenDeTrabajo->getAstilleroCotizacion()->getFolio();
                }else{
                    $folio = $ordenDeTrabajo->getAstilleroCotizacion()->getFolio().'-'.$ordenDeTrabajo->getAstilleroCotizacion()->getFoliorecotiza();
                }
                $message = (new \Swift_Message('¡Asignación de orden de trabajo!'));
                $message->setFrom('noresponder@novonautica.com');
                $message->setTo($notificados);
                $message->setBody(
                    $this->renderView('mail/asignacionODT.twig', [
                        'folio' => $folio
                    ]),
                    'text/html'
                );
                $mailer->send($message);
            }
            $notificables = $em->getRepository('AppBundle:Correo\Notificacion')->findBy([
                'evento' => Correo\Notificacion::EVENTO_CREAR,
                'tipo' => Correo\Notificacion::TIPO_ODT
            ]);
            $this->enviaCorreoNotificacion($mailer, $notificables, $ordenDeTrabajo);
            return $this->redirectToRoute('ordendetrabajo_show', ['id' => $ordenDeTrabajo->getId()]);
        }
        return $this->render(
            'ordendetrabajo/new.html.twig',
            [
                'ordenDeTrabajo' => $ordenDeTrabajo,
                'form' => $form->createView(),
                'title' => 'Nueva Orden de Trabajo',
            ]
        );
    }
public function newAction ( Request $ request , \ Swift_Mailer $ mailer ) { $ ordenDeTrabajo = new Ordendetrabajo ( ) ; $ this -> denyAccessUnlessGranted ( 'ROLE_ODT_CREATE' , $ ordenDeTrabajo ) ; $ precioTotal = 0 ; $ utilidadvvTotal = 0 ; $ preciovvTotal = 0 ; $ ivaTotal = 0 ; $ granTotal = 0 ; $ form = $ this -> createForm ( 'AppBundle\Form\OrdenDeTrabajoType' , $ ordenDeTrabajo ) ; $ form -> handleRequest ( $ request ) ; if ( $ form -> isSubmitted ( ) && $ form -> isValid ( ) ) { $ em = $ this -> getDoctrine ( ) -> getManager ( ) ; $ iva = $ ordenDeTrabajo -> getAstilleroCotizacion ( ) -> getIva ( ) ; $ notificados = [ ] ; foreach ( $ ordenDeTrabajo -> getContratistas ( ) as $ contratista ) { $ precioTotal += $ contratista -> getPrecio ( ) ; $ utilidadvvTotal += $ contratista -> getUtilidadvv ( ) ; $ preciovvTotal += $ contratista -> getPreciovv ( ) ; $ ivatot = ( $ contratista -> getPrecio ( ) * $ iva ) / 100 ; $ total = $ contratista -> getPrecio ( ) + $ ivatot ; $ porcentajevv = $ contratista -> getProveedor ( ) -> getPorcentaje ( ) ; $ contratista -> setPorcentajevv ( $ porcentajevv ) -> setIvatot ( $ ivatot ) -> setTotal ( $ total ) ; $ ivaTotal += $ ivatot ; $ granTotal += $ total ; if ( $ contratista -> getProveedor ( ) -> getCorreo ( ) ) { array_push ( $ notificados , $ contratista -> getProveedor ( ) -> getCorreo ( ) ) ; } } $ fechaHoraActual = new \ DateTime ( ) ; $ ordenDeTrabajo -> setPrecioTotal ( $ precioTotal ) -> setUtilidadvvTotal ( $ utilidadvvTotal ) -> setPreciovvTotal ( $ preciovvTotal ) -> setIvaTotal ( $ ivaTotal ) -> setGranTotal ( $ granTotal ) -> setPagosTotal ( 0 ) -> setSaldoTotal ( $ granTotal ) -> setFecha ( $ fechaHoraActual ) ; $ em -> persist ( $ ordenDeTrabajo ) ; $ em -> flush ( ) ; if ( ! empty ( $ notificados ) ) { if ( $ ordenDeTrabajo -> getAstilleroCotizacion ( ) -> getFoliorecotiza ( ) == 0 ) { $ folio = $ ordenDeTrabajo -> getAstilleroCotizacion ( ) -> getFolio ( ) ; } else { $ folio = $ ordenDeTrabajo -> getAstilleroCotizacion ( ) -> getFolio ( ) . '-' . $ ordenDeTrabajo -> getAstilleroCotizacion ( ) -> getFoliorecotiza ( ) ; } $ message = ( new \ Swift_Message ( '¡Asignación de orden de trabajo!')) ; $ message -> setFrom ( 'noresponder@novonautica.com' ) ; $ message -> setTo ( $ notificados ) ; $ message -> setBody ( $ this -> renderView ( 'mail/asignacionODT.twig' , [ 'folio' => $ folio ] ) , 'text/html' ) ; $ mailer -> send ( $ message ) ; } $ notificables = $ em -> getRepository ( 'AppBundle:Correo\Notificacion' ) -> findBy ( [ 'evento' => Correo \ Notificacion :: EVENTO_CREAR , 'tipo' => Correo \ Notificacion :: TIPO_ODT ] ) ; $ this -> enviaCorreoNotificacion ( $ mailer , $ notificables , $ ordenDeTrabajo ) ; return $ this -> redirectToRoute ( 'ordendetrabajo_show' , [ 'id' => $ ordenDeTrabajo -> getId ( ) ] ) ; } return $ this -> render ( 'ordendetrabajo/new.html.twig' , [ 'ordenDeTrabajo' => $ ordenDeTrabajo , 'form' => $ form -> createView ( ) , 'title' => 'Nueva Orden de Trabajo' , ] ) ; }
Creates a new ordenDeTrabajo entity.
Creates a new ordenDeTrabajo entity .
//enviar correo para avisar a contratistas y proveedores // Buscar correos a notificar libremente //return $this->redirectToRoute('ordendetrabajo_index'); // Redirect to the ODT detail.