This commit was manufactured by cvs2svn to create tag 'freeside_1_9_2'.
[freeside.git] / FS / FS / part_pkg.pm
index 287453f..276889d 100644 (file)
@@ -205,7 +205,11 @@ sub insert {
   warn "  inserting part_pkg_taxoverride records" if $DEBUG;
   my %overrides = %{ $options{'tax_overrides'} || {} };
   foreach my $usage_class ( keys %overrides ) {
-    my @overrides = (grep "$_", split (',', $overrides{$usage_class}) );
+    my $override =
+      ( exists($overrides{$usage_class}) && defined($overrides{$usage_class}) )
+        ? $overrides{$usage_class}
+        : '';
+    my @overrides = (grep "$_", split(',', $override) );
     my $error = $self->process_m2m (
                   'link_table'   => 'part_pkg_taxoverride',
                   'target_table' => 'tax_class',
@@ -1175,6 +1179,18 @@ sub calc_units  { 0; }
 #fallback for everything except bulk.pm
 sub hide_svc_detail { 0; }
 
+=item recur_cost_permonth CUST_PKG
+
+recur_cost divided by freq (only supported for monthly and longer frequencies)
+
+=cut
+
+sub recur_cost_permonth {
+  my($self, $cust_pkg) = @_;
+  return 0 unless $self->freq =~ /^\d+$/ && $self->freq > 0;
+  sprintf('%.2f', $self->recur_cost / $self->freq );
+}
+
 =item format OPTION DATA
 
 Returns data formatted according to the function 'format' described
@@ -1348,15 +1364,16 @@ sub _pkgs_sql {
 
   "
     (
-      agentnum IS NOT NULL
-      OR
-      0 < ( SELECT COUNT(*)
-              FROM type_pkgs
-                LEFT JOIN agent_type USING ( typenum )
-                LEFT JOIN agent AS typeagent USING ( typenum )
-              WHERE type_pkgs.pkgpart = part_pkg.pkgpart
-                AND typeagent.agentnum IN ($agentnums)
-          )
+      ( agentnum IS NOT NULL AND agentnum IN ($agentnums) )
+      OR ( agentnum IS NULL
+           AND EXISTS ( SELECT 1
+                          FROM type_pkgs
+                            LEFT JOIN agent_type USING ( typenum )
+                            LEFT JOIN agent AS typeagent USING ( typenum )
+                          WHERE type_pkgs.pkgpart = part_pkg.pkgpart
+                            AND typeagent.agentnum IN ($agentnums)
+                      )
+         )
     )
   ";