X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fedit%2Fpart_pkg.cgi;h=1702a6dc7d2fd62cc9efac7c06dc6ad5a03ac860;hb=aeb90ade381fc3d5477db0334048c2af623fccfe;hp=9e55d9f42333d458cd4fd43a73d9106108f5eeb4;hpb=447f1a906b47868497485edc3ba190a808539956;p=freeside.git
diff --git a/httemplate/edit/part_pkg.cgi b/httemplate/edit/part_pkg.cgi
index 9e55d9f42..1702a6dc7 100755
--- a/httemplate/edit/part_pkg.cgi
+++ b/httemplate/edit/part_pkg.cgi
@@ -44,12 +44,14 @@
'plan' => 'Price plan',
'disabled' => 'Disable new orders',
'disable_line_item_date_ranges' => 'Disable line item date ranges',
+ 'start_on_hold' => 'Start on hold',
'setup_cost' => 'Setup cost',
'recur_cost' => 'Recur cost',
'pay_weight' => 'Payment weight',
'credit_weight' => 'Credit weight',
'agent_pkgpartid' => 'External ID',
'agentnum' => 'Agent',
+ 'agent_type' => ' ', #just its title headingn is fine
'setup_fee' => 'Setup fee',
'setup_show_zero' => 'Show zero setup',
'recur_fee' => 'Recurring fee',
@@ -110,6 +112,10 @@
),
{field=>'disabled', type=>$disabled_type, value=>'Y'},
{field=>'disable_line_item_date_ranges', type=>$disabled_type, value=>'Y'},
+ { field => 'start_on_hold',
+ type => 'checkbox',
+ value => 'Y'
+ },
{ type => 'tablebreak-tr-title',
value => 'Pricing', #better name?
@@ -222,9 +228,13 @@
{ type => 'columnnext' },
- { field => 'agent_type',
- type => 'select-agent_types',
- disabled => ! $acl_edit_global,
+ {type=>'justtitle', value=>'Agent (reseller) types' },
+
+ { field => 'agent_type',
+ type => 'select-agent_type',
+ disabled => ! $acl_edit_global,
+ element_etc => 'size="10"',
+ multiple => '1', #cause edit.html is dum
curr_value_callback => sub {
my($cgi, $object, $field) = @_;
#in the other callbacks..? hmm.
@@ -232,23 +242,26 @@
},
},
- { type => 'tablebreak-tr-title',
- value => 'FCC Form 477 information',
- },
- { field => 'fcc_options_string',
- type => 'input-fcc_options',
- curr_value_callback => sub {
- my ($cgi, $part_pkg, $fref) = @_;
- if ( $cgi->param('fcc_options_string') ) {
- # error redirect
- return $cgi->param('fcc_options_string');
- }
- my %hash;
- %hash = $part_pkg->fcc_options
- if ($part_pkg->pkgpart);
- return encode_json(\%hash);
+ ($fcc_opts ? (
+ { type => 'tablebreak-tr-title',
+ value => 'FCC Form 477 information',
},
- },
+ { field => 'fcc_options_string',
+ type => 'input-fcc_options',
+ curr_value_callback => sub {
+ my ($cgi, $part_pkg, $fref) = @_;
+ if ( $cgi->param('fcc_options_string') ) {
+ # error redirect
+ return $cgi->param('fcc_options_string');
+ }
+ my %hash;
+ %hash = $part_pkg->fcc_options
+ if ($part_pkg->pkgpart);
+ return encode_json(\%hash);
+ },
+ },
+ ) : ()
+ ),
{ type => 'tablebreak-tr-title',
value => 'External Links', #better name?
@@ -405,6 +418,8 @@ my $agent_clone_extra_sql =
my $conf = new FS::Conf;
my $taxproducts = $conf->exists('enable_taxproducts');
+my $fcc_opts = $conf->exists('part_pkg-show_fcc_options');
+
my @locales = grep { ! /^en_/i } $conf->config('available-locales'); #should filter from the default locale lang instead of en_
my %locale_labels = map {
( $_ => 'Package -- '. FS::Locales->description($_) )
@@ -639,8 +654,7 @@ my $new_callback = sub {
my $conf = new FS::Conf;
if ( $conf->exists('agent_defaultpkg') ) {
- #my @all_agent_types = map {$_->typenum} qsearch('agent_type',{});
- @agent_type = map {$_->typenum} qsearch('agent_type',{});
+ @agent_type = map {$_->typenum} qsearch('agent_type', { 'disabled'=>'' });
}
$options{'suspend_bill'}=1 if $conf->exists('part_pkg-default_suspend_bill');
@@ -880,6 +894,11 @@ my $javascript = <<'END';
}
}
+ function finish_edit_fcc(id) {
+ cClick();
+ show_fcc_options(id); // refresh the display
+ }
+
END
my $warning =
@@ -940,7 +959,30 @@ my $html_bottom = sub {
my @fields = exists($plans{$layer}->{'fieldorder'})
? @{$plans{$layer}->{'fieldorder'}}
: keys %{ $href };
-
+
+ # hash of dependencies for each of the Pricing Plan fields.
+ # make sure NOT to use double-quotes inside the 'msg' value.
+ my $dependencies = {
+ 'unused_credit_suspend' => {
+ 'msg' => q|You must set the 'suspend_credit_type' option in Configuration->Settings to gain access to this option.|,
+ 'are_met' => sub{
+ my $conf = new FS::conf;
+ my @conf_info = qsearch('conf', { 'name' => 'suspend_credit_type' } );
+ return 1 if (exists($conf_info[0]) && $conf_info[0]->{Hash}{value});
+ return 0;
+ }
+ },
+ 'unused_credit_cancel' => {
+ 'msg' => q|You must set the 'cancel_credit_type' option in Configuration->Settings to gain access to this option.|,
+ 'are_met' => sub{
+ my $conf = new FS::conf;
+ my @conf_info = qsearch('conf', { 'name' => 'cancel_credit_type' } );
+ return 1 if (exists($conf_info[0]) && $conf_info[0]->{Hash}{value});
+ return 0;
+ }
+ }
+ };
+
foreach my $field ( grep $_ !~ /^(setup|recur)_fee$/, @fields ) {
if(!exists($href->{$field})) {
@@ -962,7 +1004,10 @@ my $html_bottom = sub {
#XXX these should use elements/ fields... (or this whole thing should
#just use layer_fields instead of layer_callback)
- if ( ! exists($href->{$field}{'type'}) ) {
+ if (exists($dependencies->{$field}) && !$dependencies->{$field}{'are_met'}()) {
+ $html .= q!N/A!;
+
+ } elsif ( ! exists($href->{$field}{'type'}) ) {
$html .= qq!