Optimize "Customer has a referring customer" condition, RT#74452
[freeside.git] / httemplate / browse / sales.html
1 <& elements/browse.html,
2      'title'              => 'Sales People',
3      'name_singular'      => 'sales person',
4      'menubar'            => ['Add a new sales person' => $p.'edit/sales.html'],
5      'query'              => { 'table' => 'sales' },
6      'count_query'        => 'SELECT COUNT(*) FROM sales',
7      'header'             => \@header,
8      'fields'             => \@fields,
9      'links'              => \@links,
10      'disableable'        => 1,
11      'disabled_statuspos' => 1,
12      'agent_virt'         => 1,
13 &>
14 <%init>
15
16 my $curuser = $FS::CurrentUser::CurrentUser;
17 die "access denied" unless $curuser->access_right('Edit sales people');
18
19 my $conf = new FS::Conf;
20
21 #Sales people bring in business.<BR><BR>
22
23 my @header = ( 'Sales person' );
24 my @fields = ( 'salesperson' );
25 my @links  = ( [$p.'edit/sales.html?', 'salesnum'] );
26
27 if ( $curuser->access_right('Configuration') ) {
28   push @header, 'Agent';
29   push @fields, 'agent_name';
30   push @links,  [ $p.'edit/agent.cgi?', 'agentnum' ];
31 }
32
33 push @header, 'Master Customer';
34 push @fields, sub {
35   my $sales = shift;
36   return '' unless $sales->sales_custnum;
37   include('/elements/small_custview.html',
38             $sales->sales_custnum,
39             scalar($conf->config('countrydefault')),
40             1, #show balance
41             $p.'view/cust_main.cgi',
42          );
43 };
44 push @links, '';
45
46 push @header, 'Commissions';
47 push @fields, sub {
48
49   my $sales = shift;
50
51   #started out as false laziness w/browse/agent.cgi
52   #  (which said surprising amount of false laziness w/ edit/process/agent.cgi)
53   # but this now returns an edit.html data structure that renders to a table
54   #  instead of HTML
55
56   my @pkg_class = qsearch('pkg_class', { 'disabled'=>'' });
57
58   [
59     map {
60           my %sales_pkg_class = ( 'salesnum' => $sales->salesnum,
61                                   'classnum' => $_ ? $_->classnum : ''
62                                 );
63           my $sales_pkg_class =
64             qsearchs( 'sales_pkg_class', \%sales_pkg_class )
65             || new FS::sales_pkg_class   \%sales_pkg_class;
66           #my $param = 'classnum'. $sales_pkg_class{classnum};
67
68           [
69             { align => 'left',
70               data  => encode_entities(
71                          $_ ? $_->classname : mt('(no package class)')
72                        ). ':&nbsp;',
73             },
74             { align => 'right',
75               data  => ($sales_pkg_class->commission_percent || 0). '%',
76             },
77             { align => 'left',
78               data  =>
79                 $sales_pkg_class->commission_duration
80                   ? '&nbsp;for '. $sales_pkg_class->commission_duration. ' months'
81                   : ''
82             },
83           ];
84
85         }
86       ( '', @pkg_class )
87
88   ];
89
90 };
91 #push @links, '';
92
93 </%init>