blob: de076eddafed3310eeafb0f4767185b16cc57246 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
%if ($error) {
% $cgi->param('error', $error);
<% $cgi->redirect(popurl(3). 'misc/qual.html?'. $cgi->query_string ) %>
%} else {
<% header('Qualification entered') %>
<SCRIPT TYPE="text/javascript">
window.top.location = '<% popurl(3).'view/qual.cgi?qualnum='. $qual->qualnum %>';
</SCRIPT>
</BODY></HTML>
%}
<%init>
my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied"
unless $curuser->access_right('Qualify service');
# copied from misc/qual.html :(
$cgi->param('custnum') =~ /^(\d+)$/;
my $custnum = $1;
$cgi->param('prospectnum') =~ /^(\d+)$/;
my $prospectnum = $1;
my $cust_or_prospect = $custnum ? "cust" : "prospect";
my $table = $cust_or_prospect . "_main";
my $custnum_or_prospectnum = $custnum ? $custnum : $prospectnum;
my $cust_main_or_prospect_main = qsearchs({
'table' => $table,
'hashref' => { $cust_or_prospect."num" => $custnum_or_prospectnum },
'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql,
});
die "neither prospect nor customer specified or found"
unless $cust_main_or_prospect_main;
$cgi->param('exportnum') =~ /^(\d+)$/ or die 'illegal exportnum';
my $exportnum = $1;
my $phonenum = $cgi->param('phonenum');
$phonenum =~ s/\D//g;
$phonenum =~ /^(\d*)$/ or die 'illegal phonenum';
my $phonenum = $1;
$cgi->param('locationnum') =~ /^(\-?\d*)$/
or die 'illegal locationnum '. $cgi->param('locationnum');
my $locationnum = $1;
my $error = '';
my $cust_location = '';
if ( $locationnum == -1 ) { # adding a new one
$cust_location = new FS::cust_location {
$cust_or_prospect."num" => $custnum_or_prospectnum,
map { $_ => scalar($cgi->param($_)) }
qw( address1 address2 city county state zip country geocode ),
grep scalar($cgi->param($_)),
qw( location_type location_number location_kind )
};
#locationnum '': default service location
} elsif ( $locationnum eq '' && $cust_or_prospect eq 'prospect' ) {
die "a location must be specified explicitly for prospects";
#locationnum -2: address not required for qual
} elsif ( $locationnum == -2 && $phonenum eq '' ) {
$error = "Nothing to qualify - neither phone number nor address specified";
}
my $qual = new FS::qual {
'status' => 'N',
};
$qual->phonenum($phonenum) if $phonenum ne '';
$qual->set( $cust_or_prospect."num" => $custnum_or_prospectnum )
unless $locationnum == -1 || $locationnum > 0;
$qual->exportnum($exportnum) if $exportnum > 0;
$error ||= $qual->insert( 'cust_location' => $cust_location );
</%init>
|