23fb0538664d30445de64bdda08bb676cb74e246
[freeside.git] / htdocs / misc / process / link.cgi
1 #!/usr/bin/perl -Tw
2 #
3 # process/link.cgi: link to existing customer (process form)
4 #
5 # ivan@voicenet.com 97-feb-5
6 #
7 # rewrite ivan@sisd.com 98-mar-18
8 #
9 # Changes to allow page to work at a relative position in server
10 #       bmccane@maxbaud.net     98-apr-3
11 #
12 # can also link on some other fields now (about time) ivan@sisd.com 98-jun-24
13
14 use strict;
15 use CGI::Request;
16 use CGI::Carp qw(fatalsToBrowser);
17 use FS::CGI qw(idiot);
18 use FS::UID qw(cgisuidsetup);
19 use FS::cust_svc;
20 use FS::Record qw(qsearchs);
21
22 my($req)=new CGI::Request; # create form object
23 cgisuidsetup($req->cgi);
24
25 #$req->import_names('R'); #import CGI variables into package 'R';
26
27 $req->param('pkgnum') =~ /^(\d+)$/; my($pkgnum)=$1;
28 $req->param('svcpart') =~ /^(\d+)$/; my($svcpart)=$1;
29
30 $req->param('svcnum') =~ /^(\d*)$/; my($svcnum)=$1;
31 unless ( $svcnum ) {
32   my($part_svc) = qsearchs('part_svc',{'svcpart'=>$svcpart});
33   my($svcdb) = $part_svc->getfield('svcdb');
34   $req->param('link_field') =~ /^(\w+)$/; my($link_field)=$1;
35   my($svc_acct)=qsearchs($svcdb,{$link_field => $req->param('link_value') });
36   idiot("$link_field not found!") unless $svc_acct;
37   $svcnum=$svc_acct->svcnum;
38 }
39
40 my($old)=qsearchs('cust_svc',{'svcnum'=>$svcnum});
41 die "svcnum not found!" unless $old;
42 my($new)=create FS::cust_svc ({
43   'svcnum' => $svcnum,
44   'pkgnum' => $pkgnum,
45   'svcpart' => $svcpart,
46 });
47
48 my($error);
49 $error = $new->replace($old);
50
51 unless ($error) {
52   #no errors, so let's view this customer.
53   $req->cgi->redirect("../../view/cust_pkg.cgi?$pkgnum");
54 } else {
55   CGI::Base::SendHeaders(); # one guess
56   print <<END;
57 <HTML>
58   <HEAD>
59     <TITLE>Error</TITLE>
60   </HEAD>
61   <BODY>
62     <CENTER>
63     <H4>Error</H4>
64     </CENTER>
65     Your update did not occur because of the following error:
66     <P><B>$error</B>
67     <P>Hit the <I>Back</I> button in your web browser, correct this mistake, and submit the form again.
68   </BODY>
69 </HTML>
70 END
71  
72 }
73