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

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline parimo

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

Offline parimo

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

Offline dobra

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


mfG
dobra

Offline parimo

  • Full Member
  • ***
  • Beiträge: 104
  • Lob: 0
Re: Rabatt abhängig von Zahlungsweise
« Antwort #33 am: August 01, 2010, 17:44:38 »
Danke Dobra, jetzt hab ich's fast.

Es sieht jetzt so aus:



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

Offline dobra

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

Offline parimo

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

Offline dobra

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


Offline parimo

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

Offline dobra

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


Offline parimo

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

Offline dobra

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

Offline parimo

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


xx
Art.Rabatt & Bestellhistorie

Begonnen von Andi

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

Begonnen von Andi

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

Begonnen von hop

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

Begonnen von emil

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