44 lines
1.9 KiB
PHP
44 lines
1.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Steuerkram\Models\Customer;
|
|
use Steuerkram\Models\Setting;
|
|
use Steuerkram\Database;
|
|
|
|
class KundenNummernkreisTest extends TestCase
|
|
{
|
|
protected string $testName = 'Test 23: Kunden-Nummernkreis konfigurierbar';
|
|
|
|
public function run(): void
|
|
{
|
|
$settings = Setting::get();
|
|
$this->assert(array_key_exists('customer_nr_prefix', $settings), 'customer_nr_prefix-Spalte existiert in company_settings');
|
|
|
|
// Präfix in den Einstellungen speichern und lesen
|
|
$originalPrefix = $settings['customer_nr_prefix'] ?? 'K-';
|
|
$testPrefix = 'TEST-';
|
|
Setting::update(array_merge($settings, ['customer_nr_prefix' => $testPrefix]));
|
|
$updated = Setting::get();
|
|
$this->assertEquals($testPrefix, $updated['customer_nr_prefix'], 'customer_nr_prefix wird korrekt gespeichert');
|
|
|
|
// Kundennummer mit neuem Präfix generieren
|
|
$nr = Customer::generateKundennummer();
|
|
$this->assert(str_starts_with($nr, $testPrefix), 'Generierte Kundennummer beginnt mit neuem Präfix');
|
|
$numericPart = substr($nr, strlen($testPrefix));
|
|
$this->assert(ctype_digit($numericPart), 'Numerischer Teil der Kundennummer enthält nur Ziffern');
|
|
$this->assert((int)$numericPart > 0, 'Numerischer Teil > 0');
|
|
|
|
// Zurücksetzen auf Standard-Präfix
|
|
Setting::update(array_merge($updated, ['customer_nr_prefix' => 'K-']));
|
|
$reset = Setting::get();
|
|
$this->assertEquals('K-', $reset['customer_nr_prefix'], 'Präfix auf K- zurückgesetzt');
|
|
|
|
// Kundennummer mit Default-Präfix K-
|
|
$nrDefault = Customer::generateKundennummer();
|
|
$this->assert(str_starts_with($nrDefault, 'K-'), 'Generierte Kundennummer beginnt mit K-');
|
|
|
|
// Originalwert wiederherstellen
|
|
Setting::update(array_merge($reset, ['customer_nr_prefix' => $originalPrefix]));
|
|
}
|
|
}
|