Unterschiedliche Fälligkeitsdaten

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Unterschiedliche Fälligkeitsdaten

      Basierend auf dem Beitrag Unterschiedliche Zahlungsziele hier ein Hook mit welchem Ihr unterschiedliche Fälligkeitsdaten hinterlegen könnt. Das ganze basiert auf Kundengruppen.

      PHP-Quellcode: change_duedate.php

      1. <?php
      2. if (!defined("WHMCS"))
      3. die("This file cannot be accessed directly");
      4. use Illuminate\Database\Capsule\Manager as Capsule;
      5. function change_due_date($vars){
      6. $cdd_get_invoice_data = Capsule::table('tblinvoices')->where('id',$vars['invoiceid'])->first();
      7. $cdd_get_client_data = Capsule::table('tblclients')->where('id',$cdd_get_invoice_data->userid)->first();
      8. ##### replace 1 with your clientgroupid
      9. if($cdd_get_client_data->groupid == '1'){
      10. ##### replace 14 with your days
      11. $cdd_new_duedate = strtotime("+14 days", strtotime($cdd_get_invoice_data->date));
      12. $cdd_new_duedate = date("Y-m-d", $cdd_new_duedate);
      13. $cdd_updateduedate = Capsule::table('tblinvoices')
      14. ->where('id', $vars['invoiceid'])
      15. ->update(['duedate'=>$cdd_new_duedate]);
      16. }
      17. }
      18. add_hook("InvoiceCreationPreEmail", 20, "change_due_date");
      19. add_hook("InvoiceCreation", 20, "change_due_date");
      20. ?>
      Alles anzeigen
      Du benötigst Hilfe bei deinem WHMCS oder bist auf der Suche nach einem WHMCS Modul? Dann melde dich zwecks Angebotserstellung bei Plambee.de
    • Super vielen vielen Dank!

      Kurze Frage zum Hook:

      PHP-Quellcode

      1. <?php
      2. if (!defined("WHMCS"))
      3. die("This file cannot be accessed directly");
      4. use Illuminate\Database\Capsule\Manager as Capsule;
      5. function change_due_date($vars){
      6. $cdd_get_invoice_data = Capsule::table('tblinvoices')->where('id',$vars['invoiceid'])->first();
      7. $cdd_get_client_data = Capsule::table('tblclients')->where('id',$cdd_get_invoice_data->userid)->first();
      8. ##### replace 1 with your clientgroupid
      9. if($cdd_get_client_data->groupid == '1'){
      10. ##### replace 14 with your days
      11. $cdd_new_duedate = strtotime("+14 days", strtotime($cdd_get_invoice_data->duedate));
      12. $cdd_new_duedate = date("Y-m-d", $cdd_new_duedate);
      13. $cdd_updateduedate = Capsule::table('tblinvoices')
      14. ->where('id', $vars['invoiceid'])
      15. ->update(['duedate'=>$cdd_new_duedate]);
      16. }
      17. }
      18. ##### replace 2 with your clientgroupid
      19. elseif($cdd_get_client_data->groupid == '2'){
      20. ##### replace 30 with your days
      21. $cdd_new_duedate = strtotime("+30 days", strtotime($cdd_get_invoice_data->duedate));
      22. $cdd_new_duedate = date("Y-m-d", $cdd_new_duedate);
      23. $cdd_updateduedate = Capsule::table('tblinvoices')
      24. ->where('id', $vars['invoiceid'])
      25. ->update(['duedate'=>$cdd_new_duedate]);
      26. }
      27. }
      28. add_hook("InvoiceCreation", 0, "change_due_date");
      29. ?>
      Alles anzeigen
      läuft so für die Kundengruppe 2 mit 30 Tagen?


      WHMCS ordnet einen Kunden bei Registrierung automatisch Gruppe 1 zu?
    • Alles klar.
      Habe jetzt die eine neue Gruppe 1 erstellt diese soll als Fälligkeitsdatum +30 Tage bekommen.

      PHP-Quellcode

      1. <?php
      2. if (!defined("WHMCS"))
      3. die("This file cannot be accessed directly");
      4. use Illuminate\Database\Capsule\Manager as Capsule;
      5. function change_due_date($vars){
      6. $cdd_get_invoice_data = Capsule::table('tblinvoices')->where('id',$vars['invoiceid'])->first();
      7. $cdd_get_client_data = Capsule::table('tblclients')->where('id',$cdd_get_invoice_data->userid)->first();
      8. ##### replace 1 with your clientgroupid
      9. if($cdd_get_client_data->groupid == '1'){
      10. ##### replace 30 with your days
      11. $cdd_new_duedate = strtotime("+30 days", strtotime($cdd_get_invoice_data->duedate));
      12. $cdd_new_duedate = date("Y-m-d", $cdd_new_duedate);
      13. $cdd_updateduedate = Capsule::table('tblinvoices')
      14. ->where('id', $vars['invoiceid'])
      15. ->update(['duedate'=>$cdd_new_duedate]);
      16. }
      17. }
      18. add_hook("InvoiceCreation", 0, "change_due_date");
      19. ?>
      Alles anzeigen
      Test User ist mit Gruppe 1 belegt, aber bekommt trotzdem nur die 14 Tage Rechnungsziel?

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von ZoXx ()

    • obwohl 30 da steht?

      füge mal ein logModuleCall('change_hook', 'date', $cdd_new_duedate); unter $cdd_new_duedate = date("Y-m-d", $cdd_new_duedate); ein und aktiviere das modulloggin in whmcs, erstelle eine rechnung für den testkunden und geh nochmal in den log, was steht da?
      Du benötigst Hilfe bei deinem WHMCS oder bist auf der Suche nach einem WHMCS Modul? Dann melde dich zwecks Angebotserstellung bei Plambee.de
    • Ersetz mal bitte

      Quellcode

      1. $cdd_updateduedate = Capsule::table('tblinvoices')
      2. ->where('id', $vars['invoiceid'])
      3. ->update(['duedate'=>$cdd_new_duedate]);

      durch

      Quellcode

      1. try{
      2. $cdd_updateduedate = Capsule::table('tblinvoices')
      3. ->where('id', $vars['invoiceid'])
      4. ->update(['duedate'=>$cdd_new_duedate]);
      5. } catch (\Exception $e) {
      6. logModuleCall('change_hook', 'update', $e);
      7. }
      und schau danach in den Log ob es eine Meldung gibt wieso er den Eintrag nicht updated. Ich kann es bei mir aktuell nicht reproduzieren, da steht der 30. drin
      Du benötigst Hilfe bei deinem WHMCS oder bist auf der Suche nach einem WHMCS Modul? Dann melde dich zwecks Angebotserstellung bei Plambee.de
    • Passiert nichts.
      Bild ist das gleiche wie gerade.

      PHP-Quellcode

      1. <?php
      2. if (!defined("WHMCS"))
      3. die("This file cannot be accessed directly");
      4. use Illuminate\Database\Capsule\Manager as Capsule;
      5. function change_due_date($vars){
      6. $cdd_get_invoice_data = Capsule::table('tblinvoices')->where('id',$vars['invoiceid'])->first();
      7. $cdd_get_client_data = Capsule::table('tblclients')->where('id',$cdd_get_invoice_data->userid)->first();
      8. ##### replace 1 with your clientgroupid
      9. if($cdd_get_client_data->groupid == '1'){
      10. ##### replace 30 with your days
      11. $cdd_new_duedate = strtotime("+30 days", strtotime($cdd_get_invoice_data->duedate));
      12. $cdd_new_duedate = date("Y-m-d", $cdd_new_duedate);
      13. logModuleCall('change_hook', 'date', $cdd_new_duedate);
      14. try{
      15. $cdd_updateduedate = Capsule::table('tblinvoices')
      16. ->where('id', $vars['invoiceid'])
      17. ->update(['duedate'=>$cdd_new_duedate]);
      18. } catch (\Exception $e) {
      19. logModuleCall('change_hook', 'update', $e);
      20. }
      21. }
      22. }
      23. add_hook("InvoiceCreation", 0, "change_due_date");
      24. ?>
      Alles anzeigen
    • Wenns keine Meldung gibt dann sollte das Update erfolgen, irgendwas scheints dann nur wieder zu überschreiben.

      Ok 2 Dinge: Nutze mal den Hook:


      PHP-Quellcode

      1. <?php
      2. if (!defined("WHMCS"))
      3. die("This file cannot be accessed directly");
      4. use Illuminate\Database\Capsule\Manager as Capsule;
      5. function change_due_date($vars){
      6. $cdd_get_invoice_data = Capsule::table('tblinvoices')->where('id',$vars['invoiceid'])->first();
      7. $cdd_get_client_data = Capsule::table('tblclients')->where('id',$cdd_get_invoice_data->userid)->first();
      8. ##### replace 1 with your clientgroupid
      9. if($cdd_get_client_data->groupid == '1'){
      10. ##### replace 30 with your days
      11. $cdd_new_duedate = strtotime("+30 days", strtotime($cdd_get_invoice_data->duedate));
      12. $cdd_new_duedate = date("Y-m-d", $cdd_new_duedate);
      13. logModuleCall('change_hook', 'date', $cdd_new_duedate);
      14. try{
      15. $cdd_updateduedate = Capsule::table('tblinvoices')
      16. ->where('id', $vars['invoiceid'])
      17. ->update(['duedate'=>$cdd_new_duedate]);
      18. } catch (\Exception $e) {
      19. logModuleCall('change_hook', 'update', $e);
      20. }
      21. $cdd_get_new_invoice_data = Capsule::table('tblinvoices')->where('id',$vars['invoiceid'])->first();
      22. logModuleCall('change_hook', 'new_data', $cdd_get_new_invoice_data->duedate);
      23. }
      24. }
      25. add_hook("InvoiceCreation", 0, "change_due_date");
      26. ?>
      Alles anzeigen
      Damit wird nur nach dem Update nochmal das Feld ausgelesen um das Update zu prüfen. Danach also bitte nochmal in den Log

      Wie erstellst du die Rechnung? Neubestellung, Guthaben aufladen, Adminbereich,.... damit ich es einmal mit dem selben Weg prüfen kann.
      Du benötigst Hilfe bei deinem WHMCS oder bist auf der Suche nach einem WHMCS Modul? Dann melde dich zwecks Angebotserstellung bei Plambee.de
    • Irgendwann könnte ich WHMCS........... konnte es jetzt reproduzieren.
      Bei meinen Tests hatte ich die Rechnungsstellung per Add Funds und Rechnung im Admin erstellen, getestet. Da gehts. Bei Bestellungen aber arbeitet WHMCS in anderer Reihenfolge, es wird die Rechnung erstellt, dann der Hook ausgeführt und dann schreibt whmcs das Rechnungsdatum..... sprich es überschreibt das Datum das der Hook bereits eingefügt hat.
      Du benötigst Hilfe bei deinem WHMCS oder bist auf der Suche nach einem WHMCS Modul? Dann melde dich zwecks Angebotserstellung bei Plambee.de
    • Habe den Hook oben umgebaut, bei mir klappt es so jetzt bei Bestellung, Rechnung im Adminbereich, Guthaben und Cron. Geändert wurde das 2 Hookpoints genutzt werden und $cdd_new_duedate = strtotime("+14 days", strtotime($cdd_get_invoice_data->duedate)); wurde durch $cdd_new_duedate = strtotime("+14 days", strtotime($cdd_get_invoice_data->date)); ersetzt.
      Du benötigst Hilfe bei deinem WHMCS oder bist auf der Suche nach einem WHMCS Modul? Dann melde dich zwecks Angebotserstellung bei Plambee.de
    • Frohes neues erstmal!
      Kurze Frage, wenn 30 Tage Zahlungsziel eingestellt sind, stellt WHMCS dann trotzdem noch eine neue Rechnung in der Zwischenzeit aus? Laufzeit ist immer monatlich, der Februar hat aber 28 Tage, nicht das sich dadurch die gesamte Laufzeit etc. Verschiebt?

      Edit: gerade eine Rechnung per Bestellung aus dem WHMCS Admin Interface getätigt, da waren nur 14 Tage Zahlungsziel, obwohl der Kunde +30 hat.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ZoXx ()

    • ZoXx schrieb:

      Frohes neues erstmal!
      Kurze Frage, wenn 30 Tage Zahlungsziel eingestellt sind, stellt WHMCS dann trotzdem noch eine neue Rechnung in der Zwischenzeit aus? Laufzeit ist immer monatlich, der Februar hat aber 28 Tage, nicht das sich dadurch die gesamte Laufzeit etc. Verschiebt?

      Edit: gerade eine Rechnung per Bestellung aus dem WHMCS Admin Interface getätigt, da waren nur 14 Tage Zahlungsziel, obwohl der Kunde +30 hat.
      Der Hook ändert nur das Fälligkeitsdatum der Rechnung, aber nicht das Due Date des Produktes bzw. das next invoice datum des Produktes. Sofern die kontunuierliche Rechnungsstellung in WHMCS eingestellt ist sollte es kein Problem geben.

      Muss ich mir morgen bei Gelegenheit anschauen, ich hatte den überarbeiteten Hook mit einer Adminbestellung in WHMCS getestet und da wurde es mir auf 30 Tage gesetzt


      ZoXx schrieb:

      Kurze andere Frage noch.
      Unser System schickt bei den Kunden die Rechnung 14 Tage früher raus.
      Also Laufzeit wäre z.B. vom 01.01 bis ....
      Die Rechnung mit E-Mail geht dann am 18.12. raus.

      Schickt der Hook die Rechnung 30 Tage vorher oder auch 14 Tage vorher aber dann mit 30 Tage Zahlungsziel?
      Der Hook hat mit dem Rechnungsversand nichts zu tun, er ändert nur das Fälligkeitsdatum nachdem WHMCS die Rechnung erstellt hat. Sprich Rechnung wird heute erstellt dann wäre das Fälligkeitsdatum: Heute + X Tage.
      Du benötigst Hilfe bei deinem WHMCS oder bist auf der Suche nach einem WHMCS Modul? Dann melde dich zwecks Angebotserstellung bei Plambee.de