svc_dish and svc_hardware fixes, #11454
[freeside.git] / FS / FS / svc_dish.pm
1 package FS::svc_dish;
2
3 use strict;
4 use base qw( FS::svc_Common );
5 use FS::Record qw( qsearch qsearchs );
6
7 =head1 NAME
8
9 FS::svc_dish - Object methods for svc_dish records
10
11 =head1 SYNOPSIS
12
13   use FS::svc_dish;
14
15   $record = new FS::svc_dish \%hash;
16   $record = new FS::svc_dish { 'column' => 'value' };
17
18   $error = $record->insert;
19
20   $error = $new_record->replace($old_record);
21
22   $error = $record->delete;
23
24   $error = $record->check;
25
26 =head1 DESCRIPTION
27
28 An FS::svc_dish object represents a Dish Network service.  FS::svc_dish 
29 inherits from FS::svc_Common.
30
31 The following fields are currently supported:
32
33 =over 4
34
35 =item svcnum - Primary key
36
37 =item acctnum - DISH account number
38
39 =item installdate - Installation date (as Unix timestamp)
40
41 =item note - Installation notes: location on property, physical access, etc.
42
43 =back
44
45 =head1 METHODS
46
47 =over 4
48
49 =item new HASHREF
50
51 Creates a new svc_dish object.
52
53 =cut
54
55 sub table { 'svc_dish'; }
56
57 sub table_info {
58   my %opts = ( 'type' => 'text', 
59                'disable_select' => 1,
60                'disable_inventory' => 1,
61              );
62   {
63     'name'           => 'Dish service',
64     'display_weight' => 58,
65     'cancel_weight'  => 85,
66     'fields' => {
67       'svcnum'    =>  { label => 'Service' },
68       'acctnum'   =>  { label => 'DISH account#', %opts },
69       'installdate' => { label => 'Install date', %opts },
70       'note'      => { label => 'Installation notes', %opts },
71     }
72   }
73 }
74
75 sub label {
76   my $self = shift;
77   $self->acctnum;
78 }
79
80 sub search_sql {
81   my($class, $string) = @_;
82   $class->search_sql_field('acctnum', $string);
83 }
84
85 =item insert
86
87 Adds this record to the database.  If there is an error, returns the error,
88 otherwise returns false.
89
90 =item delete
91
92 Delete this record from the database.
93
94 =item replace OLD_RECORD
95
96 Replaces the OLD_RECORD with this one in the database.  If there is an error,
97 returns the error, otherwise returns false.
98
99 # the replace method can be inherited from FS::Record
100
101 =item check
102
103 Checks all fields to make sure this is a valid service.  If there is
104 an error, returns the error, otherwise returns false.  Called by the insert
105 and replace methods.
106
107 =cut
108
109 sub check {
110   my $self = shift;
111
112   my $x = $self->setfixed;
113   return $x unless ref $x;
114
115   my $error = 
116     $self->ut_numbern('svcnum')
117     || $self->ut_text('acctnum')
118     || $self->ut_numbern('installdate')
119     || $self->ut_textn('note')
120   ;
121   return $error if $error;
122
123   $self->SUPER::check;
124 }
125
126 =back
127
128 =head1 SEE ALSO
129
130 L<FS::Record>, L<FS::svc_Common>, schema.html from the base documentation.
131
132 =cut
133
134 1;
135