+ if ( $params{'payment_type'} eq 'without_skonto' && abs($params{'amount'}) < 0) {
+ croak "invalid amount for payment_type 'without_skonto': $params{'amount'}\n";
+ }
+ if ($params{'payment_type'} eq 'free_skonto') {
+ # we dont like too much automagic for this payment type.
+ # we force caller input for amount and skonto amount
+ Common::check_params(\%params, qw(amount skonto_amount));
+ # secondly we dont want to handle credit notes and purchase credit notes
+ croak("Cannot use 'free skonto' for credit or debit notes") if ($params{amount} <= 0 || $params{skonto_amount} <= 0);
+ # both amount have to be rounded
+ $params{skonto_amount} = _round($params{skonto_amount});
+ $params{amount} = _round($params{amount});
+ # lastly skonto_amount has to be smaller than the open invoice amount or payment amount ;-)
+ if ($params{skonto_amount} > abs($self->open_amount) || $params{skonto_amount} > $params{amount}) {
+ croak("Skonto amount higher than the payment or invoice amount");
+ }
+ }