X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FRP.pm;h=d536bf88a64bb2f81aa56d157c1a066f7b6e7e0e;hb=06af498f71c9424b2d373d12b4dd90cdac58e070;hp=4d2dd4eb2fd50e177eba519ca8658e9ed13b680a;hpb=e9459971fa18cf9985940b618b239043c770474a;p=kivitendo-erp.git diff --git a/SL/RP.pm b/SL/RP.pm index 4d2dd4eb2..d536bf88a 100644 --- a/SL/RP.pm +++ b/SL/RP.pm @@ -1303,6 +1303,9 @@ sub aging { $form->{todate} = $form->current_date($myconfig) unless ($form->{todate}); my $todate = conv_dateq($form->{todate}); + my $fromdate = conv_dateq($form->{fromdate}); + + my $fromwhere = ($form->{fromdate} ne "") ? " AND (transdate >= (date $fromdate)) " : ""; my $where = " 1 = 1 "; my ($name, $null); @@ -1338,7 +1341,7 @@ sub aging { AND (${arap}.storno IS FALSE) AND (${arap}.${ct}_id = ${ct}.id) AND (${ct}.id = ?) - AND (transdate <= (date $todate)) + AND (transdate <= (date $todate) $fromwhere ) ORDER BY ctid, transdate, invnumber |; @@ -1352,7 +1355,7 @@ sub aging { WHERE $where AND (a.${ct_id} = ct.id) AND ((a.paid != a.amount) OR ((a.datepaid > $todate) AND (datepaid is NOT NULL))) - AND (a.transdate <= $todate) + AND (a.transdate <= $todate $fromwhere) ORDER BY ct.name|; my $sth = prepare_execute_query($form, $dbh, $query); @@ -1629,8 +1632,32 @@ sub payments { $where .= " AND (ac.memo ILIKE " . $dbh->quote('%' . $form->{memo} . '%') . ") "; } - my $sortorder = join(', ', qw(name invnumber ordnumber transdate source)); - $sortorder = $form->{sort} if ($form->{sort} && grep({ $_ eq $form->{sort} } qw(transdate invnumber name source memo))); + my %sort_columns = ( + 'transdate' => [ qw(transdate lower_invnumber lower_name) ], + 'invnumber' => [ qw(lower_invnumber lower_name transdate) ], + 'name' => [ qw(lower_name transdate) ], + 'source' => [ qw(lower_source) ], + 'memo' => [ qw(lower_memo) ], + ); + my %lowered_columns = ( + 'invnumber' => { 'gl' => 'g.reference', 'arap' => 'a.invnumber', }, + 'memo' => { 'gl' => 'ac.memo', 'arap' => 'ac.memo', }, + 'source' => { 'gl' => 'ac.source', 'arap' => 'ac.source', }, + 'name' => { 'gl' => 'g.description', 'arap' => 'c.name', }, + ); + + my $sortdir = !defined $form->{sortdir} ? 'ASC' : $form->{sortdir} ? 'ASC' : 'DESC'; + my $sortkey = $sort_columns{$form->{sort}} ? $form->{sort} : 'transdate'; + my $sortorder = join ', ', map { "$_ $sortdir" } @{ $sort_columns{$sortkey} }; + + + my %columns_for_sorting = ( 'gl' => '', 'arap' => '', ); + foreach my $spec (@{ $sort_columns{$sortkey} }) { + next if ($spec !~ m/^lower_(.*)$/); + + my $column = $1; + map { $columns_for_sorting{$_} .= sprintf(', lower(%s) AS lower_%s', $lowered_columns{$column}->{$_}, $column) } qw(gl arap); + } $query = qq|SELECT id, accno, description FROM chart WHERE accno = ?|; my $sth = prepare_query($form, $dbh, $query); @@ -1639,6 +1666,7 @@ sub payments { qq|SELECT c.name, a.invnumber, a.ordnumber, ac.transdate, ac.amount * $ml AS paid, ac.source, a.invoice, a.id, ac.memo, '${arap}' AS module + $columns_for_sorting{arap} FROM acc_trans ac JOIN $arap a ON (ac.trans_id = a.id) JOIN $table c ON (c.id = a.${table}_id) @@ -1652,6 +1680,7 @@ sub payments { SELECT g.description, g.reference, NULL AS ordnumber, ac.transdate, ac.amount * $ml AS paid, ac.source, '0' as invoice, g.id, ac.memo, 'gl' AS module + $columns_for_sorting{gl} FROM acc_trans ac JOIN gl g ON (g.id = ac.trans_id) $dpt_join