use FS::prospect_main;
use FS::cust_main;
use FS::cust_main_county;
+use FS::part_export;
use FS::GeocodeCache;
$import = 0;
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.
$self->set('censusyear' => $conf->config('census_year') || 2012);
}
+ my $oldAutoCommit = $FS::UID::AutoCommit;
+ local $FS::UID::AutoCommit = 0;
+ my $dbh = dbh;
+
my $error = $self->SUPER::insert(@_);
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return $error;
+ }
#false laziness with cust_main, will go away eventually
- if ( !$import and !$error and $conf->config('tax_district_method') ) {
+ if ( !$import and $conf->config('tax_district_method') ) {
my $queue = new FS::queue {
'job' => 'FS::geocode_Mixin::process_district_update'
};
$error = $queue->insert( ref($self), $self->locationnum );
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return $error;
+ }
+
+ }
+
+ # cust_location exports
+ #my $export_args = $options{'export_args'} || [];
+ my @part_export =
+ map qsearch( 'part_export', {exportnum=>$_} ),
+ $conf->config('cust_location-exports'); #, $agentnum
+
+ foreach my $part_export ( @part_export ) {
+ my $error = $part_export->export_insert($self); #, @$export_args);
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "exporting to ". $part_export->exporttype.
+ " (transaction rolled back): $error";
+ }
}
- $error || '';
+
+ $dbh->commit or die $dbh->errstr if $oldAutoCommit;
+ '';
}
=item delete
}
}
- $self->SUPER::replace($old);
+ my $oldAutoCommit = $FS::UID::AutoCommit;
+ local $FS::UID::AutoCommit = 0;
+ my $dbh = dbh;
+
+ my $error = $self->SUPER::replace($old);
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return $error;
+ }
+
+ # cust_location exports
+ #my $export_args = $options{'export_args'} || [];
+
+ my @part_export =
+ map qsearch( 'part_export', {exportnum=>$_} ),
+ $conf->config('cust_location-exports'); #, $agentnum
+
+ foreach my $part_export ( @part_export ) {
+ my $error = $part_export->export_replace($self, $old); #, @$export_args);
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "exporting to ". $part_export->exporttype.
+ " (transaction rolled back): $error";
+ }
+ }
+
+
+ $dbh->commit or die $dbh->errstr if $oldAutoCommit;
+ '';
}
$self->ut_numbern('locationnum')
|| $self->ut_foreign_keyn('prospectnum', 'prospect_main', 'prospectnum')
|| $self->ut_foreign_keyn('custnum', 'cust_main', 'custnum')
+ || $self->ut_textn('locationname')
|| $self->ut_text('address1')
|| $self->ut_textn('address2')
|| $self->ut_text('city')
|| $self->ut_alphan('geocode')
|| $self->ut_alphan('district')
|| $self->ut_numbern('censusyear')
+ || $self->ut_flag('incorporated')
;
return $error if $error;
if ( $self->censustract ne '' ) {
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)
=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<FS::cust_main>)
+
+=item prospect_main
+
+Prospect object (see L<FS::prospect_main>)
+
+=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<FS::cust_main>)
+
+=item prospect_main
+
+Prospect object (see L<FS::prospect_main>)
+
+=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 ) {
($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