1 package FS::svc_Common;
5 use FS::Record qw( qsearchs fields dbh );
9 @ISA = qw( FS::Record );
13 FS::svc_Common - Object method for all svc_ records
19 @ISA = qw( FS::svc_Common );
23 FS::svc_Common is intended as a base class for table-specific classes to
24 inherit from, i.e. FS::svc_acct. FS::svc_Common inherits from FS::Record.
32 Adds this record to the database. If there is an error, returns the error,
33 otherwise returns false.
35 The additional fields pkgnum and svcpart (see L<FS::cust_svc>) should be
36 defined. An FS::cust_svc record will be created and inserted.
44 local $SIG{HUP} = 'IGNORE';
45 local $SIG{INT} = 'IGNORE';
46 local $SIG{QUIT} = 'IGNORE';
47 local $SIG{TERM} = 'IGNORE';
48 local $SIG{TSTP} = 'IGNORE';
49 local $SIG{PIPE} = 'IGNORE';
51 my $oldAutoCommit = $FS::UID::AutoCommit;
52 local $FS::UID::AutoCommit = 0;
55 $error = $self->check;
56 return $error if $error;
58 my $svcnum = $self->svcnum;
61 $cust_svc = new FS::cust_svc ( {
62 #hua?# 'svcnum' => $svcnum,
63 'pkgnum' => $self->pkgnum,
64 'svcpart' => $self->svcpart,
66 $error = $cust_svc->insert;
68 $dbh->rollback if $oldAutoCommit;
71 $svcnum = $self->svcnum($cust_svc->svcnum);
73 $cust_svc = qsearchs('cust_svc',{'svcnum'=>$self->svcnum});
74 unless ( $cust_svc ) {
75 $dbh->rollback if $oldAutoCommit;
76 return "no cust_svc record found for svcnum ". $self->svcnum;
78 $self->pkgnum($cust_svc->pkgnum);
79 $self->svcpart($cust_svc->svcpart);
82 $error = $self->SUPER::insert;
84 $dbh->rollback if $oldAutoCommit;
88 $dbh->commit or die $dbh->errstr if $oldAutoCommit;
95 Deletes this account from the database. If there is an error, returns the
96 error, otherwise returns false.
98 The corresponding FS::cust_svc record will be deleted as well.
106 local $SIG{HUP} = 'IGNORE';
107 local $SIG{INT} = 'IGNORE';
108 local $SIG{QUIT} = 'IGNORE';
109 local $SIG{TERM} = 'IGNORE';
110 local $SIG{TSTP} = 'IGNORE';
111 local $SIG{PIPE} = 'IGNORE';
113 my $svcnum = $self->svcnum;
115 $error = $self->SUPER::delete;
116 return $error if $error;
118 my $cust_svc = $self->cust_svc;
119 $error = $cust_svc->delete;
120 return $error if $error;
127 Sets any fixed fields for this service (see L<FS::part_svc>). If there is an
128 error, returns the error, otherwise returns the FS::part_svc object (use ref()
129 to test the return). Usually called by the check method.
140 Sets all fields to their defaults (see L<FS::part_svc>), overriding their
141 current values. If there is an error, returns the error, otherwise returns
142 the FS::part_svc object (use ref() to test the return).
158 $self->ut_numbern('svcnum')
160 return $error if $error;
164 if ( $self->svcnum ) {
165 my $cust_svc = $self->cust_svc;
166 return "Unknown svcnum" unless $cust_svc;
167 $svcpart = $cust_svc->svcpart;
169 $svcpart = $self->getfield('svcpart');
171 my $part_svc = qsearchs( 'part_svc', { 'svcpart' => $svcpart } );
172 return "Unkonwn svcpart" unless $part_svc;
174 #set default/fixed/whatever fields from part_svc
175 my $table = $self->table;
176 foreach my $field ( grep { $_ ne 'svcnum' } fields($table) ) {
177 my $part_svc_column = $part_svc->part_svc_column($field);
178 if ( $part_svc_column->columnflag eq $x ) {
179 $self->setfield( $field, $part_svc_column->columnvalue );
189 Returns the cust_svc record associated with this svc_ record, as a FS::cust_svc
190 object (see L<FS::cust_svc>).
196 qsearchs('cust_svc', { 'svcnum' => $self->svcnum } );
205 Stubs - return false (no error) so derived classes don't need to define these
206 methods. Called by the cancel method of FS::cust_pkg (see L<FS::cust_pkg>).
211 sub unsuspend { ''; }
218 $Id: svc_Common.pm,v 1.8 2002-03-18 16:05:35 ivan Exp $
222 The setfixed method return value.
226 L<FS::Record>, L<FS::cust_svc>, L<FS::part_svc>, L<FS::cust_pkg>, schema.html
227 from the base documentation.