add location to svc_phone, RT#7047
[freeside.git] / FS / FS / cust_pkg.pm
index acc73df..4d4f1fa 100644 (file)
@@ -6,6 +6,7 @@ use Carp qw(cluck);
 use Scalar::Util qw( blessed );
 use List::Util qw(max);
 use Tie::IxHash;
+use Time::Local qw( timelocal_nocheck );
 use MIME::Entity;
 use FS::UID qw( getotaker dbh );
 use FS::Misc qw( send_email );
@@ -252,6 +253,26 @@ an optional queue name for ticket additions
 sub insert {
   my( $self, %options ) = @_;
 
+  if ( $self->part_pkg->option('start_1st') && !$self->start_date ) {
+    my ($sec,$min,$hour,$mday,$mon,$year) = (localtime(time) )[0,1,2,3,4,5];
+    $mon += 1 unless $mday == 1;
+    until ( $mon < 12 ) { $mon -= 12; $year++; }
+    $self->start_date( timelocal_nocheck(0,0,0,1,$mon,$year) );
+  }
+
+  my $expire_months = $self->part_pkg->option('expire_months');
+  if ( $expire_months && !$self->expire ) {
+    my $start = $self->start_date || $self->setup || time;
+
+    #false laziness w/part_pkg::add_freq
+    my ($sec,$min,$hour,$mday,$mon,$year) = (localtime($start) )[0,1,2,3,4,5];
+    $mon += $expire_months;
+    until ( $mon < 12 ) { $mon -= 12; $year++; }
+
+    #$self->expire( timelocal_nocheck($sec,$min,$hour,$mday,$mon,$year) );
+    $self->expire( timelocal_nocheck(0,0,0,$mday,$mon,$year) );
+  }
+
   local $SIG{HUP} = 'IGNORE';
   local $SIG{INT} = 'IGNORE';
   local $SIG{QUIT} = 'IGNORE';
@@ -296,14 +317,18 @@ sub insert {
   my $conf = new FS::Conf;
 
   if ( $conf->config('ticket_system') && $options{ticket_subject} ) {
-    eval '
-      use lib ( "/opt/rt3/local/lib", "/opt/rt3/lib" );
-      use RT;
-    ';
-    die $@ if $@;
-
-    RT::LoadConfig();
-    RT::Init();
+
+    #eval '
+    #  use lib ( "/opt/rt3/local/lib", "/opt/rt3/lib" );
+    #  use RT;
+    #';
+    #die $@ if $@;
+    #
+    #RT::LoadConfig();
+    #RT::Init();
+    use FS::TicketSystem;
+    FS::TicketSystem->init();
+
     my $q = new RT::Queue($RT::SystemUser);
     $q->Load($options{ticket_queue}) if $options{ticket_queue};
     my $t = new RT::Ticket($RT::SystemUser);
@@ -2388,10 +2413,7 @@ sub cust_pkg_discount {
 
 sub cust_pkg_discount_active {
   my $self = shift;
-  grep { my $d = $_->discount;
-         ! $d->months || $_->months_used < $d->months; # XXX also end date
-       }
-       $self->cust_pkg_discount;
+  grep { $_->status eq 'active' } $self->cust_pkg_discount;
 }
 
 =back