'id' => $id,
'table' => 'reason',
'records' => \@reasons,
- 'label_callback' => sub { my $reason = shift;
- $reason->type . ' : ' . $reason->reason },
+ 'name_col' => 'label',
'disable_empty' => 1,
'pre_options' => [ 0 => 'Select reason...' ],
- 'post_options' => [ -1 => 'Add new reason' ],
+ 'post_options' => \@post_options,
'curr_value' => $init_reason,
'onchange' => $id.'_changed()',
&>
% # "add new reason" fields
% # should be a <fieldset>, but that doesn't fit well into the table
+% if ( $curuser->access_right($add_access_right) ) {
<TR id="<% $id %>_new_fields">
<TD COLSPAN=2>
<TABLE CLASS="inv" STYLE="text-align: left">
field => $id.'_new_reason'
&>
-% my @types = qsearch( 'reason_type', { 'class' => $class } );
-% if (scalar(@types) < 1) { # we should never reach this
+% my @types = qsearch( 'reason_type', { 'class' => $class } );
+% if (scalar(@types) < 1) { # we should never reach this
<TR>
<TD ALIGN="right">
<P><% mt('No reason types. Please add some.') |h %></P>
</TD>
</TR>
-% } elsif (scalar(@types) == 1) {
+% } elsif (scalar(@types) == 1) {
<& tr-fixed.html,
label => 'Reason type',
field => $id.'_new_reason_type',
curr_value => $types[0]->typenum,
formatted_value => $types[0]->type,
&>
-% } else { # more than one type, the normal case
+% } else { # more than one type, the normal case
<& tr-select-table.html,
label => 'Reason type',
field => $id.'_new_reason_type',
hashref => { 'class' => $class },
disable_empty => 1,
&>
-% } # scalar(@types)
+% } # scalar(@types)
-% if ( $class eq 'S' ) {
+% if ( $class eq 'S' ) {
<& tr-checkbox.html,
label => 'Credit the unused portion of service when suspending',
field => $id.'_new_unused_credit',
field => $id.'_new_unsuspend_hold',
value => 'Y',
&>
-% }
+% }
</table>
</td>
</tr>
+% } # if the current user can add a reason
% # container for hints
<TR>
<%init>
+my $curuser = $FS::CurrentUser::CurrentUser;
my %opt = @_;
my $name = $opt{'field'};
die "illegal class: $class";
}
+my $select = join(',',
+ 'reason.*',
+ FS::Record::concat_sql([ 'type', "' : '", 'reason' ]) . ' AS label',
+);
+
my @reasons = qsearch({
'table' => 'reason',
+ 'select' => $select,
'addl_from' => ' LEFT JOIN reason_type'.
' ON (reason.reason_type = reason_type.typenum)',
'hashref' => { disabled => '' },
'extra_sql' => " AND reason_type.class = '$class'",
- 'order_by' => ' ORDER BY type, reason',
});
my %all_hints;
}
}
-my $curuser = $FS::CurrentUser::CurrentUser;
+my @post_options;
+if ( $curuser->access_right($add_access_right) ) {
+ @post_options = ( -1 => 'Add new reason' );
+}
+
</%init>