deposit slips
[freeside.git] / httemplate / search / sales_pkg_class.html
index 8bb6bde..a586fc1 100644 (file)
@@ -1,20 +1,14 @@
-<& elements/search.html,
-     'title'         => $title,
-     'name_singular' => 'package class',
-     'header'        => [ 'Package class',
-                          'One-Time Sales',
-                          'Recurring Sales',
-                          'Commission', ],
-     'fields'        => [ 'classname',
-                          $sales_sub_maker->('setup'),
-                          $sales_sub_maker->('recur'),
-                          $commission_sub, ],
-     'links'         => [ '', $sales_link, $sales_link, $commission_link ],
-     'align'         => 'lrrr',
-     'query'         => { 'table'   => 'sales_pkg_class',
-                          'hashref' => { 'salesnum' => $salesnum },
-                        },
-     'count_query'   => "SELECT COUNT(*) FROM sales_pkg_class WHERE salesnum = $salesnum", #show some totals?
+<& elements/commission.html,
+  'title'         => $title,
+  'name_singular' => 'package class',
+  'header'        => [ 'Package class' ],
+  'fields'        => [ 'classname' ],
+  'links'         => [ '' ],
+  'align'         => 'l',
+  'query'         => \%query,
+  'count_query'   => $count_query,
+  'sales_detail_link'   => $sales_link,
+  'credit_detail_link'  => $commission_link,
 &>
 <%init>
 
@@ -23,85 +17,31 @@ die "access denied"
 
 my $conf = new FS::Conf;
 
-my $money_char = $conf->config('money_char') || '$';
-
 $cgi->param('salesnum') =~ /^(\d+)$/ or die 'illegal salesnum';
 my $salesnum = $1;
-my $sales = qsearchs('sales', { 'salesnum'=>$salesnum } )
-  or die 'unknown salesnum';
-
-my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi, '');
+my $sales = FS::sales->by_key($salesnum);
 
-my $date_format = $conf->config('date_format') || '%m/%d/%Y';
+my $title = $sales->salesperson . ' commission';
 
-my $title = $sales->salesperson. ' commission';
-$title .= ': '. time2str($date_format, $beginning). ' to '.
-                time2str($date_format, $ending)
-  if $beginning;
+my %query = ( 'table'     => 'sales_pkg_class',
+              'addl_from' => ' LEFT JOIN pkg_class USING (classnum)',
+              'hashref'   => { 'salesnum' => $salesnum },
+            );
+my $count_query = "SELECT COUNT(*) FROM sales_pkg_class WHERE salesnum = $salesnum";
 
 my $cust_main_sales = $cgi->param('cust_main_sales') eq 'Y' ? 'Y' : '';
-my $paid = $cgi->param('paid') ? 1 : 0;
-
-$title .= " - paid sales only" if $paid;
-
-my $sales_link = [ 'cust_bill_pkg.cgi?'.
-                     "begin=$beginning;".
-                     "end=$ending;".
-                     "cust_main_sales=$cust_main_sales;".
-                     'salesnum='. $sales->salesnum. ';'.
-                     'nottax=1;'.
-                     'classnum=',
-                   'classnum'
-                 ];
-
-my $sales_sub_maker = sub {
-  my $field = shift;
-  sub {
-    my $sales_pkg_class = shift;
-    # could be even more efficient but this is pretty good
-    my $search = $sales->cust_bill_pkg_search(
-      $beginning,
-      $ending,
-      'cust_main_sales' => $cust_main_sales,
-      'classnum'        => $sales_pkg_class->classnum,
-      'paid'            => $paid,
-    );
-    $search->{'select'} = "SUM(cust_bill_pkg.$field) AS total";
-    my $result = qsearchs($search);
-    $money_char. sprintf('%.2f', $result ? $result->get('total') : 0);
-  };
-};
-
-my $commission_sub = sub {
-  my $sales_pkg_class = shift;
-
-  #efficiency improvement: ask the db for a sum instead of all the records
-  my $total_credit = 0;
-  my @cust_credit  = $sales->cust_credit(
-    $beginning,
-    $ending,
-    'commission_classnum' => $sales_pkg_class->classnum,
-  );
-  $total_credit += $_->amount foreach @cust_credit;
-
-  $money_char. sprintf('%.2f', $total_credit);
-};
+$query{'cust_main_sales'} = $cust_main_sales;
 
-my $sales_link = [ 'cust_bill_pkg.cgi?'.
-                    "begin=$beginning;".
-                    "end=$ending;".
-                    "cust_main_sales=$cust_main_sales;".
-                    "salesnum=$salesnum;".
-                    "classnum=",
-                   'classnum'
+my $sales_link = [ 'cust_bill_pkg.cgi?nottax=1;'.
+                   "cust_main_sales=$cust_main_sales;salesnum=$salesnum;" .
+                   'classnum=',
+                   sub { shift->classnum || 0 },
                  ];
 
 my $commission_link = [ 'cust_credit.html?'.
-                          "begin=$beginning;".
-                          "end=$ending;".
-                          "cust_main_sales=$cust_main_sales;".
-                          'commission_salesnum='. $sales->salesnum. ';'.
-                          'commission_classnum=',
+                        "cust_main_sales=$cust_main_sales;" .
+                        "commission_salesnum=$salesnum;" .
+                        'classnum=',
                         'classnum'
                       ];