src/Form/InvoiceType.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Invoice;
  4. use App\Entity\Guest;
  5. use Symfony\Component\Form\AbstractType;
  6. use Symfony\Component\Form\FormBuilderInterface;
  7. use Symfony\Component\OptionsResolver\OptionsResolver;
  8. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  9. use Symfony\Component\Form\Extension\Core\Type\DateType;
  10. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  11. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  12. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  13. use Symfony\Component\Form\Extension\Core\Type\CollectionType;
  14. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  15. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  16. class InvoiceType extends AbstractType
  17. {
  18.     public function buildForm(FormBuilderInterface $builder, array $options): void
  19.     {
  20.         $builder
  21.             ->add('number'IntegerType::class, ['label' => 'numéro'])
  22.             ->add('date'DateType::class, ['label' => 'Date''widget' => 'single_text''html5' => false'format' => 'dd-MM-yyyy'])
  23.             ->add('due_date'DateType::class, ['label' => 'Échéance''widget' => 'single_text''html5' => false'format' => 'dd-MM-yyyy'])
  24.             ->add('notes'TextareaType::class, ['label' => 'notes additionelles''required' => false])
  25.             ->add('vat_rate'ChoiceType::class, ['label' => 'TVA''choices' => [ 'Incluse' => 'included''Sur le sous-total' => 'subtotal''Intracommunautaire' => 'intracommunautaire']])
  26.             ->add('guest'EntityType::class, ['class' => Guest::class, 'attr' => ['data-live-search' => 'true''data-size' => 10]])
  27.             ->add('items'CollectionType::class, ['entry_type' => ItemType::class, 'entry_options' => ['label' => false], 'allow_add' => true'allow_delete' => true'by_reference' => false])
  28.             ->add('payments'CollectionType::class, ['entry_type' => PaymentType::class, 'allow_add' => true'by_reference' => false])
  29.             ->add('currency'ChoiceType::class, [  'label' => 'Devise''attr' => ['data-style' => "invoice-select form-sm"],
  30.                                                     'choices' => [
  31.                                                         'USD - US Dollar' => 'USD',
  32.                                                         'GBP - British Pound' => 'GBP',
  33.                                                         'EUR - Euro' => 'EUR',
  34.                                                     ],
  35.                                                     'choice_attr' => [
  36.                                                         'USD - US Dollar' => ['data-thumbnail' => 'assets/img/flag-us.svg'],
  37.                                                         'GBP - British Pound' => ['data-thumbnail' => 'assets/img/flag-gb.svg'],
  38.                                                         'EUR - Euro' => ['data-thumbnail' => 'assets/img/flag-eu.svg'],
  39.                                                     ]])
  40.             ->add('subtotal'HiddenType::class)
  41.             ->add('tax'HiddenType::class)
  42.             ->add('total'HiddenType::class)
  43.             ->add('status'ChoiceType::class, ['label' => 'Payé?''choices' => [ 'Payé' => 'paid''En cours' => 'unpaid']])
  44.             ->add('save' SubmitType::class, ['label' => 'Enregistrer'])
  45.         ;
  46.     }
  47.     public function configureOptions(OptionsResolver $resolver): void
  48.     {
  49.         $resolver->setDefaults([
  50.             'data_class' => Invoice::class,
  51.         ]);
  52.     }
  53. }