agent-virtualize credit card surcharge percentage, RT#72961
[freeside.git] / FS / FS / vend_bill.pm
index cd20f95..5ea91fb 100644 (file)
@@ -1,11 +1,9 @@
 package FS::vend_bill;
+use base qw(FS::Record);
 
 use strict;
-use base qw( FS::Record );
-use FS::Record qw( dbh qsearch qsearchs );
-use FS::vend_main;
+use FS::Record qw( dbh ); # qsearch qsearchs );
 use FS::vend_pay;
-use FS::vend_bill_pay;
 
 =head1 NAME
 
@@ -169,22 +167,8 @@ sub check {
 
 =item vend_main
 
-=cut
-
-sub vend_main {
-  my $self = shift;
-  qsearchs('vend_main', { 'vendnum', $self->vendnum });
-}
-
 =item vend_bill_pay
 
-=cut
-
-sub vend_bill_pay {
-  my $self = shift;
-  qsearch('vend_bill_pay', { 'vendbillnum', $self->vendbillnum });
-}
-
 =item search
 
 =cut
@@ -193,6 +177,7 @@ sub search {
   my ($class, $param) = @_;
 
   my @where = ();
+  my $addl_from = '';
 
   #_date
   if ( $param->{_date} ) {
@@ -202,15 +187,32 @@ sub search {
                  "vend_bill._date <  $ending";
   }
 
+  #payment_date
+  if ( $param->{payment_date} ) {
+    my($beginning, $ending) = @{$param->{payment_date}};
+
+    push @where, "vend_pay._date >= $beginning",
+                 "vend_pay._date <  $ending";
+  }
+
+  if ( $param->{'classnum'} =~ /^(\d+)$/ ) {
+    #also simplistic, but good for now
+    $addl_from .= ' LEFT JOIN vend_main USING (vendnum) ';
+    push @where, "vend_main.classnum = $1";
+  }
+
   my $extra_sql = scalar(@where) ? ' WHERE '. join(' AND ', @where) : '';
 
-  #my $count_query = "SELECT COUNT(*) FROM vend_bill $addl_from $extra_sql";
-  my $count_query = "SELECT COUNT(*), SUM(charged) FROM vend_bill $extra_sql";
+  #simplistic, but how we are for now
+  $addl_from .= ' LEFT JOIN vend_bill_pay USING (vendbillnum) '.
+                ' LEFT JOIN vend_pay      USING (vendpaynum)  ';
+
+  my $count_query = "SELECT COUNT(*), SUM(charged) FROM vend_bill $addl_from $extra_sql";
 
   +{
     'table'         => 'vend_bill',
-    #'select'        => $select,
-    #'addl_from'     => $addl_from,
+    'select'        => 'vend_bill.*, vend_pay._date as payment_date',
+    'addl_from'     => $addl_from,
     'hashref'       => {},
     'extra_sql'     => $extra_sql,
     'order_by'      => 'ORDER BY _date',