feat: personal data confirmation with invoice upload

This commit is contained in:
Björn Fromme
2026-03-15 12:42:28 +01:00
parent 9e0bacaa45
commit 3b6ebdaddc
3 changed files with 22 additions and 1 deletions
@@ -46,7 +46,10 @@ class DetailController extends AbstractController
$isUploadInvoice = $this->workflow->can($disposition, 'upload_invoice'); $isUploadInvoice = $this->workflow->can($disposition, 'upload_invoice');
// Create dummy form without fields to generate POST requests // Create dummy form without fields to generate POST requests
$form = $this->createForm(TeamerDispositionType::class, $disposition, ['enable_pickup' => $isUploadContract]); $form = $this->createForm(TeamerDispositionType::class, $disposition, [
'enable_pickup' => $isUploadContract,
'enable_invoice_confirmation' => $isUploadInvoice,
]);
$form->handleRequest($request); $form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) { if ($form->isSubmitted() && $form->isValid()) {
+15
View File
@@ -4,11 +4,13 @@ namespace App\Form;
use App\Entity\Disposition; use App\Entity\Disposition;
use Symfony\Component\Form\AbstractType; 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\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents; use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\IsTrue;
class TeamerDispositionType extends AbstractType class TeamerDispositionType extends AbstractType
{ {
@@ -34,6 +36,18 @@ class TeamerDispositionType extends AbstractType
} }
}); });
} }
if (true === $options['enable_invoice_confirmation']) {
$builder->add('confirmInvoiceData', CheckboxType::class, [
'label' => 'Ich bestätige, dass meine persönlichen Daten, Bankverbindung und Kontoinhaber korrekt sind',
'mapped' => false,
'constraints' => [
new IsTrue([
'message' => 'Deine Bestätigung ist erforderlich',
]),
],
]);
}
} }
public function configureOptions(OptionsResolver $resolver): void public function configureOptions(OptionsResolver $resolver): void
@@ -41,6 +55,7 @@ class TeamerDispositionType extends AbstractType
$resolver->setDefaults([ $resolver->setDefaults([
'data_class' => Disposition::class, 'data_class' => Disposition::class,
'enable_pickup' => false, 'enable_pickup' => false,
'enable_invoice_confirmation' => false,
]); ]);
} }
} }
@@ -108,6 +108,9 @@
'endpoint_upload': path('_uploader_upload_invoice'), 'endpoint_upload': path('_uploader_upload_invoice'),
'accepted_files': 'image/jpg,image/jpeg,application/pdf', 'accepted_files': 'image/jpg,image/jpeg,application/pdf',
} %} } %}
{% if form.confirmInvoiceData is defined %}
{{ form_row(form.confirmInvoiceData) }}
{% endif %}
<button type="submit" class="btn" {{ stimulus_target('form-upload-guard', 'submit') }}> <button type="submit" class="btn" {{ stimulus_target('form-upload-guard', 'submit') }}>
Aktualisieren Aktualisieren
</button> </button>