qsearchs( 'agent', { 'agentnum' => $self->agentnum } );
}
+=item cust_class
+
+Returns the customer class, as an FS::cust_class object, or the empty string
+if there is no customer class.
+
+=cut
+
+sub cust_class {
+ my $self = shift;
+ if ( $self->classnum ) {
+ qsearchs('cust_class', { 'classnum' => $self->classnum } );
+ } else {
+ return '';
+ }
+}
+
+=item categoryname
+
+Returns the customer category name, or the empty string if there is no customer
+category.
+
+=cut
+
+sub categoryname {
+ my $self = shift;
+ my $cust_class = $self->cust_class;
+ $cust_class
+ ? $cust_class->categoryname
+ : '';
+}
+
+=item classname
+
+Returns the customer class name, or the empty string if there is no customer
+class.
+
+=cut
+
+sub classname {
+ my $self = shift;
+ my $cust_class = $self->cust_class;
+ $cust_class
+ ? $cust_class->classname
+ : '';
+}
+
+
=item bill_and_collect
Cancels and suspends any packages due, generates bills, applies payments and
t/cust_class.t
FS/cust_category.pm
t/cust_category.t
+FS/class_Common.pm
+t/class_Common.t
+FS/category_Common.pm
+t/category_Common.t
--- /dev/null
+BEGIN { $| = 1; print "1..1\n" }
+END {print "not ok 1\n" unless $loaded;}
+use FS::category_Common;
+$loaded=1;
+print "ok 1\n";
--- /dev/null
+BEGIN { $| = 1; print "1..1\n" }
+END {print "not ok 1\n" unless $loaded;}
+use FS::class_Common;
+$loaded=1;
+print "ok 1\n";
my $html_init =
qq!<A HREF="${p}browse/pkg_class.html">Package classes</A><BR><BR>!.
- 'Package categories define groups of package classes.<BR><BR>'.
+ 'Package categories define groups of package classes, used for sectioned invoices.<BR><BR>'.
qq!<A HREF="${p}edit/pkg_category.html"><I>Add a package category</I></A><BR><BR>!;
my $count_query = 'SELECT COUNT(*) FROM pkg_category';
% }
+%# class
+<% include('/elements/tr-select-cust_class.html',
+ 'curr_value' => $cust_main->classnum,
+ 'label' => "Class",
+ #'empty_label' => '(none)',
+ #'disable_empty' =>
+ )
+%>
+
%# referral (advertising source)
%my $refnum = $cust_main->refnum || $conf->config('referraldefault') || 0;
%if ( $custnum && ! $conf->exists('editreferrals') ) {
--- /dev/null
+<% include( '/elements/select-table.html',
+ 'table' => 'cust_class',
+ 'name_col' => 'classname',
+ 'value' => $classnum,
+ 'empty_label' => '(none)',
+ 'hashref' => { 'disabled' => '' },
+ %opt,
+ )
+%>
+<%init>
+
+my %opt = @_;
+my $classnum = $opt{'curr_value'} || $opt{'value'};
+
+$opt{'records'} = delete $opt{'cust_class'}
+ if $opt{'cust_class'};
+
+</%init>
--- /dev/null
+% if ( scalar(@{ $opt{'cust_class'} }) == 0 ) {
+
+ <INPUT TYPE="hidden" NAME="<% $opt{'element_name'} || $opt{'field'} || 'classnum' %>" VALUE="">
+
+% } else {
+
+ <TR>
+ <TD ALIGN="right"><% $opt{'label'} || 'Customer class' %></TD>
+ <TD>
+ <% include( '/elements/select-cust_class.html',
+ 'curr_value' => $classnum,
+ %opt
+ )
+ %>
+ </TD>
+ </TR>
+
+% }
+
+<%init>
+
+my %opt = @_;
+my $classnum = $opt{'curr_value'} || $opt{'value'};
+
+$opt{'cust_class'} ||= [ qsearch( 'cust_class', { disabled=>'' } ) ];
+
+</%init>
</TR>
%
% }
-%
+
+% #if ( $cust_main->classnum ) {
+ <TR>
+ <TD ALIGN="right">Class</TD>
+ <TD BGCOLOR="#ffffff"><% $cust_main->classname || '(none)' %></TD>
+ </TR>
+% #}
+
% unless ( FS::part_referral->num_part_referral == 1 ) {
% my $referral = qsearchs('part_referral', {
% 'refnum' => $cust_main->refnum
% } );
-%
-
<TR>
<TD ALIGN="right">Advertising source</TD>