2017-08-16 1 views
0

Ich mag würde für Versandkosten zu jeder Bestellung ein Serviceprodukt ähnlich der Zeile hinzufügen, die Informationen über die Verpackungskosten gibt.Verpackungskosten

Kann mir jemand einige Hinweise geben, welche Schritte notwendig sind, um das beschriebene Ziel zu erreichen. Vielen Dank im Voraus.

enter image description here

Antwort

1

OPTION 1

Der beste Weg, ein 'Freitextfeld' zu schaffen wäre (Konfiguration -> Freitextfeld Management) und ändern Sie dann die SQL-Abfrage in den Storefrontsettings (Configuration -> Grundeinstellungen -> Frontend -> Versandkosten Module).

Es hängt jetzt davon ab, wie Sie es variieren möchten oder ob die Verpackungskosten gleich sind. Obwohl ich glaube, dass Sie sie wahrscheinlich von der Größe des Produkts abhängig machen wollen.

So könnte man so etwas:

//You put this code in the Shipping Costs Modules 
MAX(a.topseller) AS has_topseller, MAX(at.attr3) AS has_comment 
MAX(b.esdarticle) AS has_esd, 
SUM(at.attr4*b.quantity) 

Der wichtige Teil hier ist die letzte Zeile des Codes.

Um dies zu schaffen, müssen Sie ein 'Freitextfeld' attr4 erstellen und jetzt in den Artikeldetails im Backend (Artikel -> Übersicht -> Stiftsymbol) den gewünschten Wert für den Artikel eingeben.

Allerdings ist dieses Beispiel sehr spezifisch, weil Sie es für jeden einzelnen Artikel tun müssen, aber die Methode bleibt für fast jeden Fall gleich.

  1. hinzufügen Freitextfeld
  2. Ändern Sie den Wert für die es im Artikel Details
  3. die SQL in Ändern ‚Versandkosten Module‘

Wenn Sie Deutsch verstehen können Sie auch dort Kasse Dokumentation zu diesem Thema here.


OPTION 2

In Option 1 der Preis wird zu den normalen Versandkosten gerade hinzugefügt haben. Obwohl, wenn sie getrennt angezeigt werden sollen, ist die einzige Möglichkeit, die ich mir vorstellen kann, ein kleines Plugin zu erstellen.

Um mit Option 2 zu beginnen, müssen Sie jedoch ein freies Textfeld erstellen. Nachdem Sie erstellt sie zur Kasse gehen -> cart_footer.tpl

Es Sie Ihre neu hinzugefügte Textfeld zwischen den Versandkosten und die Gesamtsumme wie folgt hinzu:

{block name='frontend_checkout_cart_footer_field_labels_shipping'}{/block} 
{block name='frontend_checkout_cart_footer_field_labels_package} 

     {block name='frontend_checkout_cart_footer_field_labels_package_label'} 
         <div class="entry--label block"> 
          Packaging Costs 
         </div> 
     {/block} 
     {block name='frontend_checkout_cart_footer_field_labels_package_label'} 
         <div class="entry--label block"> 
          {s name="CartFooterLabelPackage"}{/s} 
         </div> 
     {/block} 
{/block} 
{block name='frontend_checkout_cart_footer_field_labels_total'}{/block} 

Dies ist im Grunde nur für die Kunde, um den Preis zu sehen, den er für die Verpackung zahlt.

Jetzt ist es Zeit für die Erstellung des Plugins.

Alles, was Sie im Grunde tun müssen, ist ein lokales Plugin zu erstellen, das einige einfache SQL-Abfragen übermittelt.

Sie legen die Grundstruktur Plugin wie here gezeigt

Sie es dann ändern, dass an der Kasse/Ziel-Controller Sie die INVOICE_AMOUNT manipulieren:

public function addPackage() 
{ 
    $package  = 2.5; 
    $select  = "SELECT invoice_amount FROM s_attribute_configuration ORDER BY id DESC LIMIT 1"; 
    $select_result = Shopware()->Container()->get('models')->getConnection()->fetchColumn($select); 
    $new_price  = $select_result + $package; 
    $update  = "UPDATE s_attribute_configuration SET invoice_amount = $new_price ORDER BY id DESC LIMIT 1" 
    $update_result = Shopware()->Db()->query($update); 
} 

So etwas sollte es tun. Haken Sie das einfach in die Finish-Aktion ein.

Das letzte Problem, das Sie jetzt haben, ist, dass die Gesamtsumme bereits im Frontend aktualisiert wird. Ich denke du könntest das mit etwas Javascript aktualisieren.


OPTION 1.1

Genau diese Idee bekam, während die PHP-Script für die Option der Erstellung 2:

einfach die Verpackung auf die Kosten wie in OPTION 1 Versand in und fügen Sie dann ein wenig info unter den Versandkosten, dass die Verpackungskosten von (hier einlagern) dort enthalten sind. Sie könnten das auch mit Freitextfeldern tun. Wäre die beste einfachste Lösung, die Sie fast perfekt zu Ihrem gewünschten Ergebnis bringen würde.

Ich hoffe, dass alle diese helfen.

+0

Vielen Dank @MLK für die detaillierte Antwort "+1". In diesem Fall mischen Sie die Versandkosten mit den Verpackungskosten. Aber ich möchte diese Informationen getrennt behandeln. Für jede Information gibt es eine separate Zeile. Übrigens sind die Verpackungskosten Stückzahl (in den die Verpackungskosten werden pauschal betrechnet.). Das bedeutet, dass die Verpackungskosten für eine Bestellung nicht sehr hoch sind. Ich danke Ihnen für die Referenz. Ich bin schon darauf gestoßen, aber es geht explizit um Versandkosten. Haben Sie eine Idee, wie kann ich das getrennt behandeln? –

+0

Anhand welcher Kriterien können Sie entscheiden, dass eine Anforderung nur über die Implementierung eines Plugins möglich ist. –

+0

Ja das ist richtig. Bei meiner Lösung zählt es. Um es perfekt zu trennen, müßtest du ein Shopware Plugin schreiben. Fügen Sie jedoch zunächst das Freitextfeld in Ihre checkout/cart.tpl ein, damit es auch im Frontend zum Kunden angezeigt wird. Nachdem Sie dies erreicht haben, können Sie ein einfaches Plugin erstellen, das über mysqli/PDO/DBAL mit Ihrer Datenbank kommuniziert und grundsätzlich die ** invoice_amount ** Spalte in der ** s_order Tabelle ** ändert. Obwohl dies eine Menge Arbeit ist, wenn Sie nicht mit PHP/DBAL oder der Shopware Plugin Struktur vertraut sind. – MLK