Autor Thema: kundenspezifischer Artikelpreis  (Gelesen 7453 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
kundenspezifischer Artikelpreis
« 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....

Linkback: https://www.shoppilot.net/pf/index.php?topic=1089.0
mfG
dobra

Offline admin

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 545
  • Lob: 10
Re: kundenspezifischer Artikelpreis
« Antwort #1 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

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: kundenspezifischer Artikelpreis
« Antwort #2 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 ....  ::)

« Letzte Änderung: Juli 25, 2008, 17:52:37 von dobra »

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
modifizierte Variantenpreise automatisch in DB eintragen
« Antwort #3 am: Juli 26, 2008, 06:21:36 »
gelöscht - Lösung s. unten
« Letzte Änderung: Juli 29, 2008, 17:25:38 von dobra »

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: kundenspezifischer Artikelpreis
« Antwort #4 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!
« Letzte Änderung: August 19, 2008, 10:57:38 von dobra »

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: kundenspezifischer Artikelpreis
« Antwort #5 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
« Letzte Änderung: Oktober 07, 2009, 11:11:28 von dobra »