Option to ignore old CDRs, RT#81480
[freeside.git] / httemplate / browse / part_event.html
index f68f06b..ea97391 100644 (file)
@@ -10,7 +10,7 @@
                 'query'              => { 'select'    => 'part_event.*',
                                           'table'     => 'part_event',
                                           'addl_from' => $join_conditions,
-                                          'hashref'   => {},
+                                          'hashref'   => $hashref,
                                           'order_by'  => $order_conditions,
                                         },
                 'count_query'        => $count_query,
                                           'Action',
                                         ],
                 'fields'             => [ 'eventpart',
-                                          'event',
+                                          $event_sub,
                                           $eventtable_sub,
                                           $check_freq_sub,
                                           $conditions_sub,
                                           $action_sub,
                                         ],
                 'links'              => [ $link,
-                                          $link,
+                                          '',
                                           '',
                                           '',
                                           '',
 %>
 <%once>
 
+my $link = [ $p.'edit/part_event.html?', 'eventpart' ];
+
+my $event_sub = sub {
+  my $part_event = shift;
+  my $onclick = include('/elements/popup_link_onclick.html',
+    action      => $p.'view/part_event-targets.html?eventpart='.
+                    $part_event->eventpart,
+    actionlabel => 'Event query', #no, XSS - '.$part_event->event,
+    width       => 650,
+    height      => 420,
+    close_text  => 'Close',
+  );
+  [#rows
+    [#subcolumns
+      {
+        'data'       => encode_entities($part_event->event),
+        'link'       => $p.'edit/part_event.html?'.$part_event->eventpart,
+      },
+      {
+        'data'       => '(query) ',
+        'size'       => '-1',
+        'data_style' => 'b',
+        'onclick'    => $onclick,
+      },
+    ],
+  ];
+};
+
 my $eventtable_labels = FS::part_event->eventtable_labels;
 my $eventtable_sub = sub { $eventtable_labels->{ shift->eventtable }; };
 
@@ -50,14 +78,39 @@ my $conditions_sub = sub {
   my $part_event = shift;
   my $addl = 0;
 
+
   [
     map {
            my $part_event_condition = $_;
            my %options = $part_event_condition->options;
 
+           my $desc = $part_event_condition->description;
+
+           if ( $cgi->param('test_eventtable_num') =~ /^(\d+)$/ ) {
+
+             my $tablenum = $1;
+
+             if ( $cgi->param('eventtable') =~ /^(cust_main|cust_pkg|cust_bill)$/ ) {
+               my $eventtable = "FS::$1";
+               my $object = $eventtable->by_key($tablenum);
+
+               my $cust_event = $part_event->new_cust_event($object);
+
+               my $test = $part_event_condition->condition(
+                            $object,
+                            'cust_event' => $cust_event,
+                          );
+                                                 
+               my $yesno = $test ? '(<FONT COLOR="#00ff00">yes</FONT>)'
+                                 : '(<FONT COLOR="#ff0000">no</FONT>)';
+
+               $desc .= " $yesno";
+             }
+           }
+
            [
              {
-               'data'       => $part_event_condition->description,
+               'data'       => $desc,
                'width'      => '100%',
                'align'      => 'center',
                'colspan'    => 2,
@@ -131,8 +184,6 @@ my $action_sub = sub {
 
 };
 
-my $link = [ $p.'edit/part_event.html?', 'eventpart' ];
-
 </%once>
 <%init>
 
@@ -140,6 +191,7 @@ die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('Edit billing events')
       || $FS::CurrentUser::CurrentUser->access_right('Edit global billing events');
 
+
 my $html_init =
   #XXX better description
   'Events are billing, collection or other actions triggered when certain '.
@@ -148,21 +200,35 @@ my $html_init =
   qq!<A HREF="${p}edit/part_event.html"><I>Add a new event</I></A>!.
   '&nbsp;or&nbsp;<SELECT NAME="clone"><OPTION></OPTION>';
 
-foreach my $part_event ( qsearch('part_event', {'diabled'=>''}) ) {
-  $html_init .=  '<OPTION VALUE="'. $part_event->eventpart. '">'.
-                  $part_event->eventpart. ': '. $part_event->event. '</OPTION>';
+foreach my $part_event ( qsearch('part_event', {'disabled'=>''}) ) {
+  $html_init .= '<OPTION VALUE="'. $part_event->eventpart. '">'.
+                  $part_event->eventpart. ': '. 
+                  encode_entities($part_event->event).
+                '</OPTION>';
 }
 
 $html_init .= '</SELECT><INPUT TYPE="submit" VALUE="Clone existing event">'.
               '</FORM><BR>';
-     
+
+my $hashref = {};
+
 my $count_query = 'SELECT COUNT(*) FROM part_event WHERE '.
                   $FS::CurrentUser::CurrentUser->agentnums_sql(
                     'null_right'    => 'Edit global billing events',
                     'viewall_right' => 'None',
                   );
 
-my $join_conditions  = FS::part_event_condition->join_conditions_sql;
+if ( $cgi->param('eventtable') =~ /^(\w+)$/ ) {
+  $hashref->{eventtable} = $1;
+  $count_query .= " AND eventtable = '$1' ";
+}
+
+my $tablenum = '';
+if ( $cgi->param('test_eventtable_num') =~ /^(\d+)$/ ) {
+  $tablenum = $1;
+}
+
+my $join_conditions  = FS::part_event_condition->join_conditions_sql('', 'time' => time);
 my $order_conditions = FS::part_event_condition->order_conditions_sql;
 
 </%init>