Erstellt vor 2 Jahren
Zuletzt geändert vor 2 Jahren
#2104 new Fehler
get_tax in PriceTaxCalculator benötigt zwingend einen Startdatum für Steuerautomatik
| Erstellt von: | grichardson@… | Verantwortlicher: | |
|---|---|---|---|
| Priorität: | normal | Meilenstein: | |
| Komponente: | kivitendo ERP | Version: | 2.7.0 |
| Schweregrad: | normal | Stichworte: | |
| Beobachter: |
Beschreibung
Lässt man das Startdatum eines Kontos mit Steuerautomatik leer wird dies beim manuellen Erzeugen einer Rechnung aus einem Auftrag einfach ignoriert und die Rechnung korrekt erzeugt.
Bei periodischen Rechnungen werden die Rechnungen aber per Rose generiert, und gibt es da beim Konto keinen Eintrag bricht die Erstellung der Rechnung einfach ab und macht beim nächsten Auftrag weiter.
WARNING: _create_invoice failed: do_transaction() failed - Can't call method "tax" on an undefined value at SL/DB/Helper/PriceTaxCalculator.pm line 110
Bei vielen periodischen Aufträgen merkt man so eventuell nicht, dass bestimmte Aufträge nicht zu Rechnungen umgewandelt werden.
Das Problem liegt in SL/DB/Chart.pm get_active_taxkey, hier bräuchte man vielleicht einen Default-Rückgabewert.
Zum Testen:
Erlöskonto eines Artikels 123 für Steuerzone 1 ist laut Buchungsgruppe 4401, es gibt aber kein Startdatum für Konto 4401:
my $part = SL::DB::Manager::Part->find_by(partnumber => '4002')->load;
my $taxkey = $part->get_taxkey(date => '2012-12-01', is_sales => 'is_sales', taxzone => 1);
-> $taxkey is nicht definiert.
Die Kette ist ja
my $taxkey = $part->get_chart(type => 'income' , taxzone => 0)->load->get_active_taxkey('2012-12-01');
Und bis zu einem
my $chart = $part->get_chart(type => 'income' , taxzone => 0);
funktioniert noch alles.
Änderungshistorie (2)
comment:1 Geändert vor 2 Jahren durch grichardson@…
comment:2 Geändert vor 2 Jahren durch grichardson@…
Bei den Konteneinstellungen steht ja auch:
Hinweis: Steuerschlüssel sind fehlerhaft ohne "Gültig ab" Datum
Leider steht diese Konfiguration erst nach dem ersten Speichern eines Kontos zur Verfügung, deshalb kann man nicht schon beim Speichern eine Prüfung auf Startdatum einbauen.
Das wäre dann noch eine gute Prüfung für den SelfTest?.

Für den Fall Steuerzone 1 Erlöskonten ohne Eintrag in taxkeys finden:
select * from chart where id not in (select distinct chart_id from taxkeys) and id in (select income_accno_id_1 from buchungsgruppen) and link like '%AR_amount%';