hidden pkg_svc flag, RT#9871
[freeside.git] / httemplate / edit / process / part_pkg.cgi
index 3116b7b..7248801 100755 (executable)
@@ -93,6 +93,7 @@ my $args_callback = sub {
           }
           ( $optionname => $value );
         }
+        grep { $_ !~ /^report_option_/ }
         @options;
 
   foreach ( split(',', $cgi->param('taxproductnums') ) ) {
@@ -102,6 +103,11 @@ my $args_callback = sub {
     $options{"usage_taxproductnum_$_"} = $value;
   }
 
+  foreach ( grep $_, $cgi->param('report_option') ) {
+    $error ||= "Illegal optional report class: $_" unless ( $_ =~ /^\d*$/  );
+    $options{"report_option_$_"} = 1;
+  }
+
   $options{$_} = scalar( $cgi->param($_) )
     for (qw( setup_fee recur_fee ));
   
@@ -111,11 +117,11 @@ my $args_callback = sub {
   #pkg_svc
   ###
 
-  my %pkg_svc = map { $_ => scalar($cgi->param("pkg_svc$_")) }
-                map { $_->svcpart }
-                qsearch('part_svc', {} );
+  my @svcparts = map { $_->svcpart } qsearch('part_svc', {});
+  my %pkg_svc = map { $_ => scalar($cgi->param("pkg_svc$_")) } @svcparts;
+  my %hidden_svc = map { $_ => scalar($cgi->param("hidden$_")) } @svcparts;
 
-  push @args, 'pkg_svc' => \%pkg_svc;
+  push @args, 'pkg_svc' => \%pkg_svc, 'hidden_svc' => \%hidden_svc;
 
   ###
   # cust_pkg and custnum_ref (inserts only)
@@ -125,7 +131,7 @@ my $args_callback = sub {
                 'custnum_ref' => \$custnum;
   }
 
-  warn "args: ".join('/', @args). "\n";
+  #warn "args: ".join('/', @args). "\n";
 
   @args;
 
@@ -154,20 +160,38 @@ my @process_m2m = (
     'target_table' => 'tax_class',
     'params'       => \@tax_overrides,
   },
-  { 'link_table'   => 'part_pkg_link',
-    'target_table' => 'part_pkg',
-    'base_field'   => 'src_pkgpart',
-    'target_field' => 'dst_pkgpart',
-    'hashref'      => { 'link_type' => 'bill' },
-    'params'       => [ map $cgi->param($_), grep /^bill_dst_pkgpart/, $cgi->param ],
+  { 'link_table'   => 'part_pkg_discount',
+    'target_table' => 'discount',
+    'params'       => [ map $cgi->param($_),
+                        grep /^discountnum/, $cgi->param
+                      ],
   },
   { 'link_table'   => 'part_pkg_link',
     'target_table' => 'part_pkg',
     'base_field'   => 'src_pkgpart',
     'target_field' => 'dst_pkgpart',
-    'hashref'      => { 'link_type' => 'svc' },
-    'params'       => [ map $cgi->param($_), grep /^svc_dst_pkgpart/, $cgi->param ],
+    'hashref'      => { 'link_type' => 'svc', 'hidden' => '' },
+    'params'       => [ map $cgi->param($_),
+                        grep /^svc_dst_pkgpart/, $cgi->param
+                      ],
   },
+  map { 
+    my $hidden = $_;
+    { 'link_table'   => 'part_pkg_link',
+      'target_table' => 'part_pkg',
+      'base_field'   => 'src_pkgpart',
+      'target_field' => 'dst_pkgpart',
+      'hashref'      => { 'link_type' => 'bill', 'hidden' => $hidden },
+      'params'       => [ map { $cgi->param($_) }
+                          grep { my $param = "bill_dst_pkgpart__hidden";
+                                 my $digit = '';
+                                 (($digit) = /^bill_dst_pkgpart(\d+)/ ) &&
+                                 $cgi->param("$param$digit") eq $hidden;
+                               }
+                          $cgi->param
+                        ],
+    },
+  } ( '', 'Y' ),
 );
 
 foreach my $override_class ($cgi->param) {