X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/3c28eab67faddeb0500ab74f307bbbdf50f9d1d3..7bbdbf2bd966e6317cff568ac6f60936b51d8df7:/SL/DB/Part.pm diff --git a/SL/DB/Part.pm b/SL/DB/Part.pm index d19ec26e4..32571276b 100644 --- a/SL/DB/Part.pm +++ b/SL/DB/Part.pm @@ -16,6 +16,7 @@ use SL::DB::Helper::CustomVariables ( module => 'IC', cvars_alias => 1, ); +use List::Util qw(sum); __PACKAGE__->meta->add_relationships( assemblies => { @@ -45,6 +46,13 @@ __PACKAGE__->meta->add_relationships( class => 'SL::DB::AssortmentItem', column_map => { id => 'assortment_id' }, }, + history_entries => { + type => 'one to many', + class => 'SL::DB::History', + column_map => { id => 'trans_id' }, + query_args => [ what_done => 'part' ], + manager_args => { sort_by => 'itime' }, + }, ); __PACKAGE__->meta->initialize; @@ -217,7 +225,7 @@ sub get_chart { if (!exists $charts->{$taxzone}->{$type}) { require SL::DB::Buchungsgruppe; my $bugru = SL::DB::Buchungsgruppe->load_cached($self->buchungsgruppen_id); - my $chart_id = ($type eq 'inventory') ? ($self->inventory_accno_id ? $bugru->inventory_accno_id : undef) + my $chart_id = ($type eq 'inventory') ? ($self->is_part ? $bugru->inventory_accno_id : undef) : $bugru->call_sub("${type}_accno_id", $taxzone); if ($chart_id) { @@ -284,6 +292,34 @@ sub clone_and_reset_deep { return $clone; } +sub assembly_sellprice_sum { + my ($self) = @_; + + return unless $self->is_assembly; + sum map { $_->linetotal } @{$self->part->assemblies}; +}; + +sub assembly_lastcost_sum { + my ($self) = @_; + + return unless $self->is_assembly; + sum map { $_->linetotal } @{$self->part->assemblies}; +}; + +sub assortment_sellprice_sum { + my ($self) = @_; + + return unless $self->is_assortment; + sum map { $_->linetotal } @{$self->part->assortment_items}; +}; + +sub assortment_lastcost_sum { + my ($self) = @_; + + return unless $self->is_assortment; + sum map { $_->linetotal } @{$self->part->assortment_items}; +}; + 1; __END__ @@ -422,6 +458,22 @@ Used to set the accounting information from a L object. Please note, that this is a write only accessor, the original Buchungsgruppe can not be retrieved from an article once set. +=item C + +Non-recursive sellprice sum of all the assembly item sellprices. + +=item C + +Non-recursive sellprice sum of all the assortment item sellprices. + +=item C + +Non-recursive lastcost sum of all the assembly item lastcosts. + +=item C + +Non-recursive lastcost sum of all the assortment item lastcosts. + =back =head1 AUTHORS