<?php
namespace App\Form;
use App\Entity\Invoice;
use App\Entity\Guest;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
class InvoiceType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('number', IntegerType::class, ['label' => 'numéro'])
->add('date', DateType::class, ['label' => 'Date', 'widget' => 'single_text', 'html5' => false, 'format' => 'dd-MM-yyyy'])
->add('due_date', DateType::class, ['label' => 'Échéance', 'widget' => 'single_text', 'html5' => false, 'format' => 'dd-MM-yyyy'])
->add('notes', TextareaType::class, ['label' => 'notes additionelles', 'required' => false])
->add('vat_rate', ChoiceType::class, ['label' => 'TVA', 'choices' => [ 'Incluse' => 'included', 'Sur le sous-total' => 'subtotal', 'Intracommunautaire' => 'intracommunautaire']])
->add('guest', EntityType::class, ['class' => Guest::class, 'attr' => ['data-live-search' => 'true', 'data-size' => 10]])
->add('items', CollectionType::class, ['entry_type' => ItemType::class, 'entry_options' => ['label' => false], 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false])
->add('payments', CollectionType::class, ['entry_type' => PaymentType::class, 'allow_add' => true, 'by_reference' => false])
->add('currency', ChoiceType::class, [ 'label' => 'Devise', 'attr' => ['data-style' => "invoice-select form-sm"],
'choices' => [
'USD - US Dollar' => 'USD',
'GBP - British Pound' => 'GBP',
'EUR - Euro' => 'EUR',
],
'choice_attr' => [
'USD - US Dollar' => ['data-thumbnail' => 'assets/img/flag-us.svg'],
'GBP - British Pound' => ['data-thumbnail' => 'assets/img/flag-gb.svg'],
'EUR - Euro' => ['data-thumbnail' => 'assets/img/flag-eu.svg'],
]])
->add('subtotal', HiddenType::class)
->add('tax', HiddenType::class)
->add('total', HiddenType::class)
->add('status', ChoiceType::class, ['label' => 'Payé?', 'choices' => [ 'Payé' => 'paid', 'En cours' => 'unpaid']])
->add('save' , SubmitType::class, ['label' => 'Enregistrer'])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Invoice::class,
]);
}
}