Benutzer darf Bestellungen anderer Benutzer einsehen

Begonnen von ms, Mai 21, 2010, 16:47:57

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

ms

Zum Hintergrund:

Wir haben Kunden, die mit mehreren Kundennummern im Shop sind.
Zum Beispiel eine größere Firma mit mehreren Abteilungen oder Kostenstellen.

Jetzt hat dort eine(r) den Hut auf und will die Bestellungen der anderen zur Prüfung (nur anzeigen) sehen.

Dafür kann man das Kundenkontomodul ,,missbrauchen", in dem man diesem für die Anzeige der Bestellungen eine andere Kundennummer ,,unterschiebt".

Es braucht eine zusätzliche Kundenvariable (VIEWORDERS). Dort trägt man die anderen Kundennummern (Abteilungen, Kostenstellen...) kommagetrennt ein.

Auf der Bestellübersicht des Prüfenden (Historie Kundenmodul) wird ein Identifier (link2other_orders) eingebaut der eine Funktion aufruft.


## Link zu Bestellungen anderer Benutzer anzeigen
sub link2other_orders {

## prüfen ob Kunde andere Bestellungen sehen darf
## aknr = andere Kundennummern durch Komma getrennt auf Kundenvariable ViewOrder

my $akdnr = ssp::get_var_user("VIEWORDERS");
if (length($akdnr)) {
## Link zur Bestellübersicht anderer Benutzer
my $html = qq| <a href="http://__xxpath__?show1200000760" title="zu Bestellungen anderer Benutzer...">Zur Übersicht der Bestellungen anderer Benutzer, für die Sie autorisiert sind...</a>
  <br><br>Ihre bisherigen Bestellungen...<br>|;
main::mprint ($html);
}

}


Dort wird geprüft, ob derjenige berechtigt ist andere Bestellungen zu sehen. Also, ob irgendwas in der Variable ,,VIEWORDERS" steht.
Wenn nein, wird an dieser Stelle nichts angezeigt und wenn ja, bekommt er einen Link zu einer Seite, wo die anderen "Kunden" gelistet werden.
Dafür braucht's eine Informationsseite. Auf dieser gibt es wieder einen Identifier – ,,list_other_orders".
Diese Funktion liest die Kundennummern aus der Variable und generiert zu jeder Nummer einen Link mit Verweis auf die Firma, den Besteller und, wenn eingetragen, die Kostenstelle (ist bei mir eine zusätzliche Variable).


## Links zu Bestellungen anderer Benutzer anzeigen
sub list_other_orders {

## aknr = andere Kundennummern durch Komma getrennt auf Kundenvariable ViewOrders
my @akdnr = split(/\s*,\s*/, ssp::get_var_user("VIEWORDERS"));

## Variablen für Kundendaten der anderen Bestellungen
my $firma = "";
my $name = "";
my $vorname = "";
my $kst_temp = "";
my $kst = "";

foreach my $kdnr(@akdnr) {
my $count = ssp::readSQLData("SELECT Firma, Name, Vorname, KST FROM USR WHERE Kundennr='$kdnr'", "FIRMA", "NAME", "VORNAME", "KST");
$firma = ssp::get_var_db("FIRMA");
$name = ssp::get_var_db("NAME");
$vorname = ssp::get_var_db("VORNAME");
$kst_temp = ssp::get_var_db("KST");
if (length($kst_temp)){
$kst = "(KST: ".$kst_temp.")";
}
else{
$kst = "";
}

my $html =  qq| <a href="__xxpath__?##SEITENNUMMER-BESTELLHISTORIE##,__xxsession__,,,kdnr=$kdnr"><u>$kdnr</u></a> - $firma, $vorname, $name $kst <br><br> | ;
main::mprint($html);
}

}


Es braucht dann zwei weitere Informationsseiten für die Bestell-Historie und die Details und zwar damit man andere Texte anzeigen kann.
Am besten durch kopieren der "Originale" erzeugen.
In dieser 2. Bestell Historie wird am Anfang nicht die order_user.ipl sondern eine Kopie, die order_user_other.ipl ,,includiert".
Diese ,,fängt" aus dem Link die andere Kundennummer und das Kundenmodul macht das Selbe wie bisher nur mit den Bestellungen von einem anderen Kunde.


<!--spmacro:module(Callback)

sub begin_read_template {
   my $kdnr = ssp::get_var_form("kdnr");;

   my $pre  = ssp::db_get_prefix();
   my $col = $pre . "ORDERS.KUNDENNR";
   my $k = ssp::db_query_orders("$col = \'$kdnr\'");
   return $k;
}
-->

<!--spmacro:include(scripts/order_identifier.ipl)-->



Der Spass wird bei uns für viele Vertragskunden benötigt aber eventuell hilft es ja auch jemand anderem weiter.


Schöne Grüße aus dem Vogtland!

Marcel