RT# 78356 - added speed test fields for broadband service and new modifier to get...
[freeside.git] / httemplate / edit / elements / svc_Common.html
index 4131508..e1c3090 100644 (file)
                    my $columndef = $part_svc->part_svc_column($f->{'field'});
                    my $flag = $columndef->columnflag;
 
+                   $f->{'required'} = 1
+                     if $columndef->required;
+
                    if ( $flag eq 'F' ) { #fixed
-                     $f->{'type'} = length($columndef->columnvalue)
-                                      ? 'fixed'
-                                      : 'hidden';
                      $f->{'value'} = $columndef->columnvalue;
+                     if (length($columndef->columnvalue)) {
+
+                       if ( $f->{'type'} =~ /^select-?(.*)/ ) {
+                         # try to display this in a user-friendly manner
+                         if ( $f->{'table'} ) { # find matching records
+                           $f->{'value_col'} ||=
+                             dbdef->table($f->{'table'})->primary_key;
+
+                           my @values = split(',', $f->{'value'});
+                           my @recs;
+                           foreach (@values) {
+                             push @recs, qsearchs( $f->{'table'},
+                                         { $f->{'value_col'} => $_ }
+                                         );
+                           }
+                           if ( @recs ) {
+                             my $method = $f->{'name_col'};
+                             if ( $f->{'multiple'} ) {
+                               $f->{'formatted_value'} = [
+                                 map { $_->method } @recs
+                               ];
+                             } else { # there shouldn't be more than one...
+                               $f->{'formatted_value'} = $recs[0]->$method;
+                             }
+                           } # if not, then just let tr-fixed display the
+                             # values as-is
+
+                         } # other select types probably don't matter
+                       } # if it's a select
+
+                       $f->{'type'} = 'fixed';
+
+                     } else { # fixed, null
+                       $f->{'type'} = 'hidden';
+                     }
 
                    } elsif ( $flag eq 'A' ) { #auto assign from inventory
                      $f->{'type'} = 'hidden';
                                             'classnum'=>$columndef->columnvalue
                                            };
 
-                   } elsif ( $flag eq 'S' ) { #selectable choice
+                   } elsif ( $flag eq 'S' #selectable choice
+                               && $f->{type} !~ /^select-svc/ ) {
                      $f->{type}    = 'select';
                      $f->{options} = [ split( /\s*,\s*/,
                                                 $columndef->columnvalue)
                                      ];
-                   }
-
-                   if (    $f->{'type'} eq 'select-svc_pbx'
-                        || $f->{'type'} eq 'select-svc-domain' 
-                      )
+                   } # shouldn't this be enforced for all 'S' fields?
+
+                   elsif ( $flag eq 'P' ) { #form fcc_477 values
+                     $f->{type}    = 'fixed';
+                     my $cust_pkg = FS::Record::qsearchs({
+                       'table'   => 'cust_pkg',
+                       'hashref' => { 'pkgnum' => $object->{Hash}->{pkgnum} }
+                     });
+                     my $fcc_record = $cust_pkg->fcc_477_record('broadband_'.$columndef->columnvalue.'stream') if $cust_pkg;
+                     $f->{'value'} = $fcc_record->{Hash}->{optionvalue} ? $fcc_record->{Hash}->{optionvalue} * 1000 : '';
+                   } # end 477 values
+
+                   if ( $f->{'type'} =~ /^select-svc/ )
                    {
                      $f->{'include_opt_callback'} =
                        sub { ( 'pkgnum'  => $pkgnum,