Skip to content

Latest commit

 

History

History
81 lines (60 loc) · 3.47 KB

File metadata and controls

81 lines (60 loc) · 3.47 KB

Serial Number Bundle

CI Packagist Version Packagist Downloads License PHP Symfony GitHub stars Coverage

Found this useful? Install from Packagist and give it a star on GitHub.

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

Additional documentation

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) }}
{# → "*************0042" #}

Requirements

  • PHP >= 8.1, < 8.6
  • Symfony 6.0 | 7.0 | 8.0
  • Twig 3.8+ or 4.x

Tests and coverage

  • Tests: PHPUnit (PHP)
  • PHP: 100%

Version policy

The Composer package name is nowo-tech/serial-number-bundle. Source code and issues are in the GitHub repository nowo-tech/SerialNumberBundle.

We follow Semantic Versioning. See Changelog for release notes. Security support by major version is described in the Security policy.

License

MIT. See LICENSE.