X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FBankTransaction.pm;h=b07cdf11f6ede506508ca1aafc2f20a520f1b12b;hb=b775c378552e6b5bf59f98046cdf4e577cd351df;hp=9c5b56056585ee0195d482eae657fdbd89316577;hpb=c301c2b3be223fe384bea2d899c6a08de54c21de;p=kivitendo-erp.git diff --git a/SL/DB/BankTransaction.pm b/SL/DB/BankTransaction.pm index 9c5b56056..b07cdf11f 100644 --- a/SL/DB/BankTransaction.pm +++ b/SL/DB/BankTransaction.pm @@ -79,7 +79,7 @@ sub get_agreement_with_invoice { payment_within_30_days => 1, remote_account_number => 3, skonto_exact_amount => 5, - wrong_sign => -1, + wrong_sign => -4, sepa_export_item => 5, batch_sepa_transaction => 20, ); @@ -99,13 +99,16 @@ sub get_agreement_with_invoice { $bank_code = $invoice->vendor->bank_code if ! $invoice->is_sales; $iban = $invoice->vendor->iban if ! $invoice->is_sales; $account_number = $invoice->vendor->account_number if ! $invoice->is_sales; - if ( $bank_code eq $self->remote_bank_code && $account_number eq $self->remote_account_number ) { - $agreement += $points{remote_account_number}; - $rule_matches .= 'remote_account_number(' . $points{'remote_account_number'} . ') '; - } - if ( $iban eq $self->remote_account_number ) { - $agreement += $points{remote_account_number}; - $rule_matches .= 'remote_account_number(' . $points{'remote_account_number'} . ') '; + + # check only valid remote_account_number (with some content) + if ($self->remote_account_number) { + if ($bank_code eq $self->remote_bank_code && $account_number eq $self->remote_account_number) { + $agreement += $points{remote_account_number}; + $rule_matches .= 'remote_account_number(' . $points{'remote_account_number'} . ') '; + } elsif ($iban eq $self->remote_account_number) { # elsif -> do not add twice + $agreement += $points{remote_account_number}; + $rule_matches .= 'remote_account_number(' . $points{'remote_account_number'} . ') '; + } } my $datediff = $self->transdate->{utc_rd_days} - $invoice->transdate->{utc_rd_days}; @@ -122,7 +125,7 @@ sub get_agreement_with_invoice { # compare open amount, preventing double points when open amount = invoice amount if ( $invoice->amount != $invoice->open_amount && abs(abs($invoice->open_amount) - abs($self->amount)) < 0.01 && - $::form->format_amount(\%::myconfig,abs($invoice->amount_less_skonto),2) eq + $::form->format_amount(\%::myconfig,abs($invoice->open_amount),2) eq $::form->format_amount(\%::myconfig,abs($self->amount),2) ) { $agreement += $points{exact_open_amount}; @@ -162,11 +165,13 @@ sub get_agreement_with_invoice { } #check sign - if ( $invoice->is_sales && $self->amount < 0 ) { + if (( $invoice->is_sales && $invoice->amount > 0 && $self->amount < 0 ) || + ( $invoice->is_sales && $invoice->amount < 0 && $self->amount > 0 ) ) { # sales credit note $agreement += $points{wrong_sign}; $rule_matches .= 'wrong_sign(' . $points{'wrong_sign'} . ') '; } - if ( ! $invoice->is_sales && $self->amount > 0 ) { + if (( !$invoice->is_sales && $invoice->amount > 0 && $self->amount > 0) || + ( !$invoice->is_sales && $invoice->amount < 0 && $self->amount < 0) ) { # purchase credit note $agreement += $points{wrong_sign}; $rule_matches .= 'wrong_sign(' . $points{'wrong_sign'} . ') '; } @@ -297,6 +302,20 @@ sub not_assigned_amount { return $not_assigned_amount; } +sub closed_period { + my ($self) = @_; + + # check for closed period + croak t8('Illegal date') unless ref $self->valutadate eq 'DateTime'; + + + my $closedto = $::locale->parse_date_to_object($::instance_conf->get_closedto); + if ( ref $closedto && $self->valutadate < $closedto ) { + return 1; + } else { + return 0; + } +} 1; __END__ @@ -354,6 +373,11 @@ Usage: Returns the not open amount of this bank transaction. Dies if the return amount is higher than the original amount. +=item C + +Returns 1 if the bank transaction valutadate is in a closed period, 0 if the +valutadate of the bank transaction is not in a closed period. + =back =head1 AUTHOR