diff options
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/part_event/Condition/billday.pm | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/FS/FS/part_event/Condition/billday.pm b/FS/FS/part_event/Condition/billday.pm index e067f87f7..7cd74a1f9 100644 --- a/FS/FS/part_event/Condition/billday.pm +++ b/FS/FS/part_event/Condition/billday.pm @@ -9,22 +9,37 @@ sub description { "Customer's monthly billing day is before or on current day or customer has no billing day"; } +sub option_fields { + ( + 'delay' => { label => 'Delay additional days', + type => 'text', + value => '1', + }, + ); +} + + sub condition { my( $self, $object ) = @_; my $cust_main = $self->cust_main($object); my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); + + my $delay = $self->option('delay'); + $delay = 0 unless length($delay); - (!$cust_main->billday) || ($mday >= $cust_main->billday); + (!$cust_main->billday) || ($mday >= $cust_main->billday + $delay); } sub condition_sql { - my( $self, $table ) = @_; + my( $class, $table, %opt ) = @_; my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); - - "cust_main.billday is null or $mday >= cust_main.billday"; + + my $delay = $class->condition_sql_option_integer('delay', $opt{'driver_name'}); + + "cust_main.billday is null or $mday >= (cust_main.billday + $delay)"; } 1; |