kundenspezifischer Artikelpreis

Begonnen von dobra, Juni 27, 2008, 11:35:44

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

ist es auch möglich, einem Kunden "seinen" Fixpreis für einen Artikel zu geben?
(B2B-Shop mit MD-Version, aber ohne für jeden Kunden einen eigenen Subkat anlegen zu müssen)

4.4.9 Kundenspezifischer Warengruppenrabatt mit XWGRBLISTE und XRBWG geht - wenn ich das richtig gelesen habe - nur mit % ?

Konkret: Kunde hat sich für einen oder mehrere Artikel "seinen" Preis ausgehandelt und soll auch im Online-Shop diesen speziellen Preis angezeigt und berechnet bekommen.
Das bei jedem Kunden und jedem Artikel über die Prozenteingabe zu berechnen wäre doch zu aufwendig....
mfG
dobra

admin

Hallo Dobra,

ja, die Funktion arbeitet derzeit nur mit prozentualen Nachlässen auf Artikel bzw. Warengruppen.

Es gibt auch einen Punkt, der gegen die Angabe eines absoluten Preises spricht.
Falls es nämlich eine Preisänderung beim Lieferanten gibt, würde diese bei absoluten Preisen
nicht automatsich berücksichtigt. Man müsste dann bei allen Kunden schauen, ob ein Rabatt für
diesen Artikel eingetragen ist.

Gruss hop

dobra

#2
Hallo,

ich habe mir eine Lösung überlegt und cru hat das Scrip dazu geschrieben - DANKE

so geht's:

ein ben.def Feld "MYPREIS" für Kunden anlegen
in dieses Feld dann die zu modifizierende Artikelnummer und den Fixpreis für diesen Kunden schreiben - mehere Preise durch ; getrennt.
also Artikelnr1:15,90;Artikelnr2:33; usw

Code in stdall.ipl:

<!--spmacro:module(Callback)

sub modify_db_price() {
my $p = $_[0];
    my $artid = $_[1];
if($main::userid){
my $pre = ssp::db_get_prefix();
my $USERT = $pre . "USR";
ssp::readSQLData("SELECT MYPREIS FROM $USERT WHERE LOGIN='$main::userid'","MYPREIS");
my $user_p = ssp::get_var_db('MYPREIS', 0);
if($user_p ne $ssp::undefined && $user_p ne ""){
if($user_p =~ m/$artid:([^;]*);/){
return $1;
}
else
{
return $p;
}
}
else
{
return $p;
}
}
else
{
return $p;
}
}
-->


Loggt sich der Kunde ein, werden "seine" Preise automatisch angezeigt und berechnet  ;D

P.S.: es können auch Varianten-Artikelnr. eingetragen werden.
mein "Spezialproblem" ist allerdings, daß ich pro Artikel bis zu 80 Varianten habe - alle mit selben Preis wie Hauptartikel.

Idee dazu:
wenn die Artikelnr. mit "v-..." beginnt eine zusätzliche DB Abfrage - Tabelle SITM select ITEMID WHERE MITEMID ....
hoffe, ich kriege das hin - falls mir jemand helfen will ....  ::)

mfG
dobra

dobra

gelöscht - Lösung s. unten
mfG
dobra

dobra

#4
Hallo nochmal,

Wenn man mit vielen Varianten abreitet, ist es sinnvoll, die Funktion anders herum aufzubauen => ein anderes Script zu verwenden.

Die Vorgehensweise ist dann so:

1) ein ben.def. Artikel-Feld "KDPRICE" (auch für Varianten!) anlegen.
2) in dieses Feld (Artikel und/oder Varianten - geht mit "suchen/ersetzen" in einem Rutsch auch bei über 100 Varianten - wird das Kundenlogin für den dieser speziell Preis gelten soll und "sein" Preis in Form von Login:Preis; eingetragen (es muß am Ende ein ";" stehen!)
3) das geänderte Script in stdall.ipl kopieren

<!--spmacro:module(Callback)

sub modify_db_price() {
my $p = $_[0];
    my $artid = $_[1];
if($main::userid){
  my $pre = ssp::db_get_prefix();
  my $ITEM = $pre . "ITEM";
  my $SITM = $pre . "SITM";
ssp::readSQLData("SELECT KDPRICE FROM $ITEM WHERE ITEMID='$artid' UNION SELECT KDPRICE FROM $SITM WHERE ITEMID='$artid'","KDPRICE");

  my $user_p = ssp::get_var_db('KDPRICE',0);
  if($user_p ne $ssp::undefined && $user_p ne ""){
   
   if($user_p =~ m/$main::userid:([^;]*);/){ #Wobei $main::userid das Login des Kunden ist!
    return $1;
   }
   else
   {
    return $p;
   }
  }
  else
  {
   return $p;
  }
}
else
{
  return $p;
}
}
-->


nochmal ein ganz großes DANKE an cru für die Hilfe!

Nachtrag:
Achtung! diese Variante sollte nicht verwendet werden, wenn der Kunde sein Passwort ändern darf!
mfG
dobra

dobra

#5
Hallo,

wenn Subkataloge mit modifizierten Preisen verwendet werden, muss das Script ergänzt werden, da sonst die Preise vom Hauptkatalog ausgegeben werden.

<!--spmacro:module(Callback)
sub modify_db_price {
my $p = $_[0];
my $artid = $_[1];
my $subcatid = ssp::get_var_subcat("sid");
my $read = ssp::readSQLData(qq|SELECT PRICE FROM ISCAT WHERE ITEMID='$artid' AND SCID=$subcatid|, "SUBCATPRICE");
my $subcatp = ssp::get_var_db("SUBCATPRICE", 0);
if ($subcatp ne "") {
$p = $subcatp;
}

if($main::userid){
               ....
               ....


Danke an Steffen für den Hinweis und ein ganz großes DANKE an ahe für den Lösungsansatz
mfG
dobra