my $field = $class->condition_sql_option('field');
#amazingly, this is actually faster
my $sql = '( CASE';
- foreach( qw(setup last_bill bill adjourn susp expire cancel) ) {
+ foreach( qw(setup last_bill bill adjourn susp expire cancel contract_end) ) {
$sql .= " WHEN $field = '$_' THEN (cust_pkg.$_ IS NOT NULL AND cust_pkg.$_ <= $age)";
}
$sql .= ' END )';
<& /elements/error.html &>
+<STYLE TYPE="text/css">
+.select_invnum {
+ text-align: right;
+ width: 220px;
+}
+.select_invnum * {
+ font-family: monospace;
+}
+</STYLE>
<SCRIPT TYPE="text/javascript">
function warnUnload() {
if(document.getElementById("OneTrueTable").rows.length > 3 &&
function focus_app_invnum() {
% # invoice numbers just display as invoice numbers
var rownum = this.getAttribute('rownum');
- var add_opt = function(obj, value) {
+ var add_opt = function(obj, value, label) {
var o = document.createElement('OPTION');
- o.text = value;
+ o.text = label;
o.value = value;
obj.add(o);
}
this.options.length = 0;
var this_invoice = this.curr_invoice;
if ( this_invoice ) {
- add_opt(this, this_invoice.invnum);
+ add_opt(this, this_invoice.invnum, this_invoice.label);
} else {
- add_opt(this, '');
+ add_opt(this, '', '');
}
for ( var x in invoices_for_row[rownum] ) {
- add_opt(this, invoices_for_row[rownum][x].invnum);
+ add_opt(this,
+ invoices_for_row[rownum][x].invnum,
+ invoices_for_row[rownum][x].label);
}
}
select_invnum.setAttribute('appnum', appnum);
select_invnum.setAttribute('id', 'invnum'+rownum+'.'+appnum);
select_invnum.setAttribute('name', 'invnum'+rownum+'.'+appnum);
- select_invnum.style.textAlign = 'right';
- select_invnum.style.width = '50px';
+ select_invnum.className = 'select_invnum';
select_invnum.onchange = choose_app_invnum;
select_invnum.onfocus = focus_app_invnum;
my $curuser = $FS::CurrentUser::CurrentUser;
die 'access denied' unless $curuser->access_right('View invoices');
my @return;
+my $date_format = FS::Conf->new->config('date_format') || '%m/%d/%Y';
if ( $cgi->param('sub') eq 'custnum_search_open' ) {
my $custnum = $cgi->param('arg');
if ( $custnum =~ /^(\d+)$/ ) {
#warn "searching invoices for $custnum\n";
my $cust_main = FS::cust_main->by_key($custnum);
- @return = map {
- +{ $_->hash,
- 'owed' => $_->owed }
- } $cust_main->open_cust_bill
- if $curuser->agentnums_href->{ $cust_main->agentnum };
- }
+ if ( $curuser->agentnums_href->{ $cust_main->agentnum } ) {
+ my @open_bills = $cust_main->open_cust_bill;
+ my $invnum_len;
+ my $owed_len;
+ my $date_len;
+ foreach my $cust_bill (@open_bills) {
+ my $invnum = $cust_bill->invnum;
+ my $owed = $cust_bill->owed;
+ my $date = time2str($date_format, $cust_bill->_date);
+ $invnum_len = length($invnum) if length($invnum) > $invnum_len;
+ $owed_len = length($owed) if length($owed) > $owed_len;
+ $date_len = length($date) if length($date) > $date_len;
+
+ push @return, { $cust_bill->hash,
+ 'owed' => $owed,
+ 'date' => $date };
+ }
+ my $format = '%' . $invnum_len . 'd - %' . $date_len . 's - '.
+ (FS::Conf->new->config('money_char') || '$') .
+ '%' . $owed_len . '.2f';
+ foreach (@return) {
+ $_->{label} = sprintf($format, $_->{invnum}, $_->{date}, $_->{owed});
+ }
+ } #if agentnum
+ } #if $custnum
}
</%init>