Order Number Generator
CoreShop generates a unique number for each completed order. This generation is handled by
the CoreShop\Component\Core\Order\Committer\OrderCommitter, utilizing a NumberGeneratorInterface service.
If the CoreBundle is installed, the coreshop.order.number_generator.prefix_suffix service is used. This service
decorates the coreshop.order.number_generator.default and adds the capability to manage a prefix and suffix through
CoreShop settings.
To implement a custom number generator, create a service that decorates the coreshop.order.number_generator.default.
The decoration_priority setting determines the order in which decorators are called.
- A decoration_priorityhigher or equal to zero results in this order:PrefixSuffix Generator > CustomNumberGenerator > DefaultSequenceGenerator.
- A decoration_prioritybelow zero changes the order to:CustomNumberGenerator > PrefixSuffix Generator > DefaultSequenceGenerator.
Example: Custom Number Generator with Padding
This example shows a custom implementation that adds padding to the number:
final class CustomNumberGenerator implements NumberGeneratorInterface
{
    public function __construct(
        private NumberGeneratorInterface $numberGenerator, // decorated service
    ) {
    
    }
    public function generate(ResourceInterface $model): string
    {
        $number = $this->numberGenerator->generate($model);
        return str_pad($number, 10, '0', STR_PAD_LEFT);
    }
}
Symfony service definition:
  App\CoreShop\Order\CustomNumberGenerator:
    decorates: coreshop.order.number_generator.default
    decoration_priority: 1
    arguments:
      - '@.inner'
This format should provide clarity on the customization of the Order Number Generator in CoreShop. If you have more sections to work on or need further adjustments, please let me know!