Fix: Tests an aktuelle DB-Schema angepasst (eingangs_datum entfernt, bewirtungsfelder auf belege, steuercode-Filter)
This commit is contained in:
parent
8a26c6abd8
commit
36ee8e4f83
4 changed files with 52 additions and 55 deletions
|
|
@ -18,17 +18,16 @@ class BelegUploadTest extends TestCase
|
||||||
$datum = date('Y-m-d');
|
$datum = date('Y-m-d');
|
||||||
|
|
||||||
$id = \Steuerkram\Models\Beleg::create([
|
$id = \Steuerkram\Models\Beleg::create([
|
||||||
'beleg_nr' => $belegNr,
|
'beleg_nr' => $belegNr,
|
||||||
'filename' => 'test-rechnung.pdf',
|
'filename' => 'test-rechnung.pdf',
|
||||||
'storage_path' => 'static/uploads/test/test-rechnung.pdf',
|
'storage_path' => 'static/uploads/test/test-rechnung.pdf',
|
||||||
'mime_type' => 'application/pdf',
|
'mime_type' => 'application/pdf',
|
||||||
'file_hash' => hash('sha256', $belegNr),
|
'file_hash' => hash('sha256', $belegNr),
|
||||||
'beleg_datum' => $datum,
|
'beleg_datum' => $datum,
|
||||||
'eingangs_datum' => $datum,
|
'rechnungs_nr' => 'RE-TEST-001',
|
||||||
'rechnungs_nr' => 'RE-TEST-001',
|
'betrag_brutto' => 119.00,
|
||||||
'betrag_brutto' => 119.00,
|
'belegtyp' => 'Eingangsrechnung',
|
||||||
'belegtyp' => 'Eingangsrechnung',
|
'notes' => 'Automatisch erstellt (Test)',
|
||||||
'notes' => 'Automatisch erstellt (Test)',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->assertGreaterThan(0, $id, 'Beleg wurde in der DB angelegt (ID > 0)');
|
$this->assertGreaterThan(0, $id, 'Beleg wurde in der DB angelegt (ID > 0)');
|
||||||
|
|
@ -51,7 +50,8 @@ class BelegUploadTest extends TestCase
|
||||||
$this->assert($found, 'Beleg erscheint in Beleg::all() (Belegübersicht)');
|
$this->assert($found, 'Beleg erscheint in Beleg::all() (Belegübersicht)');
|
||||||
$this->assertGreaterThan(0, $result['total'], 'Belegübersicht enthält mindestens 1 Eintrag');
|
$this->assertGreaterThan(0, $result['total'], 'Belegübersicht enthält mindestens 1 Eintrag');
|
||||||
|
|
||||||
// Betrag korrekt gespeichert
|
// Betrag korrekt gespeichert (direkt aus belege, nicht die berechnete Buchungssumme)
|
||||||
$this->assertEquals(119.00, (float)($beleg['betrag_brutto'] ?? 0), 'Betrag brutto korrekt gespeichert');
|
$raw = \Steuerkram\Database::fetchOne('SELECT betrag_brutto FROM belege WHERE id = ?', [$id]);
|
||||||
|
$this->assertEquals(119.00, (float)($raw['betrag_brutto'] ?? 0), 'Betrag brutto korrekt gespeichert');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,9 +50,9 @@ class KontierungsvorschlagTest extends TestCase
|
||||||
private function createTestBeleg(): int
|
private function createTestBeleg(): int
|
||||||
{
|
{
|
||||||
Database::execute(
|
Database::execute(
|
||||||
"INSERT INTO belege (beleg_nr, filename, storage_path, mime_type, file_hash, eingangs_datum, belegtyp)
|
"INSERT INTO belege (beleg_nr, filename, storage_path, mime_type, file_hash, belegtyp)
|
||||||
VALUES ('TEST-KI-0001', 'test.pdf', 'static/uploads/test/test.pdf', 'application/pdf',
|
VALUES ('TEST-KI-0001', 'test.pdf', 'static/uploads/test/test.pdf', 'application/pdf',
|
||||||
SHA2('test', 256), CURDATE(), 'Eingangsrechnung')"
|
SHA2('test', 256), 'Eingangsrechnung')"
|
||||||
);
|
);
|
||||||
return (int)Database::lastInsertId();
|
return (int)Database::lastInsertId();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,15 +31,18 @@ class BewirtungssplitTest extends TestCase
|
||||||
|
|
||||||
// ── Test 1: Split bei Konto 4650 ─────────────────────────────
|
// ── Test 1: Split bei Konto 4650 ─────────────────────────────
|
||||||
$beleg1 = \Steuerkram\Models\Beleg::create([
|
$beleg1 = \Steuerkram\Models\Beleg::create([
|
||||||
'beleg_nr' => 'TEST-BEW-4650-' . uniqid(),
|
'beleg_nr' => 'TEST-BEW-4650-' . uniqid(),
|
||||||
'filename' => 'test.pdf',
|
'filename' => 'test.pdf',
|
||||||
'storage_path' => '',
|
'storage_path' => '',
|
||||||
'mime_type' => 'application/pdf',
|
'mime_type' => 'application/pdf',
|
||||||
'file_hash' => hash('sha256', 'bew4650' . uniqid()),
|
'file_hash' => hash('sha256', 'bew4650' . uniqid()),
|
||||||
'beleg_datum' => $datum,
|
'beleg_datum' => $datum,
|
||||||
'eingangs_datum' => $datum,
|
'belegtyp' => 'Eingangsrechnung',
|
||||||
'belegtyp' => 'Eingangsrechnung',
|
|
||||||
]);
|
]);
|
||||||
|
\Steuerkram\Database::execute(
|
||||||
|
'UPDATE belege SET bewirtungsgrund = ?, teilnehmerliste = ? WHERE id = ?',
|
||||||
|
['Kundengespräch', 'Max Mustermann, Erika Mustermann', $beleg1]
|
||||||
|
);
|
||||||
|
|
||||||
// Bewirtungssplit direkt über Booking::create + zweite Buchung simulieren
|
// Bewirtungssplit direkt über Booking::create + zweite Buchung simulieren
|
||||||
// (wie BookingController::bucheBewirtungssplit() es tut)
|
// (wie BookingController::bucheBewirtungssplit() es tut)
|
||||||
|
|
@ -57,8 +60,6 @@ class BewirtungssplitTest extends TestCase
|
||||||
'betrag_netto' => $netto70,
|
'betrag_netto' => $netto70,
|
||||||
'ust_satz' => $ustSatz,
|
'ust_satz' => $ustSatz,
|
||||||
'buchungstext' => 'Bewirtung Test 70%',
|
'buchungstext' => 'Bewirtung Test 70%',
|
||||||
'bewirtungsgrund' => 'Kundengespräch',
|
|
||||||
'teilnehmerliste' => 'Max Mustermann, Erika Mustermann',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$id1b = \Steuerkram\Models\Booking::create([
|
$id1b = \Steuerkram\Models\Booking::create([
|
||||||
|
|
@ -70,8 +71,6 @@ class BewirtungssplitTest extends TestCase
|
||||||
'betrag_netto' => $netto30,
|
'betrag_netto' => $netto30,
|
||||||
'ust_satz' => $ustSatz,
|
'ust_satz' => $ustSatz,
|
||||||
'buchungstext' => 'Bewirtung Test 30%',
|
'buchungstext' => 'Bewirtung Test 30%',
|
||||||
'bewirtungsgrund' => 'Kundengespräch',
|
|
||||||
'teilnehmerliste' => 'Max Mustermann, Erika Mustermann',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$b1a = \Steuerkram\Models\Booking::find($id1a);
|
$b1a = \Steuerkram\Models\Booking::find($id1a);
|
||||||
|
|
@ -95,20 +94,20 @@ class BewirtungssplitTest extends TestCase
|
||||||
'Gesamt-Vorsteuer korrekt (100% des Nettobetrags)'
|
'Gesamt-Vorsteuer korrekt (100% des Nettobetrags)'
|
||||||
);
|
);
|
||||||
|
|
||||||
// Bewirtungsfelder gespeichert
|
// Bewirtungsfelder auf dem Beleg gespeichert (seit Migration 024 in belege, nicht bookings)
|
||||||
$this->assertEquals('Kundengespräch', $b1a['bewirtungsgrund'], 'Bewirtungsgrund gespeichert');
|
$belegDaten = \Steuerkram\Models\Beleg::find($beleg1);
|
||||||
$this->assertEquals('Max Mustermann, Erika Mustermann', $b1a['teilnehmerliste'], 'Teilnehmerliste gespeichert');
|
$this->assertEquals('Kundengespräch', $belegDaten['bewirtungsgrund'], 'Bewirtungsgrund gespeichert');
|
||||||
|
$this->assertEquals('Max Mustermann, Erika Mustermann', $belegDaten['teilnehmerliste'], 'Teilnehmerliste gespeichert');
|
||||||
|
|
||||||
// ── Test 2: Split bei Konto 4651 ─────────────────────────────
|
// ── Test 2: Split bei Konto 4651 ─────────────────────────────
|
||||||
$beleg2 = \Steuerkram\Models\Beleg::create([
|
$beleg2 = \Steuerkram\Models\Beleg::create([
|
||||||
'beleg_nr' => 'TEST-BEW-4651-' . uniqid(),
|
'beleg_nr' => 'TEST-BEW-4651-' . uniqid(),
|
||||||
'filename' => 'test2.pdf',
|
'filename' => 'test2.pdf',
|
||||||
'storage_path' => '',
|
'storage_path' => '',
|
||||||
'mime_type' => 'application/pdf',
|
'mime_type' => 'application/pdf',
|
||||||
'file_hash' => hash('sha256', 'bew4651' . uniqid()),
|
'file_hash' => hash('sha256', 'bew4651' . uniqid()),
|
||||||
'beleg_datum' => $datum,
|
'beleg_datum' => $datum,
|
||||||
'eingangs_datum' => $datum,
|
'belegtyp' => 'Eingangsrechnung',
|
||||||
'belegtyp' => 'Eingangsrechnung',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$id2a = \Steuerkram\Models\Booking::create([
|
$id2a = \Steuerkram\Models\Booking::create([
|
||||||
|
|
@ -149,14 +148,13 @@ class BewirtungssplitTest extends TestCase
|
||||||
$bankCheck = $this->findAccountId('4600');
|
$bankCheck = $this->findAccountId('4600');
|
||||||
if ($bankCheck) {
|
if ($bankCheck) {
|
||||||
$beleg3 = \Steuerkram\Models\Beleg::create([
|
$beleg3 = \Steuerkram\Models\Beleg::create([
|
||||||
'beleg_nr' => 'TEST-BEW-NORMAL-' . uniqid(),
|
'beleg_nr' => 'TEST-BEW-NORMAL-' . uniqid(),
|
||||||
'filename' => 'test3.pdf',
|
'filename' => 'test3.pdf',
|
||||||
'storage_path' => '',
|
'storage_path' => '',
|
||||||
'mime_type' => 'application/pdf',
|
'mime_type' => 'application/pdf',
|
||||||
'file_hash' => hash('sha256', 'normal' . uniqid()),
|
'file_hash' => hash('sha256', 'normal' . uniqid()),
|
||||||
'beleg_datum' => $datum,
|
'beleg_datum' => $datum,
|
||||||
'eingangs_datum' => $datum,
|
'belegtyp' => 'Eingangsrechnung',
|
||||||
'belegtyp' => 'Eingangsrechnung',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$idNormal = \Steuerkram\Models\Booking::create([
|
$idNormal = \Steuerkram\Models\Booking::create([
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ class AutomatikkontenUstTest extends TestCase
|
||||||
$mapping = ['VSt19' => 19, 'USt19' => 19, 'VSt7' => 7, 'USt7' => 7];
|
$mapping = ['VSt19' => 19, 'USt19' => 19, 'VSt7' => 7, 'USt7' => 7];
|
||||||
|
|
||||||
$kontenMitSteuercode = \Steuerkram\Database::fetchAll(
|
$kontenMitSteuercode = \Steuerkram\Database::fetchAll(
|
||||||
"SELECT kontonummer, steuercode FROM accounts WHERE steuercode IS NOT NULL LIMIT 20"
|
"SELECT kontonummer, steuercode FROM accounts WHERE steuercode IS NOT NULL AND steuercode != '' LIMIT 20"
|
||||||
);
|
);
|
||||||
$this->assertNotEmpty($kontenMitSteuercode, 'Konten mit Steuercode vorhanden');
|
$this->assertNotEmpty($kontenMitSteuercode, 'Konten mit Steuercode vorhanden');
|
||||||
|
|
||||||
|
|
@ -60,14 +60,13 @@ class AutomatikkontenUstTest extends TestCase
|
||||||
}
|
}
|
||||||
|
|
||||||
$belegId = \Steuerkram\Models\Beleg::create([
|
$belegId = \Steuerkram\Models\Beleg::create([
|
||||||
'beleg_nr' => 'TEST-AUTOUST-' . uniqid(),
|
'beleg_nr' => 'TEST-AUTOUST-' . uniqid(),
|
||||||
'filename' => 'test.pdf',
|
'filename' => 'test.pdf',
|
||||||
'storage_path' => '',
|
'storage_path' => '',
|
||||||
'mime_type' => 'application/pdf',
|
'mime_type' => 'application/pdf',
|
||||||
'file_hash' => hash('sha256', 'autoust' . uniqid()),
|
'file_hash' => hash('sha256', 'autoust' . uniqid()),
|
||||||
'beleg_datum' => $datum,
|
'beleg_datum' => $datum,
|
||||||
'eingangs_datum' => $datum,
|
'belegtyp' => 'Eingangsrechnung',
|
||||||
'belegtyp' => 'Eingangsrechnung',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$bookingId = \Steuerkram\Models\Booking::create([
|
$bookingId = \Steuerkram\Models\Booking::create([
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue