BCard - Documentation technique

PaymentController extends AbstractController
in package

Expose la consultation des paiements et le téléchargement de leurs factures.

Le listing est partagé entre le personnel du back-office et les clients : ROLE_ADMIN et ROLE_OPERATOR voient tous les paiements, tandis que les autres utilisateurs authentifiés sont restreints à leurs propres paiements. Le listing peut être segmenté en transactions « Entreprise » (commandes contenant au moins une ligne rattachée à un employé, ou abonnements au plan « Entreprise ») et paiements « Particulier ».

Préfixe de route : /admin. Authentification complète requise (IS_AUTHENTICATED_FULLY).

Attributes
#[IsGranted]
'IS_AUTHENTICATED_FULLY'
#[Route]
'/admin'

Table of Contents

Properties

$mailerService  : MailerService

Methods

__construct()  : mixed
downloadInvoice()  : Response
Generates and downloads an invoice PDF for a given payment.
index()  : Response
Affiche la liste paginée des paiements, filtrable par type et par source.

Properties

Methods

__construct()

public __construct(MailerService $mailerService) : mixed
Parameters
$mailerService : MailerService

Service d'envoi d'emails, utilisé ici uniquement pour récupérer l'adresse d'expédition affichée sur la facture.

downloadInvoice()

Generates and downloads an invoice PDF for a given payment.

public downloadInvoice(Payment $payment, DomPdfService $pdfGenerator) : Response
Parameters
$payment : Payment

The payment entity containing payment details.

$pdfGenerator : DomPdfService

The service used to generate PDF files.

Attributes
#[Route]
'/invoice/payment/{id}'
$name: 'download_invoice'
Return values
Response

The response containing the generated PDF file.

The method prepares the data required for the invoice template, including payment details, company configuration, and logo image. It then renders the HTML content for the invoice using a Twig template and generates a PDF file with the rendered content.

Génère et télécharge la facture PDF d'un paiement.

Contrôle d'accès : si l'utilisateur n'est ni ROLE_ADMIN ni ROLE_OPERATOR, il doit être le propriétaire du paiement, sinon une exception d'accès refusé est levée. Le logo BCard (public/assets/new_design/image/bcard.png) est lu depuis le disque et encodé en base64, de même que la première image de la carte associée au paiement lorsqu'elle existe dans public/card/ (sinon cardImage vaut null). Le montant est formaté sans décimale avec séparateur d'espace, la date au format d/m/Y, et les coordonnées de l'émetteur sont codées en dur (Bcard, Conakry) hormis l'email fourni par MailerService::getFromEmail(). Le fichier produit est nommé facture_<idPaiement>_<ddmmyyyy>.pdf.

Route : /admin/invoice/payment/{id} (toutes méthodes), nom download_invoice.

index()

Affiche la liste paginée des paiements, filtrable par type et par source.

public index(PaymentRepository $paymentRepository, PaginatorInterface $paginator, Request $request) : Response

Construit une requête sur les paiements joints à la commande, à l'abonnement et au plan, triée par identifiant décroissant. Si l'utilisateur n'est ni ROLE_ADMIN ni ROLE_OPERATOR, la requête est restreinte à ses propres paiements. Le paramètre type segmente les résultats : business retient les paiements dont la commande contient au moins un OrderItem rattaché à un employé ou dont le plan d'abonnement se nomme « Entreprise » — affiné par source valant orders (commandes uniquement) ou subscriptions (abonnements « Entreprise » uniquement) ; personal retient les paiements sans commande ou dont aucune ligne n'est rattachée à un employé ; toute autre valeur affiche l'ensemble. Le titre de page et le fil d'Ariane sont adaptés à la combinaison retenue. Pagination fixe de 10 éléments.

Route : /admin/payment (GET), nom app_payments.

Parameters
$paymentRepository : PaymentRepository

Dépôt des paiements, fournit le query builder de base.

$paginator : PaginatorInterface

Service de pagination KnpPaginator.

$request : Request

Requête HTTP courante (paramètres type, source, page).

Attributes
#[Route]
'/payment'
$name: 'app_payments'
$methods: ['GET']
Return values
Response

Rendu du template admin/payment/index.html.twig avec la pagination, le titre de page, le libellé de fil d'Ariane et les filtres actifs.


        
On this page

Search results