Drupal Commerce Kickstart 2, Shipping und Tax
am 15.02.2013 - 14:49 Uhr in
Hallo,
ich habe Kickstart2 installiert und bin nun dabei die Bestellabwicklung zu konfigurieren.
Es ein B2B Shop werden, das heißt, dass im Katalog Nettopreise angezeigt werden. In der im Cart und in der Bestellabwicklung werden dann aber in Gesamtbetrag (Order Total) die MwSt. separat ausgewiesen:
Subtotal
+ Mwst.
=Order Total
Wenn nun aber Versandkosten dazukommen, werden die Steuern für diese leider nicht ausgewiesen.
Ich habe dafür auch schon eine Lösung gefunden:
1. admin/commerce/config/shipping/calculation-rules/
2. Event: Calculating a Shippingrate
3. Bei Aktionen "loop" hinzufügen: Parameter: Liste: [commerce-line-item: order…
4. List item: line item (line_item)
5. Innerhalb des Schleife "Aktion" hinzufügen: Commerce Tax > calculate Taxes for a line item > Parameter: Position: [commerce_line_item], Tax type: Sales tax
Damit wird die MwSt. der Versandkosten ebenfalls berücksichtigt und den MWst. für die Produkte hinzugerechnet.
Subtotal
+ Mwst. für Inhalt Cart und Versand
+ Versandkosten
=Order Total
Das ist aber fü den Kunden nicht sehr transparent. Zum einen sind MwSt. für die Produkte und die Versandkosten nicht separat angeführt und zum anderen ist die Reihenfolge der Componenten nicht logisch: Die MwSt. sollte unter den Versandkosten stehen.
Zunächst mal habe ich überlegt, wie ich die Mehrwertsteuer für Produkte und Versand getrennt anzeigen kann.
- Neuen Steuertyp "Sales Tax Shipping", Wert 0.19
- Neue Steuerrate für Shipping angelegt, Wert 0.19. Diesen neuen Steuertyp in der der obigen Calculation Rule ausgewählt
- Die Rules Calculate taxes: Sales tax" erhält eine Condition: Datenvergleich: [commerce-line-item:type], Datenwert: Product
- Die Rules Calculate taxes: Sales tax shipping " erhält eine Condition: Datenvergleich: [commerce-line-item:type], Datenwert: Versand
Nun werden die Stuern für Produkte und Versand getrennt ausgewiesen:
Subtotal
+ Mwst. für Inhalt Cart
+ Mwst. für Versand
+ Versandkosten
=Order Total
Aber leider ist die Reihenfolge noch immer falsch. Die Steuer für den Versand sollten unterhalb der Versandkosten stehen.
Ich habe versucht, die Reihenfolge bei "Order Total" über hook_commerce_price_formatted_components_alter(&$components, $price, $entity), zu ändern. Das hat aber nicht geklappt. Evtl. mache ich hier einen Fehler.
Es gibt sicher intelligentere Lösungen für mein Problem. Im Moment ist das Modul "Commerce price by components" in Entwicklung, das mir den Aufwand bestimmt ersparen wird.
Bis dahin muss ich mir eine Lösung basteln.
Hat jemand eine Idee?
Gruß
minimalist
- Anmelden oder Registrieren um Kommentare zu schreiben
bei den Versandkosten
am 15.02.2013 - 17:59 Uhr
die Auswahl - "diese Steuer anwenden" setzen.
Das wars.
Grüße
Ronald
Hallo,Kickstart 2 !!!Hast
am 15.02.2013 - 18:10 Uhr
Hallo,
Kickstart 2 !!!
Hast Du die Demo installiert?
Kannst Du mal ein Screenshot von der Startseite posten?
Das würde mich sehr interessieren.
Danke im Voraus!
Gruß Frank
Die Ruhe sei den Menschen heilig, nur bekloppte haben's eilig.
ronald schrieb die Auswahl -
am 15.02.2013 - 21:05 Uhr
die Auswahl - "diese Steuer anwenden" setzen.
Das wars.
Sorry Ronald,
das habe ich nicht verstanden - wo finde ich diese Option?
Gruß
minimalist
Screenshot, demo
am 15.02.2013 - 21:10 Uhr
Hallo Frank,
tut mir leid, meine Testshop ist local installiert. Es gibt auch noch nichts zu sehen. Keine Inhalte, kein Layout, kein gar nichts.
Ich wollte erst die Bestellabwicklung stehen haben, bevor ich mit den anderen Sachen anfange. Das scheint mir das Kniffeligste.
Grüße
minimalist
dringende Empfehlung
am 16.02.2013 - 09:03 Uhr
installiere zwei Instanzen.
1. die, in der due Konfigurierst und arbeitest.
2. den Demoshop mit Inhalten.
Im Demoshop mit Inhalten kannst du immer wieder nachsehen, wie die Programmierer die Strukturen eingesetzt haben.
Die Inhalte sind nämlich nicht nur Artikel, sondern auch Konfigurationen und Strukturen.
Grüße
Ronald
ronald schrieb installiere
am 16.02.2013 - 17:24 Uhr
installiere zwei Instanzen.
Danke für den Hinweis. Das habe ich schon gemacht, aber beide Instanzen local. Außerdem dokumentiere ich alle Konfigurationen ausführlich.
Aber noch mal zu meiner Frage zurück: was meintest Du mit "diese Steuer anwenden"?
Grüße
minimalist
wenn du versandkosten anlegst
am 16.02.2013 - 17:33 Uhr
Also eine flatrate einrichtest, ist, sofern du eine VAT, also Mehrwertsteuer eingerichtet hast, siehst du rechts neben dem Preis eine Auswahl für die Mehrwertsteuer.
Grüße
Ronald
Es ist aber Sales Tax bei meinem Shop eingestellt.(B2B)
am 17.02.2013 - 21:50 Uhr
da gibt es ein solches Feld nicht.
Trotzdem vielen Dank für den Hinweis. Kann ich vielleicht mal gebrauchen.
Grüße
minimalist
Hallo Minimalist
am 12.11.2015 - 15:44 Uhr
Vielen Dank für deine Anleitung,
jetzt stehe ich vor dem selben Problem. Siehe Bild 1
Aufgabenstellung:
Shop mit Privat-/Gewerbekundenbereich.
-Privat inkl Steuer und Versand für Lieferzone 1 (deutsches Festland)
-Gewerbe mit Zugangsdaten exkl. Steuer und Versand.
Mit der SuFu habe ich folgenden Artikel gefunden: http://drupalme.de/content/drupal-commerce-checkout-warenkorb
Nur wirklich helfen tut der mir nicht, da ich nicht weis, wo ich das einbinden soll.
Die dafür infrage kommende Datei könnte, sollte diese sein: root/profiles/commerce_kickstart/modules/contrib/commerce/modules/price/commerce_price.module
Bei mir ab Zeile 436 (codeschnippsel unten): könnte mir da BITTE jemand den Weg durchs Dickicht zeigen. "rauch, qualm, koch, zisch, pfeift der Kopf > boaaaa".
/**
* Implements hook_field_formatter_view().
*/
function commerce_price_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$translated_instance = commerce_i18n_object('field_instance', $instance);
$element = array();
// Loop through each price value in this field.
foreach ($items as $delta => $item) {
// Do not render a price if the amount is NULL (i.e. non-zero empty value).
if (is_null($item['amount'])) {
// TODO: Consider if we should render as N/A or something indicating a
// price was not available as opposed to just leaving a blank.
continue;
}
// Theme the display of the price based on the display type.
switch ($display['type']) {
case 'commerce_price_raw_amount':
$element[$delta] = array(
'#markup' => check_plain($item['amount']),
);
break;
case 'commerce_price_formatted_amount':
$element[$delta] = array(
'#markup' => commerce_currency_format($item['amount'], $item['currency_code'], $entity),
);
break;
case 'commerce_price_formatted_components':
// Build an array of component display titles and their prices.
$components = array();
$weight = 0;
foreach ($item['data']['components'] as $key => $component) {
$component_type = commerce_price_component_type_load($component['name']);
if (empty($components[$component['name']])) {
$components[$component['name']] = array(
'title' => check_plain($component_type['display_title']),
'price' => commerce_price_component_total($item, $component['name']),
'weight' => $component_type['weight'],
);
$weight = max($weight, $component_type['weight']);
}
}
// If there is only a single component and its price equals the field's,
// then remove it and just show the actual price amount.
if (count($components) == 1 && in_array('base_price', array_keys($components))) {
$components = array();
}
// Add the actual field value to the array.
$components['commerce_price_formatted_amount'] = array(
'title' => check_plain($translated_instance['label']),
'price' => $item,
'weight' => $weight + 1,
Die Ruhe sei den Menschen heilig, nur bekloppte haben's eilig.