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: Sprache der Auftragsbestätigung bei Zahlung moneyorder und EU-Standard

    Viol

    • Fördermitglied
    • Beiträge: 2.279
    Mir ist folgendes aufgefallen:
    Ein Kunde bestellt auf französisch und hat aus welch Gründen auch immer, keine Bestellbestätigung erhalten. Wenn der Kunde z.B. per Vorkasse mit Eu Standard Bank Transfer bezahlen möchte und ich eine Bestätigung  manuell im Backend auslöse, wird der Text für die Zahlungsanweisung nicht nach der vom Kunden gewählten Sprache genommen, sondern ist abhängig von der im Backend gewählten Sprache. Ist dort deutsch eingestellt, ist auch die Zahlungsanweisung auf deutsch.
    Das halte ich für verbesserungswürdig. Auch dies sollte  immer entsprechend der vom Kunden gewählten Sprache automatisch passieren.
    Shop 3.0.2

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

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Lieber Viol, der du doch schon lange genug dabei bist. Erstelle bitte ein Ticket im Bug-Tracker dazu.

    Allerdings wundert mich das Verhalten deines Shops, denn die Sprache in welcher die Mail gesendet wird kommt aus $order->info['language']  aus der order-Klasse und der Wert dafür wiederum aus der DB-Tabelle orders  aus dem Feld "language", welches wiederum die Sprache enthält in welcher bestellt wurde.
    Ist denn die Mail selbst schon in der korrekten Sprachem, nur der Text für die "Zahlungsanweisung" nicht ?

    Gruß,
    noRiddle

    *NACHTRAG*
    Sehe gerade im Code, daß die Antwort auf meine letzte Frage "Ja" sein dürfte. Also bitte ein Ticket aufmachen.

    Viol

    • Fördermitglied
    • Beiträge: 2.279
    Lieber noRiddle,

    ich habe noch kein Ticket erstellt, weil ich vorerst Rückmeldungen abwarten wollte, ob das Problem nachgestellt werden kann und es nicht an meinem Shop liegt(was ich aber nicht denke)
    Vielleicht mag das ja jemand nachstellen. Ist relativ einfach: selbst eine Bestellung in Englisch oder einer anderen Sprache mit Zahlung Vorkasse durchführen und dann mit wechselnder Backendsprache Auftragsbestätigungen manuell auslösen.
    Sobald klar wäre, dass es ein allgemeines Problem ist, würde ich ein entsprechendes Ticket erstellen

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Ist denn die Antwort auf meine Frage "Ja" ?
    [...]
    Ist denn die Mail selbst schon in der korrekten Sprachem, nur der Text für die "Zahlungsanweisung" nicht ?
    [...]

    Dann kannst du das Ticket getrost anlegen, denn nach diesem Code aus der /send_order.php
    Code: PHP  [Auswählen]
      $payment_method_array = array('eustandardtransfer','moneyorder');
      if (in_array($order->info['payment_method'],$payment_method_array)) {
        $payment_text = defined('MODULE_PAYMENT_'.strtoupper($order->info['payment_method']).'_TEXT_DESCRIPTION') ? sprintf(constant('MODULE_PAYMENT_'.strtoupper($order->info['payment_method']).'_TEXT_DESCRIPTION'), $insert_id, $xtPrice->xtcFormatCurrency($order->info['pp_total'])) : '';
        $smarty->assign('PAYMENT_INFO_HTML', $payment_text);
        $smarty->assign('PAYMENT_INFO_TXT', str_replace("<br />", "\n", $payment_text));
      }

    wird die momentan eingestellte Sprache und nicht die Bestell-Sprache für den Text für die "Zahlungsanweisung" benutzt.

    Eine Änderung des zitierten Codes zu
    Code: PHP  [Auswählen]
      $payment_method_array = array('eustandardtransfer','moneyorder');
      if (in_array($order->info['payment_method'],$payment_method_array)) {
        include_once (DIR_FS_CATALOG.'lang/'.$order->info['language'].'/modules/payment/'.$order->info['payment_method'].'.php'); //added necessary language file, noRiddle, 07-2024
        $payment_text = defined('MODULE_PAYMENT_'.strtoupper($order->info['payment_method']).'_TEXT_DESCRIPTION') ? sprintf(constant('MODULE_PAYMENT_'.strtoupper($order->info['payment_method']).'_TEXT_DESCRIPTION'), $insert_id, $xtPrice->xtcFormatCurrency($order->info['pp_total'])) : '';
        $smarty->assign('PAYMENT_INFO_HTML', $payment_text);
        $smarty->assign('PAYMENT_INFO_TXT', str_replace("<br />", "\n", $payment_text));
      }

    würde das Problem wahrscheinlich beheben (nicht getestet).

    Gruß,
    noRiddle

    Viol

    • Fördermitglied
    • Beiträge: 2.279

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    das ist aber nicht so einfach zu lösen. Die Sprachfiles werden durch die Initialisierung der Payment Klasse automatisch geladen. Ein erneutes includen kann die Konstanten nicht überschreiben.

    Die Lösung von noRiddle funktioniert nur, wenn die Zahlart der Bestellung nicht mehr installiert ist.

    Gruss Gerhard

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Habe mir das mal angesehen.
    Soweit ich sehe ist die  Payment-Klasse für die Bestellbestätigung direkt nach Bestellabschluß, wenn denn das Modul "manuelle Auftragsbestätigung" nicht aktiviert ist, nicht instantiiert ?  Da wird ja lediglich die payment_method  aus der DB-Tabelle orders  ausgelesen.

    Mit Senden der Bestell- oder Auftragsbestätigung aus dem Backend ist es in der Tat wie du sagst.
    Man könnte der static function payment_title()  einen weiteren, optionalen, Parameter für die Sprache mitgeben und dann wenn er übergeben wird, diesen für die Sprache nehmen
    - für die /send_order.php  wäre das dann $order->info['language'] -
    und wenn nicht eben wie bisher $_SESSION['language'] .

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    das Problem besteht ja nur für den Fall, dass aus dem Admin die Auftragsbestätigung neu verschickt wird. Wenn ein Kunde eine Bestellung abschliesst, dann wird ja SEINE Sprache gezogen. Das passt ja.

    Wie gesagt, hier müssen wir zuerst die Sprachfiles umbauen, dann kann auch eine Sprache gezogen werden und auf die Konstanten einer anderen Sprache zugegriffen werden.

    Das wird aber frühestens in der 3.2.0 sein.

    Gruss Gerhard

    Viol

    • Fördermitglied
    • Beiträge: 2.279
    Wenn man es weiß, kann man ja die Sprache im Backend umstellen. Es kommt leider häufiger vor, dass Kunden ihre Mail-Adresse nicht korrekt hinterlegen. Dann bleibt nur eine Korrektur im Backend und eine manuelle Auftragsbestätigung.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    @GTB
    Was spricht gegen meinen Vorschlag eines weitern Parameters für static function payment_title()   ?

    Gruß,
    noRiddle

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    in der send_order wird ein
    Code: PHP  [Auswählen]
    $payment_modules = new payment($order->info['payment_class']);
    gemacht, was zur Folge hat, dass die Konstanten bereits gesetzt sind. Da bringt ein zusätzlicher Parameter nichts.

    Gruss Gerhard

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Ah, im __construct(),  der payment-Class wird das language-File geladen, I see, das's abba doof.

    Gruß,
    noRiddle