'onsubmit' => 'confirm_submit',
- 'labels' => {
+ 'labels' => {
'pkgpart' => 'Package Definition',
'pkg' => 'Package',
%locale_field_labels,
'supp_dst_pkgpart' => 'When ordering package, also order',
'report_option' => 'Report classes',
'delay_start' => 'Default delay (days)',
+ 'adjourn_months' => 'Suspend the package after ',
+ 'contract_end_months' => 'Contract ends after ',
+ 'expire_months' => 'Cancel the package after ',
+ 'change_to_pkgpart'=> 'and replace it with ',
},
'fields' => [
sort $conf->config('currencies')
),
+ ( $conf->exists('part_pkg-delay_start')
+ ? ( { type => 'tablebreak-tr-title',
+ value => 'Delayed start',
+ },
+ { field => 'delay_start',
+ type => 'text', size => 6 },
+ )
+ : ()
+ ),
+
+ { type => 'tablebreak-tr-title',
+ value => 'Limited duration',
+ },
+ { field => 'adjourn_months',
+ type => 'select-months',
+ },
+ { field => 'contract_end_months',
+ type => 'select-months',
+ },
+ { field => 'expire_months',
+ type => 'select-expire_months',
+ },
+ { field => 'change_to_pkgpart',
+ type => 'select-part_pkg',
+ extra_sql => sub { $pkgpart
+ ? "AND pkgpart != $pkgpart"
+ : ''
+ },
+ empty_label => 'no package',
+ },
+
#price plan
#setup fee
#recurring frequency
include_opt_callback =>
sub { pkgpart => $_[0]->pkgpart },
},
-
{ type => 'tablebreak-tr-title',
value => 'Promotions', #better name?
)
),
- ( $conf->exists('part_pkg-delay_start')
- ? ( { type => 'tablebreak-tr-title',
- value => 'Delayed start',
- },
- { field => 'delay_start',
- type => 'text', size => 6 },
- )
- : ()
- ),
-
{ type => 'columnnext' },
{type=>'justtitle', value=>'Agent (reseller) types' },
{ field=>'agent_pkgpartid', type=>'text', size=>21 },
{ type => 'tablebreak-tr-title',
- value => 'Line-item revenue recogition', #better name?
+ value => 'Line-item revenue recognition', #better name?
},
{ field=>'pay_weight', type=>'text', size=>6 },
{ field=>'credit_weight', type=>'text', size=>6 },
#$html .= '</SELECT></TD></TR>';
my $href = $plans{$layer}->{'fields'};
- my @fields = exists($plans{$layer}->{'fieldorder'})
- ? @{$plans{$layer}->{'fieldorder'}}
- : keys %{ $href };
+ my @fields;
+ if ( $plans{$layer}->{'fieldorder'} ) {
+ @fields = @{ $plans{$layer}->{'fieldorder'} };
+ } else {
+ warn "FS::part_pkg::$layer has no fieldorder.\n";
+ @fields = keys %$href;
+ }
# hash of dependencies for each of the Pricing Plan fields.
# make sure NOT to use double-quotes inside the 'msg' value.
}
}
};
-
+
foreach my $field ( grep $_ !~ /^(setup|recur)_fee$/, @fields ) {
if(!exists($href->{$field})) {
next if !$display;
}
- $html .= '<TR><TD ALIGN="right">'. $href->{$field}{'name'}. '</TD><TD>';
+ $html .= '<TR><TD ALIGN="right">'. $href->{$field}{'name'}. '</TD><TD>
+ ';
my $format = sub { shift };
$format = $href->{$field}{'format'} if exists($href->{$field}{'format'});
$html .= '</TD></TR>';
}
$html .= '</TABLE>';
-
- $html .= qq(<INPUT TYPE="hidden" NAME="${layer}__OPTIONS" VALUE=").
- join(',', keys %{ $href } ). '">';
+
+ $html .= include('/elements/hidden.html',
+ field => $layer.'__OPTIONS',
+ value => join(',', @fields)
+ );
$html;
};
$fieldref->{layer_fields} = \%taxproduct_fields;
$fieldref->{layer_values_callback} = $taxproduct_values;
+ } elsif ($field eq 'taxproductnum') { # part_pkg-taxproduct, new style
+ if ( !$taxproducts ) {
+ # then make the widget go away
+ $fieldref->{type} = 'hidden';
+ }
}
};