+my $widget = new HTML::Widgets::SelectLayers(
+ 'selected_layer' => $part_pkg->plan,
+ 'options' => \%options,
+ 'form_name' => 'dummy',
+ 'form_action' => 'process/part_pkg.cgi',
+ 'form_text' => [ qw(pkg comment promo_code clone pkgnum pkgpart),
+ @fixups
+ ],
+ 'form_checkbox' => [ qw(setuptax recurtax disabled) ],
+ 'form_radio' => \@form_radio,
+ 'form_select' => \@form_select,
+ 'layer_callback' => sub {
+ my $layer = shift;
+ my $html = qq!<INPUT TYPE="hidden" NAME="plan" VALUE="$layer">!.
+ ntable("#cccccc",2);
+ $html .= '
+ <TR>
+ <TD ALIGN="right">Recurring fee frequency </TD>
+ <TD><SELECT NAME="freq">
+ ';
+
+ my @freq = keys %freq;
+ @freq = grep { /^\d+$/ } @freq
+ if exists($plans{$layer}->{'freq'}) && $plans{$layer}->{'freq'} eq 'm';
+ foreach my $freq ( @freq ) {
+ $html .= qq(<OPTION VALUE="$freq");
+ $html .= ' SELECTED' if $freq eq $part_pkg->freq;
+ $html .= ">$freq{$freq}";
+ }
+ $html .= '</SELECT></TD></TR>';
+
+ my $href = $plans{$layer}->{'fields'};
+ foreach my $field ( exists($plans{$layer}->{'fieldorder'})
+ ? @{$plans{$layer}->{'fieldorder'}}
+ : keys %{ $href }
+ ) {
+
+ $html .= '<TR><TD ALIGN="right">'. $href->{$field}{'name'}. '</TD><TD>';
+
+ if ( ! exists($href->{$field}{'type'}) ) {
+ $html .= qq!<INPUT TYPE="text" NAME="$field" VALUE="!.
+ ( exists($plandata{$field})
+ ? $plandata{$field}
+ : $href->{$field}{'default'} ).
+ qq!" onChange="fchanged(this)">!;
+ } elsif ( $href->{$field}{'type'} eq 'checkbox' ) {
+ $html .= qq!<INPUT TYPE="checkbox" NAME="$field" VALUE=1 !.
+ ( exists($plandata{$field}) && $plandata{$field}
+ ? ' CHECKED'
+ : ''
+ ). '>';
+ } elsif ( $href->{$field}{'type'} =~ /^select/ ) {
+ $html .= '<SELECT';
+ $html .= ' MULTIPLE'
+ if $href->{$field}{'type'} eq 'select_multiple';
+ $html .= qq! NAME="$field" onChange="fchanged(this)">!;
+ foreach my $record (
+ qsearch( $href->{$field}{'select_table'},
+ $href->{$field}{'select_hash'} )
+ ) {
+ my $value = $record->getfield($href->{$field}{'select_key'});
+ $html .= qq!<OPTION VALUE="$value"!.
+ ( $plandata{$field} =~ /(^|, *)$value *(,|$)/
+ ? ' SELECTED'
+ : '' ).
+ '>'. $record->getfield($href->{$field}{'select_label'})
+ }
+ $html .= '</SELECT>';
+ }