fix long package locations showing up as line item on typeset invoices, RT#10093
[freeside.git] / FS / FS / part_pkg.pm
index c08188b..a073cf2 100644 (file)
@@ -20,6 +20,7 @@ use FS::part_pkg_taxrate;
 use FS::part_pkg_taxoverride;
 use FS::part_pkg_taxproduct;
 use FS::part_pkg_link;
+use FS::part_pkg_discount;
 
 @ISA = qw( FS::m2m_Common FS::option_Common );
 $DEBUG = 0;
@@ -822,7 +823,7 @@ argument.
 
 sub add_freq {
   my( $self, $date, $freq ) = @_;
-  $freq = $self->freq if !defined($freq);
+  $freq = $self->freq unless $freq;
 
   #change this bit to use Date::Manip? CAREFUL with timezones (see
   # mailing list archive)
@@ -940,6 +941,8 @@ sub _part_pkg_link {
   qsearch({ table    => 'part_pkg_link',
             hashref  => { 'src_pkgpart' => $self->pkgpart,
                           'link_type'   => $type,
+                          #protection against infinite recursive links
+                          'dst_pkgpart' => { op=>'!=', value=> $self->pkgpart },
                         },
             order_by => "ORDER BY hidden",
          });
@@ -1126,6 +1129,18 @@ sub part_pkg_taxrate {
          } );
 }
 
+=item part_pkg_discount
+
+Returns the package to discount m2m records (see L<FS::part_pkg_discount>)
+for this package.
+
+=cut
+
+sub part_pkg_discount {
+  my $self = shift;
+  qsearch('part_pkg_discount', { 'pkgpart' => $self->pkgpart });
+}
+
 =item _rebless
 
 Reblesses the object into the FS::part_pkg::PLAN class (if available), where