Shopsystem ShopPilot

ShopPilot => Shopbetrieb => Thema gestartet von: dobra am Juni 27, 2008, 11:35:44

Titel: kundenspezifischer Artikelpreis
Beitrag von: dobra am Juni 27, 2008, 11:35:44
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....
Titel: Re: kundenspezifischer Artikelpreis
Beitrag von: admin am Juni 29, 2008, 17:45:01
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
Titel: Re: kundenspezifischer Artikelpreis
Beitrag von: dobra am Juli 25, 2008, 13:49:19
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 ....  ::)

Titel: modifizierte Variantenpreise automatisch in DB eintragen
Beitrag von: dobra am Juli 26, 2008, 06:21:36
gelöscht - Lösung s. unten
Titel: Re: kundenspezifischer Artikelpreis
Beitrag von: dobra am Juli 29, 2008, 16:51:53
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!
Titel: Re: kundenspezifischer Artikelpreis
Beitrag von: dobra am Oktober 06, 2009, 16:03:33
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