summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/cust_attachment.pm2
-rw-r--r--httemplate/elements/menu.html2
-rwxr-xr-xhttemplate/search/cust_attachment.html (renamed from httemplate/browse/cust_attachment.html)70
-rw-r--r--httemplate/search/report_cust_attachment.html42
4 files changed, 95 insertions, 21 deletions
diff --git a/FS/FS/cust_attachment.pm b/FS/FS/cust_attachment.pm
index 5e5e07673..8f6278960 100644
--- a/FS/FS/cust_attachment.pm
+++ b/FS/FS/cust_attachment.pm
@@ -1,7 +1,7 @@
package FS::cust_attachment;
use strict;
-use base qw( FS::otaker_Mixin FS::Record );
+use base qw( FS::cust_main_Mixin FS::otaker_Mixin FS::Record );
use Carp;
use FS::Record qw( qsearch qsearchs );
use FS::Conf;
diff --git a/httemplate/elements/menu.html b/httemplate/elements/menu.html
index d7fad4b5d..9bc3582a8 100644
--- a/httemplate/elements/menu.html
+++ b/httemplate/elements/menu.html
@@ -495,7 +495,7 @@ $report_menu{'SQL Query'} = [ $fsurl.'search/report_sql.html', 'SQL Query']
tie my %tools_customers, 'Tie::IxHash', ();
$tools_customers{'Appointments'} = [ $fsurl.'rt/Search/Schedule.html?LengthMin=0', 'View appointment schedule' ]
if $curuser->access_right('View appointments');
-$tools_customers{'Attachments'} = [ $fsurl.'browse/cust_attachment.html', 'View customer attachments' ]
+$tools_customers{'Attachments'} = [ $fsurl.'search/cust_attachment.html', 'View customer attachments' ]
if !$conf->config('disable_cust_attachment') and $curuser->access_right('View attachments') and $curuser->access_right('Browse attachments');
$tools_customers{'Customer email settings'} = [ $fsurl.'misc/manage_cust_email.html' ]
if $curuser->access_right('Edit customer');
diff --git a/httemplate/browse/cust_attachment.html b/httemplate/search/cust_attachment.html
index f81ec1b6b..7c34733a0 100755
--- a/httemplate/browse/cust_attachment.html
+++ b/httemplate/search/cust_attachment.html
@@ -1,4 +1,4 @@
-<% include( 'elements/browse.html',
+<% include( 'elements/search.html',
'title' => 'Attachments',
'menubar' => '',
'name' => ($disabled ? 'deleted' : '') .' attachments',
@@ -11,13 +11,13 @@
<INPUT TYPE="hidden" NAME="orderby" VALUE="$orderby">
<INPUT TYPE="hidden" NAME="show_deleted" VALUE="$disabled">!
,
- 'query' => { 'table' => 'cust_attachment',
- 'hashref' => $hashref,
- 'order_by' => 'ORDER BY '.$orderby,
- },
+ 'query' => $query,
'count_query' => $count_query,
'header' => [ selflink('#',orderby => 'attachnum'),
- selflink('Customer',orderby => 'custnum'),
+ #selflink('Customer',orderby => 'custnum'),
+ FS::UI::Web::cust_header(
+ $cgi->param('cust_fields')
+ ),
selflink('Date',orderby => '_date'),
selflink('Filename',orderby => 'filename'),
selflink('Size',orderby => 'length(body)'),
@@ -27,7 +27,8 @@
],
'fields' => [
'attachnum',
- $sub_cust,
+ #$sub_cust,
+ \&FS::UI::Web::cust_fields,
$sub_date,
'filename',
$sub_size,
@@ -36,14 +37,30 @@
$sub_checkbox,
],
'links' => [ '',
- [ $p.'view/cust_main.cgi?', 'custnum' ],
+ ( map { $_ ne 'Cust. Status' ? $clink : '' }
+ FS::UI::Web::cust_header(
+ $cgi->param('cust_fields')
+ )
+ ),
],
'link_onclicks' => [
'',
- '',
+ ( map '', FS::UI::Web::cust_header(
+ $cgi->param('cust_fields')
+ )
+ ),
'',
$sub_edit_link,
],
+ 'color' => [
+ '',
+ FS::UI::Web::cust_colors(),
+ ],
+ 'style' => [
+ '',
+ FS::UI::Web::cust_styles(),
+ ],
+ 'align' => 'r'. FS::UI::Web::cust_aligns(),
#'links' => [
# '',
@@ -90,20 +107,35 @@ else {
}
}
-my $hashref = $disabled ?
- { disabled => { op => '>', value => 0 } } :
- { disabled => '' };
-
-my $count_query = 'SELECT COUNT(*) FROM cust_attachment WHERE '. ($disabled ?
- 'disabled > 0' : 'disabled IS NULL');
-
my $orderby = $cgi->param('orderby') || 'custnum';
-my $sub_cust = sub {
- my $c = qsearchs('cust_main', { custnum => shift->custnum } );
- return $c ? encode_entities($c->name) : '<FONT COLOR="red"><B>(not found)</B></FONT>';
+my $extra_sql = '';
+if ( $cgi->param('agentnum') && $cgi->param('agentnum') =~ /^(\d+)$/ ) {
+ $extra_sql = " AND agentnum = $1 ";
+}
+
+my $query = {
+ table => 'cust_attachment',
+ hashref => { disabled => $disabled ? { op => '>', value => 0 } : '', },
+ order_by => "ORDER BY $orderby",
+ addl_from => 'JOIN cust_main USING (custnum)',
+ extra_sql => "$extra_sql AND ". $curuser->agentnums_sql,
};
+my $count_query = 'SELECT COUNT(*) FROM cust_attachment'
+ . ' JOIN cust_main USING (custnum)'
+ . ' WHERE ' . $curuser->agentnums_sql
+ . ' AND disabled ' . ( $disabled ? '> 0' : 'IS NULL' );
+
+
+#still need to report on attachments with deleted customer? did we ever?
+#my $sub_cust = sub {
+# my $c = qsearchs('cust_main', { custnum => shift->custnum } );
+# return $c ? encode_entities($c->name) : '<FONT COLOR="red"><B>(not found)</B></FONT>';
+#};
+
+my $clink = [ $p.'view/cust_main.cgi?', 'custnum' ];
+
my $sub_date = sub {
time2str("%b %o, %Y", shift->_date);
};
diff --git a/httemplate/search/report_cust_attachment.html b/httemplate/search/report_cust_attachment.html
new file mode 100644
index 000000000..d9d9cb430
--- /dev/null
+++ b/httemplate/search/report_cust_attachment.html
@@ -0,0 +1,42 @@
+<& /elements/header.html, mt('Customer attachment report') &>
+
+<FORM ACTION="cust_attachment.html" METHOD="GET">
+
+<FONT CLASS="fsinnerbox-title"><% emt('Attachment search options') %></FONT>
+<TABLE CLASS="fsinnerbox">
+
+ <& /elements/tr-select-agent.html &>
+
+% if ( $curuser->access_right('View deleted attachments') ) {
+
+ <& /elements/tr-checkbox.html,
+ 'label' => 'Show deleted attachments',
+ 'field' => 'show_deleted',
+ 'value' => 1,
+ &>
+
+% }
+
+</TABLE>
+<BR><BR>
+
+<FONT CLASS="fsinnerbox-title"><% emt('Display options') %></FONT>
+<TABLE CLASS="fsinnerbox">
+
+ <& /elements/tr-select-cust-fields.html &>
+
+</TABLE>
+
+<BR>
+<INPUT TYPE="submit" VALUE="<% emt('Get Report') %>">
+
+</FORM>
+
+<& /elements/footer.html &>
+<%init>
+
+my $curuser = $FS::CurrentUser::CurrentUser;
+die "access denied" if !$curuser->access_right('View attachments')
+ || !$curuser->access_right('Browse attachments');
+
+</%init>