M. Hoffmann: Suche verzweifelt eine Feedback Lösung für bestehendes Script

Hallo Community,
ich brauche dringend eure Hilfe.

Habe ein kleines altes aber dennoch brauchbares Shopscript in Verwendung. Der Programmierer dieses Scripts ist nicht mehr erreichbar bzw. er arbeitet schon seit langem nicht mehr dran.

Das Problem!
Wenn ein Kunde eine Bestellung abschicken möchte, füllt er ein Formular aus mit allen Daten die ich für die Auftragsabwicklung benötige.

Ich erhalte eine anständig formatierte E-Mail mit allen Bestellangaben.

Der Kunde erhält leider nichts.
Und genau hier liegt mein Problem.

Der Kunde soll auch eine Bestellbestätigung erhalten, vorzugsweise eine, die auf vordefinierten z.B. .txt-Templates basiert in denen Platzhalter für die Variablen eingebaut sind.

Möchte er Beispielsweise per Vorkasse zahlen, erhält er einen andere als wenn er mit PayPal zahlen möchte oder mit Lastschrift.

Aber ehrlich gesagt wäre ich schon froh wenn er nur eine einfache Bestätigung erhallten würde.

Zurzeit schreibe ich jedem Kunden eine mit Outlook - jaja, lacht nur.

Ich habe schon alles versucht, habe diverse Mailscripte auseinandergepflügt und versucht in das bestehende zu integrieren, leider alles vergeblich.

Ich muss zu meinem Nachteil gestehen, dass ich nicht die "Leuchte" in CGI bin.

Das ganze Shopscript ist aus mehreren Dateien verteilt, der für den Bestellvorgang (Mailversand) relevante Teil folgt hier.

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

eShop - Version 3

~~~~~~~~~~~~~~~~~~~~~

*** copyright by Matthias D. Herold 1998 ***

#--- Modul................: CartOrder.pm

Version..............: UNIX-Mailforwarding [sendmail]

Author...............: Matthias Herold

Letzte Modifikation..: 98-05-31

#--- Information..........: http://www.franken.de/users/bessie/projekte/eshop/

eMail................: herold@bessie.franken.de

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

package CartOrder;

use CartData;
use CartUsers;
use ShopConfig;

sub ExecOrder {
my $user = shift;
my $q = shift;

#############################################################################

#&ReadParse;
$kndmail = $in{'EMail'};

sub ReadParse { local (*in) = @_ if @_;
local ($i, $key, $val);
if ( $ENV{'REQUEST_METHOD'} eq "GET" )
{$in = $ENV{'QUERY_STRING'};}
elsif ($ENV{'REQUEST_METHOD'} eq "POST")
{read(STDIN,$in,$ENV{'CONTENT_LENGTH'});
}
else {
$in = ( grep( !/^-/, @ARGV )) [0];
$in =~ s/\&/&/g; } @in = split(/&/,$in);
foreach $i (0 .. $#in) {
$in[$i] =~ s/+/ /g;
($key, $val) = split(/=/,$in[$i],2);
$key =~ s/%(..)/pack("c",hex($1))/ge;
$val =~ s/%(..)/pack("c",hex($1))/ge;
$in{$key} .= "\0" if (defined($in{$key}));
$in{$key} .= $val;
}
return length($in);
}

#############################################################################

if (!open(MAIL, "| " . $ShopConfig::MISC{'sendmail'} . " -t")) {
require ShopError;
&ShopError::CouldntExec($ShopConfig::MISC{'sendmail'});
}

print MAIL "X-Mailer: tagebuch-center.de" . "\n";
print MAIL "To: " . $ShopConfig::MISC{'toaddr'} . "\n";
print MAIL "CC: " . $kndmail . "\n";
print MAIL "From: " . $ShopConfig::MISC{'fromaddr'} . "\n";
print MAIL "Subject: Tagebuch-Center Online Bestellung\n";
print MAIL "\r\n";

print MAIL "Online Bestellung Tagebuch Center:\r";
print MAIL "-" x 72 , "\r";

my $cartent = {};
my $endprice = 0;
my $fmtline = " %10s | %30s | %11.2f | %11.2f \r";

printf MAIL " %10s | %30s | %11s | %10s \r", "Menge", "Bestellnummer", "Einzelpreis", "Gesamtpreis";
print MAIL "-" x 12, "|" , "-" x 32, "|", "-" x 13 , "|", "-" x 12 , "\r";

my $cartdata = new CartData(1);
$cartdata->UserInit($user->{uid});
while($cartent = $cartdata->UserNext()) {
if ($cartent->{status} eq "N") {
if ($cartent->{amount} > 0) {
printf MAIL $fmtline, $cartent->{amount},
$cartent->{orderinfo},
$cartent->{singleprice},
$cartent->{amount} * $cartent->{singleprice};
if ($ShopConfig::MISC{'printdesc'}) {
my $description = $cartent->{description} . " ";
my $line = "";
while ($description =~ s/^(.{1,30})\s//) {
my $line = $1;
unless ($line =~ /^\s*$/) {
print MAIL " " x 12, "| ", $line;
print MAIL " " x (31-length($line)), "|";
print MAIL " " x 13, "|", " " x 12, "\r";
}
}
print MAIL "-" x 12, "|" , "-" x 32, "|", "-" x 13 ,
"|", "-" x 12 , "\r";
}
$endprice += $cartent->{amount} * $cartent->{singleprice};
}
$cartent->{status} = 'O';
$cartdata->EntryChange($cartent);
}
}
undef $cartdata;

if (!$ShopConfig::MISC{'printdesc'}) {
print MAIL "-" x 12, "|" , "-" x 32, "|", "-" x 13 , "|", "-" x 12 , "\r";
}
printf MAIL "%58s | %11.2f \r", "Zwischensumme", $endprice;
print MAIL "-" x 59, "|", "-" x 12, "\r";

$vers = "4.90";

printf MAIL "%58s | %11.2f \r", "Versand", $vers;
print MAIL "-" x 59, "|", "-" x 12, "\r";

$gesamt = $endprice + $vers;

printf MAIL "%58s | %11.2f \r", "enthaltene MwSt.", $gesamt/"100"*16;
print MAIL "-" x 59, "|", "-" x 12, "\r";

printf MAIL "%58s | %11.2f \r", "Gesamt", $gesamt;
print MAIL "-" x 59, "|", "-" x 12, "\r";

print MAIL "\r\n\r\n";
print MAIL "Persoenliche Daten:\r";
print MAIL "-" x 72, "\r";

$fmtline = "%20s : %s\r";

my $paramname = "";

printf MAIL $fmtline, "Useragent", $user->{browser} if ($user->{browser});
printf MAIL $fmtline, "Kundennummer", $user->{kndnr} if ($user->{kndnr});

foreach $paramname ( $q->param() ) {
if (($paramname !~ /^_/) && ($paramname ne "action")) {
my $value = $q->param($paramname);
printf MAIL $fmtline, $paramname, $value, "\r";
}
}

print MAIL "\r-- \r";

close(MAIL);
}

1;

Sollten mehr Infos nötig sein einfach Schreiben an info@dbrv.de (Der Shop läuft nicht dort)

Besten Dank für eure Aufmerksamkeit und schöne Weihnachtstage sowie einen guten Rutsch ins neue Jahr.

Viele Grüße
Markus

  1. Der Kunde soll auch eine Bestellbestätigung erhalten,

    Das kann das Skript schon:

    print MAIL "X-Mailer: tagebuch-center.de" . "\n";
    print MAIL "To: " . $ShopConfig::MISC{'toaddr'} . "\n";
    print MAIL "CC: " . $kndmail . "\n";

    "Kopie an: Kundenmail" lese ich aus der letzten Zeile. Du kannst die Zeile ja mal in

    print MAIL "CC: info@dbrv.de\n";

    ändern, dann solltest Du auch unter info@dbrv.de eine Kopie erhalten.

    Da es anscheinend mit der Kundenkopie momentan nicht funktioniert, probiere es mit

    print MAIL "CC: " . $user->{kndmail} . "\n";

    analog zu den anderen Benutzerdaten, die später noch ausgegeben werden:

    printf MAIL $fmtline, "Useragent", $user->{browser} if ($user->{browser});
    printf MAIL $fmtline, "Kundennummer", $user->{kndnr} if ($user->{kndnr});

    vorzugsweise eine, die auf vordefinierten z.B. .txt-Templates basiert in denen Platzhalter für die Variablen eingebaut sind.

    Vielleicht meldet sich ja jemand, den Du gegen Bares engagieren kannst.