[freeside-commits] freeside/FS/FS Mason.pm, 1.68, 1.69 Record.pm, 1.219, 1.220 Schema.pm, 1.278, 1.279 cust_pkg.pm, 1.199, 1.200 cust_svc.pm, 1.87, 1.88 hardware_class.pm, NONE, 1.1 hardware_status.pm, NONE, 1.1 hardware_type.pm, NONE, 1.1 part_svc.pm, 1.36, 1.37 part_svc_column.pm, 1.6, 1.7 svc_dish.pm, NONE, 1.1 svc_hardware.pm, NONE, 1.1
Mark Wells
mark at wavetail.420.am
Thu Mar 31 19:52:14 PDT 2011
- Previous message: [freeside-commits] freeside/FS MANIFEST,1.183,1.184
- Next message: [freeside-commits] freeside/FS/t hardware_class.t, NONE, 1.1 hardware_status.t, NONE, 1.1 hardware_type.t, NONE, 1.1 svc_dish.t, NONE, 1.1 svc_hardware.t, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/cvsroot/freeside/FS/FS
In directory wavetail.420.am:/tmp/cvs-serv29538/FS/FS
Modified Files:
Mason.pm Record.pm Schema.pm cust_pkg.pm cust_svc.pm
part_svc.pm part_svc_column.pm
Added Files:
hardware_class.pm hardware_status.pm hardware_type.pm
svc_dish.pm svc_hardware.pm
Log Message:
svc_hardware and svc_dish, #11454
Index: part_svc_column.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/part_svc_column.pm,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -w -d -r1.6 -r1.7
--- part_svc_column.pm 9 May 2009 00:39:13 -0000 1.6
+++ part_svc_column.pm 1 Apr 2011 02:52:12 -0000 1.7
@@ -43,7 +43,7 @@
=item columnvalue - default or fixed value for the column
-=item columnflag - null or empty (no default), `D' for default, `F' for fixed (unchangeable), `S' for selectable choice, `M' for manual selection from inventory, or `A' for automatic selection from inventory. For virtual fields, can also be 'X' for excluded.
+=item columnflag - null or empty (no default), `D' for default, `F' for fixed (unchangeable), `S' for selectable choice, `M' for manual selection from inventory, `A' for automatic selection from inventory, or `H' for selection from a hardware class. For virtual fields, can also be 'X' for excluded.
=back
@@ -94,15 +94,19 @@
;
return $error if $error;
- $self->columnflag =~ /^([DFSMAX]?)$/
+ $self->columnflag =~ /^([DFSMAHX]?)$/
or return "illegal columnflag ". $self->columnflag;
$self->columnflag(uc($1));
if ( $self->columnflag =~ /^[MA]$/ ) {
$error =
$self->ut_foreign_key( 'columnvalue', 'inventory_class', 'classnum' );
- return $error if $error;
}
+ if ( $self->columnflag eq 'H' ) {
+ $error =
+ $self->ut_foreign_key( 'columnvalue', 'hardware_class', 'classnum' );
+ }
+ return $error if $error;
$self->SUPER::check;
}
--- NEW FILE: svc_dish.pm ---
package FS::svc_dish;
use strict;
use base qw( FS::svc_Common );
use FS::Record qw( qsearch qsearchs );
=head1 NAME
FS::svc_dish - Object methods for svc_dish records
=head1 SYNOPSIS
use FS::svc_dish;
$record = new FS::svc_dish \%hash;
$record = new FS::svc_dish { 'column' => 'value' };
$error = $record->insert;
$error = $new_record->replace($old_record);
$error = $record->delete;
$error = $record->check;
=head1 DESCRIPTION
An FS::svc_dish object represents a Dish Network service. FS::svc_dish
inherits from FS::svc_Common.
The following fields are currently supported:
=over 4
=item svcnum - Primary key
=item acctnum - DISH account number
=item note - Installation notes: location on property, physical access, etc.
=back
=head1 METHODS
=over 4
=item new HASHREF
Creates a new svc_dish object.
=cut
sub table { 'svc_dish'; }
sub table_info {
my %opts = ( 'type' => 'text',
'disable_select' => 1,
'disable_inventory' => 1,
);
{
'name' => 'Dish service',
'display_weight' => 58,
'cancel_weight' => 85,
'fields' => {
'svcnum' => { label => 'Service' },
'acctnum' => { label => 'DISH account#', %opts },
'note' => { label => 'Installation notes', %opts },
}
}
}
sub label {
my $self = shift;
$self->acctnum;
}
sub search_sql {
my($class, $string) = @_;
$class->search_sql_field('acctnum', $string);
}
=item insert
Adds this record to the database. If there is an error, returns the error,
otherwise returns false.
=item delete
Delete this record from the database.
=item replace OLD_RECORD
Replaces the OLD_RECORD with this one in the database. If there is an error,
returns the error, otherwise returns false.
# the replace method can be inherited from FS::Record
=item check
Checks all fields to make sure this is a valid service. If there is
an error, returns the error, otherwise returns false. Called by the insert
and replace methods.
=cut
sub check {
my $self = shift;
my $x = $self->setfixed;
return $x unless ref $x;
my $error =
$self->ut_numbern('svcnum')
|| $self->ut_text('acctnum')
|| $self->ut_textn('note')
;
return $error if $error;
$self->SUPER::check;
}
=back
=head1 SEE ALSO
L<FS::Record>, L<FS::svc_Common>, schema.html from the base documentation.
=cut
1;
--- NEW FILE: hardware_type.pm ---
package FS::hardware_type;
use strict;
use base qw( FS::Record );
use FS::Record qw( qsearch qsearchs );
=head1 NAME
FS::hardware_type - Object methods for hardware_type records
=head1 SYNOPSIS
use FS::hardware_type;
$record = new FS::hardware_type \%hash;
$record = new FS::hardware_type { 'column' => 'value' };
$error = $record->insert;
$error = $new_record->replace($old_record);
$error = $record->delete;
$error = $record->check;
=head1 DESCRIPTION
An FS::hardware_type object represents a device type (a model name or
number) assignable as a hardware service (L<FS::svc_hardware)>).
FS::hardware_type inherits from FS::Record. The following fields are
currently supported:
=over 4
=item typenum - primary key
=item classnum - key to an L<FS::hardware_class> record defining the class
to which this device type belongs.
=item model - descriptive model name or number
=back
=head1 METHODS
=over 4
=item new HASHREF
Creates a new record. To add the record to the database, see L<"insert">.
Note that this stores the hash reference, not a distinct copy of the hash it
points to. You can ask the object for a copy with the I<hash> method.
=cut
# the new method can be inherited from FS::Record, if a table method is defined
sub table { 'hardware_type'; }
=item insert
Adds this record to the database. If there is an error, returns the error,
otherwise returns false.
=cut
# the insert method can be inherited from FS::Record
=item delete
Delete this record from the database.
=cut
# the delete method can be inherited from FS::Record
=item replace OLD_RECORD
Replaces the OLD_RECORD with this one in the database. If there is an error,
returns the error, otherwise returns false.
=cut
# the replace method can be inherited from FS::Record
=item check
Checks all fields to make sure this is a valid hardware type. If there is
an error, returns the error, otherwise returns false. Called by the insert
and replace methods.
=cut
# the check method should currently be supplied - FS::Record contains some
# data checking routines
sub check {
my $self = shift;
my $error =
$self->ut_numbern('typenum')
|| $self->ut_foreign_key('classnum', 'hardware_class', 'classnum')
|| $self->ut_text('model')
;
return $error if $error;
$self->SUPER::check;
}
=item hardware_class
Returns the L<FS::hardware_class> associated with this device.
=cut
sub hardware_class {
my $self = shift;
return qsearchs('hardware_class', { 'classnum' => $self->classnum });
}
=back
=head1 SEE ALSO
L<FS::svc_hardware>, L<FS::Record>, schema.html from the base documentation.
=cut
1;
Index: cust_svc.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/cust_svc.pm,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -w -d -r1.87 -r1.88
--- cust_svc.pm 16 Jan 2011 20:20:22 -0000 1.87
+++ cust_svc.pm 1 Apr 2011 02:52:12 -0000 1.88
@@ -371,6 +371,20 @@
$self->h_date('insert');
}
+=item pkg_cancel_date
+
+Returns the date this service's package was canceled. This normally only
+exists for a service that's been preserved through cancellation with the
+part_pkg.preserve flag.
+
+=cut
+
+sub pkg_cancel_date {
+ my $self = shift;
+ my $cust_pkg = $self->cust_pkg or return;
+ return $cust_pkg->getfield('cancel') || '';
+}
+
=item label
Returns a list consisting of:
Index: part_svc.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/part_svc.pm,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -w -d -r1.36 -r1.37
--- part_svc.pm 25 Nov 2010 01:46:33 -0000 1.36
+++ part_svc.pm 1 Apr 2011 02:52:12 -0000 1.37
@@ -53,6 +53,8 @@
=item disabled - Disabled flag, empty or `Y'
+=item preserve - Preserve after cancellation, empty or 'Y'
+
=back
=head1 METHODS
@@ -381,6 +383,7 @@
|| $self->ut_text('svc')
|| $self->ut_alpha('svcdb')
|| $self->ut_enum('disabled', [ '', 'Y' ] )
+ || $self->ut_enum('preserve', [ '', 'Y' ] )
;
return $error if $error;
@@ -758,7 +761,7 @@
map {
my $f = $svcdb.'__'.$_;
- if ( $param->{ $f.'_flag' } =~ /^[MA]$/ ) {
+ if ( $param->{ $f.'_flag' } =~ /^[MAH]$/ ) {
$param->{ $f } = delete( $param->{ $f.'_classnum' } );
}
if ( $param->{ $f.'_flag' } =~ /^S$/ ) {
Index: cust_pkg.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/cust_pkg.pm,v
retrieving revision 1.199
retrieving revision 1.200
diff -u -w -d -r1.199 -r1.200
--- cust_pkg.pm 10 Mar 2011 09:42:08 -0000 1.199
+++ cust_pkg.pm 1 Apr 2011 02:52:12 -0000 1.200
@@ -761,6 +761,8 @@
map { [ $_, $_->svc_x->table_info->{'cancel_weight'} ]; }
qsearch( 'cust_svc', { 'pkgnum' => $self->pkgnum } )
) {
+ my $part_svc = $cust_svc->part_svc;
+ next if ( defined($part_svc) and $part_svc->preserve );
my $error = $cust_svc->cancel( %svc_cancel_opt );
if ( $error ) {
--- NEW FILE: hardware_class.pm ---
package FS::hardware_class;
use strict;
use base qw( FS::Record );
use FS::Record qw( qsearch qsearchs );
=head1 NAME
FS::hardware_class - Object methods for hardware_class records
=head1 SYNOPSIS
use FS::hardware_class;
$record = new FS::hardware_class \%hash;
$record = new FS::hardware_class { 'column' => 'value' };
$error = $record->insert;
$error = $new_record->replace($old_record);
$error = $record->delete;
$error = $record->check;
=head1 DESCRIPTION
An FS::hardware_class object represents a class of hardware types which can
be assigned to similar services (see L<FS::svc_hardware>). FS::hardware_class
inherits from FS::Record. The following fields are currently supported:
=over 4
=item classnum - primary key
=item classname - classname
=back
=head1 METHODS
=over 4
=item new HASHREF
Creates a new record. To add the record to the database, see L<"insert">.
Note that this stores the hash reference, not a distinct copy of the hash it
points to. You can ask the object for a copy with the I<hash> method.
=cut
# the new method can be inherited from FS::Record, if a table method is defined
sub table { 'hardware_class'; }
=item insert
Adds this record to the database. If there is an error, returns the error,
otherwise returns false.
=cut
# the insert method can be inherited from FS::Record
=item delete
Delete this record from the database.
=cut
# the delete method can be inherited from FS::Record
=item replace OLD_RECORD
Replaces the OLD_RECORD with this one in the database. If there is an error,
returns the error, otherwise returns false.
=cut
# the replace method can be inherited from FS::Record
=item check
Checks all fields to make sure this is a valid hardware class. If there is
an error, returns the error, otherwise returns false. Called by the insert
and replace methods.
=cut
# the check method should currently be supplied - FS::Record contains some
# data checking routines
sub check {
my $self = shift;
my $error =
$self->ut_numbern('classnum')
|| $self->ut_text('classname')
;
return $error if $error;
$self->SUPER::check;
}
=item hardware_type
Returns all L<FS::hardware_type> objects belonging to this class.
=cut
sub hardware_type {
my $self = shift;
return qsearch('hardware_type', { 'classnum' => $self->classnum });
}
=back
=head1 SEE ALSO
L<FS::hardware_type>, L<FS::Record>, schema.html from the base documentation.
=cut
1;
--- NEW FILE: hardware_status.pm ---
package FS::hardware_status;
use strict;
use base qw( FS::Record );
use FS::Record qw( qsearch qsearchs );
=head1 NAME
FS::hardware_status - Object methods for hardware_status records
=head1 SYNOPSIS
use FS::hardware_status;
$record = new FS::hardware_status \%hash;
$record = new FS::hardware_status { 'column' => 'value' };
$error = $record->insert;
$error = $new_record->replace($old_record);
$error = $record->delete;
$error = $record->check;
=head1 DESCRIPTION
An FS::hardware_status object represents an installation status for hardware
services. FS::hardware_status inherits from FS::Record. The following fields
are currently supported:
=over 4
=item statusnum - primary key
=item label - descriptive label
=back
=head1 METHODS
=over 4
=item new HASHREF
Creates a new record. To add the record to the database, see L<"insert">.
Note that this stores the hash reference, not a distinct copy of the hash it
points to. You can ask the object for a copy with the I<hash> method.
=cut
# the new method can be inherited from FS::Record, if a table method is defined
sub table { 'hardware_status'; }
=item insert
Adds this record to the database. If there is an error, returns the error,
otherwise returns false.
=cut
# the insert method can be inherited from FS::Record
=item delete
Delete this record from the database.
=cut
# the delete method can be inherited from FS::Record
=item replace OLD_RECORD
Replaces the OLD_RECORD with this one in the database. If there is an error,
returns the error, otherwise returns false.
=cut
# the replace method can be inherited from FS::Record
=item check
Checks all fields to make sure this is a valid status. If there is
an error, returns the error, otherwise returns false. Called by the insert
and replace methods.
=cut
# the check method should currently be supplied - FS::Record contains some
# data checking routines
sub check {
my $self = shift;
my $error =
$self->ut_numbern('statusnum')
|| $self->ut_text('label')
;
return $error if $error;
$self->SUPER::check;
}
=back
=head1 SEE ALSO
L<FS::svc_hardware>, L<FS::Record>, schema.html from the base documentation.
=cut
1;
Index: Record.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/Record.pm,v
retrieving revision 1.219
retrieving revision 1.220
diff -u -w -d -r1.219 -r1.220
--- Record.pm 13 Feb 2011 07:19:45 -0000 1.219
+++ Record.pm 1 Apr 2011 02:52:11 -0000 1.220
@@ -21,6 +21,7 @@
use FS::Schema qw(dbdef);
use FS::SearchCache;
use FS::Msgcat qw(gettext);
+use NetAddr::IP; # for validation
#use FS::Conf; #dependency loop bs, in install_callback below instead
use FS::part_virtual_field;
@@ -2376,6 +2377,35 @@
}
}
+=item ut_ip46 COLUMN
+
+Check/untaint IPv4 or IPv6 address.
+
+=cut
+
+sub ut_ip46 {
+ my( $self, $field ) = @_;
+ my $ip = NetAddr::IP->new($self->getfield($field))
+ or return "Illegal (IP address) $field: ".$self->getfield($field);
+ $self->setfield($field, lc($ip->addr));
+ return '';
+}
+
+=item ut_ip46n
+
+Check/untaint IPv6 or IPv6 address. May be null.
+
+=cut
+
+sub ut_ip46n {
+ my( $self, $field ) = @_;
+ if ( $self->getfield($field) =~ /^$/ ) {
+ $self->setfield($field, '');
+ return '';
+ }
+ $self->ut_ip46($field);
+}
+
=item ut_coord COLUMN [ LOWER [ UPPER ] ]
Check/untaint coordinates.
Index: Schema.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/Schema.pm,v
retrieving revision 1.278
retrieving revision 1.279
diff -u -w -d -r1.278 -r1.279
--- Schema.pm 29 Mar 2011 01:04:31 -0000 1.278
+++ Schema.pm 1 Apr 2011 02:52:11 -0000 1.279
@@ -1745,6 +1745,7 @@
'svc', 'varchar', '', $char_d, '', '',
'svcdb', 'varchar', '', $char_d, '', '',
'disabled', 'char', 'NULL', 1, '', '',
+ 'preserve', 'char', 'NULL', 1, '', '',
],
'primary_key' => 'svcpart',
'unique' => [],
@@ -2003,6 +2004,63 @@
'index' => [ ['svcnum'] ],
},
+ 'svc_dish' => {
+ 'columns' => [
+ 'svcnum', 'int', '', '', '', '',
+ 'acctnum', 'varchar', '', 16, '', '',
+ 'note', 'text', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'svcnum',
+ 'unique' => [ ],
+ 'index' => [ ],
+ },
+
+ 'svc_hardware' => {
+ 'columns' => [
+ 'svcnum', 'int', '', '', '', '',
+ 'typenum', 'int', '', '', '', '',
+ 'serial', 'varchar', 'NULL', $char_d, '', '',
+ 'ip_addr', 'varchar', 'NULL', 40, '', '',
+ 'hw_addr', 'varchar', 'NULL', 12, '', '',
+ 'statusnum','int', 'NULL', '', '', '',
+ 'note', 'text', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'svcnum',
+ 'unique' => [ ],
+ 'index' => [ ],
+ },
+
+ 'hardware_class' => {
+ 'columns' => [
+ 'classnum', 'serial', '', '', '', '',
+ 'classname', 'varchar', '', $char_d, '', '',
+ ],
+ 'primary_key' => 'classnum',
+ 'unique' => [ ],
+ 'index' => [ ],
+ },
+
+ 'hardware_type' => {
+ 'columns' => [
+ 'typenum', 'serial', '', '', '', '',
+ 'classnum', 'int', '', '', '', '',
+ 'model', 'varchar', '', $char_d, '', '',
+ ],
+ 'primary_key' => 'typenum',
+ 'unique' => [ ],
+ 'index' => [ ],
+ },
+
+ 'hardware_status' => {
+ 'columns' => [
+ 'statusnum', 'serial', '', '', '', '',
+ 'label' ,'varchar', '', $char_d, '', '',
+ ],
+ 'primary_key' => 'statusnum',
+ 'unique' => [ ],
+ 'index' => [ ],
+ },
+
'domain_record' => {
'columns' => [
'recnum', 'serial', '', '', '', '',
--- NEW FILE: svc_hardware.pm ---
package FS::svc_hardware;
use strict;
use base qw( FS::svc_Common );
use FS::Record qw( qsearch qsearchs );
use FS::hardware_type;
use FS::hardware_status;
=head1 NAME
FS::svc_hardware - Object methods for svc_hardware records
=head1 SYNOPSIS
use FS::svc_hardware;
$record = new FS::svc_hardware \%hash;
$record = new FS::svc_hardware { 'column' => 'value' };
$error = $record->insert;
$error = $new_record->replace($old_record);
$error = $record->delete;
$error = $record->check;
=head1 DESCRIPTION
An FS::svc_hardware object represents an equipment installation, such as
a wireless broadband receiver, satellite antenna, or DVR. FS::svc_hardware
inherits from FS::svc_Common.
The following fields are currently supported:
=over 4
=item svcnum - Primary key
=item typenum - Device type number (see L<FS::hardware_type>)
=item ip_addr - IP address
=item hw_addr - Hardware address
=item serial - Serial number
=item statusnum - Service status (see L<FS::hardware_status>)
=item note - Installation notes: location on property, physical access, etc.
=back
=head1 METHODS
=over 4
=item new HASHREF
Creates a new svc_hardware object.
=cut
sub table { 'svc_hardware'; }
sub table_info {
my %opts = ( 'type' => 'text', 'disable_select' => 1 );
{
'name' => 'Hardware', #?
'name_plural' => 'Hardware',
'display_weight' => 59,
'cancel_weight' => 86,
'fields' => {
'svcnum' => { label => 'Service' },
'typenum' => { label => 'Device type',
type => 'select-hardware',
disable_select => 1,
disable_fixed => 1,
disable_default => 1,
disable_inventory => 1,
},
'serial' => { label => 'Serial number', %opts },
'hw_addr' => { label => 'Hardware address', %opts },
'ip_addr' => { label => 'IP address', %opts },
'statusnum' => { label => 'Service status',
type => 'select',
select_table => 'hardware_status',
select_key => 'statusnum',
select_label => 'label',
disable_inventory => 1,
},
'note' => { label => 'Installation notes', %opts },
}
}
}
sub search_sql {
my ($class, $string) = @_;
my @where = ();
my $ip = NetAddr::IP->new($string);
if ( $ip ) {
push @where, $class->search_sql_field('ip_addr', $ip->addr);
}
if ( $string =~ /^(\w+)$/ ) {
push @where, 'LOWER(svc_hardware.serial) LIKE \'%'.lc($string).'%\'';
}
if ( $string =~ /^([0-9A-Fa-f]|\W)+$/ ) {
my $hex = uc($string);
$hex =~ s/\W//g;
push @where, 'svc_hardware.hw_addr LIKE \'%'.$hex.'%\'';
}
'(' . join(' OR ', @where) . ')';
}
sub label {
my $self = shift;
$self->serial || $self->hw_addr;
}
=item insert
Adds this record to the database. If there is an error, returns the error,
otherwise returns false.
=item delete
Delete this record from the database.
=item replace OLD_RECORD
Replaces the OLD_RECORD with this one in the database. If there is an error,
returns the error, otherwise returns false.
# the replace method can be inherited from FS::Record
=item check
Checks all fields to make sure this is a valid service. If there is
an error, returns the error, otherwise returns false. Called by the insert
and replace methods.
=cut
sub check {
my $self = shift;
my $x = $self->setfixed;
return $x unless ref $x;
my $hw_addr = $self->getfield('hw_addr');
$hw_addr = join('', split(/\W/, $hw_addr));
$self->setfield('hw_addr', $hw_addr);
my $error =
$self->ut_numbern('svcnum')
|| $self->ut_foreign_key('typenum', 'hardware_type', 'typenum')
|| $self->ut_ip46n('ip_addr')
|| $self->ut_hexn('hw_addr')
|| $self->ut_alphan('serial')
|| $self->ut_foreign_keyn('statusnum', 'hardware_status', 'statusnum')
|| $self->ut_textn('note')
;
return $error if $error;
if ( !length($self->getfield('hw_addr'))
and !length($self->getfield('serial')) ) {
return 'Serial number or hardware address required';
}
$self->SUPER::check;
}
=item hardware_type
Returns the L<FS::hardware_type> object associated with this installation.
=cut
sub hardware_type {
my $self = shift;
return qsearchs('hardware_type', { 'typenum' => $self->typenum });
}
=item status_label
Returns the 'label' field of the L<FS::hardware_status> object associated
with this installation.
=cut
sub status_label {
my $self = shift;
my $status = qsearchs('hardware_status', { 'statusnum' => $self->statusnum })
or return '';
$status->label;
}
=back
=head1 SEE ALSO
L<FS::Record>, L<FS::svc_Common>, schema.html from the base documentation.
=cut
1;
Index: Mason.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/Mason.pm,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -w -d -r1.68 -r1.69
--- Mason.pm 13 Mar 2011 20:19:12 -0000 1.68
+++ Mason.pm 1 Apr 2011 02:52:11 -0000 1.69
@@ -273,6 +273,11 @@
use FS::torrus_srvderive;
use FS::torrus_srvderive_component;
use FS::areacode;
+ use FS::svc_dish;
+ use FS::svc_hardware;
+ use FS::hardware_class;
+ use FS::hardware_type;
+ use FS::hardware_status;
# Sammath Naur
if ( $FS::Mason::addl_handler_use ) {
- Previous message: [freeside-commits] freeside/FS MANIFEST,1.183,1.184
- Next message: [freeside-commits] freeside/FS/t hardware_class.t, NONE, 1.1 hardware_status.t, NONE, 1.1 hardware_type.t, NONE, 1.1 svc_dish.t, NONE, 1.1 svc_hardware.t, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the freeside-commits
mailing list