Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 69480f28

Von Moritz Bunkus vor etwa 12 Jahren hinzugefügt

  • ID 69480f2877ceb6cbe7dae0411ad345a1de99c156
  • Vorgänger 3ffb8503
  • Nachfolger c8a19933

Verkaufsbericht besser an kivitendo-Farben anpassen

Fixt #2056.

Unterschiede anzeigen:

bin/mozilla/vk.pl
103 103
  my ($callback, $href, @columns);
104 104

  
105 105
  # can't currently be configured from report, empty line between main sortings
106
  my $addemptylines = '1';
106
  my $addemptylines = 1;
107 107

  
108 108
  if ( $form->{customer} =~ /--/ ) {
109 109
    # Felddaten kommen aus Dropdownbox
......
265 265
      'data'           => $form->{AR}
266 266
  );
267 267

  
268
  my $num_visible_columns = scalar $report->get_visible_columns;
269
  my %empty_row           = (
270
    description           => {
271
      data                => '',
272
      class               => 'listrowempty',
273
      colspan             => $num_visible_columns,
274
    },
275
  );
276

  
268 277
  # add sort and escape callback, this one we use for the add sub
269 278
  $form->{callback} = $href .= "&sort=$form->{mainsort}";
270 279

  
......
313 322
    if ( $form->{l_headers_mainsort} eq "Y" && ( $idx == 0 or $ar->{ $form->{'mainsort'} } ne $form->{AR}->[$idx - 1]->{ $form->{'mainsort'} } )) {
314 323
      my $headerrow = {
315 324
        # use $emptyname for mainsort header if mainsort is empty
316
        data  => $ar->{$form->{'mainsort'}} || $locale->text('empty'),
317
        class => "listmainsortheader",
325
        data    => $ar->{$form->{'mainsort'}} || $locale->text('empty'),
326
        class   => "listmainsortheader",
327
        colspan => $num_visible_columns,
318 328
      };
319 329
      $report->add_data([ { description => $headerrow } ]);
320 330

  
......
335 345
    ) {
336 346
      my $headerrow = {
337 347
        # if subsort name is defined, use that name in header, otherwise use $emptyname
338
        data  => $ar->{$form->{'subsort'}} || $locale->text('empty'),
339
        class => "listsubsortheader",
348
        data    => $ar->{$form->{'subsort'}} || $locale->text('empty'),
349
        class   => "listsubsortheader",
350
        colspan => $num_visible_columns,
340 351
      };
341 352
      $report->add_data([ { description => $headerrow } ]);
342 353
    };
......
382 393
    map { $ar->{$_} = $form->format_amount(\%myconfig, $ar->{$_}, 3) } qw(weight);
383 394
    map { $ar->{$_} = $form->format_amount(\%myconfig, $ar->{$_}, $form->{"decimalplaces"} )} qw(lastcost sellprice sellprice_total lastcost_total);
384 395

  
385
    my $row = { };
386

  
387
    foreach my $column (@columns) {
388
      $row->{$column} = {
389
        'data'  => $ar->{$column},
390
        'align' => $column_alignment{$column},
391
      };
392
    }
393

  
394
   $row->{description}->{class} = 'listsortdescription';
395

  
396
    $row->{invnumber}->{link} = build_std_url("script=is.pl", 'action=edit')
397
      . "&id=" . E($ar->{id}) . "&callback=${callback}";
398

  
399 396
    # Einzelzeilen nur zeigen wenn l_parts gesetzt ist, nützlich, wenn man nur
400 397
    # Subtotals und Totals sehen möchte
401
    my $row_set = $form->{l_parts} ? [ $row ] : [ ];
398
    if ($form->{l_parts}) {
399
      my %row = (
400
        map { ($_ => { data => $ar->{$_}, align => $column_alignment{$_} }) } @columns
401
      );
402

  
403
      $row{invnumber}->{link} = build_std_url("script=is.pl", 'action=edit') . "&id=" . E($ar->{id}) . "&callback=${callback}";
404

  
405
      $report->add_data(\%row);
406
    }
402 407

  
403 408
    # hier wird bei l_subtotal nicht differenziert zwischen mainsort und subsort
404 409
    # macht man l_subtotal_mainsort aus wird l_subtotal_subsort auch nicht ausgeführt
405
    if (($form->{l_subtotal_mainsort} eq 'Y')
410
    if (   ($form->{l_subtotal_mainsort} eq 'Y')
411
        && ($form->{l_subtotal_subsort}  eq 'Y')
406 412
        && (($idx == (scalar @{ $form->{AR} } - 1))   # last element always has a subtotal
407 413
          || ($ar->{ $form->{'subsort'} } ne $form->{AR}->[$idx + 1]->{ $form->{'subsort'}   })
408 414
          || ($ar->{ $form->{'mainsort'} } ne $form->{AR}->[$idx + 1]->{ $form->{'mainsort'} })
409 415
          )) {   # if value that is sorted by changes, print subtotal
410 416

  
411
      if ($form->{l_subtotal_subsort} eq 'Y') {
412
        push @{ $row_set }, create_subtotal_row_invoice(\%subtotals2, \@columns, \%column_alignment, \@subtotal_columns, 'listsubsortsubtotal', $ar->{ $form->{'subsort'} }) ;
413
        push @{ $row_set }, insert_empty_row() if $form->{l_parts} and $addemptylines;
414
      };
417
      $report->add_data(create_subtotal_row_invoice(\%subtotals2, \@columns, \%column_alignment, \@subtotal_columns, $form->{l_parts} ? 'listsubtotal' : undef, $ar->{ $form->{'subsort'} }));
418
      $report->add_data({ %empty_row }) if $form->{l_parts} and $addemptylines;
415 419
    }
416 420

  
417 421
    # if last mainsort is reached or mainsort has changed, add mainsort subtotal and empty row
418
    if (($form->{l_subtotal_mainsort} eq 'Y')
422
    if (   ($form->{l_subtotal_mainsort} eq 'Y')
423
        && ($form->{l_subtotal_mainsort} eq 'Y')
424
        && ($form->{mainsort}            ne $form->{subsort})
419 425
        && (($idx == (scalar @{ $form->{AR} } - 1))   # last element always has a subtotal
420 426
            || ($ar->{ $form->{'mainsort'} } ne $form->{AR}->[$idx + 1]->{ $form->{'mainsort'} })
421 427
            )) {   # if value that is sorted by changes, print subtotal
422
      if ($form->{l_subtotal_mainsort} eq 'Y' and $form->{mainsort} ne $form->{subsort} ) {
423 428
        # subtotal is overriden if mainsort and subsort are equal, don't print
424 429
        # subtotal line even if it is selected
425
        push @{ $row_set }, create_subtotal_row_invoice(\%subtotals1, \@columns, \%column_alignment, \@subtotal_columns, 'listmainsortsubtotal', $ar->{$form->{mainsort}});
426
        push @{ $row_set }, insert_empty_row() if $addemptylines; # insert empty row after mainsort
427
      };
430
      $report->add_data(create_subtotal_row_invoice(\%subtotals1, \@columns, \%column_alignment, \@subtotal_columns, 'listsubtotal', $ar->{$form->{mainsort}}));
431
      $report->add_data({ %empty_row }) if $addemptylines; # insert empty row after mainsort
428 432
    }
429 433

  
430
    $report->add_data($row_set);
431

  
432 434
    $idx++;
433 435
  }
434 436
  if ( $form->{l_total} eq "Y" ) {
......
440 442
  $main::lxdebug->leave_sub();
441 443
}
442 444

  
443

  
444
sub insert_empty_row {
445
    my $dummyrow;
446
    $dummyrow->{description}->{data} = "";
447
    my $dummyrowset = [ $dummyrow ];
448
    return $dummyrow;
449
};
450

  
451

  
452

  
453 445
sub create_subtotal_row_invoice {
454 446
  $main::lxdebug->enter_sub();
455 447

  
......
459 451
  my %myconfig = %main::myconfig;
460 452
  my $locale   = $main::locale;
461 453

  
462
  my $row = { map { $_ => { 'data' => '', 'class' => $class, 'align' => $column_alignment->{$_}, } } @{ $columns } };
454
  my $row = { map { $_ => { data => '', class => $class, align => $column_alignment->{$_}, } } @{ $columns } };
463 455

  
464 456
  # set name as "empty" if no value is given, except if we are dealing with the
465 457
  # absolute total, then just write "Total sum"
css/kivitendo/main.css
234 234
	color: black;
235 235
	vertical-align: top;
236 236
}
237
.listrowempty {
238
	background-color: #FFFFFF;
239
	color: black;
240
	vertical-align: top;
241
}
237 242
.listsubtotal {
238 243
	background-color: rgb(236,233,216);
239 244
	color: black;
css/lx-office-erp/main.css
259 259

  
260 260
.listrow1 { background-color: rgb(208,207,201); color: black; vertical-align: top; }
261 261
.listrow0 { background-color: rgb(236,233,216); color: black; vertical-align: top; }
262
.listrowempty { background-color: rgb(255,255,255); color: black; vertical-align: top; }
262 263

  
263 264
.redrow1 { background-color: rgb(250,167, 161); color: black; vertical-align: top; }
264 265
.redrow0 { background-color: rgb(255,193,176); color: black; vertical-align: top; }
......
443 444
  border-style:none;
444 445
  border-width:thin;
445 446
}
446

  
447

  

Auch abrufbar als: Unified diff