Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Bei Kundenstatusänderung automatische E-Mail an Kunden möglich?

    neicooo

    • Fördermitglied
    • Beiträge: 141
    Moin,

    wir verkaufen nur an Händler und nicht an Endkunden, daher müssen alle registrierten Kunden einen Gewerbenachweis einreichen.

    Nachdem dieser bei uns ankommt, wird der Kunde in die Kundengruppe "freigeschaltete Händler" verschoben, nur diese können bei uns die Preise sehen.

    Aktuell müssen wir noch manuell E-Mails an die Kunden raushauen, dass sie nun komplett freigeschalten sind, dies würden wir gern automatisieren, sprich an den Kunden soll automatisch bei Änderung der Kundengruppe eine E-Mail rausgehen.

    Wer kann mir dabi helfen, wenn es denn überhaupt möglich ist?



    Linkback: https://www.modified-shop.org/forum/index.php?topic=28140.0

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.018
    • Geschlecht:
    Ein Tipp:
    Gehe in /admin/customers.php zu diesem Abschnitt: case 'statusconfirm' : und baue nach diesem
    Code: PHP  [Auswählen]
          if ($check_status['customers_status'] != $status) {
            xtc_db_query("UPDATE ".TABLE_CUSTOMERS." SET customers_status = '".xtc_db_input($_POST['status'])."' WHERE customers_id = '".xtc_db_input($_GET['cID'])."'");

    mithilfe der shop-internen Funktion xtc_php_mail() die Benachrichtigung ein.

    Wenn du die Mail mittels Templates versenden möchtest, wie es auch bei den anderen automatisiert versendeten Mails ist, solltest du die Mail-Sendung in eine Funktion ausgliedern und diese an o.g. Stelle aufrufen.

    Gruß,
    noRiddle

    *NACHTRAG*
    Möchte man das ganze verfeinern, könnte man noch eine Checkobox bei der Kundengruppen-Änderung einbauen, ob die Mail gesendet werden soll oder nicht.
    Wäre vor allem für Testzwecke sinnvoll um nicht bei jeder Kundengruppenänderung eines eigenen Test-Accounts die Mail zu bekommen.

    demoncleaner

    • Fördermitglied
    • Beiträge: 487
    Das hat mir schon mal super weitergeholfen. Leider bekomme ich das mit der separaten Funktion irgendwie nicht auf die Reihe. Habe mir aber mal angeschaut, wie das in der admin/create_account.php gemacht ist. Da sieht das ganze so aus:

    Code: PHP  [Auswählen]
      $html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/create_account_mail.html');
            $txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/create_account_mail.txt');

            xtc_php_mail(EMAIL_SUPPORT_ADDRESS,
                         EMAIL_SUPPORT_NAME,
                         $customers_email_address,
                         $customers_lastname.' '.$customers_firstname,
                         EMAIL_SUPPORT_FORWARDING_STRING,
                         EMAIL_SUPPORT_REPLY_ADDRESS,
                         EMAIL_SUPPORT_REPLY_ADDRESS_NAME,
                         '',
                         '',
                         EMAIL_SUPPORT_SUBJECT,
                         $html_mail,
                         $txt_mail);

    Jetzt frage ich mich wieso ich ständig die Fehlermeldung:

    Call to a member function fetch() on a non-object in ...admin/customers.php

    bekomme, wenn ich in der admin/customers.php genau das selbe einbaue.
    Die Fehlermeldung bezieht sich auf das smarty->fetch(). Ich verstehe aber nicht wieso. Kann mir da jemand auf die Sprünge helfen. Wäre super.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    ist die smarty überhaupt schon ein smarty object?

    Bevor Du smarty nutzen kannst, musst Du das Objekt instanzieren:

    Code: PHP  [Auswählen]
    $smarty = new Smarty;

    demoncleaner

    • Fördermitglied
    • Beiträge: 487
    Oh man. Vielen Dank. Das hab ich die ganze Zeit übersehen, dass die Datei das noch gar nicht hatte.

    Der Vollständigkeit halber dann wenigstens hier jetzt mein kompletter Code. Vielleicht hilft es ja mal jemandem. Also der folgende Code bewirkt, dass wenn ich den Kundenstatus von beliebig auf "Sonderkunde" (4) umstelle, geht eine Benachrichtigung mit dem Inhalt der status_mail.html aus templates/xtc5/admin/mail/german/status_mail.html raus. Einfach an die o.g. Position setzen.

    Code: PHP  [Auswählen]

      if (xtc_db_input($_POST['status']) == 4) {    
           
            // initiate template engine for mail
            $smarty = new Smarty;
            // set dirs manual
            $smarty->template_dir = DIR_FS_CATALOG.'templates';
            $smarty->compile_dir = DIR_FS_CATALOG.'templates_c';
            $smarty->config_dir = DIR_FS_CATALOG.'lang';
            //BOF - GTB - 2010-08-03 - Security Fix - Base
         
            $smarty->caching = 0;

            $html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/status_mail.html');
            $txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/status_mail.txt');


            xtc_php_mail(EMAIL_SUPPORT_ADDRESS,
                   EMAIL_SUPPORT_NAME,
                   $check_status['customers_email_address'],
                    $check_status['customers_firstname'].' '. $check_status['customers_lastname'],
                  EMAIL_SUPPORT_FORWARDING_STRING,
                   EMAIL_SUPPORT_REPLY_ADDRESS,
                   EMAIL_SUPPORT_REPLY_ADDRESS_NAME,
                   '',
                   '',
                   EMAIL_SUPPORT_SUBJECT,
                   $html_mail,
                   $txt_mail
                   );

              }  

     

    danfuh

    • Neu im Forum
    • Beiträge: 5
    • Geschlecht:
    Hallo demoncleaner,

    vielen Dank für den Codeschnipsel, das hat mir ungemein weitergeholfen.
    Zwei (evtl. auch nur einen) kleine Fehler sind mir aufgefallen, wenn man den Code auf 1.06 rev 4642 SP2 anwenden möchte.

    der Zugriff auf die Mail-Klassen fehlt

    Code: PHP  [Auswählen]
    require_once(DIR_FS_CATALOG.DIR_WS_CLASSES.'class.phpmailer.php');
    require_once(DIR_FS_INC . 'xtc_php_mail.inc.php');
     

    Ich würde

    Code: PHP  [Auswählen]
    $smarty->caching = false;

    schreiben anstelle von = 0 (ich weiss, ist nicht wirklich ein Fehler)

    Und zu guter letzt würde ich EMAIL_SUPPORT_FORWARDING_STRING, weg lassen, weil sind die Position der nachfolgenden Werte nicht stimmt und nicht die gewünschte E-Mail verschickt wird.

    Viele Grüße,
    Daniel
    3 Antworten
    3531 Aufrufe
    17. Dezember 2012, 08:58:15 von Myslee
    4 Antworten
    1165 Aufrufe
    22. Januar 2019, 16:04:07 von web-looks
    5 Antworten
    3975 Aufrufe
    14. Mai 2014, 10:11:13 von ikod
    1 Antworten
    2237 Aufrufe
    02. September 2013, 12:06:43 von Tomcraft
               
    anything