limit sales reports for employee, RT#25524
authorIvan Kohler <ivan@freeside.biz>
Fri, 25 Oct 2013 06:29:58 +0000 (23:29 -0700)
committerIvan Kohler <ivan@freeside.biz>
Fri, 25 Oct 2013 06:29:58 +0000 (23:29 -0700)
FS/FS/Schema.pm
FS/FS/access_user.pm
httemplate/edit/access_user.html
httemplate/search/report_sales_commission.html

index fcc2092..59c2abe 100644 (file)
@@ -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',
index 7c25acb..c938474 100644 (file)
@@ -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
index b087943..2d39f96 100644 (file)
@@ -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 {
index 792c335..19af428 100644 (file)
@@ -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>