kivitendo/SL/DB/Note.pm @ 7b1da9c3
4fd22b56 | Sven Schöling | package SL::DB::Note;
|
||
use strict;
|
||||
34fac169 | Moritz Bunkus | use Carp;
|
||
4fd22b56 | Sven Schöling | use SL::DB::MetaSetup::Note;
|
||
ee8f7556 | Thomas Heck | __PACKAGE__->meta->add_relationships(
|
||
84530888 | Thomas Heck | follow_up => {
|
||
ee8f7556 | Thomas Heck | type => 'one to one',
|
||
class => 'SL::DB::FollowUp',
|
||||
84530888 | Thomas Heck | column_map => { id => 'note_id' },
|
||
ee8f7556 | Thomas Heck | },
|
||
);
|
||||
84530888 | Thomas Heck | __PACKAGE__->meta->initialize;
|
||
# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all.
|
||||
__PACKAGE__->meta->make_manager_class;
|
||||
34fac169 | Moritz Bunkus | sub trans_object {
|
||
my $self = shift;
|
||||
croak "Method is not a setter" if @_;
|
||||
return undef if !$self->trans_id || !$self->trans_module;
|
||||
if ($self->trans_module eq 'fu') {
|
||||
require SL::DB::FollowUp;
|
||||
return SL::DB::Manager::FollowUp->find_by(id => $self->trans_id);
|
||||
}
|
||||
if ($self->trans_module eq 'ct') {
|
||||
require SL::DB::Customer;
|
||||
require SL::DB::Vendor;
|
||||
return SL::DB::Manager::Customer->find_by(id => $self->trans_id)
|
||||
|| SL::DB::Manager::Vendor ->find_by(id => $self->trans_id);
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
84530888 | Thomas Heck | |||
4fd22b56 | Sven Schöling | 1;
|
||
34fac169 | Moritz Bunkus | __END__
|
||
=pod
|
||||
=encoding utf8
|
||||
=head1 NAME
|
||||
SL::DB::Note - Notes
|
||||
=head1 FUNCTIONS
|
||||
=over 4
|
||||
=item C<trans_object>
|
||||
A note object is always attached to another database entity. Which one
|
||||
is determined by the columns C<trans_module> and C<trans_id>. This
|
||||
function looks at both, retrieves the corresponding object from the
|
||||
database and returns it.
|
||||
Currently the following three types are supported:
|
||||
=over 2
|
||||
=item * C<SL::DB::FollowUp> for C<trans_module == 'fu'>
|
||||
=item * C<SL::DB::Customer> or C<SL::DB::Vendor> for C<trans_module ==
|
||||
'ct'> (which class is used depends on the value of C<trans_id>;
|
||||
customers are looked up first)
|
||||
=back
|
||||
The method returns C<undef> in three cases: if no C<trans_id> or no
|
||||
C<trans_module> has been assigned yet; if C<trans_module> is unknown;
|
||||
if the referenced object doesn't exist.
|
||||
This method is a getter only, not a setter.
|
||||
=back
|
||||
=head1 BUGS
|
||||
Nothing here yet.
|
||||
=head1 AUTHOR
|
||||
Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>
|
||||
=cut
|