communigate provisioning phase 2: add svc_domain.trailer -> communigate TrailerText...
[freeside.git] / FS / FS / discount.pm
index 558d0f8..8afeb2e 100644 (file)
@@ -113,6 +113,16 @@ and replace methods.
 sub check {
   my $self = shift;
 
+  if ( $self->_type eq 'Select discount type' ) {
+    return 'Please select a discount type';
+  } elsif ( $self->_type eq 'Amount' ) {
+    $self->percent('0');
+    return 'Amount must be greater than 0' unless $self->amount > 0;
+  } elsif ( $self->_type eq 'Percentage' ) {
+    $self->amount('0.00');
+    return 'Percentage must be greater than 0' unless $self->percent > 0;
+  }
+
   my $error = 
     $self->ut_numbern('discountnum')
     || $self->ut_textn('name')
@@ -126,28 +136,38 @@ sub check {
   $self->SUPER::check;
 }
 
+=item description_short
+
 =item description
 
 Returns a text description incorporating the amount, percent and months fields.
 
+description_short omits term information
+
 =cut
 
-sub description {
+sub description_short {
   my $self = shift;
 
   my $conf = new FS::Conf;
   my $money_char = $conf->config('money_char') || '$';  
 
-  my $desc = '';
+  my $desc = $self->name ? $self->name.': ' : '';
   $desc .= $money_char. sprintf('%.2f/month ', $self->amount)
     if $self->amount > 0;
   $desc .= $self->percent. '% '
     if $self->percent > 0;
-  $desc .= 'for '. $self->months. ' months' if $self->months;
 
   $desc;
 }
 
+sub description {
+  my $self = shift;
+  my $desc = $self->description_short;
+  $desc .= ' for '. $self->months. ' months' if $self->months;
+  $desc;
+}
+
 =back
 
 =head1 BUGS