RT#24684: Payments for Online Bill Pay
[freeside.git] / FS / FS / part_pkg.pm
index 2fba2f4..0e9ee05 100644 (file)
@@ -30,6 +30,7 @@ use FS::part_pkg_link;
 use FS::part_pkg_discount;
 use FS::part_pkg_vendor;
 use FS::part_pkg_currency;
+use FS::part_svc_link;
 
 $DEBUG = 0;
 $setup_hack = 0;
@@ -753,17 +754,12 @@ sub check_pkg_svc {
 
   foreach my $svcpart ( keys %pkg_svc ) {
 
-    warn 'checking '. $pkg_svc{$svcpart}->svcpart;
-
     foreach my $part_svc_link ( $self->part_svc_link(
                                   'src_svcpart' => $svcpart,
                                   'link_type'   => 'part_pkg_restrict',
                                 )
     ) {
 
-      use Data::Dumper;
-      warn 'checking '. Dumper($part_svc_link);
-
       return $part_svc_link->dst_svc. ' must be included with '.
              $part_svc_link->src_svc
         unless $pkg_svc{ $part_svc_link->dst_svcpart };
@@ -801,17 +797,7 @@ src_svcpart and link_type.
 =cut
 
 sub part_svc_link {
-  my( $self, %opt ) = @_;
-
-  my $agentnum = $self->agentnum;
-
-  qsearch({ 'table'     => 'part_svc_link',
-            'hashref'   => \%opt,
-            'extra_sql' =>
-              $agentnum
-                ? "AND ( agentnum IS NULL OR agentnum = $agentnum )"
-                : 'AND agentnum IS NULL',
-         });
+  FS::part_svc_link->by_agentnum( shift->agentnum, @_ );
 }
 
 =item supersede OLD [, OPTION => VALUE ... ]
@@ -1406,6 +1392,11 @@ sub option {
   my %plandata = map { /^(\w+)=(.*)$/; ( $1 => $2 ); }
                      split("\n", $self->get('plandata') );
   return $plandata{$opt} if exists $plandata{$opt};
+
+  # check whether the option is defined in plan info (if so, don't warn)
+  if (exists $plans{ $self->plan }->{fields}->{$opt}) {
+    return '';
+  }
   cluck "WARNING: (pkgpart ". $self->pkgpart. ") Package def option $opt ".
         "not found in options or plandata!\n"
     unless $ornull;