Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 3fe6ec98

Von Martin Helmling martin.helmling@octosoft.eu vor mehr als 6 Jahren hinzugefügt

  • ID 3fe6ec981985f84f61721ba2e7ccd448617aca11
  • Vorgänger 1b6d09ef
  • Nachfolger a695cc30

Bankimport: Prüfung des reinen Ziffernanteils der Rechnung

Falls Rechnungen in der Rechnungsnummer ein Prefix vor der Nummer haben
und dies nicht exakt im Verwendungszweck der Kontobewegung aufgeführt ist,
wurde dies nicht als Bewertungskriterium herangezogen.

Nun wird dies mit etwas wenig Punkte bewertet.

In diesem einfachen Verfahren wird bei einer Rechnungsnummer 'RE12345' auch ein 'Blabala 12 nix 34 ddd 5' erkannt,
was aber recht unwahrscheinlich ist.

behebt auch Issue #201

Unterschiede anzeigen:

SL/DB/BankTransaction.pm
69 69
    depositor_matches           => 2,
70 70
    exact_amount                => 4,
71 71
    exact_open_amount           => 4,
72
    invnumber_in_purpose        => 2,
73
    own_invnumber_in_purpose    => 5,
72
    invoice_in_purpose          => 2,
73
    own_invoice_in_purpose      => 5,
74
    invnumber_in_purpose        => 1,
75
    own_invnumber_in_purpose    => 4,
74 76
    # overpayment                 => -1, # either other invoice is more likely, or several invoices paid at once
75 77
    payment_before_invoice      => -2,
76 78
    payment_within_30_days      => 1,
......
132 134
  my $squashed_purpose = $self->purpose;
133 135
  $squashed_purpose =~ s/ //g;
134 136
  if (length($invnumber) > 4 && $squashed_purpose =~ /$invnumber/ && $invoice->is_sales){
135
    $agreement += $points{own_invnumber_in_purpose};
136
    $rule_matches .= 'own_invnumber_in_purpose(' . $points{'own_invnumber_in_purpose'} . ') ';
137
    $agreement      += $points{own_invoice_in_purpose};
138
    $rule_matches   .= 'own_invoice_in_purpose(' . $points{'own_invoice_in_purpose'} . ') ';
137 139
  } elsif (length($invnumber) > 3 && $squashed_purpose =~ /$invnumber/ ) {
138
    $agreement += $points{invnumber_in_purpose};
139
    $rule_matches .= 'invnumber_in_purpose(' . $points{'invnumber_in_purpose'} . ') ';
140
    $agreement      += $points{invoice_in_purpose};
141
    $rule_matches   .= 'invoice_in_purpose(' . $points{'invoice_in_purpose'} . ') ';
142
  } else {
143
    # only check number part of invoice number
144
    $invnumber      =~ s/[A-Za-z_]+//g;
145
    if (length($invnumber) > 4 && $squashed_purpose =~ /$invnumber/ && $invoice->is_sales){
146
      $agreement    += $points{own_invnumber_in_purpose};
147
      $rule_matches .= 'own_invnumber_in_purpose(' . $points{'own_invnumber_in_purpose'} . ') ';
148
    } elsif (length($invnumber) > 3 && $squashed_purpose =~ /$invnumber/ ) {
149
      $agreement    += $points{invnumber_in_purpose};
150
      $rule_matches .= 'invnumber_in_purpose(' . $points{'invnumber_in_purpose'} . ') ';
151
    }
140 152
  }
141 153

  
142 154
  #check sign

Auch abrufbar als: Unified diff