Unterstützung #359
geschlossenget_payment_select_options_for_bank_transaction vereinfachen
0%
Beschreibung
Diese Abfrage sorgt dafür, dass leere Options übergeben werden können:
- if ( $open_amount && # invoice amount not 0 - $self->skonto_date && # check whether skonto applies - ( abs(abs($self->amount_less_skonto) - abs($bt->amount)) < 0.01 || - ( abs($self->amount_less_skonto) < abs($bt->amount) )) && - $self->check_skonto_configuration) {
Der POD hierzu ist ziemlich klar definiert:
Make suggestion for a skonto payment type by returning an HTML blob of the options
of a HTML drop-down select with the most likely option preselected.
If skonto is possible (skonto_date exists), add two possibilities:
without_skonto and with_skonto_pt if payment date is within skonto_date,
preselect with_skonto_pt, otherwise preselect without skonto.
Das gar kein HTML blob zurückgegeben wird ist nicht vorgesehen und diesen Fall hab ich gerade analysiert.
Entweder die Bedingungen stimmen, dass wir Skonto ziehen oder eben nicht.
Einen Blob brauchen wir auf jeden Fall.
Hier mein diff zum Vereinfachen und stabilisieren dieser Funktion:
diff --git a/SL/DB/Helper/Payment.pm b/SL/DB/Helper/Payment.pm index d2900dd..5412403 100644 --- a/SL/DB/Helper/Payment.pm +++ b/SL/DB/Helper/Payment.pm @@ -635,28 +635,21 @@ sub get_payment_select_options_for_bank_transaction { my ($self, $bt_id, %params) = @_; my $bt = SL::DB::Manager::BankTransaction->find_by( id => $bt_id ); - die unless $bt; + croak ("Need bt_id to get a valid bank transaction") unless $bt; my $open_amount = $self->open_amount; - #$main::lxdebug->message(LXDebug->DEBUG2(),"skonto_date=".$self->skonto_date." open amount=".$open_amount); - my @options; - if ( $open_amount && # invoice amount not 0 - $self->skonto_date && # check whether skonto applies - ( abs(abs($self->amount_less_skonto) - abs($bt->amount)) < 0.01 || - ( abs($self->amount_less_skonto) < abs($bt->amount) )) && - $self->check_skonto_configuration) { - if ( $self->within_skonto_period($bt->transdate) ) { - push(@options, { payment_type => 'without_skonto', display => t8('without skonto') }); - push(@options, { payment_type => 'with_skonto_pt', display => t8('with skonto acc. to pt'), selected => 1 }); - } else { - push(@options, { payment_type => 'without_skonto', display => t8('without skonto') , selected => 1 }); - push(@options, { payment_type => 'with_skonto_pt', display => t8('with skonto acc. to pt')}); - }; - }; + croak ("Need an open invoice") unless $open_amount; + my @options; + if ( $self->skonto_date && $self->within_skonto_period($bt->transdate) ) { + push(@options, { payment_type => 'without_skonto', display => t8('without skonto') }); + push(@options, { payment_type => 'with_skonto_pt', display => t8('with skonto acc. to pt'), selected => 1 }); + } else { + push(@options, { payment_type => 'without_skonto', display => t8('without skonto') , selected => 1 }); + push(@options, { payment_type => 'with_skonto_pt', display => t8('with skonto acc. to pt')}); + } return @options; - -}; +}