[freeside-commits] branch master updated. e928101f860813b7485e79ea549e736f69c50948

Christopher Burger burgerc at freeside.biz
Mon Jun 4 17:10:50 PDT 2018


The branch, master has been updated
       via  e928101f860813b7485e79ea549e736f69c50948 (commit)
      from  83d79f6af4ddd62735263e55f2249ba80fd9f402 (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 e928101f860813b7485e79ea549e736f69c50948
Author: Christopher Burger <burgerc at freeside.biz>
Date:   Mon Jun 4 20:10:15 2018 -0400

    RT# 77917 - Updated event option Agent to allow for selection of multiple agents.

diff --git a/FS/FS/Upgrade.pm b/FS/FS/Upgrade.pm
index 0069e207a..5be33fa59 100644
--- a/FS/FS/Upgrade.pm
+++ b/FS/FS/Upgrade.pm
@@ -501,6 +501,9 @@ sub upgrade_data {
     #'compliance solutions' -> 'compliance_solutions'
     'tax_rate' => [],
     'tax_rate_location' => [],
+
+    #upgrade part_event_condition_option agentnum to a multiple hash value
+    'part_event_condition_option' =>[],
   ;
 
   \%hash;
diff --git a/FS/FS/part_event/Condition/agent.pm b/FS/FS/part_event/Condition/agent.pm
index bdd4e12de..917cf468b 100644
--- a/FS/FS/part_event/Condition/agent.pm
+++ b/FS/FS/part_event/Condition/agent.pm
@@ -13,7 +13,7 @@ sub description {
 
 sub option_fields {
   (
-    'agentnum'   => { label=>'Agent', type=>'select-agent', },
+    'agentnum'   => { label=>'Agent', type=>'select-agent', multiple => '1' },
   );
 }
 
@@ -22,16 +22,15 @@ sub condition {
 
   my $cust_main = $self->cust_main($object);
 
-  my $agentnum = $self->option('agentnum');
-
-  $cust_main->agentnum == $agentnum;
+  my $hashref = $self->option('agentnum') || {};
+  grep $hashref->{ $_->agentnum }, $cust_main->agent;
 
 }
 
 sub condition_sql {
   my( $class, $table, %opt ) = @_;
 
-  "cust_main.agentnum = " . $class->condition_sql_option_integer('agentnum', $opt{'driver_name'});
+  "cust_main.agentnum IN " . $class->condition_sql_option_option_integer('agentnum', $opt{'driver_name'});
 }
 
 1;
diff --git a/FS/FS/part_event_condition_option.pm b/FS/FS/part_event_condition_option.pm
index 3256dc0bd..15a6a5553 100644
--- a/FS/FS/part_event_condition_option.pm
+++ b/FS/FS/part_event_condition_option.pm
@@ -138,6 +138,30 @@ sub optionvalue {
   }
 }
 
+use FS::upgrade_journal;
+sub _upgrade_data { #class method
+  my ($class, %opts) = @_;
+
+  # migrate part_event_condition_option agentnum to part_event_condition_option_option agentnum
+  unless ( FS::upgrade_journal->is_done('agentnum_to_hash') ) {
+
+    foreach my $condition_option (qsearch('part_event_condition_option', { optionname => 'agentnum', })) {
+      my $optionvalue = $condition_option->get("optionvalue");
+      if ($optionvalue eq 'HASH' ) { next; }
+      else {
+        my $options = {"$optionvalue" => '1',};
+        $condition_option->optionvalue(ref($options));
+        my $error = $condition_option->replace($options);
+        die $error if $error;
+      }
+    }
+
+    FS::upgrade_journal->set_done('agentnum_to_hash');
+
+  }
+
+}
+
 =back
 
 =head1 SEE ALSO

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

Summary of changes:
 FS/FS/Upgrade.pm                     |  3 +++
 FS/FS/part_event/Condition/agent.pm  |  9 ++++-----
 FS/FS/part_event_condition_option.pm | 24 ++++++++++++++++++++++++
 3 files changed, 31 insertions(+), 5 deletions(-)




More information about the freeside-commits mailing list