fix: auto-generation PDF a la creation echeancier + bouton regenerer
- create() genere le PDF automatiquement apres creation - Extraction generateEcheancierPdf() methode privee reutilisable - Bouton "Regenerer PDF" (jaune) si PDF existe, "Generer PDF" sinon - Bouton visible dans tous les etats sauf cancelled/completed - Redirect vers show apres creation (au lieu de l'onglet client) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -32,7 +32,7 @@ class EcheancierController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/create/{customerId}', name: 'create', requirements: ['customerId' => '\d+'], methods: ['POST'])]
|
||||
public function create(int $customerId, Request $request): Response
|
||||
public function create(int $customerId, Request $request, KernelInterface $kernel): Response
|
||||
{
|
||||
$customer = $this->em->getRepository(Customer::class)->find($customerId);
|
||||
if (null === $customer) {
|
||||
@@ -76,9 +76,12 @@ class EcheancierController extends AbstractController
|
||||
$this->em->persist($echeancier);
|
||||
$this->em->flush();
|
||||
|
||||
$this->addFlash('success', 'Echeancier cree avec '.$nbEcheances.' echeances de '.$monthlyAmount.' EUR/mois.');
|
||||
// Generer le PDF automatiquement
|
||||
$this->generateEcheancierPdf($echeancier, $kernel);
|
||||
|
||||
return $this->redirectToRoute('app_admin_clients_show', ['id' => $customerId, 'tab' => 'echeancier']);
|
||||
$this->addFlash('success', 'Echeancier cree avec '.$nbEcheances.' echeances de '.$monthlyAmount.' EUR/mois. PDF genere.');
|
||||
|
||||
return $this->redirectToRoute('app_admin_echeancier_show', ['id' => $echeancier->getId()]);
|
||||
}
|
||||
|
||||
#[Route('/{id}', name: 'show', requirements: ['id' => '\d+'])]
|
||||
@@ -183,6 +186,15 @@ class EcheancierController extends AbstractController
|
||||
throw $this->createNotFoundException(self::MSG_NOT_FOUND);
|
||||
}
|
||||
|
||||
$this->generateEcheancierPdf($echeancier, $kernel);
|
||||
|
||||
$this->addFlash('success', 'PDF echeancier '.($echeancier->getPdfUnsigned() ? 'regenere' : 'genere').'.');
|
||||
|
||||
return $this->redirectToRoute('app_admin_echeancier_show', ['id' => $id]);
|
||||
}
|
||||
|
||||
private function generateEcheancierPdf(Echeancier $echeancier, KernelInterface $kernel): void
|
||||
{
|
||||
$pdf = new EcheancierPdf($kernel, $echeancier);
|
||||
$pdf->generate();
|
||||
|
||||
@@ -200,10 +212,6 @@ class EcheancierController extends AbstractController
|
||||
$this->em->flush();
|
||||
|
||||
@unlink($tmpPath);
|
||||
|
||||
$this->addFlash('success', 'PDF echeancier genere.');
|
||||
|
||||
return $this->redirectToRoute('app_admin_echeancier_show', ['id' => $id]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -67,11 +67,17 @@
|
||||
|
||||
{# Actions #}
|
||||
<div class="flex flex-wrap gap-2 mb-6">
|
||||
{% if echeancier.state == 'draft' %}
|
||||
{% if echeancier.state not in ['cancelled', 'completed'] %}
|
||||
{% if echeancier.pdfUnsigned %}
|
||||
<form method="post" action="{{ path('app_admin_echeancier_generate_pdf', {id: echeancier.id}) }}" data-confirm="Regenerer le PDF ? Le fichier existant sera remplace.">
|
||||
<button type="submit" class="px-4 py-2 bg-yellow-500/20 text-yellow-700 hover:bg-yellow-500 hover:text-white font-bold uppercase text-[10px] tracking-wider transition-all">Regenerer PDF</button>
|
||||
</form>
|
||||
{% else %}
|
||||
<form method="post" action="{{ path('app_admin_echeancier_generate_pdf', {id: echeancier.id}) }}">
|
||||
<button type="submit" class="px-4 py-2 bg-gray-900 text-white font-bold uppercase text-[10px] tracking-wider hover:bg-[#fabf04] hover:text-gray-900 transition-all">Generer PDF</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if echeancier.pdfUnsigned %}
|
||||
<a href="{{ vich_uploader_asset(echeancier, 'pdfUnsignedFile') }}" target="_blank"
|
||||
class="px-4 py-2 bg-gray-900 text-white font-bold uppercase text-[10px] tracking-wider hover:bg-[#fabf04] hover:text-gray-900 transition-all">
|
||||
|
||||
Reference in New Issue
Block a user