Autor Thema: Rabatt abhängig von Zahlungsweise  (Gelesen 25170 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline parimo

  • Full Member
  • ***
  • Beiträge: 104
  • Lob: 0
Rabatt abhängig von Zahlungsweise
« 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

Linkback: https://www.shoppilot.net/pf/index.php?topic=1261.0

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: Rabatt abhängig von Zahlungsweise
« Antwort #1 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


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
mfG
dobra

Offline parimo

  • Full Member
  • ***
  • Beiträge: 104
  • Lob: 0
Re: Rabatt abhängig von Zahlungsweise
« Antwort #2 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

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: Rabatt abhängig von Zahlungsweise
« Antwort #3 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

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>
|);
}
    }
}
« Letzte Änderung: Juni 20, 2009, 20:31:43 von dobra »

Offline parimo

  • Full Member
  • ***
  • Beiträge: 104
  • Lob: 0
Re: Rabatt abhängig von Zahlungsweise
« Antwort #4 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

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: Rabatt abhängig von Zahlungsweise
« Antwort #5 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"
« Letzte Änderung: Juni 20, 2009, 22:36:32 von dobra »

Offline parimo

  • Full Member
  • ***
  • Beiträge: 104
  • Lob: 0
Re: Rabatt abhängig von Zahlungsweise
« Antwort #6 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

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: Rabatt abhängig von Zahlungsweise
« Antwort #7 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  ;))

Offline parimo

  • Full Member
  • ***
  • Beiträge: 104
  • Lob: 0
Re: Rabatt abhängig von Zahlungsweise
« Antwort #8 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

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: Rabatt abhängig von Zahlungsweise
« Antwort #9 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.



Offline parimo

  • Full Member
  • ***
  • Beiträge: 104
  • Lob: 0
Re: Rabatt abhängig von Zahlungsweise
« Antwort #10 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

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: Rabatt abhängig von Zahlungsweise
« Antwort #11 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.

Offline parimo

  • Full Member
  • ***
  • Beiträge: 104
  • Lob: 0
Re: Rabatt abhängig von Zahlungsweise
« Antwort #12 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

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: Rabatt abhängig von Zahlungsweise
« Antwort #13 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
« Letzte Änderung: Juni 27, 2009, 14:06:33 von dobra »

Offline parimo

  • Full Member
  • ***
  • Beiträge: 104
  • Lob: 0
Re: Rabatt abhängig von Zahlungsweise
« Antwort #14 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


xx
Art.Rabatt & Bestellhistorie

Begonnen von Andi

2 Antworten
5478 Aufrufe
Letzter Beitrag Oktober 19, 2004, 08:18:22
von Andi
xx
Rabatt / Kundenkonto / Warenkorb

Begonnen von Andi

0 Antworten
4523 Aufrufe
Letzter Beitrag November 10, 2002, 23:24:35
von Andi
xx
Rabatt: erste Eregbnisse

Begonnen von hop

10 Antworten
11215 Aufrufe
Letzter Beitrag Dezember 07, 2002, 09:19:50
von jg
xx
Rabatt artikel- und auftragswertbezogen

Begonnen von emil

7 Antworten
8613 Aufrufe
Letzter Beitrag März 27, 2003, 10:33:33
von hop