Fehler #163
Kontoauszug verbuchen ignoriert Teilzahlungen
0%
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
Von Jan Büren vor mehr als 8 Jahren aktualisiert
- Datei minimales-banktransaction-diff.png minimales-banktransaction-diff.png wurde hinzugefügt
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.
Von Jan Büren vor mehr als 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.
Von Jan Büren vor mehr als 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.