Merge branch 'master' of git.freeside.biz:/home/git/freeside
authorIvan Kohler <ivan@freeside.biz>
Sat, 8 Jun 2013 06:41:46 +0000 (23:41 -0700)
committerIvan Kohler <ivan@freeside.biz>
Sat, 8 Jun 2013 06:41:46 +0000 (23:41 -0700)
FS/FS/Cron/bill.pm
FS/FS/Template_Mixin.pm
FS/FS/cust_credit_bill_pkg.pm
httemplate/edit/elements/part_svc_column.html

index 98ce8fa..d046930 100644 (file)
@@ -41,9 +41,10 @@ sub bill {
   #$FS::cust_event::DEBUG = $opt{'l'} if $opt{'l'};
 
   my $conf = new FS::Conf;
+  my $disable_bill = 0;
   if ( $conf->exists('disable_cron_billing') ) {
     warn "disable_cron_billing set, skipping billing\n" if $debug;
-    return;
+    $disable_bill = 1;
   }
 
   #we're at now now (and later).
@@ -127,7 +128,11 @@ sub bill {
       } else {
 
         my $cust_main = qsearchs( 'cust_main', { 'custnum' => $custnum } );
-        $cust_main->bill_and_collect( %args, 'debug' => $debug );
+        if ( $disable_bill ) {
+          $cust_main->collect( %args, 'debug' => $debug );
+        } else {
+          $cust_main->bill_and_collect( %args, 'debug' => $debug );
+        }
 
       }
 
index e4db2ee..e597e73 100644 (file)
@@ -800,7 +800,7 @@ sub print_generic {
   $adjust_section->{'sort_weight'} = $adjust_weight;
 
   my $unsquelched = $params{unsquelch_cdr} || $cust_main->squelch_cdr ne 'Y';
-  my $multisection = $conf->exists($tc.'_sections', $cust_main->agentnum);
+  my $multisection = $conf->exists($tc.'sections', $cust_main->agentnum);
   $invoice_data{'multisection'} = $multisection;
   my $late_sections = [];
   my $extra_sections = [];
index 3cb44a0..657a889 100644 (file)
@@ -223,65 +223,21 @@ sub delete {
   local $FS::UID::AutoCommit = 0;
   my $dbh = dbh;
 
-  my $original_cust_bill_pkg = $self->cust_bill_pkg;
-  my $cust_bill = $original_cust_bill_pkg->cust_bill;
-
-  my %hash = $original_cust_bill_pkg->hash;
-  delete $hash{$_} for qw( billpkgnum setup recur );
-  $hash{$self->setuprecur} = $self->amount;
-  my $cust_bill_pkg = new FS::cust_bill_pkg { %hash };
-
-  use Data::Dumper;
-  my @exemptions = qsearch( 'cust_tax_exempt_pkg', 
-                            { creditbillpkgnum => $self->creditbillpkgnum }
-                          );
-  my %seen = ();
-  my @generated_exemptions = ();
-  my @unseen_exemptions = ();
-  foreach my $exemption ( @exemptions ) {
-    my $error = $exemption->delete;
+  my @negative_exemptions = qsearch('cust_tax_exempt_pkg', {
+      'creditbillpkgnum' => $self->creditbillpkgnum
+  });
+
+  # de-anti-exempt those negative exemptions
+  my $error;
+  foreach (@negative_exemptions) {
+    $error = $_->delete;
     if ( $error ) {
       $dbh->rollback if $oldAutoCommit;
-      return "error deleting cust_tax_exempt_pkg: $error";
+      return $error;
     }
-
-    next if $seen{$exemption->taxnum};
-    $seen{$exemption->taxnum} = 1;
-    push @unseen_exemptions, $exemption;
   }
 
-  foreach my $exemption ( @unseen_exemptions ) {
-    my $tax_object = $exemption->cust_main_county;
-    unless ($tax_object) {
-      $dbh->rollback if $oldAutoCommit;
-      return "can't find exempted tax";
-    }
-    
-    my $hashref_or_error =
-      $tax_object->taxline( [ $cust_bill_pkg ], 
-                            'custnum'      => $cust_bill->custnum,
-                            'invoice_time' => $cust_bill->_date,
-                          );
-    unless (ref($hashref_or_error)) {
-      $dbh->rollback if $oldAutoCommit;
-      return "error calculating taxes: $hashref_or_error";
-    }
-
-    push @generated_exemptions, @{ $cust_bill_pkg->cust_tax_exempt_pkg };
-  }
-                          
-  foreach my $taxnum ( keys %seen ) {
-    my $sum = 0;
-    $sum += $_->amount for grep {$_->taxnum == $taxnum} @exemptions;
-    $sum -= $_->amount for grep {$_->taxnum == $taxnum} @generated_exemptions;
-    $sum = sprintf("%.2f", $sum);
-    unless ($sum eq '0.00' || $sum eq '-0.00') {
-      $dbh->rollback if $oldAutoCommit;
-      return "Can't unapply credit without charging tax of $sum";
-    }
-  }
-   
-  my $error = $self->SUPER::delete(@_);
+  $error = $self->SUPER::delete(@_);
   if ( $error ) {
     $dbh->rollback if $oldAutoCommit;
     return $error;
index fbea9bd..1c5b453 100644 (file)
@@ -207,15 +207,20 @@ that field.
              NAME="<%$name%>"
              ID="<%$name%>" 
              VALUE="<%$value%>">
-%     # inventory class selection
+%     my $mode = 'inventory';
+%     my $multiple = 1;
+%     if ( $def->{'type'} eq 'select-hardware' ) {
+%       $mode = 'hardware';
+%       $multiple = 0;
+%     }
       <& /elements/select-table.html,
           'field'       => $name.'_classnum',
           'id'          => $name.'_select',
-          'table'       => 'inventory_class',
+          'table'       => $mode.'_class',
           'name_col'    => 'classname',
           'curr_value'  => $value,
-          'empty_label' => 'Select inventory class',
-          'multiple'    => 1,
+          'empty_label' => "Select $mode class",
+          'multiple'    => 0,
       &>
 %   }
     </TD>