agent-virtualize credit card surcharge percentage, RT#72961
[freeside.git] / FS / FS / cust_main_note.pm
index 0a203a8..4c48eb6 100644 (file)
@@ -1,9 +1,10 @@
 package FS::cust_main_note;
+use base qw( FS::otaker_Mixin FS::Record );
 
 use strict;
-use base qw( FS::otaker_Mixin FS::Record );
 use Carp;
-use FS::Record qw( qsearch qsearchs );
+use FS::Record qw( qsearchs ); #qw( qsearch qsearchs );
+use FS::Conf;
 
 =head1 NAME
 
@@ -38,6 +39,8 @@ primary key
 
 =item custnum
 
+=item classnum
+
 =item _date
 
 =item usernum
@@ -106,15 +109,43 @@ sub check {
   my $error = 
     $self->ut_numbern('notenum')
     || $self->ut_number('custnum')
+    || $self->ut_foreign_keyn('classnum', 'cust_note_class', 'classnum')
     || $self->ut_numbern('_date')
     || $self->ut_textn('otaker')
     || $self->ut_anything('comments')
+    || $self->ut_numbern('sticky')
   ;
   return $error if $error;
 
+  if (!$self->classnum) {
+    my $conf = new FS::Conf;
+    return 'Note class is required'
+      if $conf->exists('note-classes')
+        and $conf->config('note-classes') eq 'Required';
+  }
+
   $self->SUPER::check;
 }
 
+=item cust_note_class
+
+Returns the customer note class, as an FS::cust_note_class object, or the empty
+string if there is no note class.
+
+=item classname 
+
+Returns the customer note class name, or the empty string if there is no 
+customer note class.
+
+=cut
+
+sub classname {
+  my $self = shift;
+  my $cust_note_class = $self->cust_note_class;
+  $cust_note_class ? $cust_note_class->classname : '';
+}
+
+
 #false laziness w/otaker_Mixin & cust_attachment
 sub otaker {
   my $self = shift;