<?php
namespace App\Form;
use App\Entity\AdminDonneurOrdre;
use App\Entity\Conditionnement;
use App\Entity\Devise;
use App\Entity\Emballage;
use App\Entity\Exigence;
use App\Entity\LetterOfIntentToPurchase;
use App\Entity\Niveau;
use App\Entity\PaymentMethod;
use App\Entity\Products;
use App\Entity\SousJacent;
use App\Entity\Status;
use App\Entity\Unite;
use App\Entity\User;
use DateTime;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\CountryType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\MoneyType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\NotBlank;
class LetterOfIntentToPurchaseType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('adminName',HiddenType::class,[
'data'=>'bscm'
])
->add('reference',TextType::class,['required'=>false, ])
->add('mandataire',TextType::class,['required'=>false, ])
// ->add('recipient',EntityType::class,[
// 'class'=>AdminDonneurOrdre::class,
// 'choice_label'=>'raison',
// 'placeholder'=>'Choix',
// 'required'=>true,
// 'query_builder' => function ($repository) {
// return $repository->createQueryBuilder('d')
// ->join('d.position', 'p')
// ->where('p.name = :position')
// ->setParameter('position', 'Vendeur');
// },
// ])
->add('date_saisie',DateType::class,[
'required'=>false,
'widget' => 'single_text',
'format' => 'yyyy-MM-dd',
'placeholder' => [
'year' => 'Année', 'month' => 'Mois', 'day' => 'Jour',
'hour' => 'Hour', 'minute' => 'Minute', 'second' => 'Second',
],
])
->add('representant',TextType::class,[
'required'=>false,
'attr'=>[
]
])
->add('entreprise',TextType::class,[
'label'=>'Tel ',
'required'=>false,
'attr'=>[
]
])
->add('numero_rc',TextType::class,['required'=>false, ])
->add('pays',CountryType::class,[
'required'=>false,
'placeholder' => 'Choix',
])
->add('phone',TextType::class,['required'=>false, ])
->add('email',TextType::class,['required'=>false, ])
->add('sousJacent',EntityType::class,[
'required'=>false,
'placeholder' => 'sous-jacent',
'class' => SousJacent::class,
'choice_label' => 'produit_en_gestion',
])
->add('agent',EntityType::class,[
'required'=>false,
'placeholder' => 'agent',
'class' => User::class,
'choice_label' => 'name',
])
->add('quantity',NumberType::class,[
'required'=>false,
'label'=>'Quantité en T ',
])
->add('qt_unite', EntityType::class,[
'class'=>Unite::class,
'placeholder' => 'Choix',
'choice_label'=>'nom',
'required'=>false,
])
->add('filiere',EntityType::class,[
'required'=>false,
'placeholder' => 'Produit',
'class' => Products::class,
'choice_label' => 'name',
])
->add('origine',CountryType::class,[
'label'=>'Origine ',
'required'=>false,
'placeholder' => 'Choix',
])
->add('prix_cible',IntegerType::class,[
'label'=>'Prix cible ',
'required'=>false,
])
->add('devise', EntityType::class,[
'class'=>Devise::class,
'placeholder' => 'choix',
'choice_label'=>'name',
'required'=>false,
])
->add('emballage', EntityType::class,[
'class'=>Emballage::class,
'placeholder' => 'Choix',
'choice_label'=>'name',
'required'=>false,
])
->add('conditionnement', EntityType::class,[
'class'=>Conditionnement::class,
'placeholder' => 'Choix',
'choice_label'=>'name',
'required'=>false,
])
->add('paiement_mode', EntityType::class,[
'class'=>PaymentMethod::class,
'placeholder' => 'Choix',
'choice_label'=>'name',
'required'=>false,
])
->add('destination',CountryType::class,[
'required'=>false,
])
->add('delai_livraison',TextType::class,['required'=>false, ])
->add('frequence',TextType::class,['required'=>false, ])
->add('condition',TextType::class,['required'=>false, ])
->add('exigence', EntityType::class,[
'class'=>Exigence::class,
'placeholder' => 'Choix',
'choice_label'=>'name',
'required'=>false,
])
->add('specification',TextareaType::class,[
'required'=>false,
])
->add('date_expiration',TextType::class,['required'=>false, ])
->add('niveau', EntityType::class,[
'class'=>Niveau::class,
'placeholder' => 'Choix',
'choice_label'=>'niveau',
])
->add('status', EntityType::class,[
'class'=>Status::class,
'placeholder' => 'Choix',
'choice_label'=>'name',
'required'=>false,
'query_builder' => function ($repository) {
return $repository->createQueryBuilder('s')
->where('LOWER(s.formulaire) LIKE :entity_name') // Utilisation de LIKE pour une correspondance approximative
->setParameter('entity_name', '%intention%achat%'); // Utilisation de % pour faire correspondre n'importe quel caractère (y compris aucun)
},
])
->add('suivipar',EntityType::class,[
'class'=>User::class,
'choice_label'=>'name',
'placeholder'=>'Choix',
'required'=>true,
'query_builder' => function ($repository) {
return $repository->createQueryBuilder('d')
->join('d.status', 'p')
->where('p.name = :autorisation')
->setParameter('autorisation', 'Autorisé');
},
])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => LetterOfIntentToPurchase::class,
'vendeurs' => [],
'vendeur' => null,
]);
}
}