fix bug with custom pricing packages when no primary service is selected
[freeside.git] / httemplate / edit / process / part_pkg.cgi
1 <%
2
3 my $dbh = dbh;
4
5 my $pkgpart = $cgi->param('pkgpart');
6
7 my $old = qsearchs('part_pkg',{'pkgpart'=>$pkgpart}) if $pkgpart;
8
9 #fixup plandata
10 my $plandata = $cgi->param('plandata');
11 my @plandata = split(',', $plandata);
12 $cgi->param('plandata', 
13   join('', map { "$_=". join(', ', $cgi->param($_)). "\n" } @plandata )
14 );
15
16 foreach (qw( setuptax recurtax disabled )) {
17   $cgi->param($_, '') unless defined $cgi->param($_);
18 }
19
20 my $new = new FS::part_pkg ( {
21   map {
22     $_, scalar($cgi->param($_));
23   } fields('part_pkg')
24 } );
25
26 my %pkg_svc = map { $_ => $cgi->param("pkg_svc$_") }
27               map { $_->svcpart }
28               qsearch('part_svc', {} );
29
30 my $error;
31 my $custnum = '';
32 if ( $pkgpart ) {
33   $error = $new->replace( $old,
34                           pkg_svc     => \%pkg_svc,
35                           primary_svc => scalar($cgi->param('pkg_svc_primary')),
36                         );
37 } else {
38   $error = $new->insert(  pkg_svc     => \%pkg_svc,
39                           primary_svc => scalar($cgi->param('pkg_svc_primary')),
40                           cust_pkg    => $cgi->param('pkgnum'),
41                           custnum_ref => \$custnum,
42                        );
43   $pkgpart = $new->pkgpart;
44 }
45 if ( $error ) {
46   $cgi->param('error', $error );
47   print $cgi->redirect(popurl(2). "part_pkg.cgi?". $cgi->query_string );
48 } elsif ( $custnum )  {
49   print $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum");
50 } else {
51   print $cgi->redirect(popurl(3). "browse/part_pkg.cgi");
52 }
53
54 %>