From: G. Richardson Date: Sat, 24 Jan 2015 14:38:59 +0000 (+0100) Subject: ar, ap oder gl Objekt eines acc_trans Objects holen X-Git-Tag: release-3.2.0beta~28 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=d1c607417e61a546f042ee80513741122faaca9b;p=kivitendo-erp.git ar, ap oder gl Objekt eines acc_trans Objects holen neue Methode record in SL::DB::AccTransaction --- diff --git a/SL/DB/AccTransaction.pm b/SL/DB/AccTransaction.pm index 290732058..053a30adc 100644 --- a/SL/DB/AccTransaction.pm +++ b/SL/DB/AccTransaction.pm @@ -12,4 +12,59 @@ __PACKAGE__->meta->initialize; # Creates get_all, get_all_count, get_all_iterator, delete_all and update_all. __PACKAGE__->meta->make_manager_class; +sub record { + my ($self) = @_; + + my @classes = qw(Invoice PurchaseInvoice GLTransaction); + + foreach my $class ( @classes ) { + $class = 'SL::DB::' . $class; + my $record = $class->new(id => $self->trans_id); + return $record if $record->load(speculative => 1); + }; + +}; 1; +__END__ + +=pod + +=encoding utf8 + +=head1 NAME + +SL::DB::AccTransaction: Rose model for transactions (table "acc_trans") + +=head1 FUNCTIONS + +=over 4 + +=item C + +Returns the ar, ap or gl object of the current acc_trans object. + +Example: + my $acc_trans = SL::DB::Manager::AccTransaction->find_by( trans_id => '427' ); + my $record = $acc_trans->record; + +Each acc_trans entry is associated with an ar, ap or gl record. If we only have +an acc_trans object, and we want to find out which kind of record it belongs +to, we have to look for its trans_id in the tables ar, ap and gl. C +does this for you and returns an Invoice, PurchaseInvoice or GLTransaction +object. + +We use the Rose::DB::Object load function with the C parameter for +each record type, which returns true if the load was successful, so we don't +bother to check the ref of the object. + +=back + +=head1 BUGS + +Nothing here yet. + +=head1 AUTHOR + +G. Richardson Einformation@kivitendo-premium.deE + +=cut