link by username now only links to same svcpart
[freeside.git] / httemplate / misc / process / link.cgi
1 <%
2
3 $cgi->param('pkgnum') =~ /^(\d+)$/;
4 my $pkgnum = $1;
5 $cgi->param('svcpart') =~ /^(\d+)$/;
6 my $svcpart = $1;
7 $cgi->param('svcnum') =~ /^(\d*)$/;
8 my $svcnum = $1;
9
10 unless ( $svcnum ) {
11   my $part_svc = qsearchs('part_svc',{'svcpart'=>$svcpart});
12   my $svcdb = $part_svc->getfield('svcdb');
13   $cgi->param('link_field') =~ /^(\w+)$/;
14   my $link_field = $1;
15   my $svc_x = ( grep { $_->cust_svc->svcpart == $svcpart } 
16                   qsearch( $svcdb, { $link_field => $cgi->param('link_value') })
17               )[0];
18   eidiot("$link_field not found!") unless $svc_x;
19   $svcnum = $svc_x->svcnum;
20 }
21
22 my $old = qsearchs('cust_svc',{'svcnum'=>$svcnum});
23 die "svcnum not found!" unless $old;
24 #die "svcnum $svcnum already linked to package ". $old->pkgnum if $old->pkgnum;
25 my $new = new FS::cust_svc ({
26   'svcnum' => $svcnum,
27   'pkgnum' => $pkgnum,
28   'svcpart' => $svcpart,
29 });
30
31 my $error = $new->replace($old);
32
33 unless ($error) {
34   #no errors, so let's view this customer.
35   print $cgi->redirect(popurl(3). "view/cust_pkg.cgi?$pkgnum");
36 } else {
37 %>
38 <!-- mason kludge -->
39 <%
40   idiot($error);
41 }
42
43 %>