Gutscheine und Mindermenge - Konflikt ?

Begonnen von parimo, April 20, 2008, 20:49:10

« vorheriges - nächstes »

0 Mitglieder und 2 Gäste betrachten dieses Thema.

parimo

Irgendwie bekomme ich das mit diesen Gutscheinen nicht hin!

Wir möchten Gutscheine zum Kaufen für bestimmte Warenwerte anbieten (z.B. 50 u. 100 EUR).
So weit, so gut. Einrichten klappt, Gutschein kann wie ein Artikel erworben werden.

Nun aber die Einlösung des Gutscheins.
Wir vergeben für jeden gekauften Gutschein eine einmalige Nummer (kann das nicht automatisch erfolgen?).
Dann wird der Gutschein mit dieser Nr. als nicht sichtbare Position hinterlegt für einmalige Anwendung.

Nun aber der Konflikt mit der Mindermengenpauschale: wenn der Kunde einen Bestellwert von 65 EUR hat, würde er normalerweise bei uns keine Versandkosten zahlen (ab 50 EUR frei) und auch keinen Mindermengenzuschlag zahlen müssen (da Bestellung über 20 EUR). Wenn er dann aber seinen Gutschein über 50 EUR einlöst, werden ihm Versandkosten und auch noch der Mindermengenzuschlag berechnet, was ja nun wirklich keinen Sinn macht.

Was mache ich falsch oder wie kann man dieses verhindern?

Danke für jeden Tipp.

LG - parimo

dobra

Hallo parimo,

ZitatWir vergeben für jeden gekauften Gutschein eine einmalige Nummer (kann das nicht automatisch erfolgen?).
Damit habe ich mich vor längerem auch beschäftigt und damals keine Lösung gefunden.
(da bei mir aber Gutscheine sehr selten gekauft werden, lohnt sich der Aufwand für mich nicht, dafür extra etwas zu programmieren)

Das der Gutscheinwert nicht bei der Berechnung des Mindermengenzuschlags bzw. für die Versandkosten berücksichtigt wird, find ich richtig so !!!
Für meinen Shop bin ich der Meinung, daß der Kunde wenn er nur € 15,- bezahlt (ist für mich egal, ob dieser Rechnungsbetrag mit oder ohne Gutscheineinlösung zustande kommt) auch die Versandkosten - und gegebenenfalls auch Kleinmengenzuschlag - zahlen soll !!!
ich muß sie ja schließlich auch bezahlen  ;)

Wenn Du das nicht willst, läßte sich das aber sicher machen.
mit ShopPilot kann man ALLES !!! machen
Es gibt alllerdings sehr viele verschiedene Möglichkeiten der Versandkostenberechnung - also kann es dafür keine "Universal-Lösung" geben, sondern es muß für die exakten Shopbedingungen jeweils ein darauf zugeschnittenes Script gebaut werden.

Die Frage ist dabei auch, ob der Aufwand wirklich Sinn macht ?
mfG
dobra

parimo

Hallo dobra,

das mit dem Mindermengenzuschlag bei Gutscheineinlösung sehe ich etwas anders. Schließlich ist ein Gutschein ja bereits bezahlt, also in gewisser Weise eine Vorauszahlung. Da kann ich ja von der Logik her einem Kunden, der einen Gutschein einlöst, nicht den Mindermengenzuschlag aufdrücken, weil bereits ein Teil seiner Bestellung bezahlt ist.

Vielleicht gibt es ja doch eine Möglichkeit, dieses zu verhindern.

Liebe Grüße
und danke für deine schnelle Antwort
parimo

dobra

#3
Hallo parimo,

Versuch mal das:

<!--spmacro::module(Callback)
sub invoice_addpos_final {
    my $cp_sumto = shift; 
   
my $minder = "4.5";
my $getminder = ssp::get_cart_minder();
my $anzahl = ssp::get_cart_items();
for (my $i = 0;$i <= $anzahl;++$i) {
my $art = ssp::get_var_cart('id',$i);
if ($art =~ /_GS_/ && $getminder != "") {
$$cp_sumto = $$cp_sumto - $minder;
}
}
}
-->

<!--spmacro::module(show)
sub minder {
my $anzahl = ssp::get_cart_items();
for (my $i = 0;$i <= $anzahl;++$i) {
my $art = ssp::get_var_cart('id',$i);
if ($art !~ /_GS_/) { $out = "__minder__"; }
else { $out = main::fp(0,00);}
}
main::mprint $out;
}
-->


Den Code in die stdcart.ipl Datei schreiben  und im WK, den Bestell- und Mailvorlagen __minder__ mit __show::minder__  ersetzen.
Bei my $minder = "4.5"; mußt Du noch Deinen eingestellen Mindermengenzuschlag-Betrag anpassen -> also das 4.5 durch Deinen Wert ersetzen.
(Achtung: Komma muß als "." eingegeben werden)

Damit wird der Mindermengenzuschlag nicht angezeigt und auch nicht berechnet, wenn ein Gutschein im Warenkorb liegt.

Willst Du nur bestimmte Gutscheine von der Mindermengenberechnung ausschließen, ändere das
($art !~ /_GS_/)  auf /_GS_xy/  -> so werden nur die Gutscheine berücksichtigt, deren Code mit _GS_xy... beginnen.
Also z.B. Kaufgutscheine beginnen mit _GS_xy = es wird keine Mendermenge berechnet
Geschenk- oder Rabattgutscheincode beginnt nicht mit "xy" = der Mindermengenzuschlag wird normal berechnet.

Also im Demoshop funktioniert das  :D
Kann allerdings nicht garantieren, daß es in jedem Shop funktioniert .....
mfG
dobra

dobra

#4
Hallo nochmal

Hier noch eine 2.  - wesentlich aufwendigere - Variante, die auch die Versandkosten berücksichtigt.
Hier werden Gutscheine komplett von der Berechnung ausgeklammert -> es zählt ausschließlich der tatsächliche Warenwert für die Berechnung von Mindermenge und Versandkosten (würde der MM-Zuschlag bzw. Versandkosten ohne GS berechnet, wird's das auch mit GS und umgekehrt)

<!--spmacro::module(Callback)
sub invoice_addpos_final {
    my $cp_sumto = shift; 
   
my $minder = "5";   # Mindermengenzuschlag
my $minderwert = "20";   # Wert bis zu dem Mindermengenzuschlag berechnet werden sollen
my $vkfrei = "50";   # Wert bis zu dem Versandkosten berechnet werden sollen
my $vk = "10";   # Versandkosten
my $getminder = ssp::get_cart_minder();
my $getversk = ssp::get_cart_versand();
my $warenwert = ssp::get_wkprodsum ();
my $anzahl = ssp::get_cart_items();
for (my $i = 0;$i <= $anzahl;++$i) {
my $art = ssp::get_var_cart('id',$i);
if ($art =~ /GS/) {

my $ITEM = ssp::db_get_prefix() . "ITEM";
my $gsimwk = $art;
my $count = ssp::readSQLData("SELECT PRICE FROM ITEM WHERE ITEMID = '$gsimwk'","PRICE");
if ($count >= 0) {
my $i=0;
while ($count > $i) {
$wert = ssp::get_var_db("PRICE",$i);
if (($warenwert - $wert) >= $minderwert && $getminder != "" ) {$$cp_sumto = $$cp_sumto - $minder;}
elsif (($warenwert - $wert) >= $vkfrei && $getversk != "" ) {$$cp_sumto = $$cp_sumto - $vk;}
++$i;
}
}
}
}
}
-->

<!--spmacro::module(show)
sub minder {

my $minder = "5";     # Mindermengenzuschlag
my $minderwert = "20";   # Wert bis zu dem Mindermengenzuschlag berechnet werden sollen
my $getminder = ssp::get_cart_minder();
my $warenwert = ssp::get_wkprodsum ();
my $anzahl = ssp::get_cart_items();
for (my $i = 0;$i <= $anzahl;++$i) {
my $art = ssp::get_var_cart('id',$i);
if ($art =~ /GS/) {
my $gsimwk = $art;
my $ITEM = ssp::db_get_prefix() . "ITEM";
my $count = ssp::readSQLData("SELECT PRICE FROM ITEM WHERE ITEMID = '$gsimwk'","PRICE");
if ($count >= 0) {
my $i=0;
while ($count > $i) {
$wert = ssp::get_var_db("PRICE",$i);
if (($warenwert - $wert) >= $minderwert && $getminder != "" ) {$out = main::fp(0,00)}
++$i;
}
}
} else { $out = qq|__minder__|;
}
}
main::mprint $out;
}

sub versand {

my $vkfrei = "50";   # Wert bis zu dem Versandkosten berechnet werden sollen
my $vk = "10";    # Versandkosten
my $getversk = ssp::get_cart_versand();
my $warenwert = ssp::get_wkprodsum ();
my $anzahl = ssp::get_cart_items();
for (my $i = 0;$i <= $anzahl;++$i) {
my $art = ssp::get_var_cart('id',$i);
if ($art =~ /GS/) {
my $gsimwk = $art;
my $ITEM = ssp::db_get_prefix() . "ITEM";
my $count = ssp::readSQLData("SELECT PRICE FROM ITEM WHERE ITEMID = '$gsimwk'","PRICE");
if ($count >= 0) {
my $i=0;
while ($count > $i) {
$wert = ssp::get_var_db("PRICE",$i);
if (($warenwert - $wert) >= $vkfrei && $getversk != "" ) {$out = main::fp(0,00)}
++$i;
}
}
} else { $out = qq|__versand__|;
}
}
main::mprint $out;
}
-->


__minder__ mit __show::minder__ und __versand__ mit __show:versand__ ersetzen
und
   my $minder = "5";   # Mindermengenzuschlag
   my $minderwert = "20";   # Wert bis zu dem Mindermengenzuschlag berechnet werden sollen
   my $vkfrei = "50";   # Wert bis zu dem Versandkosten berechnet werden sollen
   my $vk = "10";   # Versandkosten
in allen 3 Scriptteilen anpassen.

Ansonsten gilt das gleiche wie beim 1. Script  ;)
im Demoshop funktioniert's ....  aber ohne Pistole (ähhh "Gewähr")

und natürlich können auch hier GS die mit "xy" beginnen, ausgenommen werden - Anpassung s. 1. Script


mfG
dobra