From: ivan Date: Tue, 26 Feb 2002 11:42:37 +0000 (+0000) Subject: in Record.pm - call ->check **BEFORE** generating @diff for SQL. causing X-Git-Tag: freeside_1_4_0_pre12~186 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=fc0715ded1a4c1ace11f1ad1df7600f726206afc in Record.pm - call ->check **BEFORE** generating @diff for SQL. causing 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 --- diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index f30223351..0aa010bbc 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -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,$_) diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 125332c9d..cf5bd3314 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -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 }