[freeside-commits] branch master updated. d785bd7751b24ca30cf4679413db9dff5d15a80c

Mark Wells mark at 420.am
Fri Jun 7 18:31:36 PDT 2013


The branch, master has been updated
       via  d785bd7751b24ca30cf4679413db9dff5d15a80c (commit)
      from  20ff2d2943aef4fc5d854cc31ab422f360622bed (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit d785bd7751b24ca30cf4679413db9dff5d15a80c
Author: Mark Wells <mark at freeside.biz>
Date:   Fri Jun 7 18:30:01 2013 -0700

    unapply credits from tax-exempt line items, tentative fix, #23381

diff --git a/FS/FS/cust_credit_bill_pkg.pm b/FS/FS/cust_credit_bill_pkg.pm
index 3cb44a0..657a889 100644
--- a/FS/FS/cust_credit_bill_pkg.pm
+++ b/FS/FS/cust_credit_bill_pkg.pm
@@ -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;

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/cust_credit_bill_pkg.pm |   64 ++++++----------------------------------
 1 files changed, 10 insertions(+), 54 deletions(-)




More information about the freeside-commits mailing list