Projekt

Allgemein

Profil

Fehler #163

Kontoauszug verbuchen ignoriert Teilzahlungen

Von Jan Büren vor fast 8 Jahren hinzugefügt. Vor fast 8 Jahren aktualisiert.

Status:
Neu
Priorität:
Normal
Zugewiesen an:
-
Zielversion:
-
Beginn:
12.05.2016
Abgabedatum:
% erledigt:

0%

Geschätzter Aufwand:

Beschreibung

Es wird immer der volle Rechnungsbetrag einer Rechnung zugeordnet.
Das passt meistens, aber nicht immer.

Das Problem liegt in Zeile 404 von BankTransactions.pm

Folgende Änderung bucht im Einkauf schon mal die Zahlung richtiger:

- amount       => $invoice->amount
+ amount       => $invoice->amount - $invoice->paid,

Es fehlt noch die Verbuchung von invoice_amount, sowie ferner eventuelle Vorzeichenfallen (Einkauf/Verkauf, Gutschriften,Stornos).

Aber soweit als Idee ...


Dateien

Historie

#1

Von Jan Büren vor fast 8 Jahren aktualisiert

Beim Durchlesen der BankTransaction.pm ist mir aufgefallen, dass es

a)
viel sinnvoller ist, den offenen Betrag einer Rechnung/Gutschrift/Einkaufsrechnung/Kreditorenbeleg über
das Objekt zu ermitteln, um einige Fallunterschiede und Verrenkungen ggf. erst gar nicht im Controller zu haben.

Ich hab im POD wie folgt ergänzt:

Get the current open signed amount of this invoice. A positive number
indicates a missing incoming transaction. A negative number indicates
a missing outgoing transaction, i.e. open credit note.

Ich hab einen Fallunterschied für unterschiedliche Typen dort gemacht, aber wenn
ich die Funktion so schreibe, ist ar.amount - ar.paid immer korrekt.
Ein negatives Vorzeichen bedeutet einfach nur Gutschrift.

Damit hab ich mit der kleinstmöglichen Änderung im Controller den Fall abgedeckt.

      # pay invoice or go to the next bank transaction if the amount is not sufficiently high
      if ($invoice->amount_open <= $amount_of_transaction) {
        $invoice->pay_invoice(chart_id     => $bank_transaction->local_bank_account->chart_id,
                              trans_id     => $invoice->id,
                              amount       => $invoice->amount_open,
                              payment_type => $payment_type,
                              transdate    => $bank_transaction->transdate->to_kivitendo);
        if ($invoice->is_sales) {
          $amount_of_transaction -= $sign * $invoice->amount_open;
          $bank_transaction->invoice_amount($bank_transaction->invoice_amount + $invoice->amount_open);
        } else {
          $amount_of_transaction += $sign * $invoice->amount_open if (!$invoice->is_sales);
          $bank_transaction->invoice_amount($bank_transaction->invoice_amount - $invoice->amount_open);
        }
      } else {
        $invoice->pay_invoice(chart_id     => $bank_transaction->local_bank_account->chart_id,
                              trans_id     => $invoice->id,
                              amount       => $amount_of_transaction,
                              payment_type => $payment_type,
                              transdate    => $bank_transaction->transdate->to_kivitendo);
        $bank_transaction->invoice_amount($bank_transaction->amount) if $invoice->is_sales;
        $bank_transaction->invoice_amount($bank_transaction->amount) if !$invoice->is_sales;
        $amount_of_transaction = 0;
      }


Bzw. visuell

Ein paar Stellen sehen im Controller im Detail nicht so ganz sinnvoll aus, dass würde
ich gerne nochmal mit jmd. besprechen, bevor ich hier was ändere.
Das hier macht bspw. keinen Sinn:

 $bank_transaction->invoice_amount($bank_transaction->amount) if $invoice->is_sales;
 $bank_transaction->invoice_amount($bank_transaction->amount) if !$invoice->is_sales;

Ansonsten sollte der Weg nicht ganz verkehrt sein.

Mit der Bitte um kurzes Feedback!

Testfälle gibt es auch nicht.

#2

Von Jan Büren vor fast 8 Jahren aktualisiert

Nochmal kurz diskutiert, im Prinzip müssen hier alle Fälle nochmal geprüft werden

Verkauf
Rechnung mit Bank verbuchen
a. Eine Transaktion mit mehreren Rechnungn
b. Eine zu einer
c. mehrere Transaktionen zu einer Rechnung

Gutschrift mit Bank verbuchen

Einkauf
a. Eine Transaktion mit mehreren Rechnungn
b. Eine zu einer
c. mehrere Transaktionen zu einer Rechnung

Dann gibt es noch eine Sonderbehandlung bei Skonto und weitere kleine Details.

#3

Von Jan Büren vor fast 8 Jahren aktualisiert

Ich hab nochmal das Feedback von Peter rausgesucht, um das hier auch nochmal sinnvoll dargestellt zu haben:

6.5. Vorzeichen bei Zahlungen/Buchungen
Auf die Anzeige des Vorzeichens kann man sich nicht verlassen, irgendwie
erkenne ich kein Muster wann es richtig angezeigt wird und wann nicht...

4.1. Vorschläge Rechnungen mit falschem Vorzeichen
Ich hatte angenommen, dass das Vorzeichen bei der Bewertung der
Vorschläge ignoriert wird, aber vermutlich liegt es nur am falschen
"Gewicht":
" wrong_sign => -1"
Dem würde ich mindestens -100 geben

- Der Wert in der Spalte "Zugewiesen" sollte sofort aktualisiert werden
nicht erst bei "Speichern"
- Bug: Beim entfernen eine "Zugewiesener Rechnung" (X) verschwindet
dieser Vorschlag komplett.

Wahrscheinlich muss man hier nochmal den Controller und die Templates durchwühlen um alle Vorzeichen-Varianten zu erwischen.

Auch abrufbar als: Atom PDF