pkg_dundate_age condition (#17394)
authorMike Robinson <miker@freeside.biz>
Thu, 26 Apr 2012 17:21:24 +0000 (12:21 -0500)
committerMike Robinson <miker@freeside.biz>
Thu, 26 Apr 2012 17:21:24 +0000 (12:21 -0500)
FS/FS/part_event/Condition/pkg_dundate_age.pm [new file with mode: 0644]

diff --git a/FS/FS/part_event/Condition/pkg_dundate_age.pm b/FS/FS/part_event/Condition/pkg_dundate_age.pm
new file mode 100644 (file)
index 0000000..2ea2a20
--- /dev/null
@@ -0,0 +1,43 @@
+package FS::part_event::Condition::pkg_dundate_age;
+use base qw( FS::part_event::Condition );
+
+use strict;
+
+sub description {
+  "Skip until specified #days before package suspension delay date";
+}
+
+
+sub option_fields {
+  (
+    'age'     => { 'label'      => 'Time before suspension delay date',
+                   'type'       => 'freq',
+                 },
+  );
+}
+
+sub eventtable_hashref {
+  { 'cust_main' => 0,
+    'cust_bill' => 0,
+    'cust_pkg'  => 1,
+  };
+}
+
+sub condition {
+  my($self, $cust_pkg, %opt) = @_;
+
+  my $age = $self->option_age_from('age', $opt{'time'} );
+
+  $cust_pkg->dundate <= $age;
+}
+
+sub condition_sql {
+  my( $class, $table, %opt ) = @_;
+  return 'true' unless $table eq 'cust_pkg';
+  
+  my $age = $class->condition_sql_option_age_from('age', $opt{'time'});
+  
+  "COALESCE($table.dundate,0) <= ". $age;
+}
+
+1;