kinulab / sequence-generator-bundle
Installs: 98
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 1
Open Issues: 1
Type:symfony-bundle
Requires
- php: ^7.1.0||^8.0
- doctrine/doctrine-bundle: ^2.0
- doctrine/orm: ^2.5||^3.0
- symfony/property-access: ^3.4||^4.0
Requires (Dev)
- symfony/phpunit-bridge: ^4.1
- symfony/var-dumper: ^4.1
README
Ce bundle a pour objectif de simplifier l'utilisation de séquences configurable
pour la génération de code. Par exemple, il permet de générer facilement des
références type code facture de la forme FC2018-0001
.
Ce bundle ne fonctionne que pour les bases de données PostreSQL
Installation
composer require kinulab/sequence-generator-bundle
Ajouter dans app/AppKernel.php
:
public function registerBundles() { $bundles = array( ... new Kinulab\SequenceGeneratorBundle\SequenceGeneratorBundle(), ); }
Utilisation
Création d'une nouvelle séquence :
use Kinulab\SequenceGeneratorBundle\Entity\CustomSequence; use Kinulab\SequenceGeneratorBundle\Generator\SequenceGenerator; // Enregistrement d'une nouvelle séquence $sequence = new CustomSequence(); $sequence->setLibelle("Séquence des factures"); $sequence->setSequenceName("facture_seq"); $sequence->setIncrementBy(1); $sequence->setIncrementLength(5); $sequence->setPrefix('FC'); $sequence->setRestartYearly(true); $em = $doctrine->getManager(); $em->persist($sequence); $em->flush(); // Initialisation de la séquence $generator = $container->get(SequenceGenerator::class); $generator->initializeSequence($sequence); // Utilisation echo $generator->getNextVal('facture_seq'); // FC00001 echo $generator->getNextVal('facture_seq'); // FC00002 // On change le pas d'incrémentation $sequence->setIncrementBy(2); $generator->initializeSequence($sequence); echo $generator->getNextVal('facture_seq'); // FC00004 echo $generator->getNextVal('facture_seq'); // FC00006
Utilisation de marqueurs
Il est possible d'inclure de le préfix ou le suffix de la séquence un ou plusieurs
marqueurs. Les marqueurs sont de la forme %<nom du marquer>%
.
Les marqeurs utilisables sont :
Exemple :
$sequence->setPrefix('FC%year%-%month%-'); echo $generator->getNextVal('facture_seq'); // FC2018-08-*****
Il est possible également d'inclure des marqueurs dépendant de l'objet passé en
second paramètre de la méthode getNextVal
.
Exemple :
$facture = new stdClass(); $facture->codeClient = 'ABC'; $facture->userName = 'homer'; $sequence->setPrefix('FC-%object.codeClient%-'); $sequence->setSuffix('-%object.userName%'); echo $generator->getNextVal('facture_seq', $facture); // FC-ABC-*****-homer