Merge branch 'master' of git.freeside.biz:/home/git/freeside
authorIvan Kohler <ivan@freeside.biz>
Mon, 8 Jul 2013 21:09:40 +0000 (14:09 -0700)
committerIvan Kohler <ivan@freeside.biz>
Mon, 8 Jul 2013 21:09:40 +0000 (14:09 -0700)
1  2 
FS/FS/cust_pkg.pm

diff --combined FS/FS/cust_pkg.pm
@@@ -289,6 -289,7 +289,7 @@@ sub insert 
  
    my $part_pkg = $self->part_pkg;
  
+   # if the package def says to start only on the first of the month:
    if ( $part_pkg->option('start_1st', 1) && !$self->start_date ) {
      my ($sec,$min,$hour,$mday,$mon,$year) = (localtime(time) )[0,1,2,3,4,5];
      $mon += 1 unless $mday == 1;
      $self->start_date( timelocal_nocheck(0,0,0,1,$mon,$year) );
    }
  
+   # set up any automatic expire/adjourn/contract_end timers
+   # based on the start date
    foreach my $action ( qw(expire adjourn contract_end) ) {
      my $months = $part_pkg->option("${action}_months",1);
      if($months and !$self->$action) {
      }
    }
  
+   # if this package has "free days" and delayed setup fee, tehn 
+   # set start date that many days in the future.
+   # (this should have been set in the UI, but enforce it here)
    if (    ! $options{'change'}
         && ( my $free_days = $part_pkg->option('free_days',1) )
         && $part_pkg->option('delay_setup',1)
         #&& ! $self->start_date
       )
    {
-     my ($mday,$mon,$year) = (localtime(time) )[3,4,5];
-     #my $start_date = ($self->start_date || timelocal(0,0,0,$mday,$mon,$year)) + 86400 * $free_days;
-     my $start_date = timelocal(0,0,0,$mday,$mon,$year) + 86400 * $free_days;
-     $self->start_date($start_date);
+     $self->start_date( $part_pkg->default_start_date );
    }
  
    $self->order_date(time);
@@@ -2485,13 -2488,11 +2488,13 @@@ sub _sort_cust_svc 
    my $sort =
      sub ($$) { my ($a, $b) = @_; $b->[1] cmp $a->[1]  or  $a->[2] <=> $b->[2] };
  
 +  my %pkg_svc = map { $_->svcpart => $_ }
 +                qsearch( 'pkg_svc', { 'pkgpart' => $self->pkgpart } );
 +
    map  { $_->[0] }
    sort $sort
    map {
 -        my $pkg_svc = qsearchs( 'pkg_svc', { 'pkgpart' => $self->pkgpart,
 -                                             'svcpart' => $_->svcpart     } );
 +        my $pkg_svc = $pkg_svc{ $_->svcpart } || '';
          [ $_,
            $pkg_svc ? $pkg_svc->primary_svc : '',
            $pkg_svc ? $pkg_svc->quantity : 0,