remove obsolete FCC DS0 options
[freeside.git] / httemplate / edit / part_pkg.cgi
index 65eca6c..6629407 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',
@@ -66,8 +68,6 @@
                    'svc_dst_pkgpart'  => 'Include services of package',
                    'supp_dst_pkgpart' => 'When ordering package, also order',
                    'report_option'    => 'Report classes',
-                   'fcc_ds0s'         => 'Voice-grade equivalents',
-                   'fcc_voip_class'   => 'Category',
                    'delay_start'      => 'Default delay (days)',
                  },
 
                      ),
                      {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.
@@ -644,8 +652,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');
@@ -885,6 +892,11 @@ my $javascript = <<'END';
       }
     }
 
+    function finish_edit_fcc(id) {
+      cClick();
+      show_fcc_options(id); // refresh the display
+    }
+
 END
 
 my $warning =
@@ -945,7 +957,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})) {
@@ -967,7 +1002,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})