[freeside-commits] branch FREESIDE_3_BRANCH updated. 34c3b60c76f0ade9d4f7507732666ac8b9f81b67

Mark Wells mark at 420.am
Wed Jun 12 17:27:41 PDT 2013


The branch, FREESIDE_3_BRANCH has been updated
       via  34c3b60c76f0ade9d4f7507732666ac8b9f81b67 (commit)
      from  6efb75c59ac446557ad4050e86f0445d515b465e (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 34c3b60c76f0ade9d4f7507732666ac8b9f81b67
Author: Mark Wells <mark at freeside.biz>
Date:   Wed Jun 12 16:58:20 2013 -0700

    unapply credits from tax-exempt line items, #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