FCKeditor 2.6.6
[freeside.git] / httemplate / search / cust_bill_pkg.cgi
index 62954ea..115597a 100644 (file)
@@ -5,7 +5,7 @@
                  'count_query' => $count_query,
                  'count_addl'  => [ $money_char. '%.2f total', ],
                  'header'      => [
-                   '#',
+                   #'#',
                    'Description',
                    'Setup charge',
                    ( $use_usage eq 'usage'
@@ -17,7 +17,7 @@
                    FS::UI::Web::cust_header(),
                  ],
                  'fields'      => [
-                   'billpkgnum',
+                   #'billpkgnum',
                    sub { $_[0]->pkgnum > 0
                            ? $_[0]->get('pkg')      # possibly use override.pkg
                            : $_[0]->get('itemdesc') # but i think this correct
@@ -41,7 +41,7 @@
                    \&FS::UI::Web::cust_fields,
                  ],
                  'links'       => [
-                   '',
+                   #'',
                    '',
                    '',
                    '',
                          FS::UI::Web::cust_header()
                    ),
                  ],
-                 'align' => 'rlrrrc'.FS::UI::Web::cust_aligns(),
+                 #'align' => 'rlrrrc'.FS::UI::Web::cust_aligns(),
+                 'align' => 'lrrrc'.FS::UI::Web::cust_aligns(),
                  'color' => [ 
-                              '',
+                              #'',
                               '',
                               '',
                               '',
@@ -62,7 +63,7 @@
                               FS::UI::Web::cust_colors(),
                             ],
                  'style' => [ 
-                              '',
+                              #'',
                               '',
                               '',
                               '',
@@ -74,6 +75,8 @@
 %>
 <%init>
 
+#LOTS of false laziness below w/cust_credit_bill_pkg.cgi
+
 die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('Financial reports');
 
@@ -119,36 +122,45 @@ if ( $cgi->param('classnum') =~ /^(\d+)$/ ) {
   }
 }
 
-my $use_usage = $cgi->param('use_usage');
+if ( $cgi->param('taxclass')
+     && ! $cgi->param('istax')  #no part_pkg.taxclass in this case
+                                #(should we save a taxclass or a link to taxnum
+                                # in cust_bill_pkg or something like
+                                # cust_bill_pkg_tax_location?)
+   )
+{
+
+  #override taxclass when use_override is specified?  probably
+  #if ( $use_override ) {
+  #
+  #  push @where,
+  #    ' ( '. join(' OR ',
+  #                  map {
+  #                        ' (    part_pkg.taxclass = '. dbh->quote($_).
+  #                        '      AND pkgpart_override IS NULL '.
+  #                        '   OR '.
+  #                        '      override.taxclass = '. dbh->quote($_).
+  #                        '      AND pkgpart_override IS NOT NULL '.
+  #                        ' ) '
+  #                      }
+  #                      $cgi->param('taxclass')
+  #               ).
+  #    ' ) ';
+  #
+  #} else {
+
+    push @where,
+      ' ( '. join(' OR ',
+                    map ' part_pkg.taxclass = '.dbh->quote($_),
+                        $cgi->param('taxclass')
+                 ).
+      ' ) ';
+
+  #}
 
-push @where, ' ( '. join(' OR ',
-                      map ' taxclass = '.dbh->quote($_), $cgi->param('taxclass')
-                    ).
-             ' ) '
-  if $cgi->param('taxclass')
-  && ! $cgi->param('istax'); #no part_pkg.taxclass in this case
-                             #(should we save a taxclass or a link to taxnum
-                             # in cust_bill_pkg or something like
-                             # cust_bill_pkg_tax_location?)
-
-#sub _where {
-# my $table = shift;
-# my $prefix = @_ ? shift : '';
-# "
-#      (    cust_main_county.county  = $table.${prefix}.county
-#      OR ( cust_main_county.county IS NULL AND $table.${prefix}.county  =  '' )
-#      OR ( cust_main_county.county  =  ''  AND $table.${prefix}.county IS NULL)
-#      OR ( cust_main_county.county IS NULL AND $table.${prefix}.county IS NULL)
-#      )
-#  AND (    cust_main_county.state   = $table.${prefix}.state
-#      OR ( cust_main_county.state  IS NULL AND $table.${prefix}.state  =  ''  )
-#      OR ( cust_main_county.state   =  ''  AND $table.${prefix}.state IS NULL )
-#      OR ( cust_main_county.state  IS NULL AND $table.${prefix}.state IS NULL )
-#      )
-#  AND cust_main_county.country = $table.${prefix}.country
-# ";
-#
-#}
+}
+
+my @loc_param = qw( city county state country );
 
 if ( $cgi->param('out') ) {
 
@@ -169,10 +181,9 @@ if ( $cgi->param('out') ) {
   ";
 
   #not linked to by anything, but useful for debugging "out of taxable region"
-  if ( grep $cgi->param($_), qw( county state country ) ) {
+  if ( grep $cgi->param($_), @loc_param ) {
 
-    my %ph = map { $_ => dbh->quote( $cgi->param($_) ) }
-                 qw( county state country );
+    my %ph = map { $_ => dbh->quote( scalar($cgi->param($_)) ) } @loc_param;
 
     my ( $loc_sql, @param ) = FS::cust_pkg->location_sql;
     while ( $loc_sql =~ /\?/ ) { #easier to do our own substitution
@@ -197,7 +208,7 @@ if ( $cgi->param('out') ) {
 
           my %ph = ( 'county' => dbh->quote($_),
                      map { $_ => dbh->quote( $cgi->param($_) ) }
-                       qw( state country )
+                       qw( city state country )
                    );
 
           my ( $loc_sql, @param ) = FS::cust_pkg->location_sql;
@@ -215,8 +226,7 @@ if ( $cgi->param('out') ) {
 
   } else {
 
-    my %ph = map { $_ => dbh->quote( $cgi->param($_) ) }
-                 qw( county state country );
+    my %ph = map { $_ => dbh->quote( scalar($cgi->param($_)) ) } @loc_param;
 
     my ( $loc_sql, @param ) = FS::cust_pkg->location_sql;
     while ( $loc_sql =~ /\?/ ) { #easier to do our own substitution
@@ -267,7 +277,7 @@ if ( $cgi->param('out') ) {
   );
 
   my %ph = map { ( $pn{$_} => dbh->quote( $cgi->param($_) || '' ) ) }
-           qw( county state city locationtaxid );
+           qw( city county state locationtaxid );
 
   push @where,
     join( ' AND ', map { "( $_ = $ph{$_} OR $ph{$_} = '' AND $_ IS NULL)" }
@@ -319,6 +329,8 @@ if ( $cgi->param('cust_tax') ) {
   push @where, $cust_exempt;
 }
 
+my $use_usage = $cgi->param('use_usage');
+
 my $count_query;
 if ( $cgi->param('pkg_tax') ) {
 
@@ -395,8 +407,6 @@ if ( $cgi->param('pkg_tax') ) {
 
 }
 
-my $where = ' WHERE '. join(' AND ', @where);
-
 my $join_cust =  '      JOIN cust_bill USING ( invnum ) 
                    LEFT JOIN cust_main USING ( custnum ) ';
 
@@ -418,14 +428,28 @@ if ( $cgi->param('nottax') ) {
     $join_pkg .= ' LEFT JOIN cust_bill_pkg_tax_location USING ( billpkgnum )
                    LEFT JOIN cust_location              USING ( locationnum ) ';
 
-    #quelle kludge, false laziness w/report_tax.cgi
-    $where =~ s/cust_pkg\.locationnum/cust_bill_pkg_tax_location.locationnum/g; 
-  } elsif ( scalar( grep( /locationtaxid/, $cgi->param ) ) ) {
+    #quelle kludge, somewhat false laziness w/report_tax.cgi
+    s/cust_pkg\.locationnum/cust_bill_pkg_tax_location.locationnum/g for @where;
+  } elsif ( scalar( grep( /locationtaxid/, $cgi->param ) ) ||
+            $cgi->param('iscredit') eq 'rate') {
     $join_pkg .=
       ' LEFT JOIN cust_bill_pkg_tax_rate_location USING ( billpkgnum ) '.
       ' LEFT JOIN tax_rate_location USING ( taxratelocationnum ) ';
   }
 
+  if ( $cgi->param('iscredit') ) {
+    $join_pkg .= ' JOIN cust_credit_bill_pkg USING ( billpkgnum';
+    if ( $conf->exists('tax-pkg_address') ) {
+      $join_pkg .= ', billpkgtaxlocationnum )';
+      push @where, "billpkgtaxratelocationnum IS NULL";
+    } elsif ( $cgi->param('iscredit') eq 'rate' ) {
+      $join_pkg .= ', billpkgtaxratelocationnum )';
+    } else {
+      $join_pkg .= ' )';
+      push @where, "billpkgtaxratelocationnum IS NULL";
+    }
+  }
+
 } else { 
 
   #die?
@@ -436,6 +460,8 @@ if ( $cgi->param('nottax') ) {
 
 }
 
+my $where = ' WHERE '. join(' AND ', @where);
+
 if ($use_usage) {
   $count_query .=
     " FROM (SELECT cust_bill_pkg.setup, cust_bill_pkg.recur, 
@@ -446,7 +472,6 @@ if ($use_usage) {
 } else {
   $count_query .= " FROM cust_bill_pkg $join_cust $join_pkg $where";
 }
-warn "count_query is $count_query\n";
 
 my @select = (
                'cust_bill_pkg.*',