dangling cust_credit_refund not allowed
[freeside.git] / FS / FS / option_Common.pm
index 5ef6d0f..2950b28 100644 (file)
@@ -2,6 +2,7 @@ package FS::option_Common;
 
 use strict;
 use vars qw( @ISA $DEBUG );
+use Scalar::Util qw( blessed );
 use FS::Record qw( qsearch qsearchs dbh );
 
 @ISA = qw( FS::Record );
@@ -161,7 +162,7 @@ created or modified (see L<FS::part_export_option>).
 sub replace {
   my $self = shift;
 
-  my $old = ( ref($_[0]) eq ref($self) )
+  my $old = ( blessed($_[0]) && $_[0]->isa('FS::Record') )
               ? shift
               : $self->replace_old;
 
@@ -169,6 +170,7 @@ sub replace {
     ( ref($_[0]) eq 'HASH' )
       ? shift
       : { @_ };
+
   warn "FS::option_Common::replace called on $self with options ".
        join(', ', map "$_ => ". $options->{$_}, keys %$options)
     if $DEBUG;
@@ -222,12 +224,10 @@ sub replace {
     my $opt_pkey = $newopt->primary_key;
 
     $newopt->$opt_pkey($oldopt->$opt_pkey) if $oldopt;
-    warn $oldopt;
     warn "FS::option_Common::replace: ".
          ( $oldopt ? "$newopt -> replace($oldopt)" : "$newopt -> insert" )
       if $DEBUG > 2;
     my $error = $oldopt ? $newopt->replace($oldopt) : $newopt->insert;
-    warn $error;
     if ( $error ) {
       $dbh->rollback if $oldAutoCommit;
       return $error;