=item change
If set true, supresses actions that should only be taken for new package
-orders. (Currently this includes: intro periods when delay_setup is on.)
+orders. (Currently this includes: intro periods when delay_setup is on,
+auto-adding a 1st start date, auto-adding expiration/adjourn/contract_end dates)
=item options
my $part_pkg = $self->part_pkg;
- if (! $import) {
+ if ( ! $import && ! $options{'change'} ) {
+
# 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];
}
}
- # if this package has "free days" and delayed setup fee, tehn
+ # if this package has "free days" and delayed setup fee, then
# 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('free_days', 1)
&& $part_pkg->option('delay_setup',1)
#&& ! $self->start_date
)
}
# set order date unless it was specified as part of an import
- $self->order_date(time) unless $import && $self->order_date;
+ # or this was previously a different package
+ $self->order_date(time) unless ($import && $self->order_date)
+ or $self->change_pkgnum;
my $oldAutoCommit = $FS::UID::AutoCommit;
local $FS::UID::AutoCommit = 0;
$hash{$date} = $self->getfield($date);
}
}
+ # always keep this date, regardless of anything
+ # (the date of the package change is in a different field)
+ $hash{'order_date'} = $self->getfield('order_date');
# allow $opt->{'locationnum'} = '' to specifically set it to null
# (i.e. customer default location)