<?php
namespace App\Form;
use App\Entity\Client;
use App\Entity\Piece;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Doctrine\ORM\EntityRepository;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
class PieceType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$piece=new Piece();
$config = $options['config'];
$responsable = $options['responsable'];
$action =$options['type'];
$products = $options['products'];
$builder
->add('date', DateType::class, [
"label" => "Date",
"required" => false,
'widget' => 'single_text',
'attr' => [
'autocomplete' => 'off',
'placeholder' => "jj/mm/aaaa",
]
])
->add('numero', TextType::class, [
"label" => "Numéro",
"required" => false,
'attr' => [
'autocomplete' => 'off',
'placeholder' => 'Numéro']
])
->add('amountHT', TextType::class, [
"label" => "Montant HT",
"required" => false,
'empty_data' => '',
'attr' => [
"class" => "text-right",
"readonly" => "readonly",
'autocomplete' => 'off',
'placeholder' => 'Montant HT']
])
->add('amountTVA', TextType::class, [
"label" => "Montant TVA",
"required" => false,
'attr' => [
"class" => "text-right",
"readonly" => "readonly",
'autocomplete' => 'off',
'placeholder' => 'Montant TVA']
])
->add('amountDiscount', TextType::class, [
"label" => "Montant remise",
"required" => false,
'attr' => [
"class" => "text-right",
"readonly" => "readonly",
'autocomplete' => 'off',
'placeholder' => 'Montant remise']
])
->add('amountDiscountTotal', TextType::class, [
"label" => "Bon de réduction",
"required" => false,
'attr' => [
"class" => "text-right",
'autocomplete' => 'off',
'placeholder' => 'Bon de réduction']
])
->add('amountTTC', TextType::class, [
"label" => "Montant TTC",
"required" => false,
'attr' => [
"class" => "text-right",
"readonly" => "readonly",
'autocomplete' => 'off',
'placeholder' => 'Montant TTC']
])
->add('amountBuyHT', TextType::class, [
"label" => "Montant Achat",
"required" => false,
'attr' => [
"class" => "text-right",
"readonly" => "readonly",
'autocomplete' => 'off',
'placeholder' => 'Montant Achat']
])
->add('amountMarge', TextType::class, [
"label" => "Montant Marge",
"required" => false,
'attr' => [
"class" => "text-right",
"readonly" => "readonly",
'autocomplete' => 'off',
'placeholder' => 'Montant Marge']
])
->add('client', EntityType::class, [
'class' => Client::class,
'query_builder' => function (EntityRepository $er)use($responsable) {
if($responsable->isSuperAdmin()) {
return $er->createQueryBuilder('r')
->orderBy('r.firstName', 'ASC')
->addOrderBy('r.lastName', 'ASC');
}else{
return $er->createQueryBuilder('r')
->andWhere('r.user = :user')
->setParameter('user',$responsable)
->orderBy('r.firstName', 'ASC')
->addOrderBy('r.lastName', 'ASC');
}
},
'choice_label' => 'fullNomComplet',
'placeholder' => 'Client',
'label' => 'Client',
'required' => false,
])
->add('pieceLines', CollectionType::class, [
'entry_type' => PieceLineType::class,
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
'entry_options'=>[
'config'=>$config,
'products' => $products
],
])
;
if($action == 'add'){
$builder->add('modePaiement', ChoiceType::class, [
'choices' => array_flip($piece->liste_mode_paiement()),
'multiple' => false,
'expanded' => false,
'label' => 'Payer cette facture intégralement en : ',
'placeholder' => 'Mode paiement',
'required' => false,
]);
}
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Piece::class,
'responsable' => null,
'config' => null,
'type' => null,
'products' => null
]);
}
}