Shopsystem ShopPilot

ShopPilot => ShopPilot Enterprise => Thema gestartet von: parimo am Juni 20, 2009, 15:02:36

Titel: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juni 20, 2009, 15:02:36
Hallo,

ich beschäftige mich mal wieder mit dem Kunden-Login, den ich gerne einrichten möchte, insbesondere deshalb, damit jeder Kunde seinen persönlichen Rabatt einsehen kann.
Ich habe gesehen, dass ich für jeden Kunden den prozentualen Rabatt hinterlegen kann. Wie aber mache ich das, wenn der Rabatt abhängig von der Zahlungsweise ist? Der soll nämlich nur dann gewährt werden, wenn der Kunde die Zahlungsweise Vorkasse wählt. Ist das überhaupt möglich?

Viele Grüße
parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am Juni 20, 2009, 15:16:02
Hallo parimo,

mal eine kurze Rückfrage:
sollen nur eingelogte Kunden den Vorauszahlungsrabatt kriegen oder alle?

normalerweise wird der Zahlartrabatt bei Eigenschaften Zahlart eingestellt -> gilt dann aber für alle Kunden
ich habe hier z.B. im WI Shop 3% Rabatt bei Vorauskassa
(http://www.woll-insel.at/Bilder/SP-Forum/Vorauskassa_Rabatt.png)

wenn Du nur eingelogten Kunden diesen Zahlartrabatt geben willst, geht das meines Wissens nur mit ssp
dann kannst Du weder den Kundenrabatt noch den Zahlartrabatt verwenden, sondern mußt alles selber nachbauen
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juni 20, 2009, 19:27:46
Hallo Dobra,

einen Rabatt von 4% bei Vorkassezahlung sollen alle Kunden bekommen.

Aber nun wird's kompliziert: es ist ein gestaffelter Rabatt bis max. 10%, abhängig von den bereits getätigten Einkäufen.
Damit der Kunde den durch seine Einkäufe höheren Rabatt angezeigt bekommt, sollte er sich einloggen.
Dort kann ich ja seinen jeweiligen Rabatt eingeben, nur gilt der dann ja für alle Zahlungsarten, oder?

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am Juni 20, 2009, 20:20:48
also wenn ich das jetzt richtig verstanden habe, bekommen alle Kunden 4 % Zahlartrabatt bei Vorauskasse.
zusätzlich bekommen eingelogte Kunden einen höheren Rabatt, gestaffelt nach "bisherigem Einkauf"

---> "bisheriger Einkauf = was er insgesamt bisher eingekauft hat (also bei früheren Bestellungen)
(Du meinst damit nicht den Staffelreabatt nach Warenwert bei dem aktuellen Einkauf?)

also Kunde A hat bereits 5x bestellt und damit eine Gesamteinkaufssumme erreicht bei der er z.B. 6% Rabatt bei Zahlung mit Vorauszahlung erhalten soll (keinen Rabatt bei anderen Zahlungsarten) und Du willst diese 6% dann manuell im Kundenfeld eintragen.

Diese Rabattstaffeln - bzw. den aktuellen Rabatt für den jeweiligen Kunden - kannst Du natürlich im Kundenkonto ausgeben.
Damit der Kunde diese Rabatte auch berechnet und angezeigt bekommt MUSS er sich einloggen - sonst kann ja der eingetragene Rabatt ja nicht zugewiesen werden!

Aber Du hast recht - ein im Kundendialog eingegebener Rabatt gilt für alle Artikel und alle Zahlarten.

Wenn Du den Rabatt also von irgendwelchen Bedingungen abhängig machen willst, geht das soweit ich herausgefunden habe, nur mit
<!--spmacro:module(Callback)
sub invoice_addpos { ....
}
-->
also ein eigenes Kundenfeld anlegen, wo Du den jeweis gültigen Rabatt einträgst und dieses Feld dann abfragst.
s. http://www.shoppilot.net/pf/ssp_shop_server_pages/myrabatt_nicht_fuer_bestimmte_artikel_auch_keine_anderen_rabatte-t1260.0.html#msg4549 (http://www.shoppilot.net/pf/ssp_shop_server_pages/myrabatt_nicht_fuer_bestimmte_artikel_auch_keine_anderen_rabatte-t1260.0.html#msg4549)

mal grob skizziert:
Im Kundenfeld z.B. "USERRABATT"  hast Du "6" eingetragen.
Du fragst also ab, welche zahlart gewählt ist
my ($zahlart) = ssp::get_cart_zahlart();
und ob etwas in dem Feld "USERRABATT" steht
my $userrabatt = ssp::get_var_user("USRRABATT");
if (length($userrabatt ) && $zahlart = 5) { berechne $userfeld % Rabatt }
(wenn "5" die Zahlartnr. für Vorauszahlung ist)

Damit wird der Rabatt von 6% für Kunde A im WK und auf den Bestellseiten für die Gesamtsumme berechnet und audgegeben *wenn er eingelogt ist*.
Wenn Du den Rabatt z.B. in Form von "Ihr persönlicher Rabatt beträgt 5% -- Rabattbetrag € ..." ausgeben willst, brauchst Du eine zusätzliche ssp-Abfrage.

ungefähr so (ungetestetes Beispiel - muß dann natürlich noch angepasst werden):
sub myrabatt {
my $userrabatt = ssp::get_var_user("USERRABATT");
$userrabatt =~ s/,/./g;
my ($zahlart) = ssp::get_cart_zahlart();
my $rabatt;
my $rabattsumme;

   if (length($main::userid) && $userrabatt > 0 && $zahlart = 5) {
my $anzahl = ssp::get_cart_items();
for (my $i = 0;$i <= $anzahl;++$i) {
$rabatt = (ssp::get_var_cart('preis',$i) * $userrabatt) / 100;
$rabattsumme += $rabatt * ssp::get_var_cart('anzahl',$i);
}
if ($rabattsumme > 0) {
$rabattsumme = main::fp($rabattsumme);
main::mprint(qq|
<tr>
<td colspan="3"></td>
<td colspan="3" class="rabatt">Ihr Rabatt $userrabatt%</td>
<td class="cpreis" nowrap="nowrap">$rabattsumme </td>
<td></td>
</tr>
|);
}
   }
}

Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juni 20, 2009, 22:00:05
Hallo Dobra,

oje, das sieht schlimm aus!  ???

Das Feld USERRABATT einzurichten, würde ich noch hinbekommen.

Aber dann wird's auch schon eng. Wo z.B. muss dieser Code für die Abfrage der Zahlart eingetragen werden?
Und wird der Userrabatt dann nicht zu dem Standardrabatt von 4% hinzugezählt?
Ich sehe schon, das wird ein spannender Sonntag!

Auf jeden Fall vielen Dank für deine Mühe. Ich werde morgen mal ein wenig herumbasteln und schauen, was ich herausbekomme.

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am Juni 20, 2009, 22:34:48
Hallo parimo,

halb so wild  ;)

also das Callbackscript und die Abfrage für die Printausgabe schreibst Du in die stdcart.ipl
(falls Du diese Datei noch nicht hast, anlegen und in "Dateien hinzufügen" eintragen

versuch's mal damit
<!--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();
if ($zahlart = 5)) { # 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;
}
}
-->


bei   if ($zahlart = 5))   mußt Du Deine Zahlartnr. für Vorauszahlung schreiben

in das Feld USERRABATT mußt Du dann natürlich die Differenz zum allgemeinen Rabatt eintragen
also für alle 4% - Kunde soll aber 10% bekommen -> Einrag "6"
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juni 21, 2009, 16:44:14
Hallo Dobra,

oha, nun bekomme ich folgende Fehlermeldung, wenn ich Ware in den Warenkorb legen will:

This Error has occured:
parsing error 123-6 in GLOB(0x2ef42d0): syntax error at (eval 4) line 15, near ")) " syntax error at (eval 4) line 30, near "} }"


1 main - 2609 - main::syserr - 1
2 main - 2556 - main::read_templ_work - 1
3 main - 109 - main::read_templ - 1
4 main - 1815 - main::myshowcart - 1
5 main - 622 - main::myplacecart - 1
6 main - 371 - main::placecart - 1

Was habe ich falsch gemacht?
Die Datei stdcart.ipl habe ich entsprechend abgeändert und in das Programmverzeichnis kopiert.
Das Feld USERRABATT habe ich angelegt und die Datenbank neu erstellt.

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am Juni 21, 2009, 16:53:18
sorry - meine Schuld

im Script ist ein Tippfehler:
nicht if ($zahlart = 5)) {...
sondern if ($zahlart = 5) {...
-> nach 5 ist eine Klammer zuviel
s. Fehlermeldung
near ")) " syntax error
(diese Meldungen sind sehr hilfreich, um solche Fehler zu finden  ;))
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juni 21, 2009, 18:18:37
Ja, jetzt funzt es ohne Fehlermeldung.

Allerdings stimmt die Berechnung noch nicht.

In der Login-ok-Datei wird mit der Variablen __myrabatt__ der Standardrabatt von 4% ausgegeben - ich hatte bei meinem Versuch als Userrabatt 2 eingegeben, also müsste der persönliche Rabatt eigentlich 6 sein.

Im Warenkorb komme ich bei einem Warenwert von 75 EUR einen Rabatt von 2,82 EUR und einen Gesamtpreis von 67,74 EUR.  ???
Als Variable habe ich __rabatt__ beibehalten.
Da habe ich wahrscheinlich irgendwo einen mächtigen Denkfehler drin?

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am Juni 21, 2009, 19:07:45
Halo parimo,
__myrabat__ kannst Du mit dieser Variante nicht mehr verwenden!!!

Mit diesem Standardidenifier wird das ausgegeben, was im Kundendialog eingetragen sit.
Wenn Du bei Kunde -> Rabatt -> Kundenspezifischer Rabatt noch etwas eingetragen hast, kann die Berechnung nicht stimmen.
Hier bitte wieder "0" eintragen!

Der Kundenrabatt wird NUR noch in dem ben.def. Feld USERRABATT eingetragen.

Zum ausgeben auf der Login OK Seite (oder jeder beliebigen aneren seite (z.B. im Kundenkonto) verwende bitte das Script
<!--spmacro:module(show)
sub myrabatt {
...
}
-->
das ich schon geschrieben habe.

Wenn Du diesen Rabatt nur auf der Login OK Seite anzeigen willst, kannst Du's direkt in diese Vorlage schreiben.
Oder Du schreibst es in die stdall.ipl, dann kannst Du es auf jede beliebigen Seite einsetzen.

Im WK wird DIESER kundenspezifische Rabatt natürlich auch nicht mit __rabatt__ angezeigt.
Auch hier kannst Du das myrabatt -Script verwenden.
Den HTML-Teil (das was zwischen qq|  und  |; steht) entsprechend anpassen.

Ausgabe im WK:
Der allgemeinen Zahlartrabatt wird hier ja mit __zahlarttext__ und __zahlartbetrag__ ausgewiesen
Du kannst jetz für Kunden die einen höheren Rabatt haben, dieses Feld ausblenden und seinen Gesamt-Zahlartrabatt anzeigen
oder Du schreibst den zusätzlichen Rabatt separat. (ist Geschacksache)

Besser wäre meiner Meinung nach aber, das gleich in einem zu machen.
Also auch den Zahlartrabatt für alle mit dem Callbackscript zu berechnen und auszugeben.
Bei separater Berechnung stimmen vermutlich die Cents nicht, da dann 4 % vom Rechnungsbetrag + die extra % vom rabattieren Betrag berechnet werden.
Konnte das ja nicht testen, aber vermutlich ist es so.

d.h. Du müßtest dann auch den allgemeinen Zahlartrabatt im Zahlartdialog auf "0" seten und das Callbackscript so ändern:
<!--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();
if ($zahlart = 5) { # 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 = 5) { # 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;
}
}
-->


so wird der Rabatt für Zahlungart "Vorauskasse" komplett über das Callbackscript gesteuert.
In diesem fall mußt Du dann den gesamten kundenspezifischen Prozentsatz beim Kunden in das USERRABATT Feld eintragen.
also wenn er 8% haben soll, hier dann auch "8" eintragen.

Hat den Vorteil, daß sich die Berechnung nicht mit dem allgemeinen Rabatt beißen kann.


Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juni 26, 2009, 17:49:10
Hallo dobra,

das ist sehr viel Input für mein armes Hirn.

Ich mache das mal Step-by-Step und fange mit der Ausgabe in der Login-Ok-Datei an.

Wenn ich dein Script so zusammenbastele:

<!--spmacro:module(show)
sub myrabatt {
$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();
         if ($zahlart = 1) { # Zahlart "Vorkasse" 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;
      }   
}
}
-->

welche Variable muss ich dann nehmen für die Ausgabe des Rabatts ?

Den kundenspezifischen Rabatt habe ich auf Null gesetzt. Bei einem Userrabatt von 2 müsste dann ein persönlicher Rabatt von 6% angezeigt werden.
Wenn ich __myrabatt__ verwende, wird -0,00% ausgewiesen, wenn ich __userrabatt__ verwende, wird nichts angezeigt.

Ich habe wahrscheinlich beim Kopieren des Skriptes einen Fehler gemacht, ich habe halt überhaupt keine Ahnung vom Programmieren und ziehe wirklich den Hut vor dir !

Liebe Grüße
parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am Juni 26, 2009, 19:13:56
Hallo parimo,

naja, das hast Du ein bisschen was durcheinander gebracht  ;)

das <!--spmacro:module(Callback) - Script ist NUR für die Berechnung zuständig - also für die angezeigte Gesamtsumme im WK
und das
<!--spmacro:module(show)
sub myrabatt { ...
Script für die Anzeige der Rabatte im Shop - das kannst Du nicht einfach zusammenschmeißen!

<!--spmacro:module(show)
sub myrabatt {
$rabattsumme = 0;
sub invoice_addpos { ...

das kann nicht funktionieren  ::)

versuchen wir's nochmal step by step

Du schreibst dieses Script in die stdcart.ipl Datei:
<!--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();
if ($zahlart = 5) { # 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 = 5) { # 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;
}
}
-->


so - damit wird jetzt (vorausgesetzt Deine Zahlartnr. für Vorauskasse ist "5")  für nicht eingelogte Kunden oder Kunden die keinen speziellen Rabatt im Feld "USERRABATT" eingetragen haben, bei Zahlart "Vorauskasse" 4% Rabatt b]bei der Gesamtsumme berechnet[/b]
und für eingelogte Kunden die etwas in "USERRABATT" stehen haben bei Zahlart "Vorauskasse" der Prozentsatz berechnet der da eingetragen ist (also wenn der Kunde 6% haben soll, schreibst Du "6" in das Rabattfeld)

Dieses Callback macht aber nur die Berechnung!

Um dem Kunden jetzt auf der "Login OK" Seite, im Warenkorb oder sonst wo anzuzeigen, welchen Rabatt er hat, brauchst Du das <!--spmacro:module(show) Script.
Der Ausgabeidentifier muß dafür __show::myrabatt__ und NICHT __myrabatt__ sein!!! 
(__myrabatt__ gibt in diesem Fall immer "0,00%" aus, weil ja "0"  beim kundenspezifischen Rabatt eingetragen ist)

Also um mal bei der Login OK Seite zu bleiben schreibst Du in den Headbereich dieser Seite:
<!--spmacro:module(show)
sub myrabatt {
my $userrabatt = ssp::get_var_user("USERRABATT");
$userrabatt =~ s/,/./g;
my ($zahlart) = ssp::get_cart_zahlart();
my $rabatt;
my $rabattsumme;

    if (length($main::userid) && $userrabatt > 0 && $zahlart = 5) {
my $anzahl = ssp::get_cart_items();
for (my $i = 0;$i <= $anzahl;++$i) {
$rabatt = (ssp::get_var_cart('preis',$i) * $userrabatt) / 100;
$rabattsumme += $rabatt * ssp::get_var_cart('anzahl',$i);
}
if ($rabattsumme > 0) {
$rabattsumme = main::fp($rabattsumme);
main::mprint(qq|
Ihr pers&ouml;nlicher Rabatt betr&auml;gt $userrabatt%
|);
}
    }
}
-->


und mit __show::myrabatt__ wird dann
"Ihr persönlicher Rabatt beträgt 6%"
ausgegeben.

Den HTML-Teil (= das was zwischen qq| und |; steht) kannst Du beliebig anpassen und formatieren
aber am Rest vom Code besser nichts ändern - außer Du weißt, was Du tust  ;)
für die Ausgabe im Warenkorb, und den Folgeseiten dann den HTML-Teil entsprechend anpassen und diesen angepassten Code ebenfalls in die stdcart.ipl schreiben.
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juni 26, 2009, 21:48:44
Hi dobra,

so langsam komme ich dahinter :D

Allerdings habe ich jetzt wieder einen neuen Syntaxfehler angezeigt bekommen:

This Error has occured:
parsing error 123-6 in GLOB(0x2f005dc): Can't modify logical and (&&) in scalar assignment at (eval 5) line 9, near "1) "


1 main - 2609 - main::syserr - 1
2 main - 2561 - main::read_templ_work - 1
3 main - 1335 - main::read_templ - 1
4 main - 804 - main::createIndexPage - 1
5 main - 1253 - main::show - 1
6 main - 625 - main::mylogin - 1
7 main - 371 - main::login - 1

Das muss irgendetwas mit den beiden &-Zeichen zu tun haben, aber ich weiß halt nicht genau was.

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am Juni 26, 2009, 22:25:16
oups - da hab ich jetzt was durcheinander gebracht   :-[

für die Ausgabe auf der Login OK Seite darfst Du natürlich nicht die Artikelanzahl im WK abfragen!
(ich sollte die Script wohl in Zukunft doch besser vorher testen.... und nicht mehr als 5 Sachen gleichzeitig machen  ;))

also nochmal:

für die Login OK Seite nur das
<!--spmacro:module(show)
sub myrabatt {
my $userrabatt = ssp::get_var_user("USERRABATT");
   if (length($main::userid) && $userrabatt > 0) {
       main::mprint(qq|<div class="small"><b>Ihr persönlicher Rabatt: $userrabatt%</b></div>|);
   }
}
-->


und für die Ausgabe im WK dann
<!--spmacro:module(show)
sub myrabatt2 {
my $userrabatt = ssp::get_var_user("USERRABATT");
$userrabatt =~ s/,/./g;
my ($zahlart) = ssp::get_cart_zahlart();
my $rabatt;
my $rabattsumme;

   if (length($main::userid) && ($userrabatt > 0) && ($zahlart = 1)) {
my $anzahl = ssp::get_cart_items();
for (my $i = 0;$i <= $anzahl;++$i) {
$rabatt = (ssp::get_var_cart('preis',$i) * $userrabatt) / 100;
$rabattsumme += $rabatt * ssp::get_var_cart('anzahl',$i);
}
if ($rabattsumme > 0) {
$rabattsumme = main::fp($rabattsumme);
main::mprint(qq|
Ihr pers&ouml;nlicher Rabatt betr&auml;gt $userrabatt%
|);
}
   }
}
-->


hier dann mit __show::myrabatt2__ ausgeben, dann können sich die beiden Abfragen nicht beißen.

ich nehme mal an, Deine Zahlartnr ist "1" ?
das  "1)" in der Fehlermeldung deutet darauf hin

if (length($main::userid) && ($userrabatt > 0) && ($zahlart = 1)) {
da hatte ich die Klammern vergessen

Jetzt sollte es aber funktionieren (hoffentlich)

Tut mir leid, dass ich Dich durch meine Flüchtigkeitsfehler verwirrt habe
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juni 26, 2009, 23:06:36
Ah ja, das macht auch Sinn.
In der Login-Datei darf ja auch keine Abfrage der Zahlart erfolgen, denn die hat der Kunde dann ja noch nicht gewählt.

Dein neues Skript habe ich im head der Login-OK-Datei eingegeben, dann für die Ausgabe im body:
<p align="center"><font color="white" face="Verdana"><span style="font-size:10pt;">__show::myrabatt__</span></font></p>

Jetzt bekomme ich zwar keine Fehlermeldung mehr, aber leider wird auch der Satz mit dem persönlichen Rabatt nicht angezeigt und ich verstehe einfach nicht, warum.

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am Juni 26, 2009, 23:13:24
hast Du Dich auch als richtiger Kunde für den der Rabatt eingetragen ist eingelogt?
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juni 27, 2009, 13:53:14
Hi dobra,

ja, daran hat es nicht gelegen.

Ich habe jetzt aber herausgefunden, dass man dem Programm erzählen muss, dass es diese Datei stdcart.ipl gibt (habe das in den Demoshops verglichen).
Deshalb habe ich im Head-Bereich der Login-OK-Datei diese Zeile eingegeben:
<!--spmacro:include(stdcart.ipl)-->.

Nun bekomme ich allerdings wieder eine Fehlermeldung, nämlich:

This Error has occured:
parsing error 123-6 in GLOB(0x2f50a44): Unrecognized character \xA0 at (eval 5) line 5, <> line 54.

Bezieht sich das jetzt auf die stdcart.ipl oder auf die Login-OK-Datei?

Ich fühle, ich bin der Lösung ganz nah  :)

Liebe Grüße
parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am Juni 27, 2009, 14:30:28
hmm...

also für die Ausgabe auf der Login OK Seite brauchst Du die stdcart.ipl NICHT
(die brauchst Du nur im WK und den Folgeseiten)
habe das zwar schon geschrieben, aber sicherheitshalber nochmal: vergiß nicht, die stdcart.ipl auch im WC in die "Dateien hinzufügen" Liste einzutragen, sonst wird sie nicht automatisch auf den Server übertragen!

ich habe die Scripte jetzt mal in einen Demoshop eingebaut und da funktioniert alles, wie es soll
OHNE irgendwelche Fehlermeldungen.

sorry, aber jetzt bin ich ratlos  :o
Wenn Du alles so gemacht hast, wie ich geschrieben habe, sollte es funktionieren.

Hast Du vielleicht irgendwo noch ein anderes
<!--spmacro:module(Callback)
sub invoice_addpos { ...
laufen?
(das darf nämlich nur einmal verwendet werden. Wenn Du weitere Bedingungen für sub invoice_addpos brauchst, mußt Du alle in einem Script einbauen)


Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juli 01, 2009, 19:20:10
Hallo dobra,

jetzt hab ich mir irgendwie etwas total verschossen.
Ich bekomme gerade eine Mail von einem Kunden, dass er immer diese Fehlermeldung bekommt:

This Error has occured:
parsing error 123-6 in GLOB(0x836f294): Unrecognized character \xA0 at (eval 4) line 5, <$file> line 54

wenn er etwas in den Warenkorb legt.
Das scheint seit dem Wochenende so zu sein, aber ich weiß nicht, an welcher Datei das jetzt liegt.
Weißt du zufällig, was diese Fehlermeldung sagen will?

Viele Grüße
parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am Juli 01, 2009, 19:39:23
Hallo Parimo,

also wenn ich jetzt nicht ganz falsch denke, bedeutet diese Meldung, daß Du irgendwo ein Leerzeichen hast, das da nicht hin gehört.

Du hast doch hoffentlich eine Sicherungskopie gemacht, bevor Du mit den Basteleien angefangen hast?
Dann wäre es am einfachsten, die wieder einzuspielen und die Scripte nochmal neu einzubauen.

Ich vermute mal, dass Du von Deinen Versuchen irgendwo noch  "Leichenteile" herumliegen hast, die diesen Fehler verursachen.
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juli 01, 2009, 19:45:21
Hi dobra,

ja, ich habe schon die alten Dateien wieder eingespielt und vorsichtshalber die stdcart.ipl gelöscht.
Im Lifeview funktioniert es jetzt auch wieder (vorher hatte ich dort die gleiche Fehlermeldung), aber online klappt es immer noch nicht, obwohl ich alles neu hochgefahren habe und sogar die Datenbank neu angelegt habe. - Bin wirklich ziemlich ratlos.

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juli 01, 2009, 20:23:36
Hallo dobra,

offensichtlich besteht der Fehler seit dem 30.6. denn am 28.6. und 29.6. noch Bestellungen eingegangen.

In der pilotlog.txt steht übrigens bei den Kundendaten folgende Fehlermeldung:
S1000:You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '

Ich verstehe überhaupt nichts mehr - vor allem, weil es ja lokal problemlos läuft.

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am Juli 01, 2009, 20:29:18
vermutlich steckt der Fehler in der stdcart.ipl
Hast Du die nur lokal oder auch vom Server gelöscht?
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juli 01, 2009, 20:34:06
Die hab ich auch online gelöscht.

Ich habe noch eine Sicherung vom 24.6. - die müsste ja eigentlich okay sein.
Welche Dateien muss man da ersetzen? Nur die shopname.ist oder auch andere?

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am Juli 01, 2009, 20:38:39
hmmm,  da ich jetzt überfragt....
wenn ich ein Backup einspiele, lösche ich das kappute Projekt (oder benenne es um, falls Daten drin sind, die ich später wieder brauche) und entpacke die komplette Sicherungskopie
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juli 01, 2009, 21:26:26
Ich habe jetzt wirklich alles versucht - Datenbank neu angelegt lokal und online - alte Version wieder aufgespielt.
Gleiche Fehlermeldung.

Bei der Replizierung der Datenbank fiel mir diese Fehlermeldung auf:

na S1000:You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '|kommentar = Sie möchten uns etwas mitteilen:

Das hatte ich vorher nicht, offenbar erkennt die SQL-Datenbank nun nicht mehr den senkrechten Strich "|".
Nirgendwo in meinen html-Vorlagen verwende ich dieses Zeichen. Aber früher hatte ich diese Fehlermeldung nicht.
Ich weiß jetzt wirklich nicht mehr weiter.

LG - parimo (vollkommen am Ende)
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am Juli 01, 2009, 21:39:25
Hallo parimo,

sorry - aber da muss ich jetzt passen :(
SO EINE Fehlermeldung hatte ich noch nie

das "kommentar = Sie möchten uns etwas mitteilen:" deutet darauf hin, daß der Fehler irgendwo im Bestellablauf steckt (vermute, der Text kommt aus der Händlermail?)
vielleicht schaut ahe heute noch mal in's Forum und kann helfen....

sonst bitte Morgen an den Support wenden
ich weiß da jetzt auch keinen Rat mehr  ???
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: ahe am Juli 01, 2009, 22:41:43
Hallo,

ich würde wetten, dass online noch die stdcart.ipl im cgi-bin/pm_shop - Ordner liegt.
Am besten nochmal prüfen per FTP-Programm.
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juli 01, 2009, 23:25:28
Hallo und vielen Dank für die Hilfe zu dieser späten Stunde!

Das war's tatsächlich. Ich hatte nur im Shopverzeichnis diese stdcart.ipl gelöscht, aber nicht vermutet, dass sie sich hinterhältigerweise auch noch im cgi-bin-Verzeichnis niedergelassen hat.

Jetzt geht's wieder - vielen, vielen Dank.

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am Juli 01, 2009, 23:30:56
na also - ist ja alles wieder gut

... aber ob Du die Datei auch am Server gelöscht hast, hatte ich Dich um 20:29 schon gefragt  ;)
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am Juli 02, 2009, 00:02:39
Hallo dobra,

ja, das stimmt.
Aber sie war zweimal auf dem Server - einmal im Shopverzeichnis, wo ich sie manuell über FTP gelöscht hatte.
Und dann noch einmal in diesem cgi-bin-Verzeichnis.

Gott, bin ich froh, dass nun wieder alles klappt.
Nochmals vielen Dank.

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am August 01, 2010, 16:14:32
Hallo Dobra,

ich greife dieses Thema noch mal auf, weil ich das immer noch nicht hinbekommen habe.
Ich habe inzwischen begriffen, dass mit dem Identifier __show::myrabatt2__ im WK ausgegeben wird: "Ihr persönlicher Rabatt beträgt x%".

Das klappt auch. Allerdings habe ich immer noch nicht herausgefunden, welchen Identifier ich für __zahlartbetrag__ einsetzen muss, damit die Kalkulation im WK stimmt.
Wäre schön, wenn du mir da behilflich sein könntest. Ich möchte das jetzt gern einrichten, damit die Vorkasse-Kunden nicht immer erst warten müssen, bis ich ihnen ihren Zahlbetrag per Email mitteile.

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am August 01, 2010, 17:17:33
Hallo parimo,

ihmmmm, st ja schon ne ganze Weile her, dass ich mich damit beschäftigt habe....
Habe aber jetzt mal mein "altes" Callbackscript von damals in einen Demoshop eingebaut.

Der Rabatt wird ja beim Rechnungsbetrag korrekt abgerechnet, aber nicht ausgewiesen
(konnte nicht mehr rekonstuieren, wie ich das damals gemacht hatte  :( )

aber SO gehts:

in stdall.ipl unterhalb vom Callback-Script (dann kannst Du auf allen Seiten - also auch den Bestellvorlagen und Mails darauf zugreifen) diesen Code schreiben
<!--spmacro:module(rabatt)
sub rsumme  {
   main::mprint(main::fp($Callback::rabattsumme));
   return 0;
}
-->


und im Warenkorb dann mit
__rabatt::rsumme__ 
ausgeben


Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am August 01, 2010, 17:44:38
Danke Dobra, jetzt hab ich's fast.

Es sieht jetzt so aus:

(http://www.pariser-mode.de/warenkorb.jpg)

Es wird also noch der 4%-Rabatt, den alle Vorkasse-Kunden bekommen, angezeigt und in Abzug gebracht.
Der muss ja auch für diese Kundengruppe bestehen bleiben.
Nur bei den Kunden, die einen höheren Treuerabatt bekommen, müsste der wegfallen.

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am August 01, 2010, 19:28:27
wie gibst Du den Treuerabatt aus?

wenn Du das mit __myrabatt__ machst, sollte es so funktionieren:
im Callback-Script myrabatt abfragen und die Bedingung ergänzen

         .....
         my ($zahlart) = ssp::get_cart_zahlart();
         my $myrabatt = ssp::get_cart_myrabatt();
            if ($zahlart = 1 && $myrabatt == 0) { # Zahlart "Vorauskasse" gewählt aber kein kundenspezifischer Rabatt
         ....

$zahlart = 1  -> da natürlich deine zahlartnr.
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am August 01, 2010, 19:39:53
Die normalen 4% bei Vorkasse habe ich bei der Zahlungsart (= 1) hinterlegt (-4%).

Für den Userrabatt habe ich im Warenkorb dein Script hinterlegt:

<!--spmacro:module(show)
sub myrabatt2 {
my $userrabatt = ssp::get_var_user("USERRABATT");
$userrabatt =~ s/,/./g;
my ($zahlart) = ssp::get_cart_zahlart();
my $rabatt;
my $rabattsumme;

    if (length($main::userid) && ($userrabatt > 0) && ($zahlart = 1)) {
   my $anzahl = ssp::get_cart_items();   
      for (my $i = 0;$i <= $anzahl;++$i) {
            $rabatt = (ssp::get_var_cart('preis',$i) * $userrabatt) / 100;                           
            $rabattsumme += $rabatt * ssp::get_var_cart('anzahl',$i);
            }   
         if ($rabattsumme > 0) {
            $rabattsumme = main::fp($rabattsumme);
            main::mprint(qq|
               Ihr pers&ouml;nlicher Rabatt betr&auml;gt $userrabatt%
            |);
      }
    }
}
-->


Und die stdcart.ipl habe ich auch so übernommen:

<!--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();
         if ($zahlart = 1) { # 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  {
   main::mprint(main::fp($Callback::rabattsumme));
   return 0;
}
-->

Ich verstehe ja von dieser ganzen Programmierung nischt, daher habe ich das einfach mal so übernommen. Klappt ja auch schon fast.

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am August 01, 2010, 19:50:24
ach soooooooo

na dann nimm mal die "- 4%" bei derZahlart raus.
Wenn jetzt jemand keinen user-rabatt hat, müssten ihm so wie Du das jetzt hast, eigentlich die 4% doppelt abgezogen werden?
1x als eingetragener zahlertrabatt und dann nochmal von Script

  if (length($userrabatt)) { # Feld USERRABATT ist nicht leer                 
   ....   
   }   else { # kein spezieller Kundenrabatt eingetragen -> also 4% Rabatt für alle anderen
  ....   
}

Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am August 01, 2010, 20:35:28
Habe die 4% rausgenommen, dann stimmte es zumindest.
Das Problem ist nun, dass der Treuerabatt auch bei all den anderen Zahlarten aufgeführt wird.
Und bei den Kunden, die mit Vorkasse zahlen und die üblichen 4% haben, steht nun nichts mehr in dem Feld __zahlarttext__.

Es ist verflixt, kaum löst man ein Problem, kommt schon das nächste.

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am August 01, 2010, 20:49:33
mit
__rabatt::rsumme__
sollte aber sowohl der 4% Vorauszahlungsrabatt als auch der Treuerabatt ausgegeben werden

Zahlarttext (__zahlarttext__) gibt - wie der Name ja schon sagt - nur der "Text" aus wenn da etwas definiert ist.

Diesen Identifier kannst Du also nicht mehr verwenden.

Versuchs mal so:
<!--spmacro:module(show)
sub myrabatt2 {
my $userrabatt = ssp::get_var_user("USERRABATT");
$userrabatt =~ s/,/./g;
my ($zahlart) = ssp::get_cart_zahlart();
my $rabatt;
my $rabattsumme;

   if (length($main::userid) && $userrabatt > 0 && $zahlart = 1) {
  my $anzahl = ssp::get_cart_items();  
     for (my $i = 0;$i <= $anzahl;++$i) {
           $rabatt = (ssp::get_var_cart('preis',$i) * $userrabatt) / 100;                          
           $rabattsumme += $rabatt * ssp::get_var_cart('anzahl',$i);
           }  
        if ($rabattsumme > 0) {
           $rabattsumme = main::fp($rabattsumme);
           main::mprint(qq|
              Ihr pers&ouml;nlicher Rabatt betr&auml;gt $userrabatt%
           |);
     }
   }
if ($userrabatt <= 0 && $zahlart = 1) {
main::mprint (qq|Vorauszahlungsrabatt 4%|);
}
}
-->


Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am August 01, 2010, 21:58:09
Nun bekomme ich folgende Fehlermeldung:

This Error has occured:
parsing error 123-6 in GLOB(0x33a2e30): Can't modify logical and (&&) in scalar assignment at (eval 6) line 9, near "1) "


1 main - 2609 - main::syserr - 1
2 main - 2561 - main::read_templ_work - 1
3 main - 109 - main::read_templ - 1
4 main - 1815 - main::myshowcart - 1
5 main - 622 - main::myplacecart - 1
6 main - 371 - main::placecart - 1

Danke für deine unendliche Geduld!

LG - parimo
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: dobra am August 01, 2010, 22:39:47
sorry - Klammern falsch gesetzt
ich sollte keinen ungetesteten Code posten  :-\

hier der korrigierte und getestete Code
(habe auch noch was geändert, dass bei "keinem Rabatt" nicht 0,00 sondern nichts ausgegeben wird)

<!--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;
  }
}
-->


<!--spmacro:module(show)
sub myrabatt2 {
my $userrabatt = ssp::get_var_user("USERRABATT");
$userrabatt =~ s/,/./g;
my ($zahlart) = ssp::get_cart_zahlart();
my $rabatt;
my $rabattsumme;

   if (length($main::userid) && ($userrabatt > 0) && ($zahlart == 1)) {
  my $anzahl = ssp::get_cart_items();  
     for (my $i = 0;$i <= $anzahl;++$i) {
           $rabatt = (ssp::get_var_cart('preis',$i) * $userrabatt) / 100;                          
           $rabattsumme += $rabatt * ssp::get_var_cart('anzahl',$i);
           }  
        if ($rabattsumme > 0) {
           $rabattsumme = main::fp($rabattsumme);
           main::mprint(qq|
              Ihr pers&ouml;nlicher Rabatt betr&auml;gt $userrabatt%
           |);
     }
   }
if (!length($userrabatt) && ($zahlart == 1)) {
main::mprint (qq|Vorauszahlungsrabatt 4%|);
}
}
-->
Titel: Re: Rabatt abhängig von Zahlungsweise
Beitrag von: parimo am August 01, 2010, 23:04:04
Hi Dobra,

der Wahnsinn ... das klappt tatsächlich .. und einwandfrei. :D
Vielen, vielen Dank.

Liebe Grüße - parimo