Shopsystem ShopPilot

ShopPilot => SSP - Shop Server Pages => SSP Bibliothek => Thema gestartet von: hop am September 22, 2005, 17:27:27

Titel: EP: Versandzonen und unterschiedliche MWSt
Beitrag von: hop am September 22, 2005, 17:27:27
Frage: Wie kann ich erreichen, dass z.b. für die Schweiz im Warenkorb und der Bestellung keine MWSt ausgewiesen wird, damit die Kunden direkt den richtigen Endbetrag sehen.

Antwort:
Man braucht zunächst mal die möglichen Lieferländer als Versandzone. Diese sind dann im WK auswählbar (Identifier __zonen__). Jede Zone hate eine ZonenID, diese Zahl wird benötigt, um die Zonen zu unterscheiden.

Für die Änderung des Verhaltens im WK und Bestellformular, benötigt man eine zusätzliche Datei "stdcart.ipl". Diese Datei ist mit einem Texteditor (notepad.exe) zu erzeugen und im Projektverzeichnis abzulegen. Damit die Datei auch auf den Webserver übertragen wird muss man sie noch unter Projekt | zusätzliche Dateien angeben.

Hier ein Beispiel für den Inhalt dieser Datei:
<!--spmacro:module(Callback)

sub invoice_addpos_final {
  my $ref_gesamt = $_[0];
  my $ref_gesamt_steuer = $_[2];
  my $ust = $_[3]/100;
  my $netto = $_[4];

  my ($wert,$text) =  ssp::get_cart_zone();

  # Wenn ein Land ohne Mwst. Berechnung ist
  # 4 Schweiz
  # 9 Lichtenstein
  if (
     ($wert == 4) ||
     ($wert == 9)
)
{
  $$ref_gesamt -= $$ref_gesamt_steuer;
  $$ref_gesamt_steuer = 0;
     }
  return 0;
}
-->

<!--spmacro:module(zone)

# mit __zone::land__  kann das gewählte Land im Bestellformular ausgegeben werden
sub land {

  my ($wert,$text) =  ssp::get_cart_zone();
  main::mprint($text);

}
-->

Diesen Inhalt können Sie so in eine leere Datei kopieren und als stdcart.ipl im Projektverzeichnis abspeichern.
Die einzige Anpassung wird evtl. bei den ZonenIDs notwendig (hier 4 und 9), wenn Sie evtl andere ZonenIDs vergeben haben.

Hier ist zusätzlich noch eine andere nützliche Funktion für das Bestellformular enthalten. Und zwar wird mit der Funktion zone::land der ausgewählte Wert der Versandzone in das Bestellformular eingetragen.

Sie können mit <input type=hidden name="LKZ" value="__zone::land__"> den Wert vorbelegen.
Natürlich die normale LKZ Auswahl dann rausnehmen.
Zusätzliche können Sie den Wert auch anzeigen, indem Sie einfach __zone::land__ an die entsprechende Stelle im Formular schreiben.

hop






Titel: .
Beitrag von: hop am September 23, 2005, 11:36:02
Das dargestellte Beispiel ist für B2B Shops gedacht, bei denen die Preisangaben Netto sind. Bei Endkundenshops (Bruttopreise) ist die Berechnung zwar auch richtig. Aber für den Kunden aus z.B. der Schweiz nicht direkt nachvollziehbar.
Um die Berechnung zu erklären, ist ein zusätzlicher Hinweis sinnvoll.

Endbetrag ist wegen steuerfreier Lieferung um 47,34 EUR Mehrwertsteuer reduziert
bzw.

Endbetrag enthält 47,34 EUR Mehrwertsteuer

Dieser Hinweis wird mit dem SSP-Identifier __Callback::steuertext__ eingefügt.

Hier der erweiterte Code:
<!--spmacro:module(Callback)

sub invoice_addpos_final {
  my $ref_gesamt = $_[0];
  my $ref_gesamt_steuer = $_[2];
  my $ust = $_[3]/100;
  my $netto = $_[4];

  my ($wert,$text) =  ssp::get_cart_zone();

  $Callback::steuerwert = main::fp($$ref_gesamt_steuer);

  # Wenn ein Land ohne Mwst. Berechnung ist
  # 4 Schweiz
  # 9 Lichtenstein
  if (
     ($wert == 4) ||
     ($wert == 9)
     )
     {
  $$ref_gesamt -= $$ref_gesamt_steuer;
  $$ref_gesamt_steuer = 0;
     }
  return 0;
}

$steuerwert = 0;

sub steuertext {
  my ($wert,$text) =  ssp::get_cart_zone();

  # Wenn ein Land ohne Mwst. Berechnung ist
  # 4 Schweiz
  # 9 Lichtenstein
  if (
     ($wert == 4) ||
     ($wert == 9)
     )
  {
     main::mprint("Endbetrag ist wegen steuerfreier Lieferung um <b>$steuerwert</b> Mehrwertsteuer reduziert");
  }
  else
  {
     main::mprint("Endbetrag enthält $steuerwert Mehrwertsteuer");
  }
 
}
-->

<!--spmacro:module(zone)

# mit __zone::land__  kann das gewählte Land im Bestellformular ausgegeben werden
sub land {

  my ($wert,$text) =  ssp::get_cart_zone();
  main::mprint($text);

}
-->


hop