Guest korgo Posted November 12, 2014 Share Posted November 12, 2014 Hallo ljebes Forum, durch die Forensuche bin ich auf das COD+ free Modul von prestahost.cz gestoßen. Im Gegensatz zum hauseigenen COD Modul, kann man hier beim checkout eine Gebühr einrichten, die dann automatisch addiert wird. Leider funktioniert es nicht Das Modul habe ich erfolgreich installiert und eingerichtet und es läuft auch ohne Fehler und ist in der Rubrik Module -> Zahlungsarten und Schnittstellen auch als aktiv gelistet. Jedoch in der Rubrik Zahlungsart ist es weder in den aktiven Modulen, noch in den empfohlenen Zahlungsschnittstellen. Weiß hierzu jemand was? Würde gerne die Option Nachnahme anbieten, mit automatischer Gebühr. Vielen Dank! Link to comment Share on other sites More sharing options...
Luca01 Posted November 15, 2014 Share Posted November 15, 2014 Hallo korgo, welche Anpassung an das deutsche Recht verwendest Du denn? Viele Grüße Link to comment Share on other sites More sharing options...
Guest korgo Posted November 15, 2014 Share Posted November 15, 2014 Hi! Ich benutze das EU Legal modul - fürchte, daß das mit dem o.g. Nachnahme-Modul als Zahlungsmittel nicht geht, oder? Link to comment Share on other sites More sharing options...
Luca01 Posted November 15, 2014 Share Posted November 15, 2014 Hi, jeep, so ist das. Es gibt auch keine Möglichkeit der Anpassung, weil eu-legal Gebühren im Checkout nicht unterstützt. Viele Grüße Link to comment Share on other sites More sharing options...
Guest korgo Posted November 16, 2014 Share Posted November 16, 2014 doof. Gibt es eine andere (einfache) Möglichkeit Prestashop rechtssicher für den dt. Raum zu machen und nicht gleichzeitig alle möglichen Funktionen und Themes zu verlieren? Link to comment Share on other sites More sharing options...
BluTiGeS Posted November 16, 2014 Share Posted November 16, 2014 Du kannst das Modul doch auf die Hooks von EULegal anpassen, dann sollte es doch funktionieren oder irre ich mich? Stichwort: hookDisplayPaymentEU und im Constructor vom Module: $this->is_eu_compatible = 1; Grüße Link to comment Share on other sites More sharing options...
Luca01 Posted November 16, 2014 Share Posted November 16, 2014 Hallo Blutiges, er möchte Gebühren dazu haben. Weil die Bestellzusammenfassung und die Wahl des Bezahlverfahrens bei eu-legal auf der gleichen Seite sind müsste sich die Summe der Bestellzusammenfassung per Klick auf den Radio-Button des jeweiligen Bezahlverfahrens anpassen, wenn man Gebühren berechnen möchte. Das tut eu-legal soweit ich gesehen habe nicht. Oder hat sich da was geändert? Viele Grüße Link to comment Share on other sites More sharing options...
BluTiGeS Posted November 16, 2014 Share Posted November 16, 2014 Okay, das kann natürlich möglich sein , dann habe ich es nicht komplett gelesen gehabt. Die Frage ist natürlich wie das Modul COD with FEE bisher funktioniert, ob es nur nach Bestellung den Betrag X draufschlägt oder schon im Checkout process? Grüße Link to comment Share on other sites More sharing options...
Guest korgo Posted November 16, 2014 Share Posted November 16, 2014 ws schlägt gar nichts drauf, das ist das absurde... Man wählt COD als Zahlmethode aus, aber weder gleich, noch am später im Bestellprozess werden irgendwelche Aufschläge berechnet. Man kann in dem Modul auch nichts einstellen - frage mich also, was die Existenz des Moduls überhaupt soll?? Außer einem Auswahlbutton zur Verfügung zu stellen, macht das Modul rein gar nichts... Link to comment Share on other sites More sharing options...
Luca01 Posted November 16, 2014 Share Posted November 16, 2014 (edited) Hallo Blutiges, Die Frage ist natürlich wie das Modul COD with FEE bisher funktioniert, ob es nur nach Bestellung den Betrag X draufschlägt oder schon im Checkout process? Wie das Modul COD with FEE von prestahost.cz funktioniert weiß ich nicht genau. Die Gebührenberechnungen im originalen Prestashop erfolgt ja erst nach der Auswahl der Zahlungsmethode auf der Seite auf der die Bestellsumme ausgewiesen wird. Diese Seite ist für jedes Zahlungsmodul individuell. Üblicherweise werden erst dort zahlungsabhängige Gebühren aufaddiert. Das macht auch aus dem klassischen one-page-checkout eigentlich ein two-page-checkout. Eu-Legal bringt die Bestellzusammenfassung auf die Seite der Auswahl des Bezahlverfahrens. Somit entfällt die Seite mit der Summe aus jedem Bezahlmodul aus dem originalen Prestashop Checkout. Ich kenne drei Möglichkeiten mit dem Problem umzugehen, die ich auch in unserem Shop zu unterschiedlichen Zeiten schon mal umgesetzt habe: 1. Das modifizierte Summaryorder-Modul von der Homepage Community. Das Verfahren erweitert die Bestellsummen-Seite der Bezahlmodule um eine Bestellzusammenfassung. Die Modifizierung ist nicht ganz einfach und man braucht mindestens php-Grundlagen und muß wissen wie ein Hook funktioniert. Ich glaube Deine Anpassung zur One-Button-Lösung für die 1.5 Version funktioniert auch so ähnlich. 2. Das modifizieren des Eu-Legal Moduls, sodass für jede Bezahlart eine eigene Summe und ggf. die Gebühren an die tpl-Datei der Bestellzusamenfassung übergeben werden. Über ein Javascript kann man dann für jede Auswahl eine eigene Bestellzusammenfassung anzeigen. Das ist auch nicht einfach und man braucht php-Kenntnisse und Java-Gundlagen. Das mache ich derzeit in unserem Shop. 3. Man legt eine zusätzliche Versandart an, die um die Nachnahmegebühr höhere Versandkosten ausweist. Dann muß man dafür sorgen, dass die Zahlart "Nachnahme" nur dann ausgewählt werden kann, wenn die Versandart "Nachnahme" ausgewählt ist. Hierzu braucht man z.B. ein Modul für die Anzeige von versandartabhängigen Bezahlverfahren. Ob das mit Eu-Legal läuft, weiß ich nicht. Oder man passt die Anzeige der Bezahlarten im Code an. Dazu habe ich mal hier irgendwo was geschrieben, weiß aber nicht mehr wo. Alles nicht so ohne Viele Grüße Edited November 16, 2014 by Luca01 (see edit history) Link to comment Share on other sites More sharing options...
BluTiGeS Posted November 17, 2014 Share Posted November 17, 2014 Ja habe mal für 1.5 und 1.6 den fix gepflegt gehabt, aber da schon eu legal läuft ist das unsinnig wegen dem einem Modul das umzubauen . Vll sollte man eine Change Request für EuLegal stellen zwecks Aufschlag. Oder man passt alles manuell an und entfernt eu legal. Geht auch aber muss man sich ein wenig auskennen Link to comment Share on other sites More sharing options...
Luca01 Posted November 17, 2014 Share Posted November 17, 2014 Hallo Blutiges, Vll sollte man eine Change Request für EuLegal stellen zwecks Aufschlag. würdest Du das tun, wenn ich hier meine Änderungen poste? Ich komme mit GitHub nicht zurecht, bzw. habe keine Motivation mich da reinzuarbeiten . Aber es wäre schön, wenn ich den Code bei einem Update nicht anpassen müßte. Viele Grüße Link to comment Share on other sites More sharing options...
BluTiGeS Posted November 17, 2014 Share Posted November 17, 2014 Kann ich machen, wenn die Änderungen auch Hand und Fuß haben . Aber kannst ja mal posten, ich gebe dann schon Feedback Link to comment Share on other sites More sharing options...
Luca01 Posted November 17, 2014 Share Posted November 17, 2014 Geht los Ich muß nur ein bischen sortiern. Link to comment Share on other sites More sharing options...
Guest korgo Posted November 18, 2014 Share Posted November 18, 2014 Danke für die Mühe - ich denke mal, daß da sehr viele Leute mit kleinen Shops in D Interesse daran hätten. Link to comment Share on other sites More sharing options...
Luca01 Posted November 18, 2014 Share Posted November 18, 2014 (edited) Hallo Blutiges, so, jetzt bin ich etwas sortiert und kann die Änderungen posten die ich in Eu-Legal eingebaut habe, um ein Zahlungsmodul mit Gebühren einzubinden. Ich habe Änderungen an folgenden Dateien vorgenommen: /js/legal.js /views/templates/hook/displayShippingPrice.tpl /views/templates/thenes/default-bootstrap/order-summary.tpl legal.js habe ich mit einer Funktion ergänzt: /**------- Anfang Änderung für Gebühr**/ setActiveConfim: function() { $( ".payment-choosen" ).removeClass('active'); if (this.paymentChosen) {$('[id=' + this.paymentChosen + ']').addClass('active'); } }, /**------- Ende Änderung für Gebühr**/ die aus der Funktion toggleChosenForm aufgerufen wird toggleChosenForm: function(show, undefined) { if (this.paymentChosen) { /**------- Anfang Änderung für Gebühr**/ this.setActiveConfim(); /**------- Ende Änderung für Gebühr**/ this.setActiveState(); var elt = $('#' + this.paymentChosen + '_form_container'); if (elt.length && elt.attr('data-do-not-toggle') != 1) { if (show === undefined) { elt.toggle(); } else if (show) { elt.show(); } else { elt.hide(); } } } }, Die tpl-Datei displayShippingPrice.tpl habe ich so umgeschrieben: {* ------- Anfang Änderung für Gebühr*} {foreach from=$payment_options item=option key=payment_name} <div class="payment-choosen" id="{$payment_name}">{displayPrice price=$option.total_shipping}</div> {/foreach} {if !$payment_options}{displayPrice price=$shipping_price} {else} <div class="payment-choosen active" id="no_payment_selected">{displayPrice price=$shipping_price}</div> {/if} <!-- Auskommentiert {displayPrice price=$shipping_price}<br> --> {* ------- Ende Änderung für Gebühr*} {if $no_address_selected}{l s='Shipping to' mod='eu_legal'} {$default_country}{if $shipping_link}<br><a href="{$shipping_link}" class="iframe">{l s='further shipping costs' mod='eu_legal'}</a>{else}<br>{l s='further shipping costs' mod='eu_legal'}{/if}{/if} Die tpl-Datei order-summary.tpl habe ich so umgeschrieben: {* ------- Anfang Änderung für Gebühr*} <style> #order-detail-content #cart_summary td div.payment-choosen { display: none; } #order-detail-content #cart_summary td div.payment-choosen.active { display: inline; } </style> {* ------- Ende Änderung für Gebühr*} . . . . und {displayPrice price=$total_discounts*-1} {/if} {else} {displayPrice price=$total_discounts_tax_exc*-1} {/if} </td> </tr> {* ------- Anfang Änderung für Gebühr*} <tr class="cart_total"> <td colspan="5" class="text-right"> {foreach from=$payment_options item=option key=payment_name} <div class="payment-choosen" id="{$payment_name}"{if $option.fee ==0} style="display: none;"{/if}> {if $use_taxes} {if $priceDisplay} {if $display_tax_label}{l s='Total fee (tax excl.)' mod='eu_legal'}{else}{l s='Total fee' mod='eu_legal'}{/if} {else} {if $display_tax_label}{l s='Total fee (tax incl.)' mod='eu_legal'}{else}{l s='Total fee' mod='eu_legal'}{/if} {/if} {else} {l s='Total fee' mod='eu_legal'} {/if} </div> {/foreach} </td> <td colspan="2" class="price-discount price" id="total_discount"> {foreach from=$payment_options item=option key=payment_name} <div class="payment-choosen" id="{$payment_name}">{displayPrice price=$option.fee}</div> {/foreach} </td> </tr> {* ------- Ende Änderung für Gebühr*} {if $use_taxes} {if $priceDisplay && $total_tax != 0} <tr class="cart_total_tax"> <td colspan="5" class="text-right">{l s='Total tax:' mod='eu_legal'}</td> <td colspan="2" class="price" id="total_tax" >{displayPrice price=$total_tax}</td> </tr> {/if} {* ------- Anfang Änderung für Gebühr*} <tr class="cart_total_price"> <td colspan="5" class="total_price_container text-right"><span>{l s='Total' mod='eu_legal'}</span></td> <td colspan="2" class="price" id="total_price_container"> {foreach from=$payment_options item=option key=payment_name} <div class="payment-choosen" id="{$payment_name}"><span id="total_price">{displayPrice price={$option.total[spam-filter]</span></div> {/foreach} {if !$payment_options}{displayPrice price=$total_price} {else} <div class="payment-choosen active" id="no_payment_selected">{displayPrice price=$total_price}</div> {/if} </td> </tr> <!-- Auskommentiert <tr class="cart_total_price"> <td colspan="5" class="total_price_container text-right"><span>{l s='Total' mod='eu_legal'}</span></td> <td colspan="2" class="price" id="total_price_container"> <span id="total_price">{displayPrice price=$total_price}</span> </td> </tr> --> {* ------- Ende Änderung für Gebühr*} {else} <tr class="cart_total_price"> {if $voucherAllowed} <td colspan="2" id="cart_voucher" class="cart_voucher"> Wie Du bestimmt siehst, werden jetzt mehr Variablen verarbeitet, die noch aus dem Zahlungsmodul übergeben werden müssen. Hierzu habe ich die Funktion hookDisplayPaymentEU umgeschrieben. Hier als Beispiel aus dem Bankwire-Modul: public function hookDisplayPaymentEU($params) { /* ---------Anfang Änderung für Gebühr*/ $totalfee = false; /* ---------Ende Änderung für Gebühr*/ if (!$this->active) return; if (!$this->checkCurrency($params['cart'])) return; return array( /* ---------Anfang Änderung für Gebühr*/ 'total_shipping' => $this->context->cart->getPackageShippingCost((int)(string)$this->context->cart->id_carrier, true, null, $order->product_list), 'total' => $this->context->cart->getOrderTotal(true, Cart::BOTH)+$totalfee, 'fee' => $totalfee, /* ---------Ende Änderung für Gebühr*/ 'cta_text' => $this->l('Pay by Bank Wire'), 'logo' => Tools::getShopDomainSsl(true, true).__PS_BASE_URI__.'modules/'.$this->name.'/bankwire.jpg', 'action' => $this->context->link->getModuleLink($this->name, 'validation', array(), true) ); } Jetzt kann man über die Variable $totalfee Gebühren an die Anzeige im Eu-Legal-Modul übergeben, die dann dort in der Bestellzusammenfassung angezeigt werden. Das Konstrukt läuft schon eine Weile bei uns im Shop ziemlich zuverlässig. Viele Grüße Edited November 18, 2014 by Luca01 (see edit history) Link to comment Share on other sites More sharing options...
Guest korgo Posted November 18, 2014 Share Posted November 18, 2014 Wow! Jetzt bräuchte ich noch jemanden, der das bei mir reinfummelt vielen Dank! Ich habe so wenig Ahnung, daß ich noch nicht einmal abschätzen kann wie viel oder wenig Arbeit das war, daher erst einmal DANKE! Link to comment Share on other sites More sharing options...
BluTiGeS Posted November 18, 2014 Share Posted November 18, 2014 Hallo Luca, danke für den Code, aber was bringt deine Anpassung inder legal.js? Die macht ja nchts anderes wie bereits dort vorhanden, das element aktiv zu setzen. deine total_shipping anpassung, setzt vorrasu das alle Module das mit zurückgeben. Wäre es nicht sinnvoller dafür anstelle eine neue Zeile im Cart einzublenden mit Fee ? Ich schaus mir mal an. Link to comment Share on other sites More sharing options...
Luca01 Posted November 18, 2014 Share Posted November 18, 2014 (edited) Hallo Blutiges, aber was bringt deine Anpassung inder legal.js? Die macht ja nchts anderes wie bereits dort vorhanden, das element aktiv zu setzen. Die Funktion im Javascript in Kombination mit dem css-style in der tpl-Datei macht die Summen in der Bestellzusammenfassung für die einzelnen Bezahlmodule sichtbar oder unsichtbar und macht die Gebühren sichtbar oder unsichtbar je nach Auswahl. deine total_shipping anpassung, setzt vorrasu das alle Module das mit zurückgeben. Ja, das stimmt. Kann vermutlich raus. Wäre es nicht sinnvoller dafür anstelle eine neue Zeile im Cart einzublenden mit Fee ? Die Gebührenzeile wird eingeblendet. Hier: {* ------- Anfang Änderung für Gebühr*} <tr class="cart_total"> <td colspan="5" class="text-right"> {foreach from=$payment_options item=option key=payment_name} <div class="payment-choosen" id="{$payment_name}"{if $option.fee ==0} style="display: none;"{/if}> {if $use_taxes} {if $priceDisplay} {if $display_tax_label}{l s='Total fee (tax excl.)' mod='eu_legal'}{else}{l s='Total fee' mod='eu_legal'}{/if} {else} {if $display_tax_label}{l s='Total fee (tax incl.)' mod='eu_legal'}{else}{l s='Total fee' mod='eu_legal'}{/if} {/if} {else} {l s='Total fee' mod='eu_legal'} {/if} </div> {/foreach} </td> <td colspan="2" class="price-discount price" id="total_discount"> {foreach from=$payment_options item=option key=payment_name} <div class="payment-choosen" id="{$payment_name}">{displayPrice price=$option.fee}</div> {/foreach} </td> </tr> {* ------- Ende Änderung für Gebühr*} Ich schaus mir mal an. Viele Grüße Edited November 18, 2014 by Luca01 (see edit history) Link to comment Share on other sites More sharing options...
BluTiGeS Posted November 18, 2014 Share Posted November 18, 2014 Hmm iwie sieht das alles nicht nach einer sauberen Lösung aus ehrlich gesagt. Klar es funktioniert so, wenn jedes modul mit den options array angepasst wird, aber sauberer wäre es ja wenn das COD odl an sich schon den cart aktualisiert und dann das EU legal den toal preis von dort holen kann. Ich würde das mal auf eine Change Request Liste machen, das man es sich mal von dr architektur anschaut, vll hat Chris oder silbersaiten noch eine schlaue Idee. Link to comment Share on other sites More sharing options...
Luca01 Posted November 18, 2014 Share Posted November 18, 2014 Hallo Blutiges, Klar es funktioniert so, wenn jedes modul mit den options array angepasst wird, Das ist nunmal der Datenfluß von Eu-Legal. Das Konzept, die Daten der Zahlungsmodule per array an die Bestellzusammenfassungsseite zu geben ist vom Eu-Legal Modul übernommen. Man könnte auch einen rechtssicheren Checkout machen ohne jedes Zahlungsmodul anzupassen, nur Eu-Legal funktioniert aktuell nicht so. aber sauberer wäre es ja wenn das COD odl an sich schon den cart aktualisiert und dann das EU legal den toal preis von dort holen kann. Dann müßte man erst das Bezahlverfahren auswählen und dann eine zusätzliche Seite, ein Popup o.Ä. mit der Bestellzusammenfassung ausgeben. Das ist aber nicht die Art wie Eu-Legal an dieser Stelle funktioniert. Wenn es einen anderen Checkout gibt, gibt es auch eine andere Lösung für Gebühren das ist klar. Viele Grüße Link to comment Share on other sites More sharing options...
BluTiGeS Posted November 18, 2014 Share Posted November 18, 2014 Ja klar ist mir schon bewusst das es so funktioniert ))))), aber der Code von dir verlangt das jedes Modul angepasst werden muss auch wenn es fee => 0 hat. Vll musst du dich doch mal mit github auseinander setzen , ich glaube aber leider nicht das der Code es so in den Master Branch schaffen würde. Aber ja das Ursprungsproblem hier fürs eine Modul sollte es beheben, aber eine Lösung für alle Varianten ist es noch nicht. 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