src/Form/GestionComerciale/CommandeFournisseurType.php line 169

Open in your IDE?
  1. <?php
  2. namespace App\Form\GestionComerciale;
  3. use App\DataTransformer\Adresses\IdToAdresseTransformer;
  4. use App\DataTransformer\Fournisseurs\IdToFournisseurTransformer;
  5. use App\DataTransformer\GestionComerciale\IdToCommandeTransformer;
  6. use App\Entity\Adresses\Adresse;
  7. use App\Entity\Fournisseurs\Fournisseur;
  8. use App\Entity\GestionComerciale\Commande;
  9. use App\Entity\GestionComerciale\CommandeFournisseur;
  10. use App\Entity\GestionComerciale\StatutCommandeFournisseur;
  11. use App\Repository\GestionComerciale\StatutCommandeFournisseurRepository;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  14. use Symfony\Component\Form\AbstractType;
  15. use Symfony\Component\Form\ChoiceList\ChoiceList;
  16. use Symfony\Component\Form\Extension\Core\Type\DateType;
  17. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  18. use Symfony\Component\Form\Extension\Core\Type\TextType;
  19. use Symfony\Component\Form\FormBuilderInterface;
  20. use Symfony\Component\Form\FormInterface;
  21. use Symfony\Component\OptionsResolver\OptionsResolver;
  22. class CommandeFournisseurType extends AbstractType
  23. {
  24.     private $transformerFournisseur;
  25.     public function __construct(EntityManagerInterface $entityManagerIdToFournisseurTransformer $transformerFournisseur)
  26.     {
  27.         $this->transformerFournisseur $transformerFournisseur;
  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.             /*->add('fournisseur', EntityType::class, array('class' => 'DTC\FournisseursBundle\Entity\Fournisseur',
  38.                                                     //'choice_name'   => ChoiceList::fieldName($this, 'libelle'),
  39.             ))
  40.              * 
  41.              */
  42.             ->add('accuseReception')
  43.             ->add('commentaire')
  44.             ->add(
  45.                 'fournisseur',
  46.                 TextType::class,
  47.                 [
  48.                     'attr' => [
  49.                         'class' => 'select2-hidden-accessible',
  50.                     ],
  51.                 ]
  52.             )
  53.             ->add('dateApproximativeReception'DateType::class, [
  54.                                                   'widget'   => 'single_text',
  55.                                                   'required' => false,
  56.                                               ]
  57.             )
  58.             ->add('dateAccuseReception'DateType::class, [
  59.                                            'widget'   => 'single_text',
  60.                                            'required' => false,
  61.                                        ]
  62.             )
  63.             ->add('date'DateType::class, [
  64.                             'widget'   => 'single_text',
  65.                             'required' => false,
  66.                         ]
  67.             )
  68.             ->add('totalPoids'HiddenType::class)
  69.             ->add('tauxChange')
  70.             //->add('commande')
  71.             ->add('statutCommande'EntityType::class, [
  72.                 'class'         => StatutCommandeFournisseur::class,
  73.                 //'choice_name'   => ChoiceList::fieldName($this, 'libelle'),
  74.                 'query_builder' => function (StatutCommandeFournisseurRepository $er) {
  75.                     return $er->createQueryBuilder('x')
  76.                               ->orderBy('x.libelle''ASC');
  77.                 },
  78.             ])
  79.             ->add('fraisPortSupplementaire'TextType::class, ['attr' => ['class' => 'numeric']])
  80.             ->add('fournisseurLibelle')
  81.             ->add('fournisseurNumeroFacture')
  82.             ->add('arrondiTva'TextType::class, ['attr' => ['class' => 'numeric']])
  83.             ->add('totalTtc'HiddenType::class)
  84.             ->add('modeReglement')
  85.             //->add('adresseLivraison')
  86.             ->add('fraisFixe'TextType::class, ['attr' => ['class' => 'numeric']])
  87.             ->add('fraisApproche'TextType::class, ['attr' => ['class' => 'numeric']])
  88.             ->add('commande'EntityType::class, [
  89.                 'multiple' => false// Wether or not multiple values are allowed (default to false)
  90.                 'class'    => Commande::class,
  91.                 'required' => false,
  92.                 'attr'  => [
  93.                     'class' => 'select2-hidden-accessible',
  94.                 ],
  95.             ])
  96.             ->add('adresseLivraison'TextType::class, [
  97.                 'attr'  => [
  98.                     'class' => 'select2-hidden-accessible',
  99.                 ],
  100.             ]);
  101.         //$builder->add('adresseLivraison');
  102. //        $builder->get('fournisseur')->addModelTransformer(new IdToFournisseurTransformer($this->entityManager));
  103. //        $builder->get('commande')->addModelTransformer(new IdToCommandeTransformer($this->entityManager));
  104. //        $builder->get('adresseLivraison')->addModelTransformer(new IdToAdresseTransformer($this->entityManager));
  105.         $builder->get('fournisseur')->addModelTransformer($this->transformerFournisseur);
  106.         $formModifier = function (FormInterface $form$articlesCommande = []) {
  107.             $commandes = [];
  108.             /*
  109.             $articles = array();
  110.             $articlesTemp = array();
  111.             if (count($articlesCommande)>0){
  112.                 
  113.                 foreach($articlesCommande as $articleCommande)
  114.                     $articles[] = $articleCommande->getArticle();
  115.                    // $articlesTemp[] = $articleCommande->getArticle()->getId();
  116.             }
  117.             $repo_article = $this->entityManager->getRepository('DTCArticlesBundle:Article');
  118.             $repo_commande = $this->entityManager->getRepository('DTCGestionComercialeBundle:Commande');
  119.             
  120.             $commandesId = $repo_article->getCommandes($articles);
  121.             
  122.             
  123.            // print_r($articlesTemp);
  124.             
  125.             foreach($commandesId as $commandeId){
  126.                 $commande = $repo_commande->find($commandeId['id']);
  127.                 if (is_object($commande))
  128.                     $commandes[] = $commande;
  129.                 //$choices[$commande['id']] = $commande['reference'];
  130.             }
  131.             */
  132.             /*
  133.             $form->add('commande', EntityType::class, array(
  134.                 'class' => 'DTC\GestionComercialeBundle\Entity\Commande',
  135.                 //'property' => 'reference',
  136.                 'choice_label' => function($commande){
  137.                     $retour = $commande->getReference();
  138.                     
  139.                     if(is_object($commande->getClient())) 
  140.                     {
  141.                         $retour .= ' / '.$commande->getClient()->getNom().' '.$commande->getClient()->getPrenom();
  142.                     }
  143.                     return $retour;
  144.                 },
  145.                 'required'    => false,
  146.                 'placeholder' => 'Choisir une commande',
  147.                 'empty_data'  => null,
  148.                 'choices' => $commandes,                                
  149.             ));
  150.             */
  151.         };
  152.         $formModifierAdresses = function (FormInterface $formCommande $commande null) {
  153.             $adresses = [];
  154.             if (is_object($commande)) {
  155.                 if (is_object($commande->getAdresseLivraison())) {
  156.                     $adresses[] = $commande->getAdresseLivraison();
  157.                 }//dump($commande->getAdresseLivraison());
  158.                 foreach ($commande->getClient()->getAdresses() as $adresse) {
  159.                     if ( ! is_object($commande->getAdresseLivraison())) {
  160.                         $adresses[] = $adresse;
  161.                     } elseif (is_object($commande->getAdresseLivraison()) && $commande->getAdresseLivraison()->getId() != $adresse->getId()) {
  162.                         $adresses[] = $adresse;
  163.                     }
  164.                 }
  165.             }
  166.             //dump($adresses);
  167.             $form->add('adresseLivraison'EntityType::class, [
  168.                 'class'       => Adresse::class,
  169.                 //'property' => 'rue',
  170.                 'required'    => false,
  171.                 'placeholder' => 'Choisir une adresse',
  172.                 'empty_data'  => null,
  173.                 'choices'     => $adresses,
  174.             ]);
  175.         };
  176.         /*
  177.         $builder->addEventListener(
  178.             FormEvents::PRE_SET_DATA,
  179.             function (FormEvent $event) use ($formModifier, $formModifierAdresses) {
  180.                 // this would be your entity, i.e. SportMeetup
  181.                 $data = $event->getData();
  182.                 //dump($data);
  183.                 //dump($event->getForm());
  184.                 //$formModifier($event->getForm(), $data->getArticleCommande());
  185.                 
  186.                 if ($data->getArticleCommande() !== null)
  187.                     $formModifier($event->getForm(), $data->getArticleCommande());
  188.                 else {
  189.                     $event->getForm()->add('commande', EntityType::class, array(
  190.                         'class' => 'DTC\GestionComercialeBundle\Entity\Commande',
  191.                         //'property' => 'reference',
  192.                         'choice_label' => function($commande){return 'test';},
  193.                         'required'    => false,
  194.                         'placeholder' => 'Choisir une commande....',
  195.                         'empty_data'  => null,
  196.                         'choices' => array(),
  197.                     ));
  198.                 }
  199.                 
  200.                 //$formModifierAdresses($event->getForm(), $data->getCommande());
  201.                 
  202.                 if ($data->getCommande() !== null)
  203.                     $formModifierAdresses($event->getForm(), $data->getCommande());
  204.                 else {
  205.                     $event->getForm()->add('adresseLivraison',EntityType::class, array(
  206.                         'class'       => 'DTCAdressesBundle:Adresse',
  207.                         //'property' => 'rue',
  208.                         'required'    => false,
  209.                         'placeholder' => 'Choisir une adresse',
  210.                         'empty_data'  => null,
  211.                         'choices' => array(),
  212.                     ));
  213.                 }
  214.                 
  215.             }
  216.         );
  217.         */
  218.     }
  219.     public function configureOptions(OptionsResolver $resolver)
  220.     {
  221.         $resolver->setDefaults([
  222.                                    'data_class' => CommandeFournisseur::class,
  223.                                ]);
  224.     }
  225.     public function getName()
  226.     {
  227.         return 'dtc_gestioncomercialebundle_commande_fournisseur';
  228.     }
  229.     public function getBlockPrefix():string
  230.     {
  231.         return 'dtc_gestioncomercialebundle_commande_fournisseur';
  232.     }
  233. }