summaryrefslogtreecommitdiff
path: root/FS/FS/Cron/notify.pm
diff options
context:
space:
mode:
Diffstat (limited to 'FS/FS/Cron/notify.pm')
-rw-r--r--FS/FS/Cron/notify.pm149
1 files changed, 0 insertions, 149 deletions
diff --git a/FS/FS/Cron/notify.pm b/FS/FS/Cron/notify.pm
deleted file mode 100644
index 23cf920..0000000
--- a/FS/FS/Cron/notify.pm
+++ /dev/null
@@ -1,149 +0,0 @@
-package FS::Cron::notify;
-
-use strict;
-use vars qw( @ISA @EXPORT_OK $DEBUG );
-use Exporter;
-use FS::UID qw( dbh driver_name );
-use FS::Record qw(qsearch);
-use FS::cust_main;
-use FS::cust_pkg;
-
-@ISA = qw( Exporter );
-@EXPORT_OK = qw ( notify_flat_delay );
-$DEBUG = 0;
-
-sub notify_flat_delay {
-
- my %opt = @_;
-
- my $oldAutoCommit = $FS::UID::AutoCommit;
- $DEBUG = 1 if $opt{'v'};
-
- #we're at now now (and later).
- my($time) = $^T;
-
- my $integer = driver_name =~ /^mysql/ ? 'SIGNED' : 'INTEGER';
-
- # select * from cust_pkg where
- my $where_pkg = <<"END";
- where ( cancel is null or cancel = 0 )
- and ( bill > 0 )
- and
- 0 < ( select count(*) from part_pkg
- where cust_pkg.pkgpart = part_pkg.pkgpart
- and part_pkg.plan = 'flat_delayed'
- and 0 < ( select count(*) from part_pkg_option
- where part_pkg.pkgpart = part_pkg_option.pkgpart
- and part_pkg_option.optionname = 'recur_notify'
- and part_pkg_option.optionvalue > 0
- and 0 <= ( $time
- + CAST( part_pkg_option.optionvalue AS $integer )
- * 86400
- - cust_pkg.bill
- )
- and ( cust_pkg.expire is null
- or cust_pkg.expire > ( $time
- + CAST( part_pkg_option.optionvalue AS $integer )
- * 86400
- )
-END
-
-#/* and ( cust_pkg.adjourn is null
-# or cust_pkg.adjourn > $time
-#-- Should notify suspended ones + cast(part_pkg_option.optionvalue as $integer)
-# * 86400
-#*/
-
- $where_pkg .= <<"END";
- )
- )
- )
- and
- 0 = ( select count(*) from cust_pkg_option
- where cust_pkg.pkgnum = cust_pkg_option.pkgnum
- and cust_pkg_option.optionname = 'impending_recur_notification_sent'
- and cust_pkg_option.optionvalue = 1
- )
-END
-
- if ($opt{a}) {
- $where_pkg .= <<END;
- and 0 < ( select count(*) from cust_main
- where cust_pkg.custnum = cust_main.custnum
- and cust_main.agentnum = $opt{a}
- )
-END
- }
-
- my @cust_pkg;
- if ( @ARGV ) {
- $where_pkg .= "and ( " . join( "OR ", map { "custnum = $_" } @ARGV) . " )";
- }
-
- my $orderby = "order by custnum, bill";
-
- my $extra_sql = "$where_pkg $orderby";
-
- @cust_pkg = qsearch('cust_pkg', {}, '', $extra_sql );
-
- my @packages = ();
- my @recurdates = ();
- my @cust_pkgs = ();
- while ( scalar(@cust_pkg) ) {
- my $cust_main = $cust_pkg[0]->cust_main;
- my $custnum = $cust_pkg[0]->custnum;
- warn "working on $custnum" if $DEBUG;
- while (scalar(@cust_pkg)){
- last if ($cust_pkg[0]->custnum != $custnum);
- warn "storing information on " . $cust_pkg[0]->pkgnum if $DEBUG;
- push @packages, $cust_pkg[0]->part_pkg->pkg;
- push @recurdates, $cust_pkg[0]->bill;
- push @cust_pkgs, $cust_pkg[0];
- shift @cust_pkg;
- }
- my $error =
- $cust_main->notify( 'impending_recur_template',
- 'extra_fields' => { 'packages' => \@packages,
- 'recurdates' => \@recurdates,
- 'package' => $packages[0],
- 'recurdate' => $recurdates[0],
- },
- );
- warn "Error notifying, custnum ". $cust_main->custnum. ": $error" if $error;
-
- unless ($error) {
- local $SIG{HUP} = 'IGNORE';
- local $SIG{INT} = 'IGNORE';
- local $SIG{QUIT} = 'IGNORE';
- local $SIG{TERM} = 'IGNORE';
- local $SIG{TSTP} = 'IGNORE';
-
- my $oldAutoCommit = $FS::UID::AutoCommit;
- local $FS::UID::AutoCommit = 0;
- my $dbh = dbh;
-
- for (@cust_pkgs) {
- my %options = ($_->options, 'impending_recur_notification_sent' => 1 );
- $error = $_->replace( $_, options => \%options );
- if ($error){
- $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
- die "Error updating package options for customer". $cust_main->custnum.
- ": $error" if $error;
- }
- }
-
- $dbh->commit or die $dbh->errstr if $oldAutoCommit;
-
- }
-
- @packages = ();
- @recurdates = ();
- @cust_pkgs = ();
-
- }
-
- dbh->commit or die dbh->errstr if $oldAutoCommit;
-
-}
-
-1;