Terminabrechnungen bzw. Abo-Lauf

  • Das ist ein Eintrag drin:


    Code
    +----+------------+---------------+----------+------------+---------------------+
    | id | address_id | document_type | job_type | printer_id | created_at          |
    +----+------------+---------------+----------+------------+---------------------+
    | 15 |         22 | rechnung      | NULL     |       NULL | 2024-04-21 16:48:38 |
    +----+------------+---------------+----------+------------+---------------------+


    Dann werfe ich den mal raus.

  • keine Änderung, aber im Log habe ich was gefunden, vllt. hat es damit zutun:


    Code
    Array( [cmd] => cd /var/www/html/cronjobs && /usr/bin/php8.1 command.php 53 28189 b3Blbnhl 2>&1 [parameter] => rechnungslauf_manual [returnvar] => 255 [lastLines] => Array ( [0] => Stack trace: [1] => #0 /var/www/html/classes/Modules/SubscriptionCycle/Scheduler/SubscriptionCycleManualJobTask.php(65): Xentral\Modules\SubscriptionCycle\SubscriptionModule->CreateInvoice() [2] => #1 /var/www/html/cronjobs/rechnungslauf_manual.php(18): Xentral\Modules\SubscriptionCycle\Scheduler\SubscriptionCycleManualJobTask->execute() [3] => #2 /var/www/html/cronjobs/command.php(218): include('...') [4] => #3 {main} [5] => thrown in /var/www/html/classes/Modules/SubscriptionCycle/SubscriptionModule.php on line 83 ) [output] => Array ( [0] => PHP Fatal error: Uncaught Error: Call to a member function format() on bool in /var/www/html/classes/Modules/SubscriptionCycle/SubscriptionModule.php:83 [1] => Stack trace: [2] => #0 /var/www/html/classes/Modules/SubscriptionCycle/Scheduler/SubscriptionCycleManualJobTask.php(65): Xentral\Modules\SubscriptionCycle\SubscriptionModule->CreateInvoice() [3] => #1 /var/www/html/cronjobs/rechnungslauf_manual.php(18): Xentral\Modules\SubscriptionCycle\Scheduler\SubscriptionCycleManualJobTask->execute() [4] => #2 /var/www/html/cronjobs/command.php(218): include('...') [5] => #3 {main} [6] => thrown in /var/www/html/classes/Modules/SubscriptionCycle/SubscriptionModule.php on line 83 ))

    Die wohl interessante Zeile:

    Code
    PHP Fatal error: Uncaught Error: Call to a member function format() on bool in /var/www/html/classes/Modules/SubscriptionCycle/SubscriptionModule.php:83
  • Jawohl. Prima, da haben wir zumindest schon mal den Fehler. Es kann also irgendein Datum nicht korrekt interpretieren und dabei stürzt er ab.

    Bitte führe doch mal folgende Abfrage gegen die Datenbank aus:

    SQL
    SELECT id, artikel, startdatum, abgerechnetbis, enddatum FROM abrechnungsartikel WHERE adresse = 22;

    Die 22 kannst du natürlich auch durch eine andere Adress-ID ersetzen, da wo jetzt halt der Fehler aufgetreten ist. In den drei Datumsspalten sollten überall gültige Daten oder '0000-00-00' stehen. Ist das bei dir so?

  • Ja

    Code
    +----+---------+------------+----------------+------------+
    | id | artikel | startdatum | abgerechnetbis | enddatum   |
    +----+---------+------------+----------------+------------+
    |  3 |      16 | 2024-02-12 | 2024-04-12     | 0000-00-00 |
    |  5 |      30 | 2024-02-12 | 2024-04-12     | 0000-00-00 |
    |  4 |      31 | 2024-02-12 | 2024-04-12     | 0000-00-00 |
    +----+---------+------------+----------------+------------+

    wobei ich da eigentlich vier Einträge erwartet hätte, denn das sind die Abos:


  • Alles klar, dann ist das der Fehler! "monatx" wird noch nicht unterstützt wie im Wiki-Artikel auch beschrieben:

    Die übrigen Auswahlmöglichkeiten wurden aus Kompatibilitätsgründen in der Liste belassen, werden aber derzeit noch nicht unterstützt. Bitte ggf. einen entsprechenden Featurerequest eröffnen

    Workaround: Stelle den 01.01.2024 als Startdarum ein mit "Monatspreis" und "Zahlzyklus=3". Das sollte dein gewünschtes Verhalten abbilden. Falls nicht bitte den UseCase nochmal genauer beschreiben. Ich hatte monatx nämlich mangels Verständnis bisher nicht umgesetzt :D

    Unabhängig davon kümmere ich mich darum, dass der Fehler in Zukunft sauber abgefangen wird.

  • Ich probier's mal, die nächste Fälligkeit steht ja erst wieder am 30.06. an.


    Also, ich muss folgendes für die Abrechnung erreichen:


    Das Produkt wird monatlich berechnet. Der Kunde bekommt aber immer eine Quartalsrechnung zum Ende des Quartals. Da steht dann z.B. Abrechnungszeitraum "Q1/2024" drauf und das Produkt wird mit 3x Monatsbetrag aufgeführt. Das ist eigentlich genau das. was "monatx" laut Beschreibung macht: Der angegebene Preis gilt für x (=Menge) Monate; und den rechne dann bitte alle drei Monate ab.


    Beim ersten Lauf hatte das auch geklappt.

  • Und das tut "monat" eigentlich auch... Immer wenn "abgerechnetbis" erreicht ist wird eine neue Rechnung fällig. Und mit Zahlzyklus=3 rechnet er immer 3x das definierte Intervall von einem Monat ab. Nur dass man den Preis dann bei monatx als Summe für den Zeitraum und bei "monat" eben als Preis pro Monat einträgt wenn ich das jetzt richtig verstanden habe.


    Es kann gut sein, dass das beim ersten Lauf geklappt hat weil die Berechnung des Zeitraums bei der ersten Abrechnung natürlich "einfacher" ist und er auf gewisse "defaults" zurückgreift. Aber Hauptsache wir haben erstmal die Ursache, jetzt können wir überlegen wo es noch hin gehen soll.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!