use vars qw( @ISA $DEBUG $me $ignore_quantity );
use Carp;
use FS::Conf;
-use FS::Record qw( qsearch qsearchs dbh );
+use FS::Record qw( qsearch qsearchs dbh str2time_sql );
use FS::cust_pkg;
use FS::part_pkg;
use FS::part_svc;
my $svc = $self->svc_x;
if ($svc) {
+
my $error = $svc->cancel;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
return "Error canceling service: $error";
}
- $error = $svc->delete;
+ $error = $svc->delete; #this deletes this cust_svc record as well
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
return "Error deleting service: $error";
}
- }
- my $error = $self->delete;
- if ( $error ) {
- $dbh->rollback if $oldAutoCommit;
- return "Error deleting cust_svc: $error";
+ } else {
+
+ #huh?
+ warn "WARNING: no svc_ record found for svcnum ". $self->svcnum.
+ "; deleting cust_svc only\n";
+
+ my $error = $self->delete;
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "Error deleting cust_svc: $error";
+ }
+
}
$dbh->commit or die $dbh->errstr if $oldAutoCommit;
qsearchs( 'cust_pkg', { 'pkgnum' => $self->pkgnum } );
}
+=item pkg_svc
+
+Returns the pkg_svc record for for this service, if applicable.
+
+=cut
+
+sub pkg_svc {
+ my $self = shift;
+ my $cust_pkg = $self->cust_pkg;
+ return undef unless $cust_pkg;
+
+ qsearchs( 'pkg_svc', { 'svcpart' => $self->svcpart,
+ 'pkgpart' => $cust_pkg->pkgpart,
+ }
+ );
+}
+
+=item date_inserted
+
+Returns the date this service was inserted.
+
+=cut
+
+sub date_inserted {
+ my $self = shift;
+ $self->h_date('insert');
+}
+
=item label
Returns a list consisting of:
}
+=item export_links
+
+Returns a list of html elements associated with this services exports.
+
+=cut
+
+sub export_links {
+ my $self = shift;
+ my $svc_x = $self->svc_x
+ or return "can't find ". $self->part_svc->svcdb. '.svcnum '. $self->svcnum;
+
+ $svc_x->export_links;
+}
+
=item svc_x
Returns the FS::svc_XXX object for this service (i.e. an FS::svc_acct object or
or die "can't connect to sqlradius database: ". $DBI::errstr;
#select a unix time conversion function based on database type
- my $str2time;
- if ( $dbh->{Driver}->{Name} =~ /^mysql(PP)?$/ ) {
- $str2time = 'UNIX_TIMESTAMP(';
- } elsif ( $dbh->{Driver}->{Name} eq 'Pg' ) {
- $str2time = 'EXTRACT( EPOCH FROM ';
- } else {
- warn "warning: unknown database type ". $dbh->{Driver}->{Name}.
- "; guessing how to convert to UNIX timestamps";
- $str2time = 'extract(epoch from ';
- }
-
+ my $str2time = str2time_sql( $dbh->{Driver}->{Name} );
+
my $username = $part_export->export_username($svc_x);
my $query;
or die "can't connect to sqlradius database: ". $DBI::errstr;
#select a unix time conversion function based on database type
- my $str2time;
- if ( $dbh->{Driver}->{Name} =~ /^mysql(PP)?$/ ) {
- $str2time = 'UNIX_TIMESTAMP(';
- } elsif ( $dbh->{Driver}->{Name} eq 'Pg' ) {
- $str2time = 'EXTRACT( EPOCH FROM ';
- } else {
- warn "warning: unknown database type ". $dbh->{Driver}->{Name}.
- "; guessing how to convert to UNIX timestamps";
- $str2time = 'extract(epoch from ';
- }
+ my $str2time = str2time_sql( $dbh->{Driver}->{Name} );
my $username = $part_export->export_username($svc_x);
} );
}
- @cdrs;
-}
-
-=item pkg_svc
-
-Returns the pkg_svc record for for this service, if applicable.
-
-=cut
+ #astricon hack? config option?
+ push @cdrs,
+ qsearch( {
+ 'table' => 'cdr',
+ 'hashref' => { 'freesidestatus' => '',
+ 'src' => $number,
+ },
+ 'extra_sql' => 'FOR UPDATE',
+ } );
-sub pkg_svc {
- my $self = shift;
- my $cust_pkg = $self->cust_pkg;
- return undef unless $cust_pkg;
+ if ( length($default_prefix) ) {
+ push @cdrs,
+ qsearch( {
+ 'table' => 'cdr',
+ 'hashref' => { 'freesidestatus' => '',
+ 'src' => "$default_prefix$number",
+ },
+ 'extra_sql' => 'FOR UPDATE',
+ } );
+ }
- qsearchs( 'pkg_svc', { 'svcpart' => $self->svcpart,
- 'pkgpart' => $cust_pkg->pkgpart,
- }
- );
+ @cdrs;
}
=back