underscoring the important
[freeside.git] / FS / FS / cust_credit.pm
index 4c94e15..938686f 100644 (file)
@@ -262,11 +262,14 @@ methods.
 sub check {
   my $self = shift;
 
+  $self->otaker(getotaker) unless ($self->otaker);
+
   my $error =
     $self->ut_numbern('crednum')
     || $self->ut_number('custnum')
     || $self->ut_numbern('_date')
     || $self->ut_money('amount')
+    || $self->ut_alpha('otaker')
     || $self->ut_textn('reason')
     || $self->ut_foreign_key('reasonnum', 'reason', 'reasonnum')
     || $self->ut_enum('closed', [ '', 'Y' ])
@@ -280,8 +283,6 @@ sub check {
 
   $self->_date(time) unless $self->_date;
 
-  $self->otaker(getotaker);
-
   $self->SUPER::check;
 }
 
@@ -388,6 +389,7 @@ sub reason {
     if (!$reason && $typenum) {
       $reason = new FS::reason( { 'reason_type' => $typenum,
                                   'reason' => $value,
+                                  'disabled' => 'Y', 
                               } );
       $reason->insert and $reason = undef;
     }
@@ -410,17 +412,17 @@ sub reason {
 #
 
 sub _upgrade_data {  # class method
-  my ($self, %opts) = @_;
+  my ($class, %opts) = @_;
 
-  warn "$me upgrading $self\n" if $DEBUG;
+  warn "$me upgrading $class\n" if $DEBUG;
 
-  if (defined dbdef->table($self->table)->column('reason')) {
+  if (defined dbdef->table($class->table)->column('reason')) {
 
     warn "$me Checking for unmigrated reasons\n" if $DEBUG;
 
-    my @cust_credits = qsearch({ 'table' => $self->table,
-                                 'hashref' => {},
-                                 'extrasql' => 'WHERE reason IS NOT NULL',
+    my @cust_credits = qsearch({ 'table'     => $class->table,
+                                 'hashref'   => {},
+                                 'extra_sql' => 'WHERE reason IS NOT NULL',
                               });
 
     if (scalar(grep { $_->getfield('reason') =~ /\S/ } @cust_credits)) {
@@ -430,7 +432,7 @@ sub _upgrade_data {  # class method
       unless ($reason_type) {
         $reason_type  = new FS::reason_type( $hashref );
         my $error   = $reason_type->insert();
-        die "$self had error inserting FS::reason_type into database: $error\n"
+        die "$class had error inserting FS::reason_type into database: $error\n"
           if $error;
       }
 
@@ -439,6 +441,7 @@ sub _upgrade_data {  # class method
                  };
       my $noreason = qsearchs( 'reason', $hashref );
       unless ($noreason) {
+        $hashref->{'disabled'} = 'Y';
         $noreason = new FS::reason( $hashref );
         my $error  = $noreason->insert();
         die "can't insert legacy reason '(none)' into database: $error\n"
@@ -458,7 +461,8 @@ sub _upgrade_data {  # class method
         $cust_credit->setfield('reason', '');
         my $error = $cust_credit->replace;
 
-        die "error inserting $self into database: $error\n"
+        warn "*** WARNING: error replacing reason in $class ".
+             $cust_credit->crednum. ": $error ***\n"
           if $error;
       }
     }
@@ -474,11 +478,10 @@ sub _upgrade_data {  # class method
         unless ($reason_type) {
           $reason_type  = new FS::reason_type( $hashref );
           my $error   = $reason_type->insert();
-          die "$self had error inserting FS::reason_type into database: $error\n"
+          die "$class had error inserting FS::reason_type into database: $error\n"
             if $error;
         }
-                                            # or clause for 1.7.x
-        $conf->set($_, $reason_type->typenum) or die "failed setting config";
+        $conf->set($_, $reason_type->typenum);
       }
     }
 
@@ -489,7 +492,7 @@ sub _upgrade_data {  # class method
     unless ($reason_type) {
       $reason_type  = new FS::reason_type( $hashref );
       my $error   = $reason_type->insert();
-      die "$self had error inserting FS::reason_type into database: $error\n"
+      die "$class had error inserting FS::reason_type into database: $error\n"
         if $error;
     }