[freeside-commits] freeside/FS/FS cust_main.pm,1.521,1.522
Mark Wells
mark at wavetail.420.am
Tue Jul 6 05:18:13 PDT 2010
Update of /home/cvs/cvsroot/freeside/FS/FS
In directory wavetail.420.am:/tmp/cvs-serv31959/FS/FS
Modified Files:
cust_main.pm
Log Message:
"Bill now" link uses job queue/progressbar, RT#8995
Index: cust_main.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/cust_main.pm,v
retrieving revision 1.521
retrieving revision 1.522
diff -u -w -d -r1.521 -r1.522
--- cust_main.pm 3 Jul 2010 01:26:53 -0000 1.521
+++ cust_main.pm 6 Jul 2010 12:18:10 -0000 1.522
@@ -16,6 +16,8 @@
use Scalar::Util qw( blessed );
use List::Util qw( min );
use Time::Local qw(timelocal);
+use Storable qw(thaw);
+use MIME::Base64;
use Data::Dumper;
use Tie::IxHash;
use Digest::MD5 qw(md5_base64);
@@ -2552,6 +2554,10 @@
Debugging level. Default is 0 (no debugging), or can be set to 1 (passed-in options), 2 (traces progress), 3 (more information), or 4 (include full search queries)
+=item job
+
+Optional FS::queue entry to receive status updates.
+
=back
Options are passed to the B<bill> and B<collect> methods verbatim, so all
@@ -2568,7 +2574,9 @@
#pre-printing invoices
$options{'actual_time'} ||= time;
+ my $job = $options{'job'};
+ $job->update_statustext('0,cleaning expired packages') if $job;
$error = $self->cancel_expired_pkgs( $options{actual_time} );
if ( $error ) {
$error = "Error expiring custnum ". $self->custnum. ": $error";
@@ -2585,6 +2593,7 @@
else { warn $error; }
}
+ $job->update_statustext('20,billing packages') if $job;
$error = $self->bill( %options );
if ( $error ) {
$error = "Error billing custnum ". $self->custnum. ": $error";
@@ -2593,6 +2602,7 @@
else { warn $error; }
}
+ $job->update_statustext('50,applying payments and credits') if $job;
$error = $self->apply_payments_and_credits;
if ( $error ) {
$error = "Error applying custnum ". $self->custnum. ": $error";
@@ -2601,6 +2611,7 @@
else { warn $error; }
}
+ $job->update_statustext('70,running collection events') if $job;
unless ( $conf->exists('cancelled_cust-noevents')
&& ! $self->num_ncancelled_pkgs
) {
@@ -2612,6 +2623,7 @@
else { warn $error; }
}
}
+ $job->update_statustext('100,finished') if $job;
'';
@@ -8017,9 +8029,6 @@
return '';
}
-use Storable qw(thaw);
-use Data::Dumper;
-use MIME::Base64;
sub process_email_search_result {
my $job = shift;
#warn "$me process_re_X $method for job $job\n" if $DEBUG;
@@ -8955,6 +8964,18 @@
$cust_main->bill_and_collect( %args );
}
+sub process_bill_and_collect {
+ my $job = shift;
+ my $param = thaw(decode_base64(shift));
+ my $cust_main = qsearchs( 'cust_main', { custnum => $param->{'custnum'} } )
+ or die "custnum '$param->{custnum}' not found!\n";
+ $param->{'job'} = $job;
+ $param->{'fatal'} = 1; # runs from job queue, will be caught
+ $param->{'retry'} = 1;
+
+ $cust_main->bill_and_collect( %$param );
+}
+
sub _upgrade_data { #class method
my ($class, %opts) = @_;
More information about the freeside-commits
mailing list