This commit was generated by cvs2svn to compensate for changes in r4407,
[freeside.git] / httemplate / edit / process / agent_type.cgi
1 <%
2
3 my $typenum = $cgi->param('typenum');
4 my $old = qsearchs('agent_type',{'typenum'=>$typenum}) if $typenum;
5
6 my $new = new FS::agent_type ( {
7   map {
8     $_, scalar($cgi->param($_));
9   } fields('agent_type')
10 } );
11
12 my $error;
13 if ( $typenum ) {
14   $error=$new->replace($old);
15 } else {
16   $error=$new->insert;
17   $typenum=$new->getfield('typenum');
18 }
19
20 if ( $error ) {
21   $cgi->param('error', $error);
22   print $cgi->redirect(popurl(2). "agent_type.cgi?". $cgi->query_string );
23 } else {
24
25   #false laziness w/ edit/process/part_svc.cgi
26   foreach my $part_pkg (qsearch('part_pkg',{})) {
27     my($pkgpart)=$part_pkg->getfield('pkgpart');
28
29     my($type_pkgs)=qsearchs('type_pkgs',{
30         'typenum' => $typenum,
31         'pkgpart' => $pkgpart,
32     });
33     if ( $type_pkgs && ! $cgi->param("pkgpart$pkgpart") ) {
34       my($d_type_pkgs)=$type_pkgs; #need to save $type_pkgs for below.
35       $error=$d_type_pkgs->delete;
36       die $error if $error;
37
38     } elsif ( $cgi->param("pkgpart$pkgpart")
39               && ! $type_pkgs
40     ) {
41       #ok to clobber it now (but bad form nonetheless?)
42       $type_pkgs=new FS::type_pkgs ({
43         'typenum' => $typenum,
44         'pkgpart' => $pkgpart,
45       });
46       $error= $type_pkgs->insert;
47       die $error if $error;
48     }
49
50   }
51
52   print $cgi->redirect(popurl(3). "browse/agent_type.cgi");
53 }
54
55 %>