55 lines
2.1 KiB
PHP
55 lines
2.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Steuerkram\Models\Beleg;
|
|
use Steuerkram\Models\Supplier;
|
|
|
|
class BelegLieferantInlineTest extends TestCase
|
|
{
|
|
protected string $testName = 'Test 46: Beleg-Lieferant Inline-Update via updateSupplier()';
|
|
|
|
public function run(): void
|
|
{
|
|
$belegId = Beleg::create([
|
|
'beleg_nr' => 'TEST-SUPP-' . uniqid(),
|
|
'filename' => 'inline-supplier-test.pdf',
|
|
'storage_path' => '',
|
|
'mime_type' => 'application/pdf',
|
|
'file_hash' => hash('sha256', 'inline-supplier-' . uniqid()),
|
|
'beleg_datum' => date('Y-m-d'),
|
|
'belegtyp' => 'Eingangsrechnung',
|
|
]);
|
|
$this->assertGreaterThan(0, $belegId, 'Beleg angelegt');
|
|
|
|
// Kein Lieferant initial
|
|
$beleg = Beleg::find($belegId);
|
|
$this->assert($beleg['supplier_name'] === null || $beleg['supplier_name'] === '', 'Kein Lieferant initial');
|
|
|
|
// Lieferant setzen
|
|
$supplierId = Supplier::findOrCreate('Testfirma GmbH');
|
|
$this->assertGreaterThan(0, $supplierId, 'Supplier angelegt oder gefunden');
|
|
Beleg::updateSupplier($belegId, $supplierId);
|
|
|
|
$beleg = Beleg::find($belegId);
|
|
$this->assertEquals('Testfirma GmbH', $beleg['supplier_name'], 'Lieferant nach updateSupplier gesetzt');
|
|
|
|
// Lieferant auf null zurücksetzen (löschen)
|
|
Beleg::updateSupplier($belegId, null);
|
|
$beleg = Beleg::find($belegId);
|
|
$this->assert(
|
|
$beleg['supplier_name'] === null || $beleg['supplier_name'] === '',
|
|
'Lieferant nach Nullsetzung leer'
|
|
);
|
|
|
|
// updateSupplier darf bei gesperrtem Beleg nichts ändern
|
|
\Steuerkram\Database::execute('UPDATE belege SET locked=1 WHERE id=?', [$belegId]);
|
|
$supplierId2 = Supplier::findOrCreate('Gesperrte Firma');
|
|
Beleg::updateSupplier($belegId, $supplierId2);
|
|
$beleg = Beleg::find($belegId);
|
|
$this->assert(
|
|
$beleg['supplier_name'] === null || $beleg['supplier_name'] === '',
|
|
'Lieferant bei gesperrtem Beleg unverändert'
|
|
);
|
|
}
|
|
}
|