X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fsvc_Common.pm;h=fdb4132c4fad3ad084e08b637ea80d615a949a16;hp=c1c482d72ea3dbb947bf12668eaedbfa7e08bb4e;hb=936038efe0b75ad037619167f62db7fe16c25255;hpb=7fc8c3c193c3d673a58566569a0e82609212a087 diff --git a/FS/FS/svc_Common.pm b/FS/FS/svc_Common.pm index c1c482d72..fdb4132c4 100644 --- a/FS/FS/svc_Common.pm +++ b/FS/FS/svc_Common.pm @@ -51,7 +51,9 @@ sub new { #$self->{'Hash'} = shift; my $newhash = shift; $self->{'Hash'} = { map { $_ => $newhash->{$_} } qw(svcnum svcpart) }; - $self->setdefault; + + $self->setdefault( $self->_fieldhandlers ); + $self->{'Hash'}{$_} = $newhash->{$_} foreach grep { defined($newhash->{$_}) && length($newhash->{$_}) } keys %$newhash; @@ -69,6 +71,9 @@ sub new { $self; } +#empty default +sub _fieldhandlers { (); } + sub virtual_fields { # This restricts the fields based on part_svc_column and the svcpart of @@ -490,11 +495,9 @@ sub setx { my $columnname = $part_svc_column->columnname; my $columnvalue = $part_svc_column->columnvalue; - if ( exists( $coderef->{$columnname} ) ) { - &{ $coderef->{$columnname} }( $self, $columnvalue); - } else { - $self->setfield( $columnname, $columnvalue ); - } + $columnvalue = &{ $coderef->{$columnname} }( $self, $columnvalue ) + if exists( $coderef->{$columnname} ); + $self->setfield( $columnname, $columnvalue ); }