add pkg_svc.primary_svc flag to enable an explicit first package flag
[freeside.git] / httemplate / edit / process / part_pkg.cgi
index 5240d8c..7eada7b 100755 (executable)
@@ -1,4 +1,3 @@
-<!-- $Id: part_pkg.cgi,v 1.8 2002-02-09 18:24:01 ivan Exp $ -->
 <%
 
 my $dbh = dbh;
@@ -11,7 +10,7 @@ my $old = qsearchs('part_pkg',{'pkgpart'=>$pkgpart}) if $pkgpart;
 my $plandata = $cgi->param('plandata');
 my @plandata = split(',', $plandata);
 $cgi->param('plandata', 
-  join('', map { "$_=". $cgi->param($_). "\n" } @plandata )
+  join('', map { "$_=". join(', ', $cgi->param($_)). "\n" } @plandata )
 );
 
 foreach (qw( setuptax recurtax disabled )) {
@@ -61,18 +60,26 @@ if ( $error ) {
   myexit();
 }
 
-foreach $part_svc (qsearch('part_svc',{})) {
+foreach my $part_svc (qsearch('part_svc',{})) {
   my $quantity = $cgi->param('pkg_svc'. $part_svc->svcpart) || 0;
+  my $primary_svc =
+    $cgi->param('pkg_svc_primary') == $part_svc->svcpart ? 'Y' : '';
   my $old_pkg_svc = qsearchs('pkg_svc', {
     'pkgpart' => $pkgpart,
     'svcpart' => $part_svc->svcpart,
   } );
   my $old_quantity = $old_pkg_svc ? $old_pkg_svc->quantity : 0;
-  next unless $old_quantity != $quantity; #!here
+  my $old_primary_svc =
+    ( $old_pkg_svc && $old_pkg_svc->dbdef_table->column('primary_svc') )
+      ? $old_pkg_svc->primary_svc
+      : '';
+  next unless $old_quantity != $quantity || $old_primary_svc ne $primary_svc;
+
   my $new_pkg_svc = new FS::pkg_svc( {
-    'pkgpart'  => $pkgpart,
-    'svcpart'  => $part_svc->svcpart,
-    'quantity' => $quantity, 
+    'pkgpart'     => $pkgpart,
+    'svcpart'     => $part_svc->svcpart,
+    'quantity'    => $quantity, 
+    'primary_svc' => $primary_svc,
   } );
   if ( $old_pkg_svc ) {
     my $myerror = $new_pkg_svc->replace($old_pkg_svc);