Reverted menu-left-example.png back to original and cleaned up menu-top-example to...
[freeside.git] / httemplate / browse / part_referral.html
index 6a9f700..27eb545 100755 (executable)
-<%= include("/elements/header.html","Advertising source Listing" ) %>
+<& /elements/header.html, "Advertising source Listing" &>
 
 Where a customer heard about your service. Tracked for informational purposes.
 <BR><BR>
 
-<A HREF="<%= $p %>edit/part_referral.html"><I>Add a new advertising source</I></A>
+<A HREF="<% $p %>edit/part_referral.html"><I>Add a new advertising source</I></A>
 <BR><BR>
 
-<%
-  my $today = timelocal(0, 0, 0, (localtime(time))[3..5] );
-  my %after;
-  tie %after, 'Tie::IxHash',
-    'Today'         =>        0,
-    'Yesterday'     =>    86400, # 60sec * 60min * 24hrs
-    'Past week'     =>   518400, # 60sec * 60min * 24hrs * 6days
-    'Past 30 days'  =>  2505600, # 60sec * 60min * 24hrs * 29days 
-    'Past 60 days'  =>  5097600, # 60sec * 60min * 24hrs * 59days 
-    'Past 90 days'  =>  7689600, # 60sec * 60min * 24hrs * 89days 
-    'Past 6 months' => 15724800, # 60sec * 60min * 24hrs * 182days 
-    'Past year'     => 31486000, # 60sec * 60min * 24hrs * 364days 
-    'Total'         => $today,
-  ;
-  my %before = (
-    'Today'         =>   86400, # 60sec * 60min * 24hrs
-    'Yesterday'     =>       0,
-    'Past week'     =>   86400, # 60sec * 60min * 24hrs
-    'Past 30 days'  =>   86400, # 60sec * 60min * 24hrs
-    'Past 60 days'  =>   86400, # 60sec * 60min * 24hrs
-    'Past 90 days'  =>   86400, # 60sec * 60min * 24hrs
-    'Past 6 months' =>   86400, # 60sec * 60min * 24hrs
-    'Past year'     =>   86400, # 60sec * 60min * 24hrs
-    'Total'         =>   86400, # 60sec * 60min * 24hrs
-  );
-
-  my $curuser = $FS::CurrentUser::CurrentUser;
-  my $extra_sql = $curuser->agentnums_sql;
-  $extra_sql .= ' OR agentnum IS NULL '
-    if $curuser->access_right('Edit global advertising sources');
-
-  $extra_sql = " WHERE $extra_sql";
-
-  my $statement = "SELECT COUNT(*) FROM h_cust_main
-                    WHERE history_action = 'insert'
-                      AND refnum = ?
-                      AND history_date >= ?
-                     AND history_date < ?
-                     AND ". $curuser->agentnums_sql;
-  my $sth = dbh->prepare($statement)
-    or die dbh->errstr;
-
-  my $show_agentnums = scalar($curuser->agentnums);
-
+<% $cgi->param('showdisabled')
+    ? do { $cgi->param('showdisabled', 0);
+           '( <a href="'. $cgi->self_url. '">hide disabled advertising sources</a> )'; }
+    : do { $cgi->param('showdisabled', 1);
+           '( <a href="'. $cgi->self_url. '">show disabled advertising sources</a> )'; }
 %>
 
-<%= include('/elements/table-grid.html') %>
+% ###
+% # Header
+% ###
 
-<% my $bgcolor1 = '#eeeeee';
-   my $bgcolor2 = '#ffffff';
-   my $bgcolor = '';
-%>
+<& /elements/table-grid.html &>
+% my $bgcolor1 = '#eeeeee';
+%   my $bgcolor2 = '#ffffff';
+%   my $bgcolor = '';
 
 <TR>
   <TH CLASS="grid" BGCOLOR="#cccccc" COLSPAN=2 ROWSPAN=2>Advertising source</TH>
-  <% if ( $show_agentnums ) { %>
+
+%       if ( ! $cgi->param('showdisabled') ) { 
+          <TH CLASS="grid" BGCOLOR="#cccccc" ALIGN="center" ROWSPAN=2></TH>
+%       }
+
+% if ( $show_agentnums ) { 
     <TH CLASS="grid" BGCOLOR="#cccccc" ROWSPAN=2>Agent</TH>
-  <% } %>
-  <TH CLASS="grid" BGCOLOR="#cccccc" COLSPAN=<%= scalar(keys %after) %>>Customers</TH>
-</TR>
-<% for my $period ( keys %after ) { %>
-  <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1><%= $period %></FONT></TH>
-<% } %>
+% } 
+
+  <TH CLASS="grid" BGCOLOR="#cccccc" COLSPAN=<% scalar(keys %after) %>>Prospects, Customers and Packages</TH>
 </TR>
+% for my $period ( keys %after ) { 
 
-<%
-foreach my $part_referral (
+  <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1><% $period %></FONT></TH>
+% } 
 
-  qsearch({
-    'table'     => 'part_referral',
-    'extra_sql' => "$extra_sql ORDER BY refnum",
-  })
+</TR>
 
-) {
+% ###
+% # Rows
+% ###
 
-  if ( $bgcolor eq $bgcolor1 ) {
-    $bgcolor = $bgcolor2;
-  } else {
-    $bgcolor = $bgcolor1;
-  }
+%foreach my $part_referral ( FS::part_referral->all_part_referral(1,!scalar($cgi->param('showdisabled'))) ) {
+%
+%  if ( $bgcolor eq $bgcolor1 ) {
+%    $bgcolor = $bgcolor2;
+%  } else {
+%    $bgcolor = $bgcolor1;
+%  }
+%
+%  $a = 0;
 
-%>
       <TR>
 
-        <TD CLASS="grid" BGCOLOR="<%= $bgcolor %>"><A HREF="<%= $p %>edit/part_referral.html?<%= $part_referral->refnum %>">
-          <%= $part_referral->refnum %></A></TD>
-        <TD CLASS="grid" BGCOLOR="<%= $bgcolor %>"><A HREF="<%= $p %>edit/part_referral.html?<%= $part_referral->refnum %>">
-          <%= $part_referral->referral %></A></TD>
-
-        <% if ( $show_agentnums ) { %>
-          <TD CLASS="grid" BGCOLOR="<%= $bgcolor %>"><%= $part_referral->agentnum ? $part_referral->agent->agent : '(global)' %></TD>
-        <% } %>
-
-        <% for my $period ( keys %after ) {
-          $sth->execute( $part_referral->refnum,
-                         $today-$after{$period},
-                         $today+$before{$period},
-          ) or die $sth->errstr;
-          my $number = $sth->fetchrow_arrayref->[0];
-        %>
-          <TD CLASS="grid" BGCOLOR="<%= $bgcolor %>" ALIGN="right"><%= $number %></TD>
-        <% } %>
+        <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+% if ( $part_referral->agentnum || $curuser->access_right('Edit global advertising sources') ) { 
+%            $a++;
+%          
+
+            <A HREF="<% $p %>edit/part_referral.html?<% $part_referral->refnum %>">
+% } 
+
+          <% $part_referral->refnum %><% $a ? '</A>' : '' %></TD>
+        <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+% if ( $a ) { 
+
+            <A HREF="<% $p %>edit/part_referral.html?<% $part_referral->refnum %>">
+% } 
+
+          <% $part_referral->referral %><% $a ? '</A>' : '' %></TD>
+
+%       if ( ! $cgi->param('showdisabled') ) { 
+          <TD CLASS="grid" BGCOLOR="<% $bgcolor %>" ALIGN="center">
+            <% $part_referral->disabled
+                 ? '<FONT COLOR="#FF0000"><B>DISABLED</B></FONT>'
+                 : '<FONT COLOR="#00CC00"><B>Active</B></FONT>'
+            %>
+          </TD>
+%       }
+
+% if ( $show_agentnums ) { 
+
+          <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"><% $part_referral->agentnum ? $part_referral->agent->agent : '(global)' %></TD>
+% } 
+% for my $period ( keys %after ) {
+%          my @param = ( $part_referral->refnum,
+%                        $today-$after{$period},
+%                        $today+$before{$period},
+%                      );
+%          $prospect_sth->execute(@param) or die $prospect_sth->errstr;
+%          my $num_prospect = $prospect_sth->fetchrow_arrayref->[0];
+%          $cust_sth->execute(@param) or die $cust_sth->errstr;
+%          my $num_cust = $cust_sth->fetchrow_arrayref->[0];
+%          $pkg_sth->execute(@param) or die $pkg_sth->errstr;
+%          my $num_pkg = $pkg_sth->fetchrow_arrayref->[0];
+
+          <TD CLASS="inv" BGCOLOR="<% $bgcolor %>" ALIGN="right">
+            <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>
+              <TR>
+                <TD ALIGN="right"><B><% $num_prospect %></B></TD>
+                <TD ALIGN="left">&nbsp;prospects&nbsp;</TD>
+              </TR>
+              <TR>
+                <TD ALIGN="right"><B><% $num_cust %></B></TD>
+                <TD ALIGN="left">&nbsp;customers&nbsp;</TD>
+              </TR>
+              <TR>
+                <TD ALIGN="right"><B><% $num_pkg %></B></TD>
+                <TD ALIGN="left">&nbsp;packages&nbsp;</TD>
+              </TR>
+            </TABLE>
+          </TD>
+% } 
+
       </TR>
-<% } %>
+% } 
+
+
+% ###
+% # Bottom Totals
+% ###
+
+%  $prospect_statement =~ s/AND refnum = \?//;
+%  $prospect_sth = dbh->prepare($prospect_statement)
+%    or die dbh->errstr;
+%
+%  $cust_statement =~ s/AND refnum = \?//;
+%  $cust_sth = dbh->prepare($cust_statement)
+%    or die dbh->errstr;
+%
+%  $pkg_statement =~ s/AND h_pkg_referral\.refnum = \?//;
+%  $pkg_sth = dbh->prepare($pkg_statement)
+%    or die dbh->errstr;
 
-<%
-  $statement =~ s/AND refnum = \?//;
-  $sth = dbh->prepare($statement)
-    or die dbh->errstr;
-%>
       <TR>
-        <TD BGCOLOR="#dddddd" ALIGN="center" COLSPAN=3><B>Total</B></TD>
-        <% for my $period ( keys %after ) {
-          $sth->execute( $today-$after{$period},
-                         $today+$before{$period},
-          ) or die $sth->errstr;
-          my $number = $sth->fetchrow_arrayref->[0];
-        %>
-          <TD BGCOLOR="#dddddd" ALIGN="right"><B><%= $number %><B></TD>
-        <% } %>
+        <TD BGCOLOR="#dddddd" ALIGN="center" COLSPAN=<% 2 + $show_agentnums + ! $cgi->param('showdisabled') %><B>Total</B></TD>
+% for my $period ( keys %after ) {
+%          my @param = ( $today-$after{$period},
+%                        $today+$before{$period},
+%                      );
+%          $prospect_sth->execute(@param) or die $prospect_sth->errstr;
+%          my $num_prospect = $prospect_sth->fetchrow_arrayref->[0];
+%          $cust_sth->execute( @param ) or die $cust_sth->errstr;
+%          my $num_cust = $cust_sth->fetchrow_arrayref->[0];
+%          $pkg_sth->execute(@param) or die $pkg_sth->errstr;
+%          my $num_pkg = $pkg_sth->fetchrow_arrayref->[0];
+
+          <TD CLASS="inv" BGCOLOR="#dddddd" ALIGN="right">
+            <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>
+              <TR>
+                <TD ALIGN="right"><B><% $num_prospect %></B></TD>
+                <TD ALIGN="left">&nbsp;prospects&nbsp;</TD>
+              </TR>
+              <TR>
+                <TD ALIGN="right"><B><% $num_cust %></B></TD>
+                <TD ALIGN="left">&nbsp;customers&nbsp;</TD>
+              </TR>
+              <TR>
+                <TD ALIGN="right"><B><% $num_pkg %></B></TD>
+                <TD ALIGN="left">&nbsp;packages&nbsp;</TD>
+              </TR>
+            </TABLE>
+          </TD>
+
+% } 
+
       </TR>
     </TABLE>
-  </BODY>
-</HTML>
+
+<& /elements/footer.html &>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Edit advertising sources')
+      || $FS::CurrentUser::CurrentUser->access_right('Edit global advertising sources');
+
+my $today = timelocal(0, 0, 0, (localtime(time))[3..5] );
+
+tie my %after, 'Tie::IxHash',
+  'Today'         =>        0,
+  'Yesterday'     =>    86400, # 60sec * 60min * 24hrs
+  'Past week'     =>   518400, # 60sec * 60min * 24hrs * 6days
+  'Past 30 days'  =>  2505600, # 60sec * 60min * 24hrs * 29days 
+  'Past 60 days'  =>  5097600, # 60sec * 60min * 24hrs * 59days 
+  'Past 90 days'  =>  7689600, # 60sec * 60min * 24hrs * 89days 
+  'Past 6 months' => 15724800, # 60sec * 60min * 24hrs * 182days 
+  'Past year'     => 31486000, # 60sec * 60min * 24hrs * 364days 
+  'Total'         => $today,
+;
+my %before = (
+  'Today'         =>   86400, # 60sec * 60min * 24hrs
+  'Yesterday'     =>       0,
+  'Past week'     =>   86400, # 60sec * 60min * 24hrs
+  'Past 30 days'  =>   86400, # 60sec * 60min * 24hrs
+  'Past 60 days'  =>   86400, # 60sec * 60min * 24hrs
+  'Past 90 days'  =>   86400, # 60sec * 60min * 24hrs
+  'Past 6 months' =>   86400, # 60sec * 60min * 24hrs
+  'Past year'     =>   86400, # 60sec * 60min * 24hrs
+  'Total'         =>   86400, # 60sec * 60min * 24hrs
+);
+
+my $curuser = $FS::CurrentUser::CurrentUser;
+
+my $show_agentnums = ( scalar($curuser->agentnums) > 1 );
+
+my $prospect_statement = "SELECT COUNT(*) FROM h_prospect_main
+                           WHERE history_action = 'insert'
+                             AND refnum = ?
+                             AND history_date >= ?
+                             AND history_date < ?
+                             AND ". $curuser->agentnums_sql;
+my $prospect_sth = dbh->prepare($prospect_statement)
+  or die dbh->errstr;
+
+my $cust_statement = "SELECT COUNT(*) FROM h_cust_main
+                       WHERE history_action = 'insert'
+                         AND refnum = ?
+                         AND history_date >= ?
+                         AND history_date < ?
+                         AND ". $curuser->agentnums_sql;
+my $cust_sth = dbh->prepare($cust_statement)
+  or die dbh->errstr;
+
+my $pkg_statement = "SELECT COUNT(*) FROM h_pkg_referral
+                       LEFT JOIN cust_pkg  USING ( pkgnum )
+                       LEFT JOIN cust_main USING ( custnum )
+                       WHERE history_action = 'insert'
+                         AND h_pkg_referral.refnum = ?
+                         AND history_date >= ?
+                         AND history_date < ?
+                         AND ". $curuser->agentnums_sql;
+my $pkg_sth = dbh->prepare($pkg_statement)
+  or die dbh->errstr;
+
+</%init>