From b3b808566b0ba2ca1dfc93379b39b8f7d73a5365 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Thu, 5 Feb 2015 13:44:16 +0100 Subject: [PATCH] =?utf8?q?Liquidit=C3=A4ts=C3=BCbersicht:=20Auftragswertpe?= =?utf8?q?riodizit=C3=A4t=20von=20wied.=20Rechnungen=20ber=C3=BCcksichtige?= =?utf8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- SL/LiquidityProjection.pm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/SL/LiquidityProjection.pm b/SL/LiquidityProjection.pm index 03a1894c2..710c099d9 100644 --- a/SL/LiquidityProjection.pm +++ b/SL/LiquidityProjection.pm @@ -5,6 +5,7 @@ use strict; use List::MoreUtils qw(uniq); use SL::DBUtils; +use SL::DB::PeriodicInvoicesConfig; sub new { my $package = shift; @@ -128,7 +129,7 @@ SQL SELECT (oi.qty * (1 - oi.discount) * oi.sellprice) AS linetotal, bg.description AS buchungsgruppe, CASE WHEN COALESCE(e.name, '') = '' THEN e.login ELSE e.name END AS salesman, - pcfg.periodicity, pcfg.id AS config_id, + pcfg.periodicity, pcfg.order_value_periodicity, pcfg.id AS config_id, EXTRACT(year FROM pcfg.start_date) AS start_year, EXTRACT(month FROM pcfg.start_date) AS start_month FROM orderitems oi LEFT JOIN oe ON (oi.trans_id = oe.id) @@ -140,7 +141,6 @@ SQL SQL # 3. Iterieren über Saldierungsintervalle, vormerken - my %periodicities = ( 'm' => 1, 'q' => 3, 'y' => 12 ); my @scentries; $sth = prepare_execute_query($::form, $dbh, $query); while ($ref = $sth->fetchrow_hashref) { @@ -148,15 +148,20 @@ SQL my $date; while (($date = _the_date($year, $month)) le $self->{max_date}) { + my $billing_len = $SL::DB::PeriodicInvoicesConfig::PERIOD_LENGTHS{ $ref->{periodicity} } || 1; + if (($date ge $self->{min_date}) && (!$periodic_invoices{ $ref->{config_id} } || !$periodic_invoices{ $ref->{config_id} }->{$date})) { + my $order_value_periodicity = $ref->{order_value_periodicity} eq 'p' ? $ref->{periodicity} : $ref->{order_value_periodicity}; + my $order_value_len = $SL::DB::PeriodicInvoicesConfig::ORDER_VALUE_PERIOD_LENGTHS{$order_value_periodicity} || 1; + push @scentries, { buchungsgruppe => $ref->{buchungsgruppe}, salesman => $ref->{salesman}, - linetotal => $ref->{linetotal}, + linetotal => $ref->{linetotal} * $billing_len / $order_value_len, date => $date, }; } - ($year, $month) = _fix_date($year, $month + ($periodicities{ $ref->{periodicity} } || 1)); + ($year, $month) = _fix_date($year, $month + $billing_len); } } $sth->finish; -- 2.20.1