BCard - Documentation technique

PaymentService
in package

Prépare les entités de paiement et calcule les montants d'abonnement entreprise.

Ce service ne dialogue avec aucune passerelle de paiement (voir StripeService pour cela) : il se limite à construire des Payment en mémoire, à déterminer le montant dû à partir du plan, du cycle de facturation et du nombre d'employés, et à formater les montants pour l'affichage en francs guinéens. La persistance des entités produites relève de l'appelant.

Table of Contents

Properties

$entityManager  : EntityManagerInterface
$logger  : LoggerInterface

Methods

__construct()  : mixed
calculateSubscriptionAmount()  : string
Calculate subscription amount based on plan, billing cycle and employee count
createCompanyPayment()  : Payment
Create a payment entity for company subscription
formatAmount()  : string
Format amount for display

Properties

Methods

__construct()

public __construct(EntityManagerInterface $entityManager, LoggerInterface $logger) : mixed
Parameters
$entityManager : EntityManagerInterface

Gestionnaire Doctrine, utilisé ici en lecture seule pour charger les plans.

$logger : LoggerInterface

Journalisation ; injectée et conservée, mais non utilisée dans l'implémentation actuelle.

calculateSubscriptionAmount()

Calculate subscription amount based on plan, billing cycle and employee count

public calculateSubscriptionAmount(int $planId, string $billingCycle, int $employeeCount) : string

Charge le plan en base, retient son prix mensuel si le cycle vaut Subscription::BILLING_MONTHLY et son prix annuel dans tous les autres cas, puis multiplie ce prix unitaire par le nombre d'employés. Aucune remise ni palier dégressif n'est appliqué. Le résultat est un float converti en chaîne, ce qui peut produire une notation scientifique sur de très grandes valeurs.

Parameters
$planId : int

Identifiant du plan à facturer.

$billingCycle : string

Cycle de facturation ; seul Subscription::BILLING_MONTHLY déclenche le tarif mensuel.

$employeeCount : int

Nombre d'employés servant de multiplicateur.

Tags
throws
InvalidArgumentException

Si aucun plan ne correspond à l'identifiant fourni.

Return values
string

Montant total sous forme de chaîne.

createCompanyPayment()

Create a payment entity for company subscription

public createCompanyPayment(User $user, Company $company, Subscription $subscription, string $paymentMethod, string $amount) : Payment

Instancie un Payment rattaché à l'utilisateur, à l'entreprise et à l'abonnement fournis, avec le statut initial Payment::PENDING_STATUS et des horodatages de création et de mise à jour positionnés à l'instant courant. Aucun persist() ni flush() n'est effectué : l'entité retournée n'est pas encore suivie par Doctrine.

Parameters
$user : User

Utilisateur à l'origine du paiement.

$company : Company

Entreprise facturée.

$subscription : Subscription

Abonnement que ce paiement règle.

$paymentMethod : string

Identifiant du moyen de paiement retenu.

$amount : string

Montant, transporté sous forme de chaîne pour préserver la précision décimale.

Return values
Payment

Entité de paiement en attente, non persistée.

formatAmount()

Format amount for display

public formatAmount(float $amount) : string

Arrondit le montant à l'unité (aucune décimale), utilise la virgule comme séparateur décimal et l'espace comme séparateur de milliers, puis suffixe la devise « GNF ».

Parameters
$amount : float

Montant à formater.

Return values
string

Montant prêt à l'affichage, par exemple 150 000 GNF.


        
On this page

Search results