in Record.pm - call ->check **BEFORE** generating @diff for SQL. causing
authorivan <ivan>
Tue, 26 Feb 2002 11:42:37 +0000 (11:42 +0000)
committerivan <ivan>
Tue, 26 Feb 2002 11:42:37 +0000 (11:42 +0000)
weird effects with cust_main::check that modifies record (ship_ field weirdness)

fix nasty logic error triggered by changing a ship_ field from something TO
identical to the corresponding non-ship_ field.  ouch

FS/FS/Record.pm
FS/FS/cust_main.pm

index f302233..0aa010b 100644 (file)
@@ -575,12 +575,6 @@ sub replace {
   my ( $new, $old ) = ( shift, shift );
   warn "[debug]$me $new ->replace $old\n" if $DEBUG;
 
-  my @diff = grep $new->getfield($_) ne $old->getfield($_), $old->fields;
-  unless ( @diff ) {
-    carp "[warning]$me $new -> replace $old: records identical";
-    return '';
-  }
-
   return "Records not in same table!" unless $new->table eq $old->table;
 
   my $primary_key = $old->dbdef_table->primary_key;
@@ -591,6 +585,12 @@ sub replace {
   my $error = $new->check;
   return $error if $error;
 
+  my @diff = grep $new->getfield($_) ne $old->getfield($_), $old->fields;
+  unless ( @diff ) {
+    carp "[warning]$me $new -> replace $old: records identical";
+    return '';
+  }
+
   my $statement = "UPDATE ". $old->table. " SET ". join(', ',
     map {
       "$_ = ". _quote($new->getfield($_),$old->table,$_) 
index 125332c..cf5bd33 100644 (file)
@@ -512,7 +512,7 @@ and repalce methods.
 sub check {
   my $self = shift;
 
-  warn "BEFORE: \n". $self->_dump;
+  #warn "BEFORE: \n". $self->_dump;
 
   my $error =
     $self->ut_numbern('custnum')
@@ -698,7 +698,7 @@ sub check {
 
   $self->otaker(getotaker);
 
-  warn "AFTER: \n". $self->_dump;
+  #warn "AFTER: \n". $self->_dump;
 
   ''; #no error
 }