 |
Page 1 of 1
|
Author |
Message |
hsiehlc
Newbie - One Blade
Joined: 11 Jun 2005
Posts: 18
Location: Taipei, Taiwan
|
 add-on management tool for search in order data
Dear all,
I wrote a script to search order data in Agora system, and I would like to share it for everyone to use. Don't know where to put it so just paste it here.
You should be able to put it right under the protected/ directory, and it should work fine.
I have modify some required order fields in my agora system, so not sure if my are still the same with the standard agora, but they should be easy to modify.
The filename I named this script is "search_orders-ext_lib.pl"
Code:#/usr/local/bin/perl -T
$versions{'search_orders'} = "20060309";
{
local ($modname) = 'search_orders';
®ister_extension($modname,"Search",$versions{$modname});
&add_settings_choice("Search Orders"," Search Orders ",
"SearchOrders");
®ister_menu('SearchInput',"display_search_result",
$modname,"Search Result");
®ister_menu('SearchOrders',"search_Orders",
$modname,"Search from Order Logfiles");
&add_item_to_manager_menu("Search Orders","SearchOrders=yes","");
}
############################################################
sub display_search_result
{
&ReadParse;
$sc_cn_name = "";
$sc_cn_street_addr="";
$sc_cn_city_addr="";
$sc_cn_postalcode="蝔嶜";
$sc_cn_email="?";
$sc_cn_phone="";
$sc_cn_order_num="?嶜朅";
$of_dir='./log_files';
$inorder = 0;
$i = 0;
$j = 0;
foreach $file (@arr = <$of_dir/littlewonders.log*>) {
open F, "$file" or die "can't open $file\n";
while(<F>) {
if (/^\*-\*-\*-/) {
$inorder = 1;
}
if ( $inorder ) {
$orders{$i}[$j++] = $_;
if (/\Q$sc_cn_name\E:\s+(.+)$/) {
$save = $1;
$cust_data{$i}{NAME}=$save;
if ($1 =~ /\Q$in{'Search_Full_Name'}\E/) {
$checked_keys{$i}=1;
}
}
if ( /\Q$sc_cn_email\E:\s+(.+)$/ ) {
$save = $1;
$cust_data{$i}{EMAIL}=$save;
if ($1 =~ /\Q$in{'Search_Email_Address'}\E/i) {
$checked_keys{$i}=1;
}
}
if ( /\Q$sc_cn_order_num\E:\s+(.+)$/ ) {
$save = $1;
$cust_data{$i}{ORDERNO}=$save;
if ($1 == $in{'Search_Order_Number'}) {
$checked_keys{$i}=1;
}
}
if ( /\Q$sc_cn_phone\E:\s+(.+)$/ ) {
$save = $1;
$cust_data{$i}{TELNO}=$save;
$save =~ s/\D//g;
$clean = $in{'Search_Phone_Number'};
$clean =~ s/\D//g;
if ($save =~ /\Q$clean\E/) {
$checked_keys{$i}=1;
}
}
$cust_data{$i}{ADDRCITY}=$1 if /\Q$sc_cn_city_addr\E:\s+(.+)$/;
$cust_data{$i}{ADDRSTREET}=$1 if /\Q$sc_cn_street_addr\E:\s+(.+)$/;
$cust_data{$i}{POSTAL}=$1 if /\Q$sc_cn_postalcode\E:\s+(.+)$/;
}
if (/^-\*-\*-\*/) {
$inorder= 0;
$j= 0;
$i++;
}
}
close F;
}
print &$manager_page_header("Search Data from Orders","","","","");
print "<center><table width=600 BORDER=1 CELLPADDING=0><tr><td>";
if ($in{'Show_Details'} =~ /yes/i) {
foreach $key (sort keys %checked_keys) {
foreach $line (@{$orders{$key}}) {
print "<a>$line</a><br>";
}
}
} else {
foreach $key (sort keys %checked_keys) {
print "<a>", "-" x 118, "</a><br>";
print "<a>$sc_cn_order_num: $cust_data{$key}{ORDERNO} $orders{$key}[1]</a><br>";
print "<a>", "-" x 118, "</a><br>";
print "<a>$sc_cn_name: $cust_data{$key}{NAME}</a><br>";
print "<a>$sc_cn_email: $cust_data{$key}{EMAIL}</a><br>";
print "<a>$sc_cn_phone: $cust_data{$key}{TELNO}</a><br>";
print "<a>$sc_cn_postalcode: $cust_data{$key}{POSTAL}</a><br>";
print "<a>$sc_cn_street_addr: $cust_data{$key}{ADDRCITY}";
print "$cust_data{$key}{ADDRSTREET}</a><br>";
}
}
print "</td></tr></table></center>";
print &$manager_page_footer;
}
#########################################################################
sub search_Orders
{
print &$manager_page_header("Search Data from Orders","","","","");
print <<ENDOFTEXT;
<FORM METHOD="POST" ACTION="manager.cgi">
<CENTER>
<TABLE WIDTH="600" BORDER="0" CELLPADDING="0">
<TR>
<TD COLSPAN="2"><FONT SIZE="-1"><hr></FONT></TD>
</TR>
<TR BGCOLOR="#EFEFEF">
<TD COLSPAN="2"><font size="+1">Search Customer Database:</font></TD>
</TR>
<TR>
<TD COLSPAN="2"><FONT SIZE="-1"><hr></FONT></TD>
</TR>
<TR>
<TD WIDTH="150"> Name:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Full_Name"
VALUE=""
SIZE="30" MAXLENGTH="30"></TD>
</TR>
<TR>
<TD WIDTH="150"> Phone #:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Phone_Number"
VALUE=""
SIZE="30">
</TR>
<TR>
<TD WIDTH="150"> Email addr:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Email_Address"
VALUE=""
SIZE="60"></TD>
</TR>
<TR>
<TD WIDTH="150"> Order #:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Order_Number"
VALUE=""
SIZE="10" MAXLENGTH="10"></TD>
</TR>
<TR>
<TD> </TD>
<TD><input type="checkbox" name="Show_Details" value="YES">Show Order Details</TD>
</TR>
<TR>
<TD COLSPAN="2"><FONT SIZE="-1"><hr></FONT></TD>
</TR>
</TABLE>
</CENTER>
<CENTER>
<FONT FACE=Verdana SIZE=2>
<P>
<INPUT TYPE=submit NAME = "SearchInput" VALUE = " Search ">
<BR>
</CENTER>
</FORM>
ENDOFTEXT
print &$manager_page_footer;
}
############################################################
1; #We are a library
|
Fri Mar 10, 06 2:10 am |
|
 |
hsiehlc
Newbie - One Blade
Joined: 11 Jun 2005
Posts: 18
Location: Taipei, Taiwan
|
Sorry, I put on the wrong version, the one for my Chinese Agora system. Now here is the one for English version:
Code:#/usr/local/bin/perl -T
$versions{'search_orders'} = "20060309";
{
local ($modname) = 'search_orders';
®ister_extension($modname,"Search",$versions{$modname});
&add_settings_choice("Search Orders"," Search Orders ",
"SearchOrders");
®ister_menu('SearchInput',"display_search_result",
$modname,"Search Result");
®ister_menu('SearchOrders',"search_Orders",
$modname,"Search from Order Logfiles");
&add_item_to_manager_menu("Search Orders","SearchOrders=yes","");
}
############################################################
sub display_search_result
{
&ReadParse;
$sc_cn_name = "NAME";
$sc_cn_street_addr="ADDRESS";
$sc_cn_city_addr="CITY";
$sc_cn_postalcode="POSTALCODE";
$sc_cn_email="EMAIL";
$sc_cn_phone="PHONE";
$sc_cn_order_num="INVOICE";
$of_dir='./log_files';
$inorder = 0;
$i = 0;
$j = 0;
foreach $file (@arr = <$of_dir/littlewonders.log*>) {
open F, "$file" or die "can't open $file\n";
while(<F>) {
if (/^\*-\*-\*-/) {
$inorder = 1;
}
if ( $inorder ) {
$orders{$i}[$j++] = $_;
if (/\Q$sc_cn_name\E:\s+(.+)$/) {
$save = $1;
$cust_data{$i}{NAME}=$save;
if ($1 =~ /\Q$in{'Search_Full_Name'}\E/i) {
$checked_keys{$i}=1;
}
}
if ( /\Q$sc_cn_email\E:\s+(.+)$/ ) {
$save = $1;
$cust_data{$i}{EMAIL}=$save;
if ($1 =~ /\Q$in{'Search_Email_Address'}\E/i) {
$checked_keys{$i}=1;
}
}
if ( /\Q$sc_cn_order_num\E:\s+(.+)$/ ) {
$save = $1;
$cust_data{$i}{ORDERNO}=$save;
if ($1 == $in{'Search_Order_Number'}) {
$checked_keys{$i}=1;
}
}
if ( /\Q$sc_cn_phone\E:\s+(.+)$/ ) {
$save = $1;
$cust_data{$i}{TELNO}=$save;
$save =~ s/\D//g;
$clean = $in{'Search_Phone_Number'};
$clean =~ s/\D//g;
if ($save =~ /\Q$clean\E/) {
$checked_keys{$i}=1;
}
}
$cust_data{$i}{ADDRCITY}=$1 if /\Q$sc_cn_city_addr\E:\s+(.+)$/;
$cust_data{$i}{ADDRSTREET}=$1 if /\Q$sc_cn_street_addr\E:\s+(.+)$/;
$cust_data{$i}{POSTAL}=$1 if /\Q$sc_cn_postalcode\E:\s+(.+)$/;
}
if (/^-\*-\*-\*/) {
$inorder= 0;
$j= 0;
$i++;
}
}
close F;
}
print &$manager_page_header("Search Data from Orders","","","","");
print "<center><table width=600 BORDER=1 CELLPADDING=0><tr><td>";
if ($in{'Show_Details'} =~ /yes/i) {
foreach $key (sort keys %checked_keys) {
foreach $line (@{$orders{$key}}) {
print "<a>$line</a><br>";
}
}
} else {
foreach $key (sort keys %checked_keys) {
print "<a>", "-" x 118, "</a><br>";
print "<a><b>$sc_cn_order_num:</b> $cust_data{$key}{ORDERNO} $orders{$key}[1]</a><br>";
print "<a>", "-" x 118, "</a><br>";
print "<a><b>$sc_cn_name:</b> $cust_data{$key}{NAME}</a><br>";
print "<a><b>$sc_cn_email:</b> $cust_data{$key}{EMAIL}</a><br>";
print "<a><b>$sc_cn_phone:</b> $cust_data{$key}{TELNO}</a><br>";
print "<a><b>$sc_cn_postalcode:</b> $cust_data{$key}{POSTAL}</a><br>";
print "<a><b>$sc_cn_street_addr:</b> $cust_data{$key}{ADDRSTREET}";
print ", $cust_data{$key}{ADDRCITY}</a><br>";
}
}
print "</td></tr></table></center>";
print &$manager_page_footer;
}
#########################################################################
sub search_Orders
{
print &$manager_page_header("Search Data from Orders","","","","");
print <<ENDOFTEXT;
<FORM METHOD="POST" ACTION="manager.cgi">
<CENTER>
<TABLE WIDTH="600" BORDER="0" CELLPADDING="0">
<TR>
<TD COLSPAN="2"><FONT SIZE="-1"><hr></FONT></TD>
</TR>
<TR BGCOLOR="#EFEFEF">
<TD COLSPAN="2"><font size="+1">Search Customer Database:</font></TD>
</TR>
<TR>
<TD COLSPAN="2"><FONT SIZE="-1"><hr></FONT></TD>
</TR>
<TR>
<TD WIDTH="150"> Name:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Full_Name"
VALUE=""
SIZE="30" MAXLENGTH="30"></TD>
</TR>
<TR>
<TD WIDTH="150"> Phone #:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Phone_Number"
VALUE=""
SIZE="30">
</TR>
<TR>
<TD WIDTH="150"> Email addr:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Email_Address"
VALUE=""
SIZE="60"></TD>
</TR>
<TR>
<TD WIDTH="150"> Order #:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Order_Number"
VALUE=""
SIZE="10" MAXLENGTH="10"></TD>
</TR>
<TR>
<TD> </TD>
<TD><input type="checkbox" name="Show_Details" value="YES">Show Order Details</TD>
</TR>
<TR>
<TD COLSPAN="2"><FONT SIZE="-1"><hr></FONT></TD>
</TR>
</TABLE>
</CENTER>
<CENTER>
<FONT FACE=Verdana SIZE=2>
<P>
<INPUT TYPE=submit NAME = "SearchInput" VALUE = " Search ">
<BR>
</CENTER>
</FORM>
ENDOFTEXT
print &$manager_page_footer;
}
############################################################
1; #We are a library
|
Fri Mar 10, 06 2:14 am |
|
 |
hsiehlc
Newbie - One Blade
Joined: 11 Jun 2005
Posts: 18
Location: Taipei, Taiwan
|
oh, one more thing ...
you need to modify the name of the order logfile ... mine is "littlewonders.log" in the code ...
|
Fri Mar 10, 06 2:16 am |
|
 |
Dan
Guest
|
very cool! thank you for sharing. if i ever get more than one sale then searching a huge log would be a great asset. grin. just teasing.
this is pretty cool.
thanks!
d
|
Fri Mar 10, 06 8:04 am |
|
 |
hsiehlc
Newbie - One Blade
Joined: 11 Jun 2005
Posts: 18
Location: Taipei, Taiwan
|
My pleasure ...
I actually use this tool for my wife's online shop, and it is very good for getting information we need ... when the customer calls and asking questions about their order ... especially we are getting a better business now
|
Tue Mar 21, 06 8:45 pm |
|
 |
Dan
Guest
|
oh yeah, i remember little wonders. great to hear business is picking up!
thanks again for the script.
d
|
Thu Mar 23, 06 2:11 am |
|
 |
hsiehlc
Newbie - One Blade
Joined: 11 Jun 2005
Posts: 18
Location: Taipei, Taiwan
|
Thanks a lot!
Just FYI, the shop has been moved to a registered domain http://littlewonders.com.tw
|
Thu Apr 13, 06 10:38 pm |
|
 |
Rik
Guest
|
 Search Orders
Hi,
Tried to implement this clever idea but get this :
Error loading library ./protected/search_orders-ext_lib.pl:
Can't find string terminator "ENDOFTEXT" anywhere before EOF at ./protected/search_orders-ext_lib.pl line 118. Compilation failed in require at (eval 22) line 1.
Please fix the error and try again.
Regards,
Rik
|
Fri Sep 22, 06 8:57 am |
|
 |
scottcrew
Moderator
Joined: 13 Feb 2004
Posts: 7516
Location: The West Side of MI USA
|
Rik,
I don't know what you may have used to edit or create this file, but it may be that, or you didn't get all of the code, or it wasn't uploaded in ASCII...
HTH!
_________________ God Bless!
Bonnie - AgoraCart Moderator
Get a Gold Membership
|
Fri Sep 22, 06 9:30 am |
 |
 |
|
The time now is Fri May 02, 25 10:28 am | All times are GMT - 7 Hours
|
Page 1 of 1
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|