<& elements/process.html, table => 'tower', viewall_dir => 'browse', process_o2m => { 'table' => 'tower_sector', 'fields' => [qw( sectorname ip_addr height freq_mhz direction width downtilt v_width db_high db_low power line_loss antenna_gain hardware_typenum sector_range up_rate_limit down_rate_limit )], }, 'precheck_callback' => sub { my ($cgi) = @_; my @required_tower_fields; my @required_sector_fields; foreach my $part_svc_broadband_export ( FS::tower_sector->part_export_svc_broadband ) { if ($part_svc_broadband_export and $part_svc_broadband_export->can('tower_sector_required_fields')) { my $required_fields = $part_svc_broadband_export->tower_sector_required_fields; foreach (keys %$required_fields) { my $fields = $required_fields->{$_}; push @required_tower_fields, keys(%$fields) if $_ eq "tower"; push @required_sector_fields, keys(%$fields) if $_ eq "sector"; } } } foreach (@required_tower_fields){ return "The tower $_ field is required" unless $cgi->param($_); } foreach (@required_sector_fields){ foreach my $k ($cgi->param) { if ($k =~ /^sectornum\d+$/) { if ( $cgi->param($k.'_sectorname') ) { return "The sector(".$cgi->param($k.'_sectorname').") $_ field is required" unless $cgi->param($k.'_'.$_); } } } } ''; }, &>