- foreach my $tz (@{ $taxzones }) {
- my $taxzone_chart = SL::DB::Manager::TaxzoneChart->find_by_or_create(buchungsgruppen_id => $self->config->id, taxzone_id => $tz->id);
- $taxzone_chart->taxzone_id($tz->id);
- $taxzone_chart->buchungsgruppen_id($self->config->id);
- $taxzone_chart->income_accno_id($::form->{"income_accno_id_" . $tz->id});
- $taxzone_chart->expense_accno_id($::form->{"expense_accno_id_" . $tz->id});
- $taxzone_chart->save;
+ my $income_accno_id = $::form->{"income_accno_id_" . $tz->id};
+ my $expense_accno_id = $::form->{"expense_accno_id_" . $tz->id};
+
+ my ($income_accno, $expense_accno);
+ $income_accno = SL::DB::Manager::Chart->find_by( id => $income_accno_id ) if $income_accno_id;
+ $expense_accno = SL::DB::Manager::Chart->find_by( id => $expense_accno_id ) if $expense_accno_id;
+
+ push(@errors, t8('Tax zone #1 needs a valid income account' , $tz->description)) unless $income_accno;
+ push(@errors, t8('Tax zone #1 needs a valid expense account' , $tz->description)) unless $expense_accno;
+
+ my $taxzone_chart = SL::DB::Manager::TaxzoneChart->find_by_or_create(buchungsgruppen_id => $self->config->id, taxzone_id => $tz->id);
+ $taxzone_chart->taxzone_id($tz->id);
+ $taxzone_chart->buchungsgruppen_id($self->config->id);
+ $taxzone_chart->income_accno_id($income_accno->id);
+ $taxzone_chart->expense_accno_id($expense_accno->id);
+ $taxzone_chart->save;
+ }