another (hopefully significant) billing optimization, RT#6802
authorivan <ivan>
Sun, 19 Sep 2010 03:02:09 +0000 (03:02 +0000)
committerivan <ivan>
Sun, 19 Sep 2010 03:02:09 +0000 (03:02 +0000)
FS/FS/part_event/Condition.pm
FS/FS/part_event/Condition/payby.pm

index ddd8a61..90b8385 100644 (file)
@@ -306,6 +306,28 @@ sub condition_sql_option {
    )";
 }
 
+#c.f. part_event_condition_option.pm / part_event_condition_option_option
+#used for part_event/Condition/payby.pm
+sub condition_sql_option_option {
+  my( $class, $option ) = @_;
+
+  ( my $condname = $class ) =~ s/^.*:://;
+
+  my $optionnum = 
+    "( SELECT optionnum FROM part_event_condition_option
+        WHERE part_event_condition_option.eventconditionnum =
+              cond_$condname.eventconditionnum
+          AND part_event_condition_option.optionname  = '$option'
+          AND part_event_condition_option.optionvalue = 'HASH'
+     )";
+
+  "( SELECT optionname FROM part_event_condition_option_option
+       WHERE optionnum = $optionnum
+   )";
+
+}
+
+
 =item condition_sql_option_age_from OPTION FROM_TIMESTAMP
 
 This is a class method that returns an SQL fragment that will retreive a
index d931568..16bf480 100644 (file)
@@ -30,21 +30,15 @@ sub condition {
 
   my $cust_main = $self->cust_main($object);
 
-  #uuh.. all right?  test this.
   my $hashref = $self->option('payby') || {};
   $hashref->{ $cust_main->payby };
 
 }
 
-#sub condition_sql {
-#  my( $self, $table ) = @_;
-#
-#  #uuh... yeah... something like this.  test it for sure.
-#
-#  my @payby = keys %{ $self->option('payby') };
-#
-#  ' ( '. join(' OR ', map { "cust_main.payby = '$_'" } @payby ). ' ) ';
-#
-#}
+sub condition_sql {
+  my( $self, $table ) = @_;
+
+  'cust_main.payby IN '. $self->condition_sql_option_option('payby');
+}
 
 1;