X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fcust_bill_pkg.pm;h=f0d710534c9ccc5bb39be760c9edd7dda934e3d5;hp=1262c3874ff37bd9f67b4c3683711d6ec3ded843;hb=ffa18709ee8a4d05e18d2d406cf73afe79e52524;hpb=9996cfd8b87a47576dbac33a04007ec42d024d23 diff --git a/FS/FS/cust_bill_pkg.pm b/FS/FS/cust_bill_pkg.pm index 1262c3874..f0d710534 100644 --- a/FS/FS/cust_bill_pkg.pm +++ b/FS/FS/cust_bill_pkg.pm @@ -6,7 +6,7 @@ use vars qw( @ISA $DEBUG $me ); use Carp; use List::Util qw( sum min ); use Text::CSV_XS; -use FS::Record qw( qsearch qsearchs dbh ); +use FS::Record qw( qsearch qsearchs dbh fields ); use FS::cust_pkg; use FS::cust_bill_pkg_detail; use FS::cust_bill_pkg_display; @@ -392,7 +392,7 @@ sub void { } - $error = $self->delete; + $error = $self->delete( skip_update_cust_bill_charged=>1 ); if ( $error ) { $dbh->rollback if $oldAutoCommit; return $error; @@ -429,8 +429,10 @@ sub void_cust_bill_pkg_detail { $self->billpkgnum ); - $self->scalar_sql("INSERT INTO cust_bill_pkg_detail_void - SELECT * $from_cust_bill_pkg_detail", + my $fields = join(', ', fields('cust_bill_pkg_detail_void') ); + + $self->scalar_sql("INSERT INTO cust_bill_pkg_detail_void ($fields) + SELECT $fields $from_cust_bill_pkg_detail", $self->billpkgnum ); @@ -446,6 +448,7 @@ Not recommended. sub delete { my $self = shift; + my %opt = @_; local $SIG{HUP} = 'IGNORE'; local $SIG{INT} = 'IGNORE'; @@ -491,6 +494,26 @@ sub delete { } } + unless ( $opt{skip_update_cust_bill_charged} ) { + + #fix the invoice amount + + my $cust_bill = $self->cust_bill; + my $charged = $cust_bill->charged - $self->setup - $self->recur; + $charged = sprintf('%.2f', $charged + 0.00000001 ); + $cust_bill->charged( $charged ); + + #not adding a cc surcharge, but this override lets us modify charged + $cust_bill->{'Hash'}{'cc_surcharge_replace_hack'} = 1; + + my $error = $cust_bill->replace; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error; + } + + } + my $error = $self->SUPER::delete(@_); if ( $error ) { $dbh->rollback if $oldAutoCommit;