Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

GeneratesDocumentNumbers.php 979B

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. namespace App\Concerns;
  3. use RuntimeException;
  4. trait GeneratesDocumentNumbers
  5. {
  6. public static function getNextDocumentNumber(): string
  7. {
  8. $company = auth()->user()->currentCompany;
  9. if (! $company) {
  10. throw new RuntimeException('No current company is set for the user.');
  11. }
  12. $settings = $company->{static::getSettingsKey()};
  13. $numberField = static::getDocumentNumberField();
  14. $latestDocument = static::query()
  15. ->whereNotNull($numberField)
  16. ->latest($numberField)
  17. ->first();
  18. $lastNumberPart = $latestDocument
  19. ? (int) substr($latestDocument->{$numberField}, strlen($settings->number_prefix))
  20. : 0;
  21. return $settings->getNumberNext(
  22. padded: true,
  23. format: true,
  24. prefix: $settings->number_prefix,
  25. digits: $settings->number_digits,
  26. next: $lastNumberPart + 1
  27. );
  28. }
  29. }