continue sales person work: customer and package selection, commissions, reporting...
[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          );
42 };
43 push @links, '';
44
45 push @header, 'Commissions';
46 push @fields, sub {
47
48   my $sales = shift;
49
50   #started out as false laziness w/browse/agent.cgi
51   #  (which said surprising amount of false laziness w/ edit/process/agent.cgi)
52   # but this now returns an edit.html data structure that renders to a table
53   #  instead of HTML
54
55   my @pkg_class = qsearch('pkg_class', { 'disabled'=>'' });
56
57   [
58     map {
59           my %sales_pkg_class = ( 'salesnum' => $sales->salesnum,
60                                   'classnum' => $_ ? $_->classnum : ''
61                                 );
62           my $sales_pkg_class =
63             qsearchs( 'sales_pkg_class', \%sales_pkg_class )
64             || new FS::sales_pkg_class   \%sales_pkg_class;
65           #my $param = 'classnum'. $sales_pkg_class{classnum};
66
67           [
68             { align => 'left',
69               data  => encode_entities(
70                          $_ ? $_->classname : mt('(no package class)')
71                        ). ':&nbsp;',
72             },
73             { align => 'right',
74               data  => ($sales_pkg_class->commission_percent || 0). '%',
75             },
76             { align => 'left',
77               data  =>
78                 $sales_pkg_class->commission_duration
79                   ? '&nbsp;for '. $sales_pkg_class->commission_duration. ' months'
80                   : ''
81             },
82           ];
83
84         }
85       ( '', @pkg_class )
86
87   ];
88
89 };
90 #push @links, '';
91
92 </%init>