Skip to content

nowo-tech/SerialNumberBundle

Repository files navigation

Serial Number Bundle

CI Packagist Version Packagist Downloads License PHP Symfony GitHub stars

Symfony bundle to generate and mask serial numbers for invoices, receipts, tickets, etc. Uses a pattern with placeholders ({year}, {prefix}, {id}), a context map, and an optional numeric id padding. Includes a Twig filter to mask the serial for display (e.g. show only last 4 digits).

Features

  • SerialNumberGenerator service: build serials from context (variables), pattern (string with {var} and {id}), and numeric id (optional zero-padding).
  • Twig function serial_number(context, pattern, id, padding?): generate serial in templates.
  • Twig filter serial_number_mask(serial, visibleLast?, maskChar?): mask a serial leaving only the last N characters visible (e.g. ***************0042).

Documentation

Demos

Quick example

// In a controller or service
$serial = $this->serialNumberGenerator->generate(
    ['prefix' => 'FAC', 'year' => 2025, 'office' => '01'],
    '{prefix}-{year}-{office}-{id}',
    42,
    5  // id padding → 00042
);
// → "FAC-2025-01-00042"
{# Generate and mask in Twig #}
{{ serial_number(
    { prefix: 'FAC', year: 2025, office: '01' },
    '{prefix}-{year}-{office}-{id}',
    invoice.id,
    5
)|serial_number_mask(4) }}
{# → "***************00042" #}

Requirements

  • PHP 8.1+
  • Symfony 6.0 | 7.0 | 8.0
  • Twig 3.8+ or 4.x

License

MIT. See LICENSE.

About

Symfony bundle to generate and mask serial numbers for invoices, receipts, tickets, etc. Uses a pattern with placeholders (`{year}`, `{prefix}`, `{id}`), a context map, and an optional numeric id padding. Includes a Twig filter to mask the serial for display (e.g. show only last 4 digits).

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors