Lines 47-56
my $fullreportname = "reports/acquisitions_stats.tmpl";
Link Here
|
47 |
my $line = $input->param("Line"); |
47 |
my $line = $input->param("Line"); |
48 |
my $column = $input->param("Column"); |
48 |
my $column = $input->param("Column"); |
49 |
my @filters = $input->param("Filter"); |
49 |
my @filters = $input->param("Filter"); |
50 |
$filters[0]= format_date_in_iso($filters[0]); |
50 |
$filters[0] = format_date_in_iso( $filters[0] ); |
51 |
$filters[1]= format_date_in_iso($filters[1]); |
51 |
$filters[1] = format_date_in_iso( $filters[1] ); |
52 |
$filters[2]= format_date_in_iso($filters[2]); |
52 |
$filters[2] = format_date_in_iso( $filters[2] ); |
53 |
$filters[3]= format_date_in_iso($filters[3]); |
53 |
$filters[3] = format_date_in_iso( $filters[3] ); |
54 |
my $podsp = $input->param("PlacedOnDisplay"); |
54 |
my $podsp = $input->param("PlacedOnDisplay"); |
55 |
my $rodsp = $input->param("ReceivedOnDisplay"); |
55 |
my $rodsp = $input->param("ReceivedOnDisplay"); |
56 |
my $aodsp = $input->param("AcquiredOnDisplay"); ##added by mason. |
56 |
my $aodsp = $input->param("AcquiredOnDisplay"); ##added by mason. |
Lines 58-64
my $calc = $input->param("Cellvalue");
Link Here
|
58 |
my $output = $input->param("output"); |
58 |
my $output = $input->param("output"); |
59 |
my $basename = $input->param("basename"); |
59 |
my $basename = $input->param("basename"); |
60 |
|
60 |
|
61 |
#warn "calcul : ".$calc; |
|
|
62 |
my ($template, $borrowernumber, $cookie) |
61 |
my ($template, $borrowernumber, $cookie) |
63 |
= get_template_and_user({template_name => $fullreportname, |
62 |
= get_template_and_user({template_name => $fullreportname, |
64 |
query => $input, |
63 |
query => $input, |
Lines 303-358
sub calculate {
Link Here
|
303 |
|
302 |
|
304 |
my @linefilter; |
303 |
my @linefilter; |
305 |
|
304 |
|
306 |
# warn "filtres ".@filters[0]; |
|
|
307 |
# warn "filtres ".@filters[1]; |
308 |
# warn "filtres ".@filters[2]; |
309 |
# warn "filtres ".@filters[3]; |
310 |
|
311 |
$linefilter[0] = @$filters[0] if ( $line =~ /closedate/ ); |
305 |
$linefilter[0] = @$filters[0] if ( $line =~ /closedate/ ); |
312 |
$linefilter[1] = @$filters[1] if ( $line =~ /closedate/ ); |
306 |
$linefilter[1] = @$filters[1] if ( $line =~ /closedate/ ); |
313 |
$linefilter[0] = @$filters[2] if ( $line =~ /received/ ); |
307 |
$linefilter[0] = @$filters[2] if ( $line =~ /received/ ); |
314 |
$linefilter[1] = @$filters[3] if ( $line =~ /received/ ); |
308 |
$linefilter[1] = @$filters[3] if ( $line =~ /received/ ); |
315 |
|
309 |
|
316 |
# $linefilter[0] = @$filters[4] if ( $line =~ /acquired/ ); |
|
|
317 |
# $linefilter[1] = @$filters[5] if ( $line =~ /acquired/ ); |
318 |
|
319 |
$linefilter[0] = @$filters[4] if ( $line =~ /bookseller/ ); |
310 |
$linefilter[0] = @$filters[4] if ( $line =~ /bookseller/ ); |
320 |
$linefilter[0] = @$filters[5] if ( $line =~ /itemtype/ ); |
311 |
$linefilter[0] = @$filters[5] if ( $line =~ /itemtype/ ); |
321 |
$linefilter[0] = @$filters[6] if ( $line =~ /budget/ ); |
312 |
$linefilter[0] = @$filters[6] if ( $line =~ /budget/ ); |
322 |
$linefilter[0] = @$filters[7] if ( $line =~ /sort1/ ); |
313 |
$linefilter[0] = @$filters[7] if ( $line =~ /sort1/ ); |
323 |
$linefilter[0] = @$filters[8] if ( $line =~ /sort2/ ); |
314 |
$linefilter[0] = @$filters[8] if ( $line =~ /sort2/ ); |
324 |
|
315 |
|
325 |
#warn "filtre lignes".$linefilter[0]." ".$linefilter[1]; |
|
|
326 |
# |
327 |
my @colfilter; |
316 |
my @colfilter; |
328 |
$colfilter[0] = @$filters[0] if ( $column =~ /closedate/ ); |
317 |
$colfilter[0] = @$filters[0] if ( $column =~ /closedate/ ); |
329 |
$colfilter[1] = @$filters[1] if ( $column =~ /closedate/ ); |
318 |
$colfilter[1] = @$filters[1] if ( $column =~ /closedate/ ); |
330 |
$colfilter[0] = @$filters[2] if ( $column =~ /received/ ); |
319 |
$colfilter[0] = @$filters[2] if ( $column =~ /received/ ); |
331 |
$colfilter[1] = @$filters[3] if ( $column =~ /received/ ); |
320 |
$colfilter[1] = @$filters[3] if ( $column =~ /received/ ); |
332 |
|
321 |
|
333 |
# $colfilter[0] = @$filters[4] if ( $column =~ /acquired/ ); |
|
|
334 |
# $colfilter[1] = @$filters[5] if ( $column =~ /acquired/ ); |
335 |
$colfilter[0] = @$filters[4] if ( $column =~ /bookseller/ ); |
322 |
$colfilter[0] = @$filters[4] if ( $column =~ /bookseller/ ); |
336 |
$colfilter[0] = @$filters[5] if ( $column =~ /itemtype/ ); |
323 |
$colfilter[0] = @$filters[5] if ( $column =~ /itemtype/ ); |
337 |
$colfilter[0] = @$filters[6] if ( $column =~ /budget/ ); |
324 |
$colfilter[0] = @$filters[6] if ( $column =~ /budget/ ); |
338 |
$colfilter[0] = @$filters[7] if ( $column =~ /sort1/ ); |
325 |
$colfilter[0] = @$filters[7] if ( $column =~ /sort1/ ); |
339 |
$colfilter[0] = @$filters[8] if ( $column =~ /sort2/ ); |
326 |
$colfilter[0] = @$filters[8] if ( $column =~ /sort2/ ); |
340 |
|
327 |
|
341 |
#warn "filtre col ".$colfilter[0]." ".$colfilter[1]; |
|
|
342 |
|
343 |
# warn "line=$line, podsp=$podsp, rodsp=$rodsp, aodsp=$aodsp\n"; |
344 |
|
345 |
# 1st, loop rows. |
328 |
# 1st, loop rows. |
346 |
my $linefield; |
329 |
my $linefield; |
347 |
if ( ( $line =~ /closedate/ ) and ( $podsp == 1 ) ) { |
330 |
if ( ( $line =~ /closedate/ ) and ( $podsp == 1 ) ) { |
348 |
|
331 |
|
349 |
#Display by day |
332 |
#Display by day |
350 |
$linefield .= "dayname($line)"; |
333 |
$linefield .= "concat(hex(weekday($line)+1),'-',dayname($line))"; |
351 |
} |
334 |
} |
352 |
elsif ( ( $line =~ /closedate/ ) and ( $podsp == 2 ) ) { |
335 |
elsif ( ( $line =~ /closedate/ ) and ( $podsp == 2 ) ) { |
353 |
|
336 |
|
354 |
#Display by Month |
337 |
#Display by Month |
355 |
$linefield .= "monthname($line)"; |
338 |
$linefield .= "concat(hex(month($line)),'-',monthname($line))"; |
356 |
} |
339 |
} |
357 |
elsif ( ( $line =~ /closedate/ ) and ( $podsp == 3 ) ) { |
340 |
elsif ( ( $line =~ /closedate/ ) and ( $podsp == 3 ) ) { |
358 |
|
341 |
|
Lines 363-374
sub calculate {
Link Here
|
363 |
elsif ( ( $line =~ /received/ ) and ( $rodsp == 1 ) ) { |
346 |
elsif ( ( $line =~ /received/ ) and ( $rodsp == 1 ) ) { |
364 |
|
347 |
|
365 |
#Display by day |
348 |
#Display by day |
366 |
$linefield .= "dayname($line)"; |
349 |
$linefield .= "concat(hex(weekday($line)+1),'-',dayname($line))"; |
367 |
} |
350 |
} |
368 |
elsif ( ( $line =~ /received/ ) and ( $rodsp == 2 ) ) { |
351 |
elsif ( ( $line =~ /received/ ) and ( $rodsp == 2 ) ) { |
369 |
|
352 |
|
370 |
#Display by Month |
353 |
#Display by Month |
371 |
$linefield .= "monthname($line)"; |
354 |
$linefield .= "concat(hex(month($line)),'-',monthname($line))"; |
372 |
} |
355 |
} |
373 |
elsif ( ( $line =~ /received/ ) and ( $rodsp == 3 ) ) { |
356 |
elsif ( ( $line =~ /received/ ) and ( $rodsp == 3 ) ) { |
374 |
|
357 |
|
Lines 376-397
sub calculate {
Link Here
|
376 |
$linefield .= "Year($line)"; |
359 |
$linefield .= "Year($line)"; |
377 |
|
360 |
|
378 |
} |
361 |
} |
379 |
# elsif ( ( $line =~ /acquired/ ) and ( $aodsp == 1 ) ) { |
|
|
380 |
# |
381 |
# #Display by day |
382 |
# $linefield .= "dayname($line)"; |
383 |
# } |
384 |
# elsif ( ( $line =~ /acquired/ ) and ( $aodsp == 2 ) ) { |
385 |
# |
386 |
# #Display by Month |
387 |
# $linefield .= "monthname($line)"; |
388 |
# } |
389 |
# elsif ( ( $line =~ /acquired/ ) and ( $aodsp == 3 ) ) { |
390 |
# |
391 |
# #Display by Year |
392 |
# $linefield .= "Year($line)"; |
393 |
# |
394 |
# } |
395 |
else { |
362 |
else { |
396 |
$linefield .= $line; |
363 |
$linefield .= $line; |
397 |
} |
364 |
} |
Lines 405-412
sub calculate {
Link Here
|
405 |
|
372 |
|
406 |
LEFT JOIN aqbooksellers ON (aqbasket.booksellerid=aqbooksellers.id) WHERE (aqorders.basketno=aqbasket.basketno) |
373 |
LEFT JOIN aqbooksellers ON (aqbasket.booksellerid=aqbooksellers.id) WHERE (aqorders.basketno=aqbasket.basketno) |
407 |
AND $line IS NOT NULL AND $line <> '' "; |
374 |
AND $line IS NOT NULL AND $line <> '' "; |
408 |
|
|
|
409 |
# LEFT JOIN aqorderdelivery ON (aqorders.ordernumber =aqorderdelivery.ordernumber ) |
410 |
|
375 |
|
411 |
if (@linefilter) { |
376 |
if (@linefilter) { |
412 |
if ( $linefilter[1] ) { |
377 |
if ( $linefilter[1] ) { |
Lines 421-427
sub calculate {
Link Here
|
421 |
( $linefilter[0] ) |
386 |
( $linefilter[0] ) |
422 |
and ( ( $line =~ /closedate/ ) |
387 |
and ( ( $line =~ /closedate/ ) |
423 |
or ( $line =~ /received/ )) |
388 |
or ( $line =~ /received/ )) |
424 |
# or ( $line =~ /acquired/ ) ) |
|
|
425 |
) |
389 |
) |
426 |
{ |
390 |
{ |
427 |
$strsth .= " AND $line >= ? "; |
391 |
$strsth .= " AND $line >= ? "; |
Lines 434-441
sub calculate {
Link Here
|
434 |
$strsth .= " GROUP BY $linefield"; |
398 |
$strsth .= " GROUP BY $linefield"; |
435 |
$strsth .= " ORDER BY $line"; |
399 |
$strsth .= " ORDER BY $line"; |
436 |
|
400 |
|
437 |
#warn "377:strsth= $strsth"; |
|
|
438 |
|
439 |
my $sth = $dbh->prepare($strsth); |
401 |
my $sth = $dbh->prepare($strsth); |
440 |
if ( (@linefilter) and ( $linefilter[1] ) ) { |
402 |
if ( (@linefilter) and ( $linefilter[1] ) ) { |
441 |
$sth->execute( $linefilter[0], $linefilter[1] ); |
403 |
$sth->execute( $linefilter[0], $linefilter[1] ); |
Lines 454-472
sub calculate {
Link Here
|
454 |
} |
416 |
} |
455 |
$cell{totalrow} = 0; |
417 |
$cell{totalrow} = 0; |
456 |
} |
418 |
} |
457 |
# warn "column=$column, podsp=$podsp, rodsp=$rodsp, aodsp=$aodsp\n"; |
|
|
458 |
|
459 |
# 2nd, loop cols. |
419 |
# 2nd, loop cols. |
460 |
my $colfield; |
420 |
my $colfield; |
461 |
if ( ( $column =~ /closedate/ ) and ( $podsp == 1 ) ) { |
421 |
if ( ( $column =~ /closedate/ ) and ( $podsp == 1 ) ) { |
462 |
|
422 |
|
463 |
#Display by day |
423 |
#Display by day |
464 |
$colfield .= "dayname($column)"; |
424 |
$colfield .= "concat(hex(weekday($column)+1),'-',dayname($column))"; |
465 |
} |
425 |
} |
466 |
elsif ( ( $column =~ /closedate/ ) and ( $podsp == 2 ) ) { |
426 |
elsif ( ( $column =~ /closedate/ ) and ( $podsp == 2 ) ) { |
467 |
|
427 |
|
468 |
#Display by Month |
428 |
#Display by Month |
469 |
$colfield .= "monthname($column)"; |
429 |
$colfield .= "concat(hex(month($column)),'-',monthname($column))"; |
470 |
} |
430 |
} |
471 |
elsif ( ( $column =~ /closedate/ ) and ( $podsp == 3 ) ) { |
431 |
elsif ( ( $column =~ /closedate/ ) and ( $podsp == 3 ) ) { |
472 |
|
432 |
|
Lines 477-488
sub calculate {
Link Here
|
477 |
elsif ( ( $column =~ /received/ ) and ( $rodsp == 1 ) ) { |
437 |
elsif ( ( $column =~ /received/ ) and ( $rodsp == 1 ) ) { |
478 |
|
438 |
|
479 |
#Display by day |
439 |
#Display by day |
480 |
$colfield .= "dayname($column)"; |
440 |
$colfield .= "concat(hex(weekday($column)+1),'-',dayname($column))"; |
481 |
} |
441 |
} |
482 |
elsif ( ( $column =~ /received/ ) and ( $rodsp == 2 ) ) { |
442 |
elsif ( ( $column =~ /received/ ) and ( $rodsp == 2 ) ) { |
483 |
|
443 |
|
484 |
#Display by Month |
444 |
#Display by Month |
485 |
$colfield .= "monthname($column)"; |
445 |
$colfield .= "concat(hex(month($column)),'-',monthname($column))"; |
486 |
} |
446 |
} |
487 |
elsif ( ( $column =~ /received/ ) and ( $rodsp == 3 ) ) { |
447 |
elsif ( ( $column =~ /received/ ) and ( $rodsp == 3 ) ) { |
488 |
|
448 |
|
Lines 490-511
sub calculate {
Link Here
|
490 |
$colfield .= "Year($column)"; |
450 |
$colfield .= "Year($column)"; |
491 |
|
451 |
|
492 |
} |
452 |
} |
493 |
# elsif ( ( $column =~ /dateaccessioned/ ) and ( $aodsp == 1 ) ) { |
|
|
494 |
# |
495 |
# #Display by day |
496 |
# $colfield .= "dayname($column)"; |
497 |
# } |
498 |
# elsif ( ( $column =~ /dateaccessioned/ ) and ( $aodsp == 2 ) ) { |
499 |
# |
500 |
# #Display by Month |
501 |
# $colfield .= "monthname($column)"; |
502 |
# } |
503 |
# elsif ( ( $column =~ /dateaccessioned/ ) and ( $aodsp == 3 ) ) { |
504 |
# |
505 |
# #Display by Year |
506 |
# $colfield .= "Year($column)"; |
507 |
# |
508 |
# } |
509 |
else { |
453 |
else { |
510 |
$colfield .= $column; |
454 |
$colfield .= $column; |
511 |
} |
455 |
} |
Lines 521-528
sub calculate {
Link Here
|
521 |
WHERE (aqorders.basketno=aqbasket.basketno) AND |
465 |
WHERE (aqorders.basketno=aqbasket.basketno) AND |
522 |
$column IS NOT NULL AND $column <> '' "; |
466 |
$column IS NOT NULL AND $column <> '' "; |
523 |
|
467 |
|
524 |
# LEFT JOIN aqorderdelivery ON (aqorders.ordernumber =aqorderdelivery.ordernumber ) |
|
|
525 |
|
526 |
if (@colfilter) { |
468 |
if (@colfilter) { |
527 |
if ( $colfilter[1] ) { |
469 |
if ( $colfilter[1] ) { |
528 |
if ( $colfilter[0] ) { |
470 |
if ( $colfilter[0] ) { |
Lines 536-542
sub calculate {
Link Here
|
536 |
( $colfilter[0] ) |
478 |
( $colfilter[0] ) |
537 |
and ( ( $column =~ /closedate/ ) |
479 |
and ( ( $column =~ /closedate/ ) |
538 |
or ( $line =~ /received/ )) |
480 |
or ( $line =~ /received/ )) |
539 |
# or ( $line =~ /acquired/ ) ) |
|
|
540 |
) |
481 |
) |
541 |
{ |
482 |
{ |
542 |
$strsth2 .= " AND $column >= ? "; |
483 |
$strsth2 .= " AND $column >= ? "; |
Lines 549-555
sub calculate {
Link Here
|
549 |
|
490 |
|
550 |
|
491 |
|
551 |
$strsth2 .= " GROUP BY $colfield"; |
492 |
$strsth2 .= " GROUP BY $colfield"; |
552 |
$strsth2 .= " ORDER BY $column"; |
493 |
$strsth2 .= " ORDER BY $colfield"; |
553 |
|
494 |
|
554 |
my $sth2 = $dbh->prepare($strsth2); |
495 |
my $sth2 = $dbh->prepare($strsth2); |
555 |
|
496 |
|
Lines 570-577
sub calculate {
Link Here
|
570 |
} |
511 |
} |
571 |
} |
512 |
} |
572 |
|
513 |
|
573 |
# warn "fin des titres colonnes"; |
|
|
574 |
|
575 |
my $i = 0; |
514 |
my $i = 0; |
576 |
my @totalcol; |
515 |
my @totalcol; |
577 |
my $hilighted = -1; |
516 |
my $hilighted = -1; |
Lines 579-585
sub calculate {
Link Here
|
579 |
#Initialization of cell values..... |
518 |
#Initialization of cell values..... |
580 |
my %table; |
519 |
my %table; |
581 |
|
520 |
|
582 |
# warn "init table...\n"; |
|
|
583 |
foreach my $row (@loopline) { |
521 |
foreach my $row (@loopline) { |
584 |
foreach my $col (@loopcol) { |
522 |
foreach my $col (@loopcol) { |
585 |
$table{ $row->{rowtitle} }->{ $col->{coltitle} } = 0; |
523 |
$table{ $row->{rowtitle} }->{ $col->{coltitle} } = 0; |
Lines 600-607
sub calculate {
Link Here
|
600 |
|
538 |
|
601 |
LEFT JOIN aqbooksellers ON (aqbasket.booksellerid=aqbooksellers.id) |
539 |
LEFT JOIN aqbooksellers ON (aqbasket.booksellerid=aqbooksellers.id) |
602 |
WHERE (aqorders.basketno=aqbasket.basketno) "; |
540 |
WHERE (aqorders.basketno=aqbasket.basketno) "; |
603 |
|
|
|
604 |
# LEFT JOIN aqorderdelivery ON (aqorders.ordernumber =aqorderdelivery.ordernumber ) |
605 |
|
541 |
|
606 |
@$filters[0] =~ s/\*/%/g if ( @$filters[0] ); |
542 |
@$filters[0] =~ s/\*/%/g if ( @$filters[0] ); |
607 |
$strcalc .= " AND aqbasket.closedate >= '" . @$filters[0] . "'" |
543 |
$strcalc .= " AND aqbasket.closedate >= '" . @$filters[0] . "'" |
Lines 615-626
sub calculate {
Link Here
|
615 |
@$filters[3] =~ s/\*/%/g if ( @$filters[3] ); |
551 |
@$filters[3] =~ s/\*/%/g if ( @$filters[3] ); |
616 |
$strcalc .= " AND aqorders.datereceived <= '" . @$filters[3] . "'" |
552 |
$strcalc .= " AND aqorders.datereceived <= '" . @$filters[3] . "'" |
617 |
if ( @$filters[3] ); |
553 |
if ( @$filters[3] ); |
618 |
# @$filters[4] =~ s/\*/%/g if ( @$filters[4] ); |
|
|
619 |
# $strcalc .= " AND aqbasket.closedate >= '" . @$filters[4] . "'" |
620 |
# if ( @$filters[4] ); |
621 |
# @$filters[5] =~ s/\*/%/g if ( @$filters[5] ); |
622 |
# $strcalc .= " AND aqbasket.closedate <= '" . @$filters[5] . "'" |
623 |
# if ( @$filters[5] ); |
624 |
@$filters[4] =~ s/\*/%/g if ( @$filters[4] ); |
554 |
@$filters[4] =~ s/\*/%/g if ( @$filters[4] ); |
625 |
$strcalc .= " AND aqbooksellers.name LIKE '" . @$filters[4] . "'" |
555 |
$strcalc .= " AND aqbooksellers.name LIKE '" . @$filters[4] . "'" |
626 |
if ( @$filters[4] ); |
556 |
if ( @$filters[4] ); |
Lines 640-658
sub calculate {
Link Here
|
640 |
$strcalc .= " AND aqorders.datecancellationprinted is NULL "; |
570 |
$strcalc .= " AND aqorders.datecancellationprinted is NULL "; |
641 |
|
571 |
|
642 |
$strcalc .= " GROUP BY $linefield, $colfield ORDER BY $linefield,$colfield"; |
572 |
$strcalc .= " GROUP BY $linefield, $colfield ORDER BY $linefield,$colfield"; |
643 |
|
|
|
644 |
# warn $strcalc . "\n"; |
645 |
|
646 |
my $dbcalc = $dbh->prepare($strcalc); |
573 |
my $dbcalc = $dbh->prepare($strcalc); |
647 |
$dbcalc->execute; |
574 |
$dbcalc->execute; |
648 |
|
575 |
|
649 |
# warn "filling table"; |
|
|
650 |
my $emptycol; |
576 |
my $emptycol; |
651 |
while ( my ( $row, $col, $value ) = $dbcalc->fetchrow ) { |
577 |
while ( my ( $row, $col, $value ) = $dbcalc->fetchrow ) { |
652 |
next if ($row eq undef || $col eq undef); |
578 |
next if ($row eq undef || $col eq undef); |
653 |
|
579 |
|
654 |
# warn "filling table $row / $col / $value "; |
|
|
655 |
|
656 |
$emptycol = 1 if ( !defined($col) ); |
580 |
$emptycol = 1 if ( !defined($col) ); |
657 |
$col = "zzEMPTY" if ( !defined($col) ); |
581 |
$col = "zzEMPTY" if ( !defined($col) ); |
658 |
$row = "zzEMPTY" if ( !defined($row) ); |
582 |
$row = "zzEMPTY" if ( !defined($row) ); |
Lines 682-688
sub calculate {
Link Here
|
682 |
$hilighted = -$hilighted; |
606 |
$hilighted = -$hilighted; |
683 |
} |
607 |
} |
684 |
|
608 |
|
685 |
# warn "footer processing"; |
|
|
686 |
foreach my $col (@loopcol) { |
609 |
foreach my $col (@loopcol) { |
687 |
my $total = 0; |
610 |
my $total = 0; |
688 |
foreach my $row (@looprow) { |
611 |
foreach my $row (@looprow) { |
Lines 693-703
sub calculate {
Link Here
|
693 |
( $col->{coltitle} eq "NULL" ) ? "zzEMPTY" |
616 |
( $col->{coltitle} eq "NULL" ) ? "zzEMPTY" |
694 |
: $col->{coltitle} |
617 |
: $col->{coltitle} |
695 |
}; |
618 |
}; |
696 |
|
|
|
697 |
# warn "value added ".$table{$row->{rowtitle}}->{$col->{coltitle}}. "for line ".$row->{rowtitle}; |
698 |
} |
619 |
} |
699 |
|
620 |
|
700 |
# warn "summ for column ".$col->{coltitle}." = ".$total; |
|
|
701 |
push @loopfooter, { 'totalcol' => $total }; |
621 |
push @loopfooter, { 'totalcol' => $total }; |
702 |
} |
622 |
} |
703 |
|
623 |
|
704 |
- |
|
|