RT #28256: correcting error message in cancel_credit_type dependency info.
[freeside.git] / httemplate / edit / part_pkg.cgi
index a007a92..bdceb33 100755 (executable)
                             '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',
                               ),
                               {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?
 
                             { 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.
@@ -597,8 +607,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');
@@ -795,6 +804,11 @@ my $javascript = <<'END';
       }
     }
 
+    function finish_edit_fcc(id) {
+      cClick();
+      show_fcc_options(id); // refresh the display
+    }
+
 END
 
 my $warning =
@@ -855,7 +869,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})) {
@@ -877,7 +914,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!<span title="!.$dependencies->{$field}{'msg'}.q!">N/A</span>!;
+          
+      } elsif ( ! exists($href->{$field}{'type'}) ) {
   
         $html .= qq!<INPUT TYPE="text" NAME="${layer}__$field" VALUE="!.
                  ( exists($options{$field})