X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_svc.pm;h=e57efe4d0ebcc835f823d073f56343ee6d238fc0;hb=f920fdb29a19105c9102d29e532f8cbb40dd1171;hp=4fae457e24be79404150be49419924f3e94bd478;hpb=0dd05e9ff98263d2d42b419b1e278a5a3bc594b2;p=freeside.git diff --git a/FS/FS/part_svc.pm b/FS/FS/part_svc.pm index 4fae457e2..e57efe4d0 100644 --- a/FS/FS/part_svc.pm +++ b/FS/FS/part_svc.pm @@ -133,7 +133,8 @@ sub insert { # fields('part_svc'); foreach my $field ( grep { $_ ne 'svcnum' - && defined( $self->getfield($svcdb.'__'.$_.'_flag') ) + && ( defined( $self->getfield($svcdb.'__'.$_.'_flag') ) + || $self->getfield($svcdb.'__'.$_.'_label') !~ /^\s*$/ ) } (fields($svcdb), @fields) ) { my $part_svc_column = $self->part_svc_column($field); @@ -142,20 +143,28 @@ sub insert { 'columnname' => $field, } ); - my $flag = $self->getfield($svcdb.'__'.$field.'_flag'); - #if ( uc($flag) =~ /^([DFMAX])$/ ) { - if ( uc($flag) =~ /^([A-Z])$/ ) { #part_svc_column will test it - my $parser = FS::part_svc->svc_table_fields($svcdb)->{$field}->{parse} - || sub { shift }; - $part_svc_column->setfield('columnflag', $1); - $part_svc_column->setfield('columnvalue', - &$parser($self->getfield($svcdb.'__'.$field)) - ); + my $flag = $self->getfield($svcdb.'__'.$field.'_flag'); + my $label = $self->getfield($svcdb.'__'.$field.'_label'); + if ( uc($flag) =~ /^([A-Z])$/ || $label !~ /^\s*$/ ) { + + if ( uc($flag) =~ /^([A-Z])$/ ) { + my $parser = FS::part_svc->svc_table_fields($svcdb)->{$field}->{parse} + || sub { shift }; + $part_svc_column->setfield('columnflag', $1); + $part_svc_column->setfield('columnvalue', + &$parser($self->getfield($svcdb.'__'.$field)) + ); + } + + $part_svc_column->setfield('columnlabel', $label) + if $label !~ /^\s*$/; + if ( $previous ) { $error = $part_svc_column->replace($previous); } else { $error = $part_svc_column->insert; } + } else { $error = $previous ? $previous->delete : ''; } @@ -254,7 +263,8 @@ sub replace { my $svcdb = $new->svcdb; foreach my $field ( grep { $_ ne 'svcnum' - && defined( $new->getfield($svcdb.'__'.$_.'_flag') ) + && ( defined( $new->getfield($svcdb.'__'.$_.'_flag') ) + || $new->getfield($svcdb.'__'.$_.'_label') !~ /^\s*$/ ) } (fields($svcdb),@fields) ) { my $part_svc_column = $new->part_svc_column($field); @@ -263,15 +273,23 @@ sub replace { 'columnname' => $field, } ); - my $flag = $new->getfield($svcdb.'__'.$field.'_flag'); - #if ( uc($flag) =~ /^([DFMAX])$/ ) { - if ( uc($flag) =~ /^([A-Z])$/ ) { #part_svc_column will test it - my $parser = FS::part_svc->svc_table_fields($svcdb)->{$field}->{parse} + my $flag = $new->getfield($svcdb.'__'.$field.'_flag'); + my $label = $new->getfield($svcdb.'__'.$field.'_label'); + + if ( uc($flag) =~ /^([A-Z])$/ || $label !~ /^\s*$/ ) { + + if ( uc($flag) =~ /^([A-Z])$/ ) { + my $parser = FS::part_svc->svc_table_fields($svcdb)->{$field}->{parse} || sub { shift }; - $part_svc_column->setfield('columnflag', $1); - $part_svc_column->setfield('columnvalue', - &$parser($new->getfield($svcdb.'__'.$field)) - ); + $part_svc_column->setfield('columnflag', $1); + $part_svc_column->setfield('columnvalue', + &$parser($new->getfield($svcdb.'__'.$field)) + ); + } + + $part_svc_column->setfield('columnlabel', $label) + if $label !~ /^\s*$/; + if ( $previous ) { $error = $part_svc_column->replace($previous); } else { @@ -425,6 +443,19 @@ sub part_export_usage { grep $_->can('usage_sessions'), $self->part_export; } +=item part_export_did + +Returns a list of any exports (see L) for this service that +are capable of returing available DID (phone number) information. + +=cut + +sub part_export_did { + my $self = shift; + grep $_->can('get_dids'), $self->part_export; +} + + =item cust_svc [ PKGPART ] Returns a list of associated customer services (FS::cust_svc records). @@ -700,17 +731,16 @@ sub process { push @fields, 'usergroup' if $svcdb eq 'svc_acct'; #kludge map { - if ( $param->{ $svcdb.'__'.$_.'_flag' } =~ /^[MA]$/ ) { - $param->{ $svcdb.'__'.$_ } = - delete( $param->{ $svcdb.'__'.$_.'_classnum' } ); + my $f = $svcdb.'__'.$_; + if ( $param->{ $f.'_flag' } =~ /^[MA]$/ ) { + $param->{ $f } = delete( $param->{ $f.'_classnum' } ); } - if ( $param->{ $svcdb.'__'.$_.'_flag' } =~ /^S$/ ) { - $param->{ $svcdb.'__'.$_} = - ref($param->{ $svcdb.'__'.$_}) - ? join(',', @{$param->{ $svcdb.'__'.$_ }} ) - : $param->{ $svcdb.'__'.$_ }; + if ( $param->{ $f.'_flag' } =~ /^S$/ ) { + $param->{ $f } = ref($param->{ $f }) + ? join(',', @{$param->{ $f }} ) + : $param->{ $f }; } - ( $svcdb.'__'.$_, $svcdb.'__'.$_.'_flag' ); + ( $f, $f.'_flag', $f.'_label' ); } @fields; @@ -725,7 +755,7 @@ sub process { my $error; if ( $param->{'svcpart'} ) { $error = $new->replace( $old, - '1.3-COMPAT', + '1.3-COMPAT', #totally bunk, as jeff noted [ 'usergroup' ], \%exportnums, $job