[freeside-commits] branch FREESIDE_2_3_BRANCH updated. 8b880b29eecb361cc232d57c494aa70788232b9e

Mark Wells mark at 420.am
Sat Mar 17 17:03:50 PDT 2012


The branch, FREESIDE_2_3_BRANCH has been updated
       via  8b880b29eecb361cc232d57c494aa70788232b9e (commit)
      from  10b4364dc788df061006dd866fde79cff08645fc (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 8b880b29eecb361cc232d57c494aa70788232b9e
Author: Mark Wells <mark at freeside.biz>
Date:   Sat Mar 17 17:02:50 2012 -0700

    add "stagger" event condition, #16827

diff --git a/FS/FS/part_event/Condition/stagger.pm b/FS/FS/part_event/Condition/stagger.pm
new file mode 100644
index 0000000..1850c83
--- /dev/null
+++ b/FS/FS/part_event/Condition/stagger.pm
@@ -0,0 +1,45 @@
+package FS::part_event::Condition::stagger;
+
+use strict;
+use FS::Record qw( qsearch );
+use FS::part_event;
+use FS::cust_event;
+
+use base qw( FS::part_event::Condition );
+
+sub description { "Stagger this event across the month" }; #could be clearer?
+
+sub option_fields {
+  # delay? it's supposed to be arbitrary anyway
+}
+
+sub condition {
+  my($self, $object, %opt) = @_;
+
+  my $obj_pkey = $object->primary_key;
+  my $tablenum = $object->$obj_pkey();
+
+  my ($today) = (localtime($opt{'time'}))[3];
+
+  $today - 1 == ($tablenum - 1) % 28;
+}
+
+sub condition_sql {
+  my( $class, $table, %opt ) = @_;
+
+  my %tablenum = %{ FS::part_event->eventtable_pkey_sql };
+
+  my $today;
+  if ( $opt{'driver_name'} eq 'Pg' ) {
+    $today = "EXTRACT( DAY FROM TO_TIMESTAMP(".$opt{'time'}.") )::INTEGER";
+  }
+  elsif ( $opt{'driver_name'} eq 'mysql' ) {
+    $today = "DAY( FROM_UNIXTIME(".$opt{'time'}.") )";
+  }
+  else {
+    return 'true';
+  }
+  "($today - 1) = ($tablenum{$table} - 1) % 28";
+}
+
+1;

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

Summary of changes:
 FS/FS/part_event/Condition/stagger.pm |   45 +++++++++++++++++++++++++++++++++
 1 files changed, 45 insertions(+), 0 deletions(-)
 create mode 100644 FS/FS/part_event/Condition/stagger.pm




More information about the freeside-commits mailing list