Optimize "Customer has a referring customer" condition, RT#74452
[freeside.git] / httemplate / browse / sched_item.html
1 <& elements/browse.html,
2      'title'         => 'Installer schedules', #$sched_item_class->classname. ' schedules',
3      'name_singular' => 'installer', #$sched_item_class->classname
4      'query'         => { 'table' => 'sched_item' },
5      'count_query'   => 'SELECT COUNT(*) FROM sched_item',
6      'header'        => [ 'Installer', #$sched_item_class->classname
7                           @dow,
8                           'Overrides',
9                         ],
10      'fields'        => [ 'name',
11                           ( map dow_factory($_), (0..6) ),
12                           $override_sub,
13                         ],
14      'links'         => [ $link, ],
15      'disableable'        => 1,
16      'disabled_statuspos' => 1,
17 &>
18 <%init>
19
20 #XXX more specific AccessRight for scheduling
21 die "access denied"
22   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
23
24 my $link = [ $p.'edit/sched_item.html?', 'itemnum' ];
25
26 my @dow = qw( Sunday Monday Tuesday Wednesday Thursday Friday Saturday );
27
28 sub dow_factory {
29   my $wday = shift;
30
31   return sub {
32      my $sched_item = shift;
33
34      my @sched_avail = qsearch({
35                          'table'   => 'sched_avail',
36                          'hashref' => {
37                            'itemnum'       => $sched_item->itemnum,
38                            'wday'          => $wday, #thanks, closure
39                            'override_date' => '',
40                          },
41                          'order_by' => 'ORDER BY stime',
42                        });
43
44     return 'Not available' unless @sched_avail;
45
46     #data
47     # align bgcolor colspan rowspan style valign width
48     # link onclick size data_style   
49
50     [
51       map {
52             [ { data=> $_->stime_pretty },
53               { data=> '-', },
54               { data=> $_->etime_pretty },
55             ];
56           }
57         @sched_avail
58     ];
59
60   };
61
62 }
63
64 my $override_sub = sub {
65   my $sched_item = shift;
66
67    my @sched_avail = qsearch({
68                        'table'   => 'sched_avail',
69                        'hashref' => {
70                          'itemnum'       => $sched_item->itemnum,
71                          'override_date' => { op=>'!=', value=>'' },
72                        },
73                        'order_by' => 'ORDER BY override_date, stime',
74                      });
75
76   return 'None' unless @sched_avail;
77
78   #XXX print each override date (and day of week)
79
80 };
81
82 </%init>