blob: 3bb1991f5c4d4c432d32f108087631b5c39fa137 (
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
package FS::TicketSystem::RT_External;
use strict;
use vars qw( $conf $priority_field $priority_field_queue $field );
use FS::UID;
install_callback FS::UID sub {
my $conf = new FS::Conf;
$priority_field =
$conf->config('ticket_system-custom_priority_field');
if ( $priority_field ) {
$priority_field_queue =
$conf->config('ticket_system-custom_priority_field_queue');
$field = $priority_field_queue
? $priority_field_queue. '.%7B'. $priority_field. '%7D'
: $priority_field;
} else {
$priority_field_queue = '';
$field = '';
}
};
sub num_customer_tickets {
my( $self, $custnum, $priority, $dbh ) = @_;
#$dbh ||= create one from some config options
my @param = ();
my $priority_sql = '';
if ( defined($priority) ) {
if ( length($priority) ) {
my $queue_sql = " queue = ( select id from queues where queues.name = ? )
or ( ? = '' and queue = 0 )";
$priority_sql = "
and ? = ( select content from TicketCustomFieldValues
where ticket = tickets.id
and customfield = ( select id from customfields
where name = ?
and ( $queue_sql )
)
)
";
push @param, $priority,
$priority_field,
$priority_field_queue,
$priority_field_queue;
} else {
return '0nothandledyet0';
}
}
my $sql = "
select count(*) from tickets
join links on ( tickets.id = links.localbase )
where ( status = 'new' or status = 'open' or status = 'stalled' )
and target = 'freeside://freeside/cust_main/$custnum'
$priority_sql
";
my $sth = $dbh->prepare($sql) or die $dbh->errstr;
$sth->execute(@param) or die $sth->errstr;
$sth->fetchrow_arrayref->[0];
}
sub href_customer_tickets {
my( $self, $custnum, $priority ) = @_;
my $href =
'Search/Results.html?Order=ASC&Query=%20MemberOf%20%3D%20%27freeside%3A%2F%2Ffreeside%2Fcust_main%2F'.
$custnum.
'%27%20%20AND%20%28%20Status%20%3D%20%27open%27%20%20OR%20Status%20%3D%20%27new%27%20%20OR%20Status%20%3D%20%27stalled%27%20%29%20'
;
if ( $priority && $field && $priority_field_queue ) {
$href .= 'AND%20Queue%20%3D%20%27'. $priority_field_queue. '%27%20';
}
if ( $priority && $field ) {
$href .= '%20AND%20%27CF.'. $field. '%27%20%3D%20%27'. $priority. '%27%20';
}
$href .= '&Rows=100'.
'&OrderBy=id&Page=1'.
'&Format=%27%20%20%20%3Cb%3E%3Ca%20href%3D%22%2Ffreeside%2Frt%2FTicket%2FDisplay.html%3Fid%3D__id__%22%3E__id__%3C%2Fa%3E%3C%2Fb%3E%2FTITLE%3A%23%27%2C%20%0A%27%3Cb%3E%3Ca%20href%3D%22%2Ffreeside%2Frt%2FTicket%2FDisplay.html%3Fid%3D__id__%22%3E__Subject__%3C%2Fa%3E%3C%2Fb%3E%2FTITLE%3ASubject%27%2C%20%0A%27__Status__%27%2C%20';
if ( $priority && $field ) {
$href .= '%0A%27__CustomField.'. $field. '__%2FTITLE%3ASeverity%27%2C%20';
}
$href .= '%0A%27__QueueName__%27%2C%20%0A%27__OwnerName__%27%2C%20%0A%27__Priority__%27%2C%20%0A%27__NEWLINE__%27%2C%20%0A%27%27%2C%20%0A%27%3Csmall%3E__Requestors__%3C%2Fsmall%3E%27%2C%20%0A%27%3Csmall%3E__CreatedRelative__%3C%2Fsmall%3E%27%2C';
if ( $priority && $field ) {
$href .= '%20%0A%27__-__%27%2C';
}
$href .= '%20%0A%27%3Csmall%3E__ToldRelative__%3C%2Fsmall%3E%27%2C%20%0A%27%3Csmall%3E__LastUpdatedRelative__%3C%2Fsmall%3E%27%2C%20%0A%27%3Csmall%3E__TimeLeft__%3C%2Fsmall%3E%27';
$href;
}
1;
|