src/Form/PieceType.php line 113

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Client;
  4. use App\Entity\Piece;
  5. use Symfony\Component\Form\AbstractType;
  6. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  7. use Symfony\Component\Form\Extension\Core\Type\DateType;
  8. use Symfony\Component\Form\FormBuilderInterface;
  9. use Symfony\Component\OptionsResolver\OptionsResolver;
  10. use Symfony\Component\Form\Extension\Core\Type\TextType;
  11. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  12. use Doctrine\ORM\EntityRepository;
  13. use Symfony\Component\Form\Extension\Core\Type\CollectionType;
  14. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  15. class PieceType extends AbstractType
  16. {
  17.     public function buildForm(FormBuilderInterface $builder, array $options)
  18.     {
  19.         $piece=new Piece();
  20.         $config $options['config'];
  21.         $responsable $options['responsable'];
  22.         $action  =$options['type'];
  23.         $products $options['products'];
  24.         $builder
  25.             ->add('date'DateType::class, [
  26.                 "label" => "Date",
  27.                 "required" => false,
  28.                 'widget' => 'single_text',
  29.                 'attr' => [
  30.                     'autocomplete' => 'off',
  31.                     'placeholder' => "jj/mm/aaaa",
  32.                 ]
  33.             ])
  34.             ->add('numero'TextType::class, [
  35.                 "label" => "Numéro",
  36.                 "required" => false,
  37.                 'attr' => [
  38.                     'autocomplete' => 'off',
  39.                     'placeholder' => 'Numéro']
  40.             ])
  41.             ->add('amountHT'TextType::class, [
  42.                 "label" => "Montant HT",
  43.                 "required" => false,
  44.                 'empty_data' => '',
  45.                 'attr' => [
  46.                     "class" => "text-right",
  47.                     "readonly" => "readonly",
  48.                     'autocomplete' => 'off',
  49.                     'placeholder' => 'Montant HT']
  50.             ])
  51.             ->add('amountTVA'TextType::class, [
  52.                 "label" => "Montant TVA",
  53.                 "required" => false,
  54.                 'attr' => [
  55.                     "class" => "text-right",
  56.                     "readonly" => "readonly",
  57.                     'autocomplete' => 'off',
  58.                     'placeholder' => 'Montant TVA']
  59.             ])
  60.             ->add('amountDiscount'TextType::class, [
  61.                 "label" => "Montant remise",
  62.                 "required" => false,
  63.                 'attr' => [
  64.                     "class" => "text-right",
  65.                     "readonly" => "readonly",
  66.                     'autocomplete' => 'off',
  67.                     'placeholder' => 'Montant remise']
  68.             ])
  69.             ->add('amountDiscountTotal'TextType::class, [
  70.                 "label" => "Bon de réduction",
  71.                 "required" => false,
  72.                 'attr' => [
  73.                     "class" => "text-right",
  74.                     'autocomplete' => 'off',
  75.                     'placeholder' => 'Bon de réduction']
  76.             ])
  77.             ->add('amountTTC'TextType::class, [
  78.                 "label" => "Montant TTC",
  79.                 "required" => false,
  80.                 'attr' => [
  81.                     "class" => "text-right",
  82.                     "readonly" => "readonly",
  83.                     'autocomplete' => 'off',
  84.                     'placeholder' => 'Montant TTC']
  85.             ])
  86.             ->add('amountBuyHT'TextType::class, [
  87.                 "label" => "Montant Achat",
  88.                 "required" => false,
  89.                 'attr' => [
  90.                     "class" => "text-right",
  91.                     "readonly" => "readonly",
  92.                     'autocomplete' => 'off',
  93.                     'placeholder' => 'Montant Achat']
  94.             ])
  95.             ->add('amountMarge'TextType::class, [
  96.                 "label" => "Montant Marge",
  97.                 "required" => false,
  98.                 'attr' => [
  99.                     "class" => "text-right",
  100.                     "readonly" => "readonly",
  101.                     'autocomplete' => 'off',
  102.                     'placeholder' => 'Montant Marge']
  103.             ])
  104.             ->add('client'EntityType::class, [
  105.                 'class' => Client::class,
  106.                 'query_builder' => function (EntityRepository $er)use($responsable) {
  107.                     if($responsable->isSuperAdmin()) {
  108.                         return $er->createQueryBuilder('r')
  109.                             ->orderBy('r.firstName''ASC')
  110.                             ->addOrderBy('r.lastName''ASC');
  111.                     }else{
  112.                         return $er->createQueryBuilder('r')
  113.                             ->andWhere('r.user = :user')
  114.                             ->setParameter('user',$responsable)
  115.                             ->orderBy('r.firstName''ASC')
  116.                             ->addOrderBy('r.lastName''ASC');
  117.                     }
  118.                 },
  119.                 'choice_label' => 'fullNomComplet',
  120.                 'placeholder' => 'Client',
  121.                 'label' => 'Client',
  122.                 'required' => false,
  123.             ])
  124.             ->add('pieceLines'CollectionType::class, [
  125.                 'entry_type' => PieceLineType::class,
  126.                 'allow_add'    => true,
  127.                 'allow_delete' => true,
  128.                 'by_reference' => false,
  129.                 'entry_options'=>[
  130.                     'config'=>$config,
  131.                     'products' => $products
  132.                 ],
  133.             ])
  134.         ;
  135.         if($action == 'add'){
  136.             $builder->add('modePaiement'ChoiceType::class, [
  137.                 'choices' => array_flip($piece->liste_mode_paiement()),
  138.                 'multiple' => false,
  139.                 'expanded' => false,
  140.                 'label' => 'Payer cette facture intégralement en : ',
  141.                 'placeholder' => 'Mode paiement',
  142.                 'required' => false,
  143.             ]);
  144.         }
  145.     }
  146.     public function configureOptions(OptionsResolver $resolver)
  147.     {
  148.         $resolver->setDefaults([
  149.             'data_class' => Piece::class,
  150.             'responsable' => null,
  151.             'config' => null,
  152.             'type' => null,
  153.             'products' => null
  154.         ]);
  155.     }
  156. }