use SL::DB::PurchaseInvoice;
use SL::DB::AccTransaction;
use SL::Locale::String qw(t8);
+use List::Util qw(sum);
__PACKAGE__->run_before('check_auth');
my $ars = SL::DB::Manager::Invoice->get_all( query => [ @arfilter ], limit => $limit, sort_by => 'transdate DESC', with_objects => [ 'customer' ]);
my $aps = SL::DB::Manager::PurchaseInvoice->get_all(query => [ @apfilter ], limit => $limit, sort_by => 'transdate DESC', with_objects => [ 'vendor' ]);
- # calculate an amount to be displayed for gl transaction
+ # use the sum of all credit amounts as the "amount" of the gl transaction
foreach my $gl ( @$gls ) {
- my $amount = 0;
- my $acc_trans_lines = SL::DB::Manager::AccTransaction->get_all(query => [ trans_id => $gl->id ]);
- foreach my $acc_trans_line ( @$acc_trans_lines ) {
- $amount += $acc_trans_line->amount if $acc_trans_line->amount > 0 ;
- };
- $gl->{'amount'} = $amount;
+ $gl->{'amount'} = sum map { $_->amount if $_->amount > 0 } @{$gl->transactions};
};
my $gldata = [
use SL::DB::MetaSetup::GLTransaction;
-__PACKAGE__->meta->initialize;
# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all.
__PACKAGE__->meta->make_manager_class;
+__PACKAGE__->meta->add_relationship(
+ transactions => {
+ type => 'one to many',
+ class => 'SL::DB::AccTransaction',
+ column_map => { id => 'trans_id' },
+ manager_args => {
+ with_objects => [ 'chart' ],
+ sort_by => 'acc_trans_id ASC',
+ },
+ },
+);
+
+__PACKAGE__->meta->initialize;
+
sub abbreviation {
my $self = shift;
column_map => { id => 'trans_id' },
query_args => [ module => 'AR' ],
},
+ transactions => {
+ type => 'one to many',
+ class => 'SL::DB::AccTransaction',
+ column_map => { id => 'trans_id' },
+ manager_args => {
+ with_objects => [ 'chart' ],
+ sort_by => 'acc_trans_id ASC',
+ },
+ },
);
__PACKAGE__->meta->initialize;
goto &customer;
}
-sub transactions {
- my ($self) = @_;
-
- return unless $self->id;
-
- require SL::DB::AccTransaction;
- SL::DB::Manager::AccTransaction->get_all(query => [ trans_id => $self->id ]);
-}
-
1;
__END__
column_map => { id => 'trans_id' },
query_args => [ module => 'AP' ],
},
+ transactions => {
+ type => 'one to many',
+ class => 'SL::DB::AccTransaction',
+ column_map => { id => 'trans_id' },
+ manager_args => { with_objects => [ 'chart' ],
+ sort_by => 'acc_trans_id ASC' }
+ },
);
__PACKAGE__->meta->initialize;