summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2012-04-26 17:09:53 -0700
committerMark Wells <mark@freeside.biz>2012-04-26 17:09:53 -0700
commit6ff1c755b054201c38b0a2a7b6161325af5c0bcf (patch)
treeea8d4ece90217033d668b2546ec0cd5f8bb14a19
parent88269174c839d6953f30e2f849bc60327dd10f07 (diff)
site id in cust_location labels, #16815
-rw-r--r--FS/FS/Conf.pm18
-rw-r--r--FS/FS/cust_location.pm36
2 files changed, 54 insertions, 0 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 31999bc7f..82e5ea89c 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -3052,6 +3052,24 @@ and customer address. Include units.',
},
{
+ 'key' => 'cust_location-label_prefix',
+ 'section' => 'UI',
+ 'description' => 'Optional "site ID" to show in the location label',
+ 'type' => 'select',
+ 'select_hash' => [ '' => '',
+ 'CoStAg' => 'CoStAgXXXXX (country, state, agent name, locationnum)',
+ ],
+ },
+
+ {
+ 'key' => 'cust_location-agent_code',
+ 'section' => 'UI',
+ 'description' => 'Optional agent string for cust_location-label_prefix',
+ 'type' => 'text',
+ 'per_agent' => 1,
+ },
+
+ {
'key' => 'cust_pkg-display_times',
'section' => 'UI',
'description' => 'Display full timestamps (not just dates) for customer packages. Useful if you are doing real-time things like hourly prepaid.',
diff --git a/FS/FS/cust_location.pm b/FS/FS/cust_location.pm
index a5250ec05..a99fa17d8 100644
--- a/FS/FS/cust_location.pm
+++ b/FS/FS/cust_location.pm
@@ -408,6 +408,42 @@ sub dealternize {
'';
}
+=item location_label
+
+Returns the label of the location object, with an optional site ID
+string (based on the cust_location-label_prefix config option).
+
+=cut
+
+sub location_label {
+ my $self = shift;
+ my %opt = @_;
+ my $conf = new FS::Conf;
+ my $prefix = '';
+ my $format = $conf->config('cust_location-label_prefix') || '';
+ if ( $format eq 'CoStAg' ) {
+ my $cust_or_prospect;
+ if ( $self->custnum ) {
+ $cust_or_prospect = FS::cust_main->by_key($self->custnum);
+ }
+ elsif ( $self->prospectnum ) {
+ $cust_or_prospect = FS::prospect_main->by_key($self->prospectnum);
+ }
+ my $agent = $conf->config('cust_location-agent_code',
+ $cust_or_prospect->agentnum)
+ || $cust_or_prospect->agent->agent;
+ # else this location is invalid
+ $prefix = uc( join('',
+ $self->country,
+ ($self->state =~ /^(..)/),
+ ($agent =~ /^(..)/),
+ sprintf('%05d', $self->locationnum)
+ ) );
+ }
+ $prefix .= ($opt{join_string} || ': ') if $prefix;
+ $prefix . $self->SUPER::location_label(%opt);
+}
+
=back
=head1 BUGS