customer classification, RT#6376
authorivan <ivan>
Thu, 29 Oct 2009 18:38:09 +0000 (18:38 +0000)
committerivan <ivan>
Thu, 29 Oct 2009 18:38:09 +0000 (18:38 +0000)
FS/FS/cust_main.pm
FS/MANIFEST
FS/t/category_Common.t [new file with mode: 0644]
FS/t/class_Common.t [new file with mode: 0644]
httemplate/browse/pkg_category.html
httemplate/edit/cust_main/top_misc.html
httemplate/elements/select-cust_class.html [new file with mode: 0644]
httemplate/elements/tr-select-cust_class.html [new file with mode: 0644]
httemplate/view/cust_main/misc.html

index 2c2984f..fdcd801 100644 (file)
@@ -2307,6 +2307,53 @@ sub agent {
   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
index d4e80e6..b84ba52 100644 (file)
@@ -457,3 +457,7 @@ FS/cust_class.pm
 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
diff --git a/FS/t/category_Common.t b/FS/t/category_Common.t
new file mode 100644 (file)
index 0000000..b8bd9e2
--- /dev/null
@@ -0,0 +1,5 @@
+BEGIN { $| = 1; print "1..1\n" }
+END {print "not ok 1\n" unless $loaded;}
+use FS::category_Common;
+$loaded=1;
+print "ok 1\n";
diff --git a/FS/t/class_Common.t b/FS/t/class_Common.t
new file mode 100644 (file)
index 0000000..9ac809b
--- /dev/null
@@ -0,0 +1,5 @@
+BEGIN { $| = 1; print "1..1\n" }
+END {print "not ok 1\n" unless $loaded;}
+use FS::class_Common;
+$loaded=1;
+print "ok 1\n";
index 2223445..a156c06 100644 (file)
@@ -22,7 +22,7 @@ die "access denied"
 
 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';
index 0410506..7c9e039 100644 (file)
 
 % }
 
+%# 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') ) {
diff --git a/httemplate/elements/select-cust_class.html b/httemplate/elements/select-cust_class.html
new file mode 100644 (file)
index 0000000..94b935a
--- /dev/null
@@ -0,0 +1,18 @@
+<% 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>
diff --git a/httemplate/elements/tr-select-cust_class.html b/httemplate/elements/tr-select-cust_class.html
new file mode 100644 (file)
index 0000000..54a11d7
--- /dev/null
@@ -0,0 +1,27 @@
+% 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>
index 71e8d69..2cfe026 100644 (file)
 </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&nbsp;source</TD>