X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_location.pm;h=e5d2e72e70c0f47e0dc91b78bad09e5d71b12716;hb=7516e3da0f17eeecba27219ef96a8b5f46af2083;hp=70ccbfd7ecede9231c91a9ca8c7f3e1f379dc736;hpb=496842b7db855bd616844c7667e5d70de42535fd;p=freeside.git diff --git a/FS/FS/cust_location.pm b/FS/FS/cust_location.pm index 70ccbfd7e..e5d2e72e7 100644 --- a/FS/FS/cust_location.pm +++ b/FS/FS/cust_location.pm @@ -94,6 +94,11 @@ Geocode Tax district code (optional) +=item incorporated + +Incorporated city flag: set to 'Y' if the address is in the legal borders +of an incorporated city. + =item disabled Disabled flag; set to 'Y' to disable the location. @@ -322,6 +327,7 @@ sub check { $self->ut_numbern('locationnum') || $self->ut_foreign_keyn('prospectnum', 'prospect_main', 'prospectnum') || $self->ut_foreign_keyn('custnum', 'cust_main', 'custnum') + || $self->ut_alphan('locationname') || $self->ut_text('address1') || $self->ut_textn('address2') || $self->ut_text('city') @@ -339,6 +345,7 @@ sub check { || $self->ut_alphan('geocode') || $self->ut_alphan('district') || $self->ut_numbern('censusyear') + || $self->ut_flag('incorporated') ; return $error if $error; if ( $self->censustract ne '' ) { @@ -438,8 +445,8 @@ sub disable_if_unused { my $self = shift; my $locationnum = $self->locationnum; - return '' if FS::cust_main->count('bill_locationnum = '.$locationnum) - or FS::cust_main->count('ship_locationnum = '.$locationnum) + return '' if FS::cust_main->count('bill_locationnum = '.$locationnum.' OR + ship_locationnum = '.$locationnum) or FS::contact->count( 'locationnum = '.$locationnum) or FS::cust_pkg->count('cancel IS NULL AND locationnum = '.$locationnum) @@ -604,14 +611,61 @@ 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). +Returns the label of the location object. + +Options: + +=over 4 + +=item cust_main + +Customer object (see L) + +=item prospect_main + +Prospect object (see L) + +=item join_string + +String used to join location elements + +=back =cut sub location_label { my( $self, %opt ) = @_; + my $prefix = $self->label_prefix; + $prefix .= ($opt{join_string} || ': ') if $prefix; + + $prefix . $self->SUPER::location_label(%opt); +} + +=item label_prefix + +Returns the optional site ID string (based on the cust_location-label_prefix +config option), "Default service location", or the empty string. + +Options: + +=over 4 + +=item cust_main + +Customer object (see L) + +=item prospect_main + +Prospect object (see L) + +=back + +=cut + +sub label_prefix { + my( $self, %opt ) = @_; + my $cust_or_prospect = $opt{cust_main} || $opt{prospect_main}; unless ( $cust_or_prospect ) { if ( $self->custnum ) { @@ -633,14 +687,16 @@ sub location_label { ($agent =~ /^(..)/), sprintf('%05d', $self->locationnum) ) ); - } - elsif ( ( $opt{'cust_main'} || $self->custnum ) + + } elsif ( $label_prefix eq '_location' && $self->locationname ) { + $prefix = $self->locationname; + + } elsif ( ( $opt{'cust_main'} || $self->custnum ) && $self->locationnum == $cust_or_prospect->ship_locationnum ) { $prefix = 'Default service location'; } - $prefix .= ($opt{join_string} || ': ') if $prefix; - $prefix . $self->SUPER::location_label(%opt); + $prefix; } =item county_state_county