ticket_system-appointment-queueid config, RT#34237
authorIvan Kohler <ivan@freeside.biz>
Tue, 6 Oct 2015 01:35:13 +0000 (18:35 -0700)
committerIvan Kohler <ivan@freeside.biz>
Tue, 6 Oct 2015 01:35:13 +0000 (18:35 -0700)
FS/FS/Conf.pm
rt/share/html/Elements/CalendarSlotSchedule
rt/share/html/Search/Schedule.html

index 1e0d999..fa4ff41 100644 (file)
@@ -3074,12 +3074,14 @@ and customer address. Include units.',
                            }
                          },
   },
+
   {
     'key'         => 'ticket_system-force_default_queueid',
     'section'     => 'ticketing',
     'description' => 'Disallow queue selection when creating new tickets from customer view.',
     'type'        => 'checkbox',
   },
+
   {
     'key'         => 'ticket_system-selfservice_queueid',
     'section'     => 'ticketing',
@@ -3158,6 +3160,34 @@ and customer address. Include units.',
   },
 
   {
+    'key'         => 'ticket_system-appointment-queueid',
+    'section'     => 'ticketing',
+    'description' => 'Custom field from the ticketing system to use as an appointment classification.',
+    #false laziness w/above
+    'type'        => 'select-sub',
+    'options_sub' => sub {
+                           my $conf = new FS::Conf;
+                           if ( $conf->config('ticket_system') ) {
+                             eval "use FS::TicketSystem;";
+                             die $@ if $@;
+                             FS::TicketSystem->queues();
+                           } else {
+                             ();
+                           }
+                         },
+    'option_sub'  => sub { 
+                           my $conf = new FS::Conf;
+                           if ( $conf->config('ticket_system') ) {
+                             eval "use FS::TicketSystem;";
+                             die $@ if $@;
+                             FS::TicketSystem->queue(shift);
+                           } else {
+                             '';
+                           }
+                         },
+  },
+
+  {
     'key'         => 'ticket_system-escalation',
     'section'     => 'ticketing',
     'description' => 'Enable priority escalation of tickets as part of daily batch processing.',
index 045d6e4..4a9b3bc 100644 (file)
 %         # (XXX and eventually, package)
 %         my $cust_main = qsearchs('cust_main', { custnum=>$custnum } )
 %           or die "unknown custnum $custnum";
-%         my $Queue = $cust_main->agent->ticketing_queueid || 1; # || $default_queueid;#XXX really, pick pkg_category queue
+%
+%         my $conf = new FS::Conf;
+%         my $Queue = $conf->config('ticket_system-appointment-queueid')
+%           or die "ticket_system-appointment-queueid configuration not set";
+%
 %         my $member = "freeside://freeside/cust_main/$custnum";
 %
 %warn         my $Starts = int($tod_row/60). ':'. sprintf('%02d',$tod_row%60). ':00';
index be5a140..c729ff0 100644 (file)
 <& /Search/Calendar.html,
      @_,
      Query       => "( Status = 'new' OR Status = 'open' OR Status = 'stalled')
-                     AND ( Type = 'reminder' OR 'Type' = 'ticket' )",
-                    #XXX and we have the magic custom field
+                     AND ( Type = 'reminder' OR 'Type' = 'ticket' )
+                     AND Queue.id = $queueid ",
      slots       => scalar(@usernames),
      Embed       => 'Schedule.html',
      DimPast     => 1,
@@ -222,6 +222,11 @@ my $timestep =  RT->Config->Get('CalendarWeeklySizeMin') || 30; #1/2h
 </%ONCE>
 <%init>
 
+#abstraction-leaking
+my $conf = new FS::Conf;
+my $queueid = $conf->config('ticket_system-appointment-queueid')
+  or die "ticket_system-appointment-queueid configuration not set";
+
 my @files = ();
 #if ( ! $initialized ) {
   push @files, map "overlibmws$_", ( '', qw( _iframe _draggable _crossframe ) );