customers by otaker report (ugly search/cust_main.cgi mods; revert if they
authorivan <ivan>
Mon, 25 Mar 2002 14:59:06 +0000 (14:59 +0000)
committerivan <ivan>
Mon, 25 Mar 2002 14:59:06 +0000 (14:59 +0000)
cause problems)

httemplate/index.html
httemplate/search/cust_main-otaker.cgi [new file with mode: 0755]
httemplate/search/cust_main.cgi

index 7b2970d..4558a32 100644 (file)
               <LI> <A HREF="search/report_cc.html">credit card receipts</A>
               <LI> <A HREF="search/report_credit.html">credit memos</A>
             </UL>
+    Customers
+      <UL>
+        <LI><A HREF="search/cust_main-otaker.cgi">Search customers by otaker</A>
+      </UL>
     <BR>
     </TD></TR>
     </TABLE>
diff --git a/httemplate/search/cust_main-otaker.cgi b/httemplate/search/cust_main-otaker.cgi
new file mode 100755 (executable)
index 0000000..b7173c4
--- /dev/null
@@ -0,0 +1,29 @@
+<HTML>
+  <HEAD>
+    <TITLE>Customer Search</TITLE>
+  </HEAD>
+  <BODY BGCOLOR="#e8e8e8">
+    <FONT SIZE=7>
+      Customer Search
+    </FONT>
+    <BR>
+    <FORM ACTION="cust_main.cgi" METHOD="post">
+      Search for <B>Order taker</B>: 
+      <INPUT TYPE="hidden" NAME="otaker_on" VALUE="TRUE">
+      <% my $dbh = dbh;
+         my $sth = dbh->prepare("SELECT DISTINCT otaker FROM cust_main")
+           or eidiot $dbh->errstr;
+         $sth->execute() or eidiot $sth->errstr;
+#         my @otakers = map { $_->[0] } @{$sth->selectall_arrayref};
+      %>
+      <SELECT NAME="otaker">
+      <% my $otaker; while ( $otaker = $sth->fetchrow_arrayref ) { %>
+        <OPTION><%= $otaker->[0] %></OTAKER>
+      <% } %>
+      </SELECT>
+      <P><INPUT TYPE="submit" VALUE="Search">
+
+    </FORM>
+  </BODY>
+</HTML>
+
index f153f02..7995698 100755 (executable)
@@ -48,19 +48,34 @@ $limit .= " OFFSET $offset" if $offset;
 my $total = 0;
 
 my(@cust_main, $sortby, $orderby);
-if ( $cgi->param('browse') ) {
-  my $query = $cgi->param('browse');
-  if ( $query eq 'custnum' ) {
-    $sortby=\*custnum_sort;
-    $orderby = 'ORDER BY custnum';
-  } elsif ( $query eq 'last' ) {
-    $sortby=\*last_sort;
-    $orderby = 'ORDER BY last';
-  } elsif ( $query eq 'company' ) {
-    $sortby=\*company_sort;
-    $orderby = 'ORDER BY company';
+if ( $cgi->param('browse')
+     || $cgi->param('otaker_on')
+) {
+
+  my %search = ();
+  if ( $cgi->param('browse') ) {
+    my $query = $cgi->param('browse');
+    if ( $query eq 'custnum' ) {
+      $sortby=\*custnum_sort;
+      $orderby = 'ORDER BY custnum';
+    } elsif ( $query eq 'last' ) {
+      $sortby=\*last_sort;
+      $orderby = 'ORDER BY last';
+    } elsif ( $query eq 'company' ) {
+      $sortby=\*company_sort;
+      $orderby = 'ORDER BY company';
+    } else {
+      die "unknown browse field $query";
+    }
   } else {
-    die "unknown browse field $query";
+    $sortby = \*last_sort; #??
+    $orderby = 'ORDER BY last'; #??
+    if ( $cgi->param('otaker_on') ) {
+      $cgi->param('otaker') =~ /^(\w{1,32})$/ or eidiot "Illegal otaker\n";
+      $search{otaker} = $1;
+    } else {
+      die "unknown query...";
+    }
   }
 
   my $ncancelled = '';
@@ -72,7 +87,7 @@ if ( $cgi->param('browse') ) {
     #grep { $_->ncancelled_pkgs || ! $_->all_pkgs }
     #needed for MySQL???    OR cust_pkg.cancel = \"\"
     $ncancelled = "
-      WHERE 0 < ( SELECT COUNT(*) FROM cust_pkg
+       0 < ( SELECT COUNT(*) FROM cust_pkg
                     WHERE cust_pkg.custnum = cust_main.custnum
                       AND ( cust_pkg.cancel IS NULL
                             OR cust_pkg.cancel = 0
@@ -84,14 +99,32 @@ if ( $cgi->param('browse') ) {
     ";
   }
 
-  my $statement = "SELECT COUNT(*) FROM cust_main $ncancelled";
+  #EWWWWWW
+  my $qual = join(' AND ',
+            map { "$_ = ". dbh->quote($search{$_}) } keys %search );
+
+  if ( $ncancelled ) {
+    $qual .= ' AND ' if $qual;
+    $qual .= $ncancelled;
+  }
+    
+  $qual = " WHERE $qual" if $qual;
+
+  my $statement = "SELECT COUNT(*) FROM cust_main $qual";
   my $sth = dbh->prepare($statement)
     or die dbh->errstr. " doing $statement";
   $sth->execute or die "Error executing \"$statement\": ". $sth->errstr;
 
   $total = $sth->fetchrow_arrayref->[0];
 
-  my @just_cust_main = qsearch('cust_main',{}, '',
+  if ( $ncancelled ) {
+    if ( %search ) {
+      $ncancelled = " AND $ncancelled";
+    } else {
+      $ncancelled = " WHERE $ncancelled";
+    }
+  }
+  my @just_cust_main = qsearch('cust_main', \%search, '',
     "$ncancelled $orderby $limit"
   );