summaryrefslogtreecommitdiff
path: root/FS/FS/TicketSystem/RT_External.pm
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2012-04-17 15:52:14 -0700
committerMark Wells <mark@freeside.biz>2012-04-17 15:52:14 -0700
commit1c59bba12621e154765a8255534e94a041dfd200 (patch)
tree5f9acae2881b035e9e3b9a21d8bc6bab1f4b2a73 /FS/FS/TicketSystem/RT_External.pm
parent71cbdde5012550846390e9f0ebafdb48e06da5e8 (diff)
link tickets to services, #17067
Diffstat (limited to 'FS/FS/TicketSystem/RT_External.pm')
-rw-r--r--FS/FS/TicketSystem/RT_External.pm51
1 files changed, 38 insertions, 13 deletions
diff --git a/FS/FS/TicketSystem/RT_External.pm b/FS/FS/TicketSystem/RT_External.pm
index f976ac0e3..22d2472ef 100644
--- a/FS/FS/TicketSystem/RT_External.pm
+++ b/FS/FS/TicketSystem/RT_External.pm
@@ -97,6 +97,11 @@ sub customer_tickets {
}
+sub service_tickets {
+ warn "service_tickets not available with RT_External.\n";
+ return;
+}
+
sub comments_on_tickets {
my ($self, $custnum, $limit, $time ) = @_;
$limit ||= 0;
@@ -206,7 +211,20 @@ sub statuses {
}
sub href_customer_tickets {
- my( $self, $custnum ) = ( shift, shift );
+ my($self, $custnum) = (shift, shift);
+ if ( $custnum =~ /^(\d+)$/ ) {
+ return $self->href_search_tickets("MemberOf = 'freeside://freeside/cust_main/$1'");
+ }
+ warn "bad custnum $custnum"; return '';
+}
+
+sub href_service_tickets {
+ warn "service_tickets not available with RT_External.\n";
+ '';
+}
+
+sub href_search_tickets {
+ my( $self, $where ) = ( shift, shift );
my( $priority, @statuses);
if ( ref($_[0]) ) {
my $opt = shift;
@@ -225,8 +243,8 @@ sub href_customer_tickets {
#$href .=
my $href =
"Search/Results.html?Order=ASC&".
- "Query= MemberOf = 'freeside://freeside/cust_main/$custnum' ".
- #" AND ( Status = 'open' OR Status = 'new' OR Status = 'stalled' )"
+ "Query= $where" .
+ #MemberOf = 'freeside://freeside/cust_main/$custnum' ".
" AND ( ". join(' OR ', map "Status = '$_'", @statuses ). " ) "
;
@@ -274,15 +292,19 @@ sub href_customer_tickets {
}
sub href_params_new_ticket {
- my( $self, $custnum_or_cust_main, $requestors ) = @_;
-
- my( $custnum, $cust_main );
- if ( ref($custnum_or_cust_main) ) {
- $cust_main = $custnum_or_cust_main;
- $custnum = $cust_main->custnum;
- } else {
- $custnum = $custnum_or_cust_main;
- $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } );
+ # my( $self, $custnum_or_cust_main, $requestors ) = @_;
+ # no longer takes $custnum--it must be an object
+ my ( $self, $object, $requestors ) = @_;
+ my $cust_main; # for default requestors
+ if ( $object->isa('FS::cust_main') ) {
+ $cust_main = $object;
+ }
+ elsif ( $object->isa('FS::svc_Common') ) {
+ $object = $object->cust_svc;
+ $cust_main = $object->cust_pkg->cust_main if ( $object->cust_pkg );
+ }
+ elsif ( $object->isa('FS::cust_svc') ) {
+ $cust_main = $object->cust_pkg->cust_main if ( $object->cust_pkg );
}
# explicit $requestors > config option > invoicing_list
@@ -291,9 +313,12 @@ sub href_params_new_ticket {
$requestors = $cust_main->invoicing_list_emailonly_scalar
if (!$requestors) and defined($cust_main);
+ my $subtype = $object->table;
+ my $pkey = $object->get($object->primary_key);
+
my %param = (
'Queue' => ($cust_main->agent->ticketing_queueid || $default_queueid),
- 'new-MemberOf'=> "freeside://freeside/cust_main/$custnum",
+ 'new-MemberOf'=> "freeside://freeside/$subtype/$pkey",
'Requestors' => $requestors,
);