src/Form/GestionComerciale/OrdreReparationType.php line 111

Open in your IDE?
  1. <?php
  2. namespace App\Form\GestionComerciale;
  3. use App\DataTransformer\Clients\IdToClientTransformer;
  4. use App\Entity\Adresses\Adresse;
  5. use App\Entity\Clients\Client;
  6. use App\Entity\Clients\ClientCategorie;
  7. use App\Entity\GestionComerciale\Commande;
  8. use App\Entity\Utilisateur\Utilisateur;
  9. use App\Entity\Vehicules\VehiculeClient;
  10. use App\Repository\Utilisateur\UtilisateurRepository;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  13. use Symfony\Component\Form\AbstractType;
  14. use Symfony\Component\Form\ChoiceList\ChoiceList;
  15. use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
  16. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  17. use Symfony\Component\Form\FormBuilderInterface;
  18. use Symfony\Component\Form\FormEvent;
  19. use Symfony\Component\Form\FormEvents;
  20. use Symfony\Component\Form\FormInterface;
  21. use Symfony\Component\OptionsResolver\OptionsResolver;
  22. class OrdreReparationType extends AbstractType
  23. {
  24.     private EntityManagerInterface $entityManager;
  25.     public function __construct(EntityManagerInterface $entityManager)
  26.     {
  27.         $this->entityManager $entityManager;
  28.     }
  29.     /**
  30.      * @param FormBuilderInterface $builder
  31.      * @param array $options
  32.      */
  33.     public function buildForm(FormBuilderInterface $builder, array $options)
  34.     {
  35.         $builder
  36.             //->add('fraisPortSupplementaire')
  37.             /*
  38.               ->add('dateApproximativeReception', DateType::class, [
  39.                         'widget' => 'single_text',
  40.                     ]
  41.                 )
  42.             */
  43.             ->add('typeDocumentCommercial')
  44.             ->add('dateBon'DateTimeType::class)
  45.             ->add('mecanicien'EntityType::class, [
  46.                 'class'         => Utilisateur::class,
  47.                 //'choice_name'   => ChoiceList::fieldName($this, 'nomPrenom'),
  48.                 'query_builder' => function (UtilisateurRepository $er) {
  49.                     return $er->createQueryBuilder('x')
  50.                               ->where('x.type = :type')
  51.                               ->setParameters(["type" => "4"])
  52.                               ->orderBy('x.nom''ASC');
  53.                 },
  54.             ])
  55.             ->add('totalPoids'HiddenType::class)
  56.             ->add('commentaire')
  57.             ->add('travaux')
  58.             /*
  59.             ->add('statutCommande', EntityType::class, array(
  60.                     'class' => 'DTC\GestionComercialeBundle\Entity\StatutCommande',
  61.                     //'choice_name'   => ChoiceList::fieldName($this, 'libelle'),
  62.                     'query_builder' => function(StatutCommandeRepository $er )  {
  63.                         return $er->createQueryBuilder('x')
  64.                                   ->where('x.documentCommercial = :documentCommercial')
  65.                                   ->setParameters(array("documentCommercial"=>"3"))
  66.                                   ->orderBy('x.ordre', 'ASC');
  67.                 }
  68.             ))
  69.             */
  70.             /*
  71.             ->add( 'statutPaiement', EntityType::class, array(
  72.                     'class' => 'DTC\GestionComercialeBundle\Entity\StatutPaiement',
  73.                     //'choice_name'   => ChoiceList::fieldName($this, 'libelle'),
  74.                     'query_builder' => function(StatutPaiementRepository $er )  {
  75.                         return $er->createQueryBuilder('x')
  76.                                   ->orderBy('x.ordre', 'ASC');
  77.                 }
  78.             ))
  79.             */
  80.             /*
  81.             ->add( 'transporteur', EntityType::class, array(
  82.                     'class' => 'DTC\TransporteursBundle\Entity\Transporteur',
  83.                     //'choice_name'   => ChoiceList::fieldName($this, 'libelle'),
  84.                     'query_builder' => function(TransporteurRepository $er )  {
  85.                         return $er->createQueryBuilder('x')
  86.                                   ->orderBy('x.libelle', 'ASC');
  87.                 }
  88.             ))
  89.             */
  90.             ->add('client'EntityType::class, [
  91.                 'multiple' => false// Wether or not multiple values are allowed (default to false)
  92.                 'class' => Client::class,
  93.                 'attr'  => [
  94.                     'class' => 'select2-hidden-accessible',
  95.                 ],
  96.             ]);
  97.         //$builder->add('referenceClient');
  98. //        $builder->get('client')->addModelTransformer(new IdToClientTransformer($this->entityManager));
  99.         $formModifier = function (FormInterface $formClient $client null) {
  100.             $adresses  null === $client ? [] : $client->getAdresses();
  101.             $vehicules null === $client ? [] : $client->getVehiculesClient();
  102.             $pro "0";
  103.             if (is_object($client)) {
  104.                 $repo_client_categorie $this->entityManager->getRepository(ClientCategorie::class);
  105.                 $premiere_categorie    $repo_client_categorie->getCategorieRacinePourClient($client);
  106.                 if ( ! is_object($premiere_categorie)) {
  107.                     $pro "0";
  108.                 } elseif ( ! is_object($premiere_categorie->getCategorie())) {
  109.                     $pro "0";
  110.                 } elseif ( ! $premiere_categorie->getCategorie()->getProfessionnel()) {
  111.                     $pro "0";
  112.                 } else {
  113.                     $pro "1";
  114.                 }
  115.             }
  116.             /*
  117.             if(is_object($client)) {
  118.                 if(is_object($client->getTypeClient())) {
  119.                     if($client->getTypeClient()->getId() == "2") $pro = "1";
  120.                 }
  121.             }
  122.             */
  123.             $dataTva       1;
  124.             $dataAtributes = [];
  125.             foreach ($adresses as $a) {
  126.                 $paysUe "0";
  127.                 if (is_object($a->getPays())) {
  128.                     if ($a->getPays()->getId() != "370095" && $a->getPays()->getEurope()) {
  129.                         $paysUe "1";
  130.                     }
  131.                     if ($pro == && $a->getPays()->getId() != "370095") {
  132.                         $dataTva 0;
  133.                     }
  134.                     if ($pro == && $a->getPays()->getEurope() == false) {
  135.                         $dataTva 0;
  136.                     }
  137.                 }
  138.                 $dataTva 1;
  139.                 if (is_object($client->getCompta()) && $client->getCompta()->getTva() == 0) {
  140.                     //    echo "eeee";
  141.                     $dataTva 0;
  142.                 }
  143.                 $adrTab          = ['data-pro' => $pro'data-ue' => $paysUe'data-tva' => $dataTva];
  144.                 $dataAtributes[] = $adrTab;
  145.             }
  146.             $form->add('adresseLivraison'EntityType::class, [
  147.                 'class'       => Adresse::class,
  148.                 'placeholder' => '',
  149.                 'choices'     => $adresses,
  150.                 'choice_attr' => $dataAtributes,
  151.             ]);
  152.             $form->add('adresseFacturation'EntityType::class, [
  153.                 'class'       => Adresse::class,
  154.                 'placeholder' => '',
  155.                 'choices'     => $adresses,
  156.                 'choice_attr' => $dataAtributes,
  157.             ]);
  158.             $dataKm        "";
  159.             $dataCT        "";
  160.             $dataSerie     "";
  161.             $dataImmat     "";
  162.             $dataModele    "";
  163.             $dataMarque    "";
  164.             $dataAtributes = [];
  165.             foreach ($vehicules as $vehicule) {
  166.                 $dataImmat $vehicule->getImmatriculation();
  167.                 $dataSerie $vehicule->getNumSerie();
  168.                 if (is_object($vehicule->getDateControleTechnique())) {
  169.                     $dataCT $vehicule->getDateControleTechnique()->format("d/m/Y");
  170.                 } else {
  171.                     $dataCT "";
  172.                 }
  173.                 $dataKm $vehicule->getKilometrage();
  174.                 if (is_object($vehicule->getMarque())) {
  175.                     $dataMarque $vehicule->getMarque()->getLibelle();
  176.                 }
  177.                 if (is_object($vehicule->getModele())) {
  178.                     $dataModele $vehicule->getModele()->getLibelle();
  179.                 }
  180.                 $adrTab          = [
  181.                     'data-km'     => $dataKm,
  182.                     'data-ct'     => $dataCT,
  183.                     'data-serie'  => $dataSerie,
  184.                     'data-immat'  => $dataImmat,
  185.                     'data-modele' => $dataModele,
  186.                     'data-marque' => $dataMarque,
  187.                 ];
  188.                 $dataAtributes[] = $adrTab;
  189.             }
  190.             $form->add('vehiculesClient'EntityType::class, [
  191.                 'class'       => VehiculeClient::class,
  192.                 'placeholder' => '',
  193.                 'choices'     => $vehicules,
  194.                 'choice_attr' => $dataAtributes,
  195.             ]);
  196.         };
  197.         $builder->addEventListener(
  198.             FormEvents::PRE_SET_DATA,
  199.             function (FormEvent $event) use ($formModifier) {
  200.                 // this would be your entity, i.e. SportMeetup
  201.                 $data $event->getData();
  202.                 $formModifier($event->getForm(), $data->getClient());
  203.             }
  204.         );
  205.         $builder->get('client')->addEventListener(
  206.             FormEvents::POST_SUBMIT,
  207.             function (FormEvent $event) use ($formModifier) {
  208.                 // It's important here to fetch $event->getForm()->getData(), as
  209.                 // $event->getData() will get you the client data (that is, the ID)
  210.                 $client $event->getForm()->getData();
  211.                 // since we've added the listener to the child, we'll have to pass on
  212.                 // the parent to the callback functions!
  213.                 $formModifier($event->getForm()->getParent(), $client);
  214.             }
  215.         );
  216.         /*
  217.         $builder->addEventListener(
  218.             FormEvents::PRE_SET_DATA,
  219.             function (FormEvent $event) {
  220.                 $form = $event->getForm();
  221.                 // this would be your entity, i.e. SportMeetup
  222.                 $data = $event->getData();
  223.                 $client = $data->getClient();
  224.                 $adresses = null === $client ? array() : $client->getAdresses();
  225.                 $form->add('adresseLivraison',EntityType::class, array(
  226.                     'class'       => 'DTCAdressesBundle:Adresse',
  227.                     'placeholder' => '',
  228.                     'choices'     => $adresses,
  229.                 ));
  230.             }
  231.         );    
  232.         
  233.         */
  234.     }
  235.     public function configureOptions(OptionsResolver $resolver)
  236.     {
  237.         $resolver->setDefaults([
  238.                                    'data_class' => Commande::class,
  239.                                ]);
  240.     }
  241.     public function getName()
  242.     {
  243.         return 'dtc_gestioncomercialebundle_commande';
  244.         //return 'dtc_gestioncomercialebundle_ordre_reparation';
  245.     }
  246.     public function getBlockPrefix():string
  247.     {
  248.         return 'dtc_gestioncomercialebundle_commande';
  249.     }
  250. }