[freeside-commits] branch FREESIDE_3_BRANCH updated. 4300dd2e09cb0544c067a2d9a9fd92e534e49802

Jonathan Prykop jonathan at 420.am
Mon Apr 25 12:05:53 PDT 2016


The branch, FREESIDE_3_BRANCH has been updated
       via  4300dd2e09cb0544c067a2d9a9fd92e534e49802 (commit)
      from  0024f2331ce82ffaa87af9c6bd516d5bbe851923 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 4300dd2e09cb0544c067a2d9a9fd92e534e49802
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Mon Apr 25 13:49:57 2016 -0500

    RT#37544 Prevent billing events from running on weekends

diff --git a/FS/FS/part_event/Condition/day_of_week.pm b/FS/FS/part_event/Condition/day_of_week.pm
new file mode 100644
index 0000000..6b84310
--- /dev/null
+++ b/FS/FS/part_event/Condition/day_of_week.pm
@@ -0,0 +1,49 @@
+package FS::part_event::Condition::day_of_week;
+
+use strict;
+use base qw( FS::part_event::Condition );
+use FS::Record qw( dbh );
+
+tie my %dayofweek, 'Tie::IxHash', 
+  0 => 'Sunday',
+  1 => 'Monday',
+  2 => 'Tuesday',
+  3 => 'Wednesday',
+  4 => 'Thursday',
+  5 => 'Friday',
+  6 => 'Saturday',
+;
+
+sub description {
+  "Run only on certain days of the week",
+}
+
+sub option_fields {
+  (
+    'dayofweek' => {
+       label         => 'Days to run',
+       type          => 'checkbox-multiple',
+       options       => [ values %dayofweek ],
+       option_labels => { map { $_ => $_ } values %dayofweek },
+    },
+  );
+}
+
+sub condition { # is this even necessary? condition_sql is exact.
+  my( $self, $object, %opt ) = @_;
+
+  my $today = $dayofweek{(localtime($opt{'time'}))[6]};
+  if (grep { $_ eq $today } (keys %{$self->option('dayofweek')})) {
+    return 1;
+  }
+  '';
+}
+
+sub condition_sql {
+  my( $class, $table, %opt ) = @_;
+  my $today = $dayofweek{(localtime($opt{'time'}))[6]};
+  my $day = $class->condition_sql_option_option('dayofweek');
+  return dbh->quote($today) . " IN $day";
+}
+
+1;

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/part_event/Condition/day_of_week.pm |   49 +++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 FS/FS/part_event/Condition/day_of_week.pm




More information about the freeside-commits mailing list