fix debugging
[freeside.git] / httemplate / misc / process / link.cgi
1 <%
2
3 my $DEBUG = 0;
4
5 $cgi->param('pkgnum') =~ /^(\d+)$/;
6 my $pkgnum = $1;
7 $cgi->param('svcpart') =~ /^(\d+)$/;
8 my $svcpart = $1;
9 $cgi->param('svcnum') =~ /^(\d*)$/;
10 my $svcnum = $1;
11
12 unless ( $svcnum ) {
13   my $part_svc = qsearchs('part_svc',{'svcpart'=>$svcpart});
14   my $svcdb = $part_svc->getfield('svcdb');
15   $cgi->param('link_field') =~ /^(\w+)$/;
16   my $link_field = $1;
17   my %search = ( $link_field => $cgi->param('link_value') );
18   if ( $cgi->param('link_field2') =~ /^(\w+)$/ ) {
19     $search{$1} = $cgi->param('link_value2');
20   }
21
22   my @svc_x = ( sort { ($b->cust_svc->pkgnum > 0) <=> ($a->cust_svc->pkgnum > 0)
23                        or ($b->cust_svc->svcpart == $svcpart)
24                             <=> ($a->cust_svc->svcpart == $svcpart)
25                      }
26                      qsearch( $svcdb, \%search )
27               );
28
29   if ( $DEBUG ) {
30     warn scalar(@svc_x). " candidate accounts found for linking ".
31          "(svcpart $svcpart):\n";
32     foreach my $svc_x ( @svc_x ) {
33       warn "  ". $svc_x->email.
34            " (pkgnum ". $svc_x->cust_svc->pkgnum.
35            ", svcpart ". $svc_x->cust_svc->svcpart. ")\n";
36     }
37   }
38
39   my $svc_x = $svc_x[0];
40
41   eidiot("$link_field not found!") unless $svc_x;
42
43   $svcnum = $svc_x->svcnum;
44
45 }
46
47 my $old = qsearchs('cust_svc',{'svcnum'=>$svcnum});
48 die "svcnum not found!" unless $old;
49 my $conf = new FS::Conf;
50 my($error, $new);
51 if ( $old->pkgnum && ! $conf->exists('legacy_link-steal') ) {
52   $error = "svcnum $svcnum already linked to package ". $old->pkgnum;
53 } else {
54   $new = new FS::cust_svc ({
55     'svcnum' => $svcnum,
56     'pkgnum' => $pkgnum,
57     'svcpart' => $svcpart,
58   });
59
60   $error = $new->replace($old);
61 }
62
63 unless ($error) {
64   #no errors, so let's view this customer.
65   my $custnum = $new->cust_pkg->custnum;
66   print $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum".
67                        "#cust_pkg$pkgnum" );
68 } else {
69 %>
70 <!-- mason kludge -->
71 <%
72   idiot($error);
73 }
74
75 %>