add anniversary-rollback option to roll the anniversary date back to the 28th instead...
[freeside.git] / FS / FS / part_pkg.pm
index 40fb1dc..605c84f 100644 (file)
@@ -719,13 +719,14 @@ sub propagate {
 =item pkg_locale LOCALE
 
 Returns a customer-viewable string representing this package for the given
-locale, from the part_pkg_msgcat table.  If no localized string is found,
-returns the base pkg field.
+locale, from the part_pkg_msgcat table.  If the given locale is empty or no
+localized string is found, returns the base pkg field.
 
 =cut
 
 sub pkg_locale {
   my( $self, $locale ) = @_;
+  return $self->pkg unless $locale;
   my $part_pkg_msgcat = $self->part_pkg_msgcat($locale) or return $self->pkg;
   $part_pkg_msgcat->pkg;
 }
@@ -1080,6 +1081,9 @@ sub add_freq {
   if ( $freq =~ /^\d+$/ ) {
     $mon += $freq;
     until ( $mon < 12 ) { $mon -= 12; $year++; }
+
+    $mday = 28 if $mday > 28 && FS::Conf->new->exists('anniversary-rollback');
+
   } elsif ( $freq =~ /^(\d+)w$/ ) {
     my $weeks = $1;
     $mday += $weeks * 7;