6b34e8a5d2864890ae69b84a4569a14d9a102cd5
[freeside.git] / httemplate / misc / process / link.cgi
1 <%
2 #<!-- $Id: link.cgi,v 1.2 2001-08-21 02:31:56 ivan Exp $ -->
3
4 use strict;
5 use vars qw ( $cgi $old $new $error $pkgnum $svcpart $svcnum );
6 use CGI;
7 use CGI::Carp qw(fatalsToBrowser);
8 use FS::CGI qw(popurl idiot eidiot);
9 use FS::UID qw(cgisuidsetup);
10 use FS::cust_svc;
11 use FS::Record qw(qsearchs);
12
13 $cgi = new CGI;
14 cgisuidsetup($cgi);
15
16 $cgi->param('pkgnum') =~ /^(\d+)$/;
17 $pkgnum = $1;
18 $cgi->param('svcpart') =~ /^(\d+)$/;
19 $svcpart = $1;
20 $cgi->param('svcnum') =~ /^(\d*)$/;
21 $svcnum = $1;
22
23 unless ( $svcnum ) {
24   my($part_svc) = qsearchs('part_svc',{'svcpart'=>$svcpart});
25   my($svcdb) = $part_svc->getfield('svcdb');
26   $cgi->param('link_field') =~ /^(\w+)$/; my($link_field)=$1;
27   my($svc_acct)=qsearchs($svcdb,{$link_field => $cgi->param('link_value') });
28   eidiot("$link_field not found!") unless $svc_acct;
29   $svcnum=$svc_acct->svcnum;
30 }
31
32 $old = qsearchs('cust_svc',{'svcnum'=>$svcnum});
33 die "svcnum not found!" unless $old;
34 $new = new FS::cust_svc ({
35   'svcnum' => $svcnum,
36   'pkgnum' => $pkgnum,
37   'svcpart' => $svcpart,
38 });
39
40 $error = $new->replace($old);
41
42 unless ($error) {
43   #no errors, so let's view this customer.
44   print $cgi->redirect(popurl(3). "view/cust_pkg.cgi?$pkgnum");
45 } else {
46   idiot($error);
47 }
48
49 %>