BUG: Tagesabschluss

In diesem Forum können Fragen zum OrderSprinter gestellt werden.
os_user

BUG: Tagesabschluss

Beitrag von os_user »

Hallo Herr Pichel,
vermutlich ist durch die temporäre Deaktivierung der TSE ein Fehler beim Kassenabschluss aufgetreten.

Durch die Instabilität des 2.0.7er TSE Connectors wurde die TSE auf Fehler in der Administration geschaltet. Alles hat bei der Buchung einzelner Vorgänge und Erstellung von Bons gut funktioniert. Allerdings mussten wir morgens ein Tageserfassung erstellen. Daraufhin sahen wir das erste Mal den Fehler "Kommunikationsfehler mit Server". Im php-log zeigt sich folgender Fehler;

Code: Alles auswählen

[10-Oct-2020 08:13:47 Europe/Berlin] PHP Fatal error:  Uncaught PDOException: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'cashsum' at row 1 in /var/www/www6/htdocs/php/commonutils.php:334
Stack trace:
#0 /var/www/www6/htdocs/php/commonutils.php(334): PDOStatement->execute(Array)
#1 /var/www/www6/htdocs/php/closing.php(358): CommonUtils::execSql(Object(PDO), 'UPDATE %closing...', Array)
#2 /var/www/www6/htdocs/php/closing.php(160): Closing->createClosingCore(Object(PDO), '', '1', '2020-10-10 08:1...', true, '0', '0', '0', ____.__)
#3 /var/www/www6/htdocs/php/closing.php(38): Closing->createClosing('', '1', '0', '0', '0', NULL)
#4 /var/www/www6/htdocs/php/contenthandler.php(80): Closing->handleCommand('createClosing')
#5 {main}
  thrown in /var/www/www6/htdocs/php/commonutils.php on line 334
Als wir gestern Abend den TSE-Connector wieder eingeschaltet haben und letzte Tische mit der neuen 2.0.8er Version des Connectors erfolgreich abrechneten, dachten wir alles klappt wieder. Leider hatten wir heute Morgen bei den Tageserfassungen wieder die gleiche Fehlermeldung im Admin und auch in PHP:

Code: Alles auswählen

[12-Oct-2020 08:27:37 Europe/Berlin] PHP Fatal error:  Uncaught PDOException: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'cashsum' at row 1 in /var/www/www6/htdocs/php/commonutils.php:334
Stack trace:
#0 /var/www/www6/htdocs/php/commonutils.php(334): PDOStatement->execute(Array)
#1 /var/www/www6/htdocs/php/closing.php(358): CommonUtils::execSql(Object(PDO), 'UPDATE %closing...', Array)
#2 /var/www/www6/htdocs/php/closing.php(160): Closing->createClosingCore(Object(PDO), '', '1', '2020-10-12 08:2...', true, '0', '0', '0', ____.___)
#3 /var/www/www6/htdocs/php/closing.php(38): Closing->createClosing('', '1', '0', '0', '0', NULL)
#4 /var/www/www6/htdocs/php/contenthandler.php(80): Closing->handleCommand('createClosing')
#5 {main}
  thrown in /var/www/www6/htdocs/php/commonutils.php on line 334
die Zeilen mit ____.__ enthielten den Barbestand der Kasse. Vermutlich hat sich der Fehler eingeschlichen dadurch, dass wir Tageserfassungen ohne TSE erstellen mussten. Die Zähler nach der TE werden übrigens alle erfolgreich zurückgesetzt, allerdings kommt bei jeder TE die obenstehende Fehlermeldung.

Können wir vorerst so weiterarbeiten oder sollen wir möglichst schnell ein altes Datenbank-Backup einspielen?
os_user

Re: BUG: Tagesabschluss

Beitrag von os_user »

Noch eine wichtige Zusatzinfo:

In der Tabelle closing der Datenbank sind seit dem erstmaligen deaktivieren des TSE alle neuen Werte der Spalten opid und cashsum auf den Wert NULL gesetzt :(
pichel
Administrator
Beiträge: 1170
Registriert: So 13. Sep 2015, 19:48
Wohnort: Hamburg
Kontaktdaten:

Re: BUG: Tagesabschluss

Beitrag von pichel »

Hi,

ich kann dir anbieten, dass ich per Teamviewer mal auf deine DB schaue. Hast du irgendwann zwischen 17 und 20.30 Uhr ein Zeitfenster von etwa 40 Minuten? Während der Zeit kann dann OS nicht benutzt werden.

Zwecks Terminvereinbarung bitte E-Mail an die im Impressum angegebene E-Mail-Adresse.

Gruß,

Stefan
Stefan Pichel
Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
os_user

Re: BUG: Tagesabschluss

Beitrag von os_user »

Hallo Stefan,
vielen Dank für das Angebot. Ich habe aber einen Verdacht. Wenn ich in die DB schaue, dann scheint es Probleme zu geben wenn $cashsumresult größer als 1000 ist.

MySQL gibt dann einen Wert im Stil 1,234.00 zurück, und ich vermute, dass durch das Tausendertrennzeichen dann etwas schief läuft. Hierzu habe ich die Abfrage in phpMyAdmin aus den Zeilen 353-355 manuell durchgeführt:

Code: Alles auswählen

SELECT FORMAT(COALESCE(SUM(brutto),'0.00'),2) as cashsum FROM %closing% C  INNER JOIN %bill% B ON B.closingid=C.id  WHERE C.id=? and B.paymentid=?
Die Tabellennamen angepasst, dann eine C.id mit entsprechendem cashsumresult gesucht und B.paymentid=1 gesetzt. Ergebnis ist dann im Stil 1,234.56.

Schon vorher in 2.0.5. war dann nur die Vorkommastelle in der Spalte cashsum eingetragen. Die Fehlermeldung kommt laut meinem Informationsstand aber erst seit der temporären Deaktivierung der TSE - vielleicht scheint das aber nur so, da die Spalte cashsum recht neu zu sein scheint (seit Version 2?), und das vielleicht erst jetzt auffällt und ich das fälschlich die TSE geschoben habe.

Schreibe dir eine Email zwecks Teamviewer.
os_user

Re: BUG: Tagesabschluss

Beitrag von os_user »

Hallo Stefan,
das scheint vermutlich der Fehler gewesen zu sein. Ich habe nun nochmals eine Test-Tageserfassung mit leerer Kasse und einem Null-Bon gemacht, dieser lief problemlos durch, die opid wird vergeben und außerdem ist in der cashsum wieder ein Wert enthalten (also jetzt 0.00 wegen des Nullbons) anstatt 'NULL'. Im php-log findet sich keine Fehlermeldung mehr.
Vielleicht kannst du ja mal versuchen das zu replizieren mit einem entsprechendem cashsum-Wert.
pichel
Administrator
Beiträge: 1170
Registriert: So 13. Sep 2015, 19:48
Wohnort: Hamburg
Kontaktdaten:

Re: BUG: Tagesabschluss

Beitrag von pichel »

Hallo,

in der Tat das war ein Bug, den ich gerade mit der 2.0.9 repariert habe. Je nach PHP- und DB-Konfiguration kommt es nicht immer zu einem Fehler, der bis zum UI durchschlägt, aber trotzdem wundere ich mich, dass er nicht schon viel früher an mich berichtet wurde.

Entweder ist das Update auf 2.0.x bei vielen Anwendern noch nicht im Produktivbetrieb durchgeführt worden oder die Corona-Krise hat die Einnahmen so schrumpfen lassen, dass seitdem nie mehr so hohe Bargeldbestände erwirtschaftet wurden...

Gruß,

Stefan
Stefan Pichel
Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
Antworten