# END LICENSE BLOCK
package RT::URI::freeside;
-use RT::URI::base;
+use base qw( RT::URI::base );
use strict;
-use vars qw(@ISA $IntegrationType $URL);
-@ISA = qw/RT::URI::base/;
+use vars qw( $IntegrationType $URL );
+use Carp qw( cluck );
=head1 NAME
=head1 DESCRIPTION
-URI handler for freeside URIs. See http://www.sisd.com/freeside/ for
-more information on freeside.
+URI handler for Freeside URIs. See http://www.freeside.biz/ for more
+information on Freeside.
=head1 Public subroutines
sub smart_search { return undef; }
+=item email_search
+
+A wrapper for the FS::cust_main::email_search subroutine.
+
+=cut
+
+sub email_search { return undef; }
+
+
=item small_custview
A wrapper for the FS::CGI::small_custview subroutine.
my $self = shift;
- $RT::Logger->debug("Called _FreesideURILabel()");
+ #$RT::Logger->debug("Called _FreesideURILabel()");
return unless (exists($self->{'fstable'}) and
exists($self->{'fspkey'}));
my $label;
my ($table, $pkey) = ($self->{'fstable'}, $self->{'fspkey'});
- if ($table ne 'cust_main') {
- warn "FS::${table} not currently supported";
- return;
- }
+ #if ($table ne 'cust_main') {
+ # warn "FS::${table} not currently supported";
+ # return;
+ #}
my $rec = $self->_FreesideGetRecord();
- if (ref($rec) eq 'HASH' and $table eq 'cust_main') {
+ if (ref($rec) eq 'HASH' && $table eq 'cust_main') {
my $name = $rec->{'last'} . ', ' . $rec->{'first'};
$name = $rec->{'company'} . " ($name)" if $rec->{'company'};
$label = "$pkey: $name";
+ } elsif ( $table eq 'cust_svc' && ref($rec) && $rec->{'_object'} ) {
+ #Internal only
+ my($l,$v) = $rec->{'_object'}->label;
+ $label = "$l: $v";
} else {
$label = "$pkey: $table";
}
my ($table, $pkey);
my $uriprefix = $self->_FreesideURIPrefix;
- if ($uri =~ /^$uriprefix\/(\w+)\/(\d+)$/) {
+ if ($uri =~ /^$uriprefix\/(\w+)\/(\d*)$/) {
+
$table = $1;
$pkey = $2;
+
+ unless ( $pkey ) {
+ #way too noisy, using this prefix is normal usage# cluck "bad URL $uri";
+ return(undef);
+ }
+
$self->{'scheme'} = $self->Scheme;
+
} else {
return(undef);
}
die $@;
};
-=back
+=item CustomerInfo
+
+Return a hashref of customer information, including all fields from
+C<cust_main> as well as:
+
+- AgentName: the name of the customer's agent
+- CustomerClass: the name of the customer's class
+- CustomerTags: an arrayref of tags attached to the customer, each
+ as a hashref with keys "name", "desc", and "color".
+- Referral: the name of the customer's advertising source.
=cut
+sub CustomerInfo { {} }
+
1;