stop packages from changing pkgpart on cancellation in certain cases, #73607
[freeside.git] / FS / FS / cust_main.pm
index bd46307..0165bc4 100644 (file)
@@ -32,6 +32,7 @@ use Digest::MD5 qw(md5_base64);
 use Date::Format;
 #use Date::Manip;
 use File::Temp; #qw( tempfile );
+use Email::Address;
 use Business::CreditCard 0.28;
 use FS::UID qw( getotaker dbh driver_name );
 use FS::Record qw( qsearchs qsearch dbdef regexp_sql );
@@ -1853,6 +1854,7 @@ sub check {
     || $self->ut_floatn('credit_limit')
     || $self->ut_numbern('billday')
     || $self->ut_numbern('prorate_day')
+    || $self->ut_flag('force_prorate_day')
     || $self->ut_flag('edit_subject')
     || $self->ut_flag('calling_list_exempt')
     || $self->ut_flag('invoice_noemail')
@@ -1967,7 +1969,7 @@ sub check {
       or return gettext('invalid_card'); # . ": ". $self->payinfo;
 
     my $cardtype = cardtype($payinfo);
-    $cardtype = 'Tokenized' if $self->payinfo !~ /^99\d{14}$/; # token
+    $cardtype = 'Tokenized' if $self->payinfo =~ /^99\d{14}$/; # token
 
     return gettext('unknown_card_type') if $cardtype eq 'Unknown';
 
@@ -2158,6 +2160,10 @@ sub check {
     && ! $self->custnum
     && $conf->exists('cust_main-require_locale');
 
+  return "Please select a customer class"
+    if ! $self->classnum
+    && $conf->exists('cust_main-require_classnum');
+
   foreach my $flag (qw( tax spool_cdr squelch_cdr archived email_csv_cdr )) {
     $self->$flag() =~ /^(Y?)$/ or return "Illegal $flag: ". $self->$flag();
     $self->$flag($1);
@@ -3566,15 +3572,17 @@ sub contact_list_email {
         # unlike on 4.x, we have a separate list of invoice email
         # destinations.
         # make sure they're not redundant with contact emails
-        my $dest = $contact->firstlast . ' <' . $contact_email->emailaddress . '>';
-        $emails{ $contact_email->emailaddress } = $dest;
+        $emails{ $contact_email->emailaddress } =
+          Email::Address->new( $contact->firstlast,
+                               $contact_email->emailaddress
+                             )->format;
       }
     }
   }
   if ( $and_invoice ) {
     foreach my $email ($self->invoicing_list_emailonly) {
-      my $dest = $self->name_short . ' <' . $email . '>';
-      $emails{ $email } ||= $dest;
+      $emails{ $email } ||=
+        Email::Address->new( $self->name_short, $email )->format;
     }
   }
   values %emails;