summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Robinson <miker@freeside.biz>2012-04-26 12:21:24 -0500
committerMike Robinson <miker@freeside.biz>2012-04-26 12:21:24 -0500
commit580dd345b7616365903b9fbedc162f77e5c8b91f (patch)
tree8d3730cfbf50059b52f1db1f7b6de10f2629ac4b
parent30d17233a3e064bb84417d16fd03feb52dc11dd0 (diff)
pkg_dundate_age condition (#17394)
-rw-r--r--FS/FS/part_event/Condition/pkg_dundate_age.pm43
1 files changed, 43 insertions, 0 deletions
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
index 000000000..2ea2a2041
--- /dev/null
+++ b/FS/FS/part_event/Condition/pkg_dundate_age.pm
@@ -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;