kabecca Posted February 27, 2017 Share Posted February 27, 2017 Hallo liebes Forum, ich arbeite mit der Prestashop Version 1.6.1.10 und habe folgendes Problem mit der Sofortüberweisung: Nach einem Testkauf über Sofortüberweisung bekommt der Kunde, sofern keine Produkte auf Lager sind, im letzten Schritt (Bestellbestätigung) eine Fehlermeldung: "Bei Ihrer Bestellung ist ein Fehler aufgetreten, bitte wenden Sie sich an den Kundensupport" . Trotzdem wird nach Abschluss der Bestellung eine Bestätigungsmail verschickt. Ist die Menge des jeweiligen Produkts über 0, bleibt die Fehlermeldung aus. Das passiert aber nur bei Sofortüberweisung. Im BO ist bereits eingestellt, dass die Bestellung von Artikeln zugelassen werden soll, die nicht auf Lager sind. Daher weiß ich leider nicht, woher diese Meldung kommt. Ich hoffe sehr, dass mir jemand weiterhelfen kann!!! Link to comment Share on other sites More sharing options...
kabecca Posted March 27, 2017 Author Share Posted March 27, 2017 Hallo Hallo, ich habe bereits durch den technischen Support von Sofort Überweisung herausfinden können, dass die Fehlermeldung nicht durch Sofort Überweisung, bzw. das Modul ausgelöst wird, sondern von Prestashop selbst. Die Fehlermeldung wird nämlich angezeigt, nachdem Sofort Überweisung den Kunden durch den Erfolgslink wieder auf unsere Seite leitet. Der Kollege meinte zu mir, dass er davon ausgeht, dass die Fehlermeldung aus der Warenwirtschaft von Prestashop kommt, weil der Bestand = 0 ist. Hat irgendjemand eine Ahnung, woher Prestashop (jedoch nur in Verbindung mit Sofort Überweisung) die Fehlermeldung ausspucken könnte? Ich bin über jede Hilfe dankbar, denn ich weiß wirklich nicht mehr weiter!!! Link to comment Share on other sites More sharing options...
electrostuff_de Posted March 27, 2017 Share Posted March 27, 2017 Soll der Kunde denn bestellen dürfen, wenn Bestand 0? Dafür gibt es eine Einstellung, wie auf dem Bild zu sehen: Viele Grüße Link to comment Share on other sites More sharing options...
kabecca Posted April 11, 2017 Author Share Posted April 11, 2017 Danke @electrostuff_de für deine Hilfe. Diese Einstellung ist jedoch in meinem Shop bereits auf JA. Die Fehlermeldung muss laut Sofort Überweisung Support irgendwo von Prestashop ausgegeben werden. Bei allen anderen Zahlungsmethoden funktioniert es aber einwandfrei...Die Frage ist also, ob irgendjemand eine Ahnung hat, wo man in den Tiefen von Prestashop die Warenwirtschaft bzw. den Warenbestand in Bezug auf das jeweilige Zahlsystem einstellen kann. Es scheint nämlich, dass die Warenwirtschaft im Fall von Sofort Überweisung nicht kleiner 1 sein darf. Ansonsten gibts nach Kauf (der trotzdem einwandfrei funktioniert) eine Fehlermeldung nachdem Sofort Überweisung wieder erfolgreich in meinen Shop leitet. Link to comment Share on other sites More sharing options...
rictools Posted April 12, 2017 Share Posted April 12, 2017 Ich nutze Sofortüberweisung nicht. Ich könnte mir aber vorstellen, daß eine Zahlung damit nur durchgeführt werden soll, wenn das Produkt auch verfügbar ist und deshalb da eine Funktion eingebaut ist. Wenn es sich aber nur um die Meldung handelt und sonst alles funktioniert, sollte es doch kein Problem sein, diese Meldung durch Eingriffe in den Code zu unterbinden, evtl. reicht es bereits den Satz über Übersetzung durch einen anderen zu ersetzen und die Hintergrundfarbe in einer css-Datei zu ändern. Link to comment Share on other sites More sharing options...
eleazar Posted April 12, 2017 Share Posted April 12, 2017 Was auch immer diese Meldung auslöst - die Meldung selbst gibt es exakt in dieser Formulierung nicht in Prestashop 1.6.1.10. Da heißt der Link "Kundenservice". Hinterlegt wird sie aber immer im Modul selbst, und zwar in der Datei /views/templates/hook/payment_return.tpl. Sie wird auch vom Modul ausgelöst. Link to comment Share on other sites More sharing options...
kabecca Posted April 12, 2017 Author Share Posted April 12, 2017 Vielen Dank für Eure Antworten!!! Ich schau gleich mal nach und berichte dann wie und ob es funktioniert hat Link to comment Share on other sites More sharing options...
eleazar Posted April 12, 2017 Share Posted April 12, 2017 Nachtrag: Ich vermute mal einen Bug im Modul selbst. Auprobieren kann ich es leider nicht, da ich das Modul nicht einsetze. So, wie es aussieht, funktioniert die Zeile 279 der Funktion hookPaymentReturn in der Datei sofortbanking.php nicht wie gewünscht und gibt immer den Boolschen Wert "false" zurück: 'status' => ($params['objOrder']->getCurrentState() == Configuration::get('SOFORTBANKING_OS_ACCEPTED') ? true : false)) Hier wird geprüft, ob der Status 5 (=Zahlung erfolgt) erreicht ist, dann wird $status = WAHR. Weil die Bedingung für die Variable $status daher nicht WAHR ('true'), sondern immer nur FALSCH ('false') ist, wird statt der Vollzugsmeldung der Zahlung dem Kunden via Datei /views/templates/hook/payment_return.tpl die von dir gepostete Fehlermeldung ausgegeben: {if $status === true} <p> {l s='Your order on' mod='sofortbanking'} <span class="bold">{$shop_name|escape:'htmlall':'UTF-8'}</span> {l s='is complete.' mod='sofortbanking'} <br /><br /> {l s='The total amount of this order is' mod='sofortbanking'} <span class="price">{$total_to_pay|escape:'htmlall':'UTF-8'}</span> </p> {else} <p class="warning"> {l s='We noticed a problem with your order. If you think this is an error, you can contact our' mod='sofortbanking'} <a href="{$base_dir_ssl|escape:'htmlall':'UTF-8'}contact-form.php">{l s='customer support' mod='sofortbanking'}</a>. </p> {/if} So aus dem hohlen Bauch kann ich mir mehrere Fehlerquellen denken: Der Aufruf in der Funktion hookPaymentReturn stimmt nicht, denn meines Erachtens muss es in Zeile 454 nicht heißen: return $this->display(__FILE__, 'views/templates/hook/payment_return.tpl'); sondern return $this->display(__FILE__, 'payment_return.tpl'); Die Variable wird als String übergeben, dann darf keine Formatprüfung stattfinden und es muss in der Datei /views/templates/hook/payment_return.tpl in Zeile 30 heißen: {if $status == 'true'} (Das dritte Gleichheitszeichen entfällt und der Rückgabewert wird in Anführungszeichen gesetzt.) Hier hilft nur Ausprobieren ... Link to comment Share on other sites More sharing options...
kabecca Posted April 12, 2017 Author Share Posted April 12, 2017 Also habe den Rat von @rictools befolgt und es hat funktioniert. Im BO unter lokalisierung->übersetzung->installierte Module findet man die besagte Fehlermeldung im Abschnitt payment_return. Habe den Text also einfach umgeschrieben. Das sollte aber denke ich erstmal nur eine Übergangslösung sein, bis man herausgefunden hat, von wo die Fehlermeldung ausgelöst wird. Link to comment Share on other sites More sharing options...
kabecca Posted April 12, 2017 Author Share Posted April 12, 2017 Vielen, vielen Dank @elezar !!! Ja das werden wir ausprobieren. Link to comment Share on other sites More sharing options...
electrostuff_de Posted April 16, 2017 Share Posted April 16, 2017 Nachtrag: Ich vermute mal einen Bug im Modul selbst. Auprobieren kann ich es leider nicht, da ich das Modul nicht einsetze. So, wie es aussieht, funktioniert die Zeile 279 der Funktion hookPaymentReturn in der Datei sofortbanking.php nicht wie gewünscht und gibt immer den Boolschen Wert "false" zurück: 'status' => ($params['objOrder']->getCurrentState() == Configuration::get('SOFORTBANKING_OS_ACCEPTED') ? true : false)) Hier wird geprüft, ob der Status 5 (=Zahlung erfolgt) erreicht ist, dann wird $status = WAHR. Weil die Bedingung für die Variable $status daher nicht WAHR ('true'), sondern immer nur FALSCH ('false') ist, wird statt der Vollzugsmeldung der Zahlung dem Kunden via Datei /views/templates/hook/payment_return.tpl die von dir gepostete Fehlermeldung ausgegeben: {if $status === true} <p> {l s='Your order on' mod='sofortbanking'} <span class="bold">{$shop_name|escape:'htmlall':'UTF-8'}</span> {l s='is complete.' mod='sofortbanking'} <br /><br /> {l s='The total amount of this order is' mod='sofortbanking'} <span class="price">{$total_to_pay|escape:'htmlall':'UTF-8'}</span> </p> {else} <p class="warning"> {l s='We noticed a problem with your order. If you think this is an error, you can contact our' mod='sofortbanking'} <a href="{$base_dir_ssl|escape:'htmlall':'UTF-8'}contact-form.php">{l s='customer support' mod='sofortbanking'}</a>. </p> {/if} So aus dem hohlen Bauch kann ich mir mehrere Fehlerquellen denken: Der Aufruf in der Funktion hookPaymentReturn stimmt nicht, denn meines Erachtens muss es in Zeile 454 nicht heißen: return $this->display(__FILE__, 'views/templates/hook/payment_return.tpl'); sondern return $this->display(__FILE__, 'payment_return.tpl'); Die Variable wird als String übergeben, dann darf keine Formatprüfung stattfinden und es muss in der Datei /views/templates/hook/payment_return.tpl in Zeile 30 heißen: {if $status == 'true'} (Das dritte Gleichheitszeichen entfällt und der Rückgabewert wird in Anführungszeichen gesetzt.) Hier hilft nur Ausprobieren ... kleine Optimierung: In deinem Codausschnitt wird nur auf 'true' und 'false' geprüft. Wenn jedoch ein anderer Zahlungsstatus gewählt wird oder der Fehler tatsächlich tiefer im Code liegt, könnte auch NULL ausgegeben werden - für den Fall müsste man folgendes machen: {if $status === true} <p> {l s='Your order on' mod='sofortbanking'} <span class="bold">{$shop_name|escape:'htmlall':'UTF-8'}</span> {l s='is complete.' mod='sofortbanking'} <br /><br /> {l s='The total amount of this order is' mod='sofortbanking'} <span class="price">{$total_to_pay|escape:'htmlall':'UTF-8'}</span> </p> {elseif $status === false} <p class="warning"> {l s='We noticed a problem with your order. If you think this is an error, you can contact our' mod='sofortbanking'} <a href="{$base_dir_ssl|escape:'htmlall':'UTF-8'}contact-form.php">{l s='customer support' mod='sofortbanking'}</a>. </p> {else} <p class="info">{l s='Your payment is processed. You will soon receive a message from us.'}</p> {/if} In dem Fall ist die Zahlung ja nichts desto trotz erfolgt. Der Kunde erhält dann eine Nachricht, sobald seine Ware versendet wurde bzw. er kann dann in seinem Kundenbereich einsehen, wenn seine Bestellung auf 'bezahlt' gesetzt wird. Link to comment Share on other sites More sharing options...
eleazar Posted April 16, 2017 Share Posted April 16, 2017 Ich glaube, du solltest dich zunächst mit der Funktionsweise des Moduls vertraut machen, dessen Code ich hier nur zitiert habe. Die Variable $status ist hier ein Wahrheitswert (boolean) - und der kann nur exakt zwei Zustände annehmen: WAHR (1) oder FALSCH (0)! Link to comment Share on other sites More sharing options...
kabecca Posted April 18, 2017 Author Share Posted April 18, 2017 Vielen Dank Leute! Damit habt ihr mir super weitergeholfen. Ich lass euch wissen, wie es gelaufen ist! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now