[freeside-commits] branch master updated. 2e7ce01632012ccc0dd440a8bc37a9ec9bd55fac

Ivan ivan at 420.am
Thu Oct 24 23:30:00 PDT 2013


The branch, master has been updated
       via  2e7ce01632012ccc0dd440a8bc37a9ec9bd55fac (commit)
      from  7b20719d5f7269adfebf55975766cd6eca4a7dd5 (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 2e7ce01632012ccc0dd440a8bc37a9ec9bd55fac
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Thu Oct 24 23:29:58 2013 -0700

    limit sales reports for employee, RT#25524

diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index fcc2092..59c2abe 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -3804,6 +3804,7 @@ sub tables_hashref {
         'last',               'varchar', 'NULL', $char_d, '', '', 
         'first',              'varchar', 'NULL', $char_d, '', '', 
         'user_custnum',           'int', 'NULL',      '', '', '',
+        'report_salesnum',        'int', 'NULL',      '', '', '',
         'disabled',              'char', 'NULL',       1, '', '', 
       ],
       'primary_key' => 'usernum',
diff --git a/FS/FS/access_user.pm b/FS/FS/access_user.pm
index 7c25acb..c938474 100644
--- a/FS/FS/access_user.pm
+++ b/FS/FS/access_user.pm
@@ -11,6 +11,7 @@ use FS::access_user_pref;
 use FS::access_usergroup;
 use FS::agent;
 use FS::cust_main;
+use FS::sales;
 
 $DEBUG = 0;
 $me = '[FS::access_user]';
@@ -213,6 +214,7 @@ sub check {
     || $self->ut_textn('last')
     || $self->ut_textn('first')
     || $self->ut_foreign_keyn('user_custnum', 'cust_main', 'custnum')
+    || $self->ut_foreign_keyn('report_salesnum', 'sales', 'salesnum')
     || $self->ut_enum('disabled', [ '', 'Y' ] )
   ;
   return $error if $error;
@@ -246,6 +248,18 @@ sub user_cust_main {
   qsearchs( 'cust_main', { 'custnum' => $self->user_custnum } );
 }
 
+=item report_sales
+
+Returns the FS::sales object (see L<FS::sales>), if any, for this
+user.
+
+=cut
+
+sub report_sales {
+  my $self = shift;
+  qsearchs( 'sales', { 'salesnum' => $self->report_salesnum } );
+}
+
 =item access_usergroup
 
 Returns links to the the groups this user is a part of, as FS::access_usergroup
diff --git a/httemplate/edit/access_user.html b/httemplate/edit/access_user.html
index b087943..2d39f96 100644
--- a/httemplate/edit/access_user.html
+++ b/httemplate/edit/access_user.html
@@ -7,17 +7,19 @@
                                'last',
                                'first',
                                { field=>'user_custnum', type=>'search-cust_main', },
+                               { field=>'report_salesnum', type=>'select-sales', empty_label=>'all', },
                                { field=>'disabled', type=>'checkbox', value=>'Y' },
                              ],
                  'labels' => { 
-                               'usernum'      => 'User number',
-                               'username'     => 'Username',
-                               '_password'    => 'Password',
-                               '_password2'   => 'Re-enter Password',
-                               'last'         => 'Last name',
-                               'first'        => 'First name',
-                               'user_custnum' => 'Customer (optional)',
-                               'disabled'     => 'Disable employee',
+                               'usernum'         => 'User number',
+                               'username'        => 'Username',
+                               '_password'       => 'Password',
+                               '_password2'      => 'Re-enter Password',
+                               'last'            => 'Last name',
+                               'first'           => 'First name',
+                               'user_custnum'    => 'Customer (optional)',
+                               'report_salesnum' => 'Limit commission report to sales person',
+                               'disabled'        => 'Disable employee',
                              },
                  'edit_callback' => \&edit_callback,
                  'field_callback'=> \&field_callback,
@@ -68,8 +70,8 @@ my $check_user_custnum_search = <<END;
 END
 
 sub edit_callback {
-  my ($c, $o, $f, $opt) = @_;
-  $o->set('_password', '');
+  my ($cgi, $access_user, $fields_listref, $opt_hashref) = @_;
+  $access_user->_password('');
 }
 
 sub field_callback {
diff --git a/httemplate/search/report_sales_commission.html b/httemplate/search/report_sales_commission.html
index 792c335..19af428 100644
--- a/httemplate/search/report_sales_commission.html
+++ b/httemplate/search/report_sales_commission.html
@@ -4,25 +4,34 @@
 
 <TABLE BGCOLOR="#cccccc" CELLSPACING=0>
 
-<& /elements/tr-select-agent.html,
-     'onchange'      => 'agent_changed(this)',
-&>
+% if ( $curuser->report_salesnum ) {
 
-<SCRIPT TYPE="text/javascript">
+    <INPUT TYPE="hidden" NAME="agentnum" VALUE="<% $curuser->report_sales->agentnum %>">
+    <INPUT TYPE="hidden" NAME="salesnum" VALUE="<% $curuser->report_salesnum %>">
 
-  function agent_changed(what) {
-    salesnum_agentnum_changed(what);
-  }
+% } else {
 
-  <&| /elements/onload.js &>
-  agent_changed(document.getElementById('agentnum'))
-  </&>
+    <& /elements/tr-select-agent.html,
+         'onchange'      => 'agent_changed(this)',
+    &>
 
-</SCRIPT>
+    <SCRIPT TYPE="text/javascript">
 
-<& /elements/tr-select-sales.html,
-    'empty_label' => 'all',
-&>
+      function agent_changed(what) {
+        salesnum_agentnum_changed(what);
+      }
+
+      <&| /elements/onload.js &>
+      agent_changed(document.getElementById('agentnum'))
+      </&>
+
+    </SCRIPT>
+
+    <& /elements/tr-select-sales.html,
+        'empty_label' => 'all',
+    &>
+
+% }
 
 <& /elements/tr-checkbox.html,
     'label' => 'Customer sales person if there is no package sales person',
@@ -46,7 +55,8 @@
 <% include('/elements/footer.html') %>
 <%init>
 
-die "access denied"
-  unless $FS::CurrentUser::CurrentUser->access_right('Financial reports');
+my $curuser = $FS::CurrentUser::CurrentUser;
+
+die "access denied" unless $curuser->access_right('Financial reports');
 
 </%init>

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

Summary of changes:
 FS/FS/Schema.pm                                |    1 +
 FS/FS/access_user.pm                           |   14 ++++++++
 httemplate/edit/access_user.html               |   22 +++++++------
 httemplate/search/report_sales_commission.html |   42 +++++++++++++++---------
 4 files changed, 53 insertions(+), 26 deletions(-)




More information about the freeside-commits mailing list