Mehrwertfreie Berechnung für Nicht-EU-Länder

Begonnen von parimo, September 19, 2011, 17:30:39

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

parimo

Hallo an die ExpertInnen,

was muss ich wo einstellen, damit bei Bestellungen aus Nicht-EU-Ländern (Schweiz) die MwSt nicht in Abzug gebracht wird.
Gerade bei Paypal-Bestellungen ist es lästig, wenn man hinterher immer Gutschriften ausstellen muss.
Wir arbeiten mit der Version 3.02.03b.

Danke im voraus für jeden Tipp.

Viele Grüße
parimo

dobra

Hallo parimo,

das geht mit invoice_addpos_final

Auszug aus dem Handbuch

Zitat
Beispiel für die Anwendung bei Berechnung der MwSt.
Die MwSt soll für bestimmte Zielländer (Lieferzonen) nicht berechnet werden. Dazu ist der folgende Code in die Datei stdcart.ipl einzutragen.
Die Datei muss als zusätzliche Datei im WC eingetragen werden, damit Sie auf den Server übertragen wird.

Beispiel 1: keine MWST für Zone 10

<!--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 10 die Zahlungszonen-ID für ein Land ohne Mwst. Berechnung ist
  if ($wert == 10) {

     $$ref_gesamt -= $$ref_gesamt_steuer;
     $$ref_gesamt_steuer = 0;
  }
  return 0;
}
-->
mfG
dobra

parimo

Hallo dobra,

danke für deine schnelle Antwort.

Ich würde mir eigentlich wünschen, dass ich als Laie nicht jedesmal an der Programmierung der Shop-Software herumbasteln muss, was auch schon bisweilen schief gegangen ist, da ich Kauffrau und keine Programmiererin bin. Ich kann den Code immer nur blind übernehmen und irgendwo genauso blind einsetzen, das ist mir nicht immer sehr geheuer.

Viele Grüße
parimo

dobra

Hallo parimo,

ShopPilot ist offen für alle Branchen und alle - noch so individuellen - Shopanforderungen !!!
Würden alle Wünsche aller Anwender einfach anklickbar eingebaut werden, wäre das soooo unübersichtlich dass sich niemand mehr zurechtfinden würde.

Damit wirklich jeder seine Vorstellungen und Anforderungen punktgenau realisieren kann gibt es ja die extrem flexiblen Möglichkeiten mit ssp die zu einem sehr großen Teil schon fertig im Handbuch dokumentiert sind (also NICHT erst programmiert werden müssen)
Ein bisschen Eigeninitiative - z.B. das Handbuch bzw. die Online-Hilfe benutzen - kann man doch wirklich voraussetzen  ::)
Und schließlich gibt es ja auch noch den exzellenten Support der weiter hilft wenn jemand so absolut keine Ahnung hat ...

P.S.: eine Sicherungskopie des Shop-Projekts zu machen bevor man - als absoluter Laie - was am Code ändert kann nicht schaden ;)
Wenn man was falsch macht, kann man so jederzeit wieder den vorherigen Stand einspielen und nochmal neu beginnen.
mfG
dobra

parimo

Hallo dobra,

meine stdcart.ipl sieht so aus:

<!--spmacro:module(Callback)
$rabattsumme = 0;
sub invoice_addpos {
my $userrabatt = ssp::get_var_user("USERRABATT");
$userrabatt =~ s/,/./g;  # dadurch ist es egal, ob ein Kommabetrag mit "," oder "." eingetragen wird
   if (length($userrabatt)) { # Feld USERRABATT ist nicht leer
                  
   my $ref_gesamt = $_[0];
   my $ref_gesamt_steuer = $_[2];
   my $ust = $_[3]/100;
   my $netto = $_[4];
   my $anzahl = ssp::get_cart_items();   
      for (my $i = 0;$i <= $anzahl;++$i) {
         my ($zahlart) = ssp::get_cart_zahlart();
         my $myrabatt = ssp::get_cart_myrabatt();
         if ($zahlart == 1 && $myrabatt == 0) { # Zahlart "Vorauskasse" gewählt
            my $rabatt = (ssp::get_var_cart('preis',$i) * $userrabatt) / 100;
                           
            $rabattsumme += $rabatt * ssp::get_var_cart('anzahl',$i);
            }
            }
               if ($netto > 0) {
                  $$ref_gesamt -= $rabattsumme;
                  $$ref_gesamt_steuer -= $rabattsumme*$ust;
               } else {
                  $$ref_gesamt -= $rabattsumme;
                  $$ref_gesamt_steuer -= $rabattsumme*(1-1/(1+$ust));
               }
         return 0;
   }   else { # kein spezieller Kundenrabatt eingetragen -> also 4% Rabatt für alle anderen
                  
   my $ref_gesamt = $_[0];
   my $ref_gesamt_steuer = $_[2];
   my $ust = $_[3]/100;
   my $netto = $_[4];
   my $anzahl = ssp::get_cart_items();   
      for (my $i = 0;$i <= $anzahl;++$i) {
         my ($zahlart) = ssp::get_cart_zahlart();
         if ($zahlart == 1) { # Zahlart "Vorauskasse" gewählt
            my $rabatt = (ssp::get_var_cart('preis',$i) * 4) / 100;
                           
            $rabattsumme += $rabatt * ssp::get_var_cart('anzahl',$i);
            }
            }
               if ($netto > 0) {
                  $$ref_gesamt -= $rabattsumme;
                  $$ref_gesamt_steuer -= $rabattsumme*$ust;
               } else {
                  $$ref_gesamt -= $rabattsumme;
                  $$ref_gesamt_steuer -= $rabattsumme*(1-1/(1+$ust));
               }
         return 0;
      }   
   }
-->

<!--spmacro:module(rabatt)
sub rsumme  {
if ($Callback::rabattsumme >0) {
   main::mprint("-" . main::fp($Callback::rabattsumme));
   return 0;
   }
}
-->


An  welcher Stelle muss ich denn den Code für die Nicht-Berechnung der MwSt eintragen? Die 1. Zeile scheint ja identisch zu sein.
Was muss ich eingeben, wenn ich mehrere Lieferzonen habe, für die die MwSt nicht berechnet werden soll?

Liebe Grüße - parimo

dobra

Hallo parimo,

invoice_addpos != invoice_addpos_final !
(übersetzt für "Nichtprogrammierer" ;)  invoice_addpos ist nicht das selbe wie invoice_addpos_final)

invoice_addpos
ZitatDiese Funktion dient dazu innerhalb der Summenberechnung der Rechnung eine zusätzliche Rechnungsposition zu berücksichtigen. Dazu müssen die als Referenz übergebenen Variablen der Summenberechnung modifiziert werden. Dies sind die Gesamtsumme, die Gesamtsumme des Nettowertes und die Gesamtsumme der Steuer. Als zusätzliche Informationen wird der Umsatzsteuersatz 1  und  ein Flag übergeben, welches anzeigt, ob eine Nettorechnung vorliegt.

invoice_addpos_final
ZitatDie Parameter entsprechen der Funktion invoice_addpos() und zusätzlich Versandkosten, Mindermengenzuschlag und Zahlungskosten.
Im Unterschied zu invoice_addpos() wird jedoch die Veränderung der Rechnungssummen nach der Berechnung aller übrigen Kosten (Versand, Zahlung) und Gutschriften (z.B. Rabatte) berechnet

Du schreibst also das Callback:invoice_addpos_final komplett so wie's im Handbuch steht zusätzlich in die stdcart.ipl und veränderst nichts an dem Callback:invoice_addpos

<!--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 10 die Zahlungszonen-ID für ein Land ohne Mwst. Berechnung ist
  if ($wert == 10) {
     $$ref_gesamt -= $$ref_gesamt_steuer;
     $$ref_gesamt_steuer = 0;
  }
  return 0;
}
-->


$wert == 10  ->  die "10" ersetzt Du mit Deiner Lieferzonennr.
Wenn mehrere Zonen steuerfrei sein sollen, trägst Du das so ein:

  if ($wert == 10 || $wert == 3 || $wert == 12) { ...
mfG
dobra

parimo

Wow, danke - hat geklappt.

Liebe Grüße
parimo

parimo

Nein, hat doch nicht geklappt.
Habe gerade eine Bestellung aus der Schweiz bekommen:
- in der Spalte "Einzelpreis" werden die Bruttopreise ausgewiesen
- in der Spalte "MwSt" steht jeweils 19%
- der Gesamtpreis ist der Bruttopreis, nur wird jetzt die MwSt nicht mehr gesondert ausgewiesen.
Wie bekomme ich das jetzt hin, dass auch jeweils die Nettopreise ausgewiesen und vor allem auch berechnet werden?

LG - parimo