From: ivan Date: Fri, 17 Nov 2006 10:16:10 +0000 (+0000) Subject: initial fix for prepaid renewal problem; attempt to use an existing credit/payment... X-Git-Tag: TRIXBOX_2_6~859 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=7b28c0c12fe5e623324102a5ee4114f42b5ede3e initial fix for prepaid renewal problem; attempt to use an existing credit/payment before suspending --- diff --git a/FS/bin/freeside-prepaidd b/FS/bin/freeside-prepaidd index 1f5731626..73f7523c4 100644 --- a/FS/bin/freeside-prepaidd +++ b/FS/bin/freeside-prepaidd @@ -3,7 +3,7 @@ use strict; use FS::Daemon qw(daemonize1 drop_root logfile daemonize2 sigint sigterm); use FS::UID qw(adminsuidsetup); -use FS::Record qw(qsearch); # qsearchs); +use FS::Record qw(qsearch qsearchs); use FS::cust_pkg; my $user = shift or die &usage; @@ -38,12 +38,37 @@ while (1) { } ) ) { - my $action = $cust_pkg->part_pkg->option('recur_action') || 'suspend'; - - my $error = $cust_pkg->$action(); - - warn "Error ${action}ing package ". $cust_pkg->pkgnum. - " for custnum ". $cust_pkg->custnum. + my $work_cust_pkg = $cust_pkg; + + my $cust_main = $cust_pkg->cust_main; + if ( $cust_main->total_unapplied_payments > 0 + or $cust_main->total_credited > 0 + ) + { + #this needs a flag to say only do the prepaid packages... + # and only try em if the renewal price matches.. but this will do for now + my $b_error = $cust_main->bill; + if ( $b_error ) { + warn "Error billing customer #". $cust_main->custnum; + next; + } + #$b_error = $cust_main->apply_payments_and_credits; + $b_error = $cust_main->apply_payments; + $b_error = $cust_main->apply_credits; + + $work_cust_pkg = qsearchs('cust_pkg', { 'pkgnum' => $work_cust_pkg->pkgnum } ); + + next + if $cust_main->balance <= 0 + and $work_cust_pkg->bill >= time; + } + + my $action = $work_cust_pkg->part_pkg->option('recur_action') || 'suspend'; + + my $error = $work_cust_pkg->$action(); + + warn "Error ${action}ing package ". $work_cust_pkg->pkgnum. + " for custnum ". $work_cust_pkg->custnum. ": $error\n" if $error; }