X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/9608424bd4be487779e29d2a0c9710d2d951fb88..209100ca065acebaff1294b0c1d2853529773413:/SL/DB/Helper/PriceTaxCalculator.pm diff --git a/SL/DB/Helper/PriceTaxCalculator.pm b/SL/DB/Helper/PriceTaxCalculator.pm index 4cf79e4a2..df6113663 100644 --- a/SL/DB/Helper/PriceTaxCalculator.pm +++ b/SL/DB/Helper/PriceTaxCalculator.pm @@ -37,7 +37,7 @@ sub calculate_prices_and_taxes { exchangerate => undef, is_sales => $self->can('customer') && $self->customer, is_invoice => (ref($self) =~ /Invoice/) || $params{invoice}, - items => { }, + items => [ ], ); _get_exchangerate($self, \%data, %params); @@ -149,12 +149,12 @@ sub _calculate_item { $data->{last_incex_chart_id} = $chart->id if $data->{is_sales}; - $data->{items}->{ $item->id } = { + push @{ $data->{items} }, { linetotal => $linetotal, linetotal_cost => $linetotal_cost, sellprice => $sellprice, tax_amount => $tax_amount, - taxkey => $taxkey, + taxkey_id => $taxkey->id, }; _dbg("CALCULATE! ${idx} i.qty " . $item->qty . " i.sellprice " . $item->sellprice . " sellprice $sellprice num_dec $num_dec taxamount $tax_amount " . @@ -351,12 +351,22 @@ The exchangerate used for the calculation. =item C -A hashref. For each line item this hashref contains an entry with -additional values that have been calculated for that item but that -aren't stored in the item object itself. These include C, -C, C, C and C. +An array reference. For each line item this array contains a hash ref +entry with additional values that have been calculated for that item +but that aren't stored in the item object itself. These include +C, C, C, C and +C. -The items are hashed by their IDs. +The items are stored in the same order the items are stored in the +object that L has been called on. + +For example: + + my $invoice = SL::DB::Invoice->new(id => 12345)->load; + my %data = $invoice->calculate_prices_and_taxes; + my $second_item = $invoice->items->[1]; + + print "line total of second item: " . $data{items}->[ $second_item->id ]->{linetotal}; =back