summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2013-06-07 23:41:46 -0700
committerIvan Kohler <ivan@freeside.biz>2013-06-07 23:41:46 -0700
commit42eaf0aec334e15163848eb2bed33db9fd349efa (patch)
treec163f88770596f1adbd6eacc814f7966525e45b3 /FS
parent08d132eca6a97c3417dc0f13bb603f080bd0e222 (diff)
parentd785bd7751b24ca30cf4679413db9dff5d15a80c (diff)
Merge branch 'master' of git.freeside.biz:/home/git/freeside
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/Cron/bill.pm9
-rw-r--r--FS/FS/Template_Mixin.pm2
-rw-r--r--FS/FS/cust_credit_bill_pkg.pm64
3 files changed, 18 insertions, 57 deletions
diff --git a/FS/FS/Cron/bill.pm b/FS/FS/Cron/bill.pm
index 98ce8fa73..d04693049 100644
--- a/FS/FS/Cron/bill.pm
+++ b/FS/FS/Cron/bill.pm
@@ -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 );
+ }
}
diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm
index e4db2eeda..e597e73a3 100644
--- a/FS/FS/Template_Mixin.pm
+++ b/FS/FS/Template_Mixin.pm
@@ -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 = [];
diff --git a/FS/FS/cust_credit_bill_pkg.pm b/FS/FS/cust_credit_bill_pkg.pm
index 3cb44a092..657a88904 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;