2 use base qw( FS::Record );
8 FS::vend_main - Object methods for vend_main records
14 $record = new FS::vend_main \%hash;
15 $record = new FS::vend_main { 'column' => 'value' };
17 $error = $record->insert;
19 $error = $new_record->replace($old_record);
21 $error = $record->delete;
23 $error = $record->check;
27 An FS::vend_main object represents a vendor. FS::vend_main inherits from
28 FS::Record. The following fields are currently supported:
57 Creates a new vendor. To add the vendor to the database, see L<"insert">.
59 Note that this stores the hash reference, not a distinct copy of the hash it
60 points to. You can ask the object for a copy with the I<hash> method.
64 sub table { 'vend_main'; }
68 Adds this record to the database. If there is an error, returns the error,
69 otherwise returns false.
73 Delete this record from the database.
75 =item replace OLD_RECORD
77 Replaces the OLD_RECORD with this one in the database. If there is an error,
78 returns the error, otherwise returns false.
82 Checks all fields to make sure this is a valid vendor. If there is
83 an error, returns the error, otherwise returns false. Called by the insert
92 $self->ut_numbern('vendnum')
93 || $self->ut_text('vendname')
94 || $self->ut_foreign_key('classnum', 'vend_class', 'classnum')
95 || $self->ut_enum('disabled', [ '', 'Y' ] )
97 return $error if $error;
109 my ($class, $param) = @_;
115 if ( $param->{_date} ) {
116 my($beginning, $ending) = @{$param->{_date}};
118 push @where, "vend_bill._date >= $beginning",
119 "vend_bill._date < $ending";
123 if ( $param->{payment_date} ) {
124 my($beginning, $ending) = @{$param->{payment_date}};
126 push @where, "vend_pay._date >= $beginning",
127 "vend_pay._date < $ending";
130 if ( $param->{'classnum'} =~ /^(\d+)$/ ) {
131 push @where, "vend_main.classnum = $1";
134 my $extra_sql = scalar(@where) ? ' WHERE '. join(' AND ', @where) : '';
136 my $group_by = ' GROUP BY vend_main.vendnum ';
138 my $addl_from_vend_bill = ' LEFT JOIN vend_bill_pay USING (vendbillnum) '.
139 ' LEFT JOIN vend_pay USING (vendpaynum) ';
141 $addl_from .= " LEFT JOIN vend_bill USING ( vendnum ) $addl_from_vend_bill";
143 #simplistic, but how we are for now
147 ( SELECT SUM(charged) from vend_bill $addl_from_vend_bill $extra_sql
149 FROM vend_main "; #XXX classnum, sum_charged > 0
152 'table' => 'vend_main',
153 'select' => 'vend_main.*, sum(vend_bill.charged) as sum_charged',
154 'addl_from' => $addl_from,
156 'extra_sql' => "$extra_sql $group_by",
157 'order_by' => 'ORDER BY sum_charged desc',
158 'count_query' => $count_query,
159 #'extra_headers' => \@extra_headers,
160 #'extra_fields' => \@extra_fields,
170 L<FS::Record>, schema.html from the base documentation.