[freeside-commits] branch FREESIDE_3_BRANCH updated. 94c8f1ae6c162ce49dc59cb8edb46ce63e25555a

Jonathan Prykop jonathan at 420.am
Mon Aug 24 16:01:32 PDT 2015


The branch, FREESIDE_3_BRANCH has been updated
       via  94c8f1ae6c162ce49dc59cb8edb46ce63e25555a (commit)
       via  1228954b61d149e6c890365ce3555002209f5e62 (commit)
       via  98ed783317fe098b221dda211ef6264cf6334c43 (commit)
      from  0d678bcd0d18621ede25d0465b71e919e1c5212e (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 94c8f1ae6c162ce49dc59cb8edb46ce63e25555a
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Mon Aug 24 17:50:58 2015 -0500

    RT#14829: automatic payments triggered by bill now show up as Payment by fs_queue [v3 only]

diff --git a/FS/FS/queue.pm b/FS/FS/queue.pm
index 35f4d65..9bbaf34 100644
--- a/FS/FS/queue.pm
+++ b/FS/FS/queue.pm
@@ -406,20 +406,19 @@ sub update_statustext {
   #'';
 }
 
-# not needed in 4
-#=item access_user
-#
-#Returns FS::access_user object (if any) associated with this user.
-#
-#Returns nothing if not found.
-#
-#=cut
-#
-#sub access_user {
-#  my $self = shift;
-#  my $usernum = $self->usernum || return ();
-#  return qsearchs('access_user',{ 'usernum' => $usernum }) || ();
-#}
+=item access_user
+
+Returns FS::access_user object (if any) associated with this user.
+
+Returns nothing if not found.
+
+=cut
+
+sub access_user {
+  my $self = shift;
+  my $usernum = $self->usernum || return ();
+  return qsearchs('access_user',{ 'usernum' => $usernum }) || ();
+}
 
 =back
 

commit 1228954b61d149e6c890365ce3555002209f5e62
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Mon Aug 24 17:23:33 2015 -0500

    RT#14829: automatic payments triggered by bill now show up as Payment by fs_queue [fixed local CurrentUser]

diff --git a/FS/FS/queue.pm b/FS/FS/queue.pm
index 9bbaf34..35f4d65 100644
--- a/FS/FS/queue.pm
+++ b/FS/FS/queue.pm
@@ -406,19 +406,20 @@ sub update_statustext {
   #'';
 }
 
-=item access_user
-
-Returns FS::access_user object (if any) associated with this user.
-
-Returns nothing if not found.
-
-=cut
-
-sub access_user {
-  my $self = shift;
-  my $usernum = $self->usernum || return ();
-  return qsearchs('access_user',{ 'usernum' => $usernum }) || ();
-}
+# not needed in 4
+#=item access_user
+#
+#Returns FS::access_user object (if any) associated with this user.
+#
+#Returns nothing if not found.
+#
+#=cut
+#
+#sub access_user {
+#  my $self = shift;
+#  my $usernum = $self->usernum || return ();
+#  return qsearchs('access_user',{ 'usernum' => $usernum }) || ();
+#}
 
 =back
 
diff --git a/FS/bin/freeside-queued b/FS/bin/freeside-queued
index 82dc814..a6a7576 100644
--- a/FS/bin/freeside-queued
+++ b/FS/bin/freeside-queued
@@ -218,13 +218,12 @@ while (1) {
       # don't put @args in the log, may expose passwords
       $log->info('starting job ('.$ljob->job.')');
       warn 'running "&'. $ljob->job. '('. join(', ', @args). ")\n" if $DEBUG;
-      # switch user only if a job user is available
-      my $oldCurrentUser = $FS::CurrentUser::CurrentUser;
-      my $jobuser = $ljob->access_user;
-      local $FS::CurrentUser::CurrentUser = $jobuser if $jobuser;
       local $FS::UID::AutoCommit = 0; # so that we can clean up failures
-      eval $eval; #throw away return value?  suppose so
-      $FS::CurrentUser::CurrentUser = $oldCurrentUser if $jobuser;
+      do {
+        # switch user only if a job user is available
+        local $FS::CurrentUser::CurrentUser = $ljob->access_user || $FS::CurrentUser::CurrentUser;
+        eval $eval; #throw away return value?  suppose so
+      };
       if ( $@ ) {
         dbh->rollback;
         my %hash = $ljob->hash;

commit 98ed783317fe098b221dda211ef6264cf6334c43
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Thu Aug 20 01:42:15 2015 -0500

    RT#14829: automatic payments triggered by bill now show up as Payment by fs_queue

diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index e06fce6..1166f24 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -2962,6 +2962,7 @@ sub tables_hashref {
         'custnum',        'int', 'NULL',      '', '', '',
         'secure',        'char', 'NULL',       1, '', '',
         'priority',       'int', 'NULL',      '', '', '',
+        'usernum',        'int', 'NULL',      '', '', '',
       ],
       'primary_key' => 'jobnum',
       'unique'      => [],
diff --git a/FS/FS/queue.pm b/FS/FS/queue.pm
index 3f8763d..9bbaf34 100644
--- a/FS/FS/queue.pm
+++ b/FS/FS/queue.pm
@@ -98,6 +98,10 @@ Optional link to customer (see L<FS::cust_main>).
 Secure flag, 'Y' indicates that when using encryption, the job needs to be
 run on a machine with the private key.
 
+=item usernum
+
+For access_user that created the job
+
 =cut
 
 =back
@@ -152,6 +156,8 @@ sub insert {
 
   $self->custnum( $args{'custnum'} ) if $args{'custnum'};
 
+  $self->usernum($FS::CurrentUser::CurrentUser->usernum) unless $self->usernum;
+
   my $error = $self->SUPER::insert;
   if ( $error ) {
     $dbh->rollback if $oldAutoCommit;
@@ -263,6 +269,7 @@ sub check {
     || $self->ut_enum('status',['', qw( new locked failed done )])
     || $self->ut_anything('statustext')
     || $self->ut_numbern('svcnum')
+    || $self->ut_foreign_keyn('usernum', 'access_user', 'usernum')
   ;
   return $error if $error;
 
@@ -399,6 +406,20 @@ sub update_statustext {
   #'';
 }
 
+=item access_user
+
+Returns FS::access_user object (if any) associated with this user.
+
+Returns nothing if not found.
+
+=cut
+
+sub access_user {
+  my $self = shift;
+  my $usernum = $self->usernum || return ();
+  return qsearchs('access_user',{ 'usernum' => $usernum }) || ();
+}
+
 =back
 
 =head1 SUBROUTINES
diff --git a/FS/bin/freeside-queued b/FS/bin/freeside-queued
index f5284e7..82dc814 100644
--- a/FS/bin/freeside-queued
+++ b/FS/bin/freeside-queued
@@ -218,8 +218,13 @@ while (1) {
       # don't put @args in the log, may expose passwords
       $log->info('starting job ('.$ljob->job.')');
       warn 'running "&'. $ljob->job. '('. join(', ', @args). ")\n" if $DEBUG;
+      # switch user only if a job user is available
+      my $oldCurrentUser = $FS::CurrentUser::CurrentUser;
+      my $jobuser = $ljob->access_user;
+      local $FS::CurrentUser::CurrentUser = $jobuser if $jobuser;
       local $FS::UID::AutoCommit = 0; # so that we can clean up failures
       eval $eval; #throw away return value?  suppose so
+      $FS::CurrentUser::CurrentUser = $oldCurrentUser if $jobuser;
       if ( $@ ) {
         dbh->rollback;
         my %hash = $ljob->hash;
diff --git a/httemplate/search/queue.html b/httemplate/search/queue.html
index 141c535..22032b1 100644
--- a/httemplate/search/queue.html
+++ b/httemplate/search/queue.html
@@ -13,6 +13,7 @@
                                'Date',
                                'Status',
                                'Account', # unless $hashref->{'svcnum'}
+                               'Employee',
                                '', # checkbox column
                              ],
                  'fields' => [
@@ -78,6 +79,11 @@
                                },
                                sub {
                                  my $queue = shift;
+                                 my $access_user = $queue->access_user;
+                                 return $access_user ? $access_user->username : '';
+                               },
+                               sub {
+                                 my $queue = shift;
                                  my $jobnum = $queue->jobnum;
                                  my $status = $queue->status;
                                  my $changable = $dangerous

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

Summary of changes:
 FS/FS/Schema.pm              |    1 +
 FS/FS/queue.pm               |   21 +++++++++++++++++++++
 FS/bin/freeside-queued       |    6 +++++-
 httemplate/search/queue.html |    6 ++++++
 4 files changed, 33 insertions(+), 1 deletion(-)




More information about the freeside-commits mailing list