pro-rating w/ web interface, tested (closes: Bug#313).
[freeside.git] / httemplate / edit / process / part_pkg.cgi
index c64d492..9ad1527 100755 (executable)
@@ -1,35 +1,24 @@
+<!-- $Id: part_pkg.cgi,v 1.9 2002-02-10 02:16:47 ivan Exp $ -->
 <%
-#<!-- $Id: part_pkg.cgi,v 1.5 2001-11-06 18:45:46 ivan Exp $ -->
 
-use strict;
-use vars qw( $cgi $pkgpart $old $new $part_svc $error $dbh );
-use CGI;
-use CGI::Carp qw(fatalsToBrowser);
-use FS::UID qw(cgisuidsetup);
-use FS::CGI qw(popurl);
-use FS::Record qw(qsearch qsearchs fields);
-use FS::part_pkg;
-use FS::pkg_svc;
-use FS::cust_pkg;
+my $dbh = dbh;
 
-$cgi = new CGI;
-$dbh = &cgisuidsetup($cgi);
+my $pkgpart = $cgi->param('pkgpart');
 
-$pkgpart = $cgi->param('pkgpart');
-
-$old = qsearchs('part_pkg',{'pkgpart'=>$pkgpart}) if $pkgpart;
+my $old = qsearchs('part_pkg',{'pkgpart'=>$pkgpart}) if $pkgpart;
 
 #fixup plandata
 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 )
 );
 
-$cgi->param('setuptax','') unless defined $cgi->param('setuptax');
-$cgi->param('recurtax','') unless defined $cgi->param('recurtax');
+foreach (qw( setuptax recurtax disabled )) {
+  $cgi->param($_, '') unless defined $cgi->param($_);
+}
 
-$new = new FS::part_pkg ( {
+my $new = new FS::part_pkg ( {
   map {
     $_, scalar($cgi->param($_));
   } fields('part_pkg')
@@ -40,12 +29,12 @@ $new = new FS::part_pkg ( {
 
 #most of the stuff below should move to part_pkg.pm
 
-foreach $part_svc ( qsearch('part_svc', {} ) ) {
+foreach my $part_svc ( qsearch('part_svc', {} ) ) {
   my $quantity = $cgi->param('pkg_svc'. $part_svc->svcpart) || 0;
   unless ( $quantity =~ /^(\d+)$/ ) {
     $cgi->param('error', "Illegal quantity" );
     print $cgi->redirect(popurl(2). "part_pkg.cgi?". $cgi->query_string );
-    exit;
+    myexit();
   }
 }
 
@@ -58,6 +47,7 @@ local $SIG{PIPE} = 'IGNORE';
 
 local $FS::UID::AutoCommit = 0;
 
+my $error;
 if ( $pkgpart ) {
   $error = $new->replace($old);
 } else {
@@ -68,7 +58,7 @@ if ( $error ) {
   $dbh->rollback;
   $cgi->param('error', $error );
   print $cgi->redirect(popurl(2). "part_pkg.cgi?". $cgi->query_string );
-  exit;
+  myexit();
 }
 
 foreach $part_svc (qsearch('part_svc',{})) {