src/Form/Movimientos/ItemMovimientoType.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\Form\Movimientos;
  3. use App\Entity\Movimientos\ItemMovimiento;
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\FormBuilderInterface;
  6. use Symfony\Component\OptionsResolver\OptionsResolver;
  7. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  8. use App\Entity\Almacen\Articulo;
  9. use Doctrine\ORM\EntityRepository;
  10. use App\Entity\Mantenimiento\PedidoReparacionDiagramado;
  11. use App\Entity\Equipos\Maquinaria;
  12. use Doctrine\ORM\QueryBuilder;
  13. class ItemMovimientoType extends AbstractType
  14. {
  15.     public function buildForm(FormBuilderInterface $builder, array $options): void
  16.     {
  17.         $movimiento $options['movimiento'];
  18.         $usuario $options['user'];
  19.         $builder
  20.             ->add('cantidad')
  21.             ->add('articulo',
  22.                   EntityType::class,        
  23.                   [
  24.                     'class' => Articulo::class,
  25.                     'query_builder' => function (EntityRepository $er) use ($movimiento$usuario): QueryBuilder {
  26.                                                                                             if ($usuario && $usuario->getAplicaciones()->count())
  27.                                                                                             {
  28.                                                                                                 $qb $er->createQueryBuilder('a')
  29.                                                                                                         ->distinct()                                                                                           
  30.                                                                                                         ->join('a.aplicaciones''ap')
  31.                                                                                                         ->andWhere('a.activo = :activo')
  32.                                                                                                         ->setParameter('activo'true)
  33.                                                                                                         ->orderBy('a.descripcion''ASC');
  34.                                                                                                 $qb->andWhere('ap.id IN (:aplicaciones)')
  35.                                                                                                    ->setParameter('aplicaciones'$usuario->getAplicaciones()->toArray());
  36.                                                                                             }
  37.                                                                                             else{
  38.                                                                                                                                                                                                                                                                                     $qb $er->createQueryBuilder('a')
  39.                                                                                                       ->andWhere('a.activo = :activo')
  40.                                                                                                       ->setParameter('activo'true)
  41.                                                                                                       ->orderBy('a.descripcion''ASC');
  42.                                                                                             }
  43.                                                                                             return $qb;
  44.                                                                                     },
  45.                  ])
  46.         ;
  47.         if (($movimiento) && ($movimiento->getAsociaPedidoReparacion()))
  48.         {
  49.             $builder->add('tareaDiagramada',
  50.                   EntityType::class,
  51.                   [
  52.                     'class' => PedidoReparacionDiagramado::class,
  53.                     'choice_label' => 'id',
  54.                     'required' => false,
  55.                     'data' => $movimiento->getTareaDiagramada(),
  56.                     'query_builder' => function (EntityRepository $er): QueryBuilder {
  57.                                                                                             return $er->createQueryBuilder('u')
  58.                                                                                                       ->join('u.diagrama''d')
  59.                                                                                                       ->where('d.procesado = :p')
  60.                                                                                                       ->setParameter('p'false);
  61.                                                                                         },
  62.                     'choice_attr' => function ($choice$key$value) {
  63.                                                                                     // adds a class like attending_yes, attending_no, etc
  64.                                                                                     return ['data-task' => $choice->getObservacionResponsable()];
  65.                                                                                     }
  66.                                                                                     
  67.                     ]);
  68.         }
  69.     }
  70.     public function configureOptions(OptionsResolver $resolver): void
  71.     {
  72.         $resolver->setDefaults([
  73.             'data_class' => ItemMovimiento::class,
  74.             'movimiento' => null,
  75.             'user' => null,
  76.         ]);
  77.     }
  78. }