Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 82498fb7

Von Moritz Bunkus vor etwa 16 Jahren hinzugefügt

  • ID 82498fb730310873bc3011070b6249034255354e
  • Vorgänger 09685616
  • Nachfolger 15dbafbb

Lagerbestandswert zum Lagerbericht ergänzt.

Unterschiede anzeigen:

SL/WH.pm
433 433
     "chargeid"             => "c.id",
434 434
     "warehousedescription" => "w.description",
435 435
     "partunit"             => "p.unit",
436
     "stock_value"          => "p.lastcost / COALESCE(pfac.factor, 1)",
436 437
  );
437 438
  my $select_clause = join ', ', map { +/^l_/; "$select_tokens{$'} AS $'" }
438 439
        ( grep( { !/qty/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form),
......
442 443
        ( grep( { !/qty/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form),
443 444
          qw(l_parts_id l_partunit) );
444 445

  
446
  my %join_tokens = (
447
    "stock_value" => "LEFT JOIN price_factors pfac ON (p.price_factor_id = pfac.id)",
448
    );
449

  
450
  my $joins = join ' ', grep { $_ } map { +/^l_/; $join_tokens{"$'"} }
451
        ( grep( { !/qty/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form),
452
          qw(l_parts_id l_qty l_partunit) );
453

  
445 454
  my $query =
446 455
    qq|SELECT $select_clause
447 456
      $columns
......
449 458
      LEFT JOIN parts     p ON i.parts_id     = p.id
450 459
      LEFT JOIN bin       b ON i.bin_id       = b.id
451 460
      LEFT JOIN warehouse w ON i.warehouse_id = w.id
461
      $joins
452 462
      WHERE $where_clause
453 463
      GROUP BY $group_clause $group_by
454 464
      ORDER BY $form->{sort}|;
......
477 487
      @all_fields                    = keys %{ $ref } unless (@all_fields);
478 488
    }
479 489

  
490
    $ref->{stock_value} *= $ref->{qty};
491

  
480 492
    push @contents, $ref;
481 493
  }
482 494

  
bin/mozilla/wh.pl
625 625
  my $sort_col     = $form->{sort};
626 626

  
627 627
  my %filter;
628
  my @columns = qw(warehousedescription bindescription partnumber partdescription chargenumber qty);
628
  my @columns = qw(warehousedescription bindescription partnumber partdescription chargenumber qty stock_value);
629 629

  
630 630
  # filter stuff
631 631
  map { $filter{$_} = $form->{$_} if ($form->{$_}) } qw(warehouse_id bin_id partnumber description chargenumber);
......
655 655
    'partdescription'      => { 'text' => $locale->text('Description'), },
656 656
    'chargenumber'         => { 'text' => $locale->text('Charge Number'), },
657 657
    'qty'                  => { 'text' => $locale->text('Qty'), },
658
    'stock_value'          => { 'text' => $locale->text('Stock value'), },
658 659
  );
659 660

  
660 661
  my $href = build_std_url('action=generate_report', grep { $form->{$_} } @hidden_variables);
661 662
  map { $column_defs{$_}->{link} = $href . "&sort=${_}&order=" . Q($_ eq $sort_col ? 1 - $form->{order} : $form->{order}) } @columns;
662 663

  
663
  my %column_alignment = map { $_ => 'right' } qw(qty);
664
  my %column_alignment = map { $_ => 'right' } qw(qty stock_value);
664 665

  
665 666
  map { $column_defs{$_}->{visible} = $form->{"l_${_}"} ? 1 : 0 } @columns;
666 667

  
......
679 680
  my $all_units = AM->retrieve_units(\%myconfig, $form);
680 681
  my @contents  = WH->get_warehouse_report(%filter);
681 682

  
682
  my $subtotal  = 0;
683 683
  my $idx       = 0;
684 684

  
685
  my @subtotals_columns = qw(qty stock_value);
686
  my %subtotals         = map { $_ => 0 } @subtotals_columns;
687

  
688
  my $total_stock_value = 0;
689

  
685 690
  foreach $entry (@contents) {
686
    $subtotal     += $entry->{qty};
687
    $entry->{qty}  = $form->format_amount_units('amount'     => $entry->{qty},
688
                                                'part_unit'  => $entry->{partunit},
689
                                                'conv_units' => 'convertible');
691
    map { $subtotals{$_} += $entry->{$_} } @subtotals_columns;
692
    $total_stock_value   += $entry->{stock_value} * 1;
693

  
694
    $entry->{qty}         = $form->format_amount_units('amount'     => $entry->{qty},
695
                                                       'part_unit'  => $entry->{partunit},
696
                                                       'conv_units' => 'convertible');
697
    $entry->{stock_value} = $form->format_amount(\%myconfig, $entry->{stock_value} * 1, 2);
690 698

  
691 699
    $row_set = [ { map { $_ => { 'data' => $entry->{$_}, 'align' => $column_alignment{$_} } } @columns } ];
692 700

  
......
695 703
            || ($entry->{$sort_col} ne $contents[$idx + 1]->{$sort_col}))) {
696 704

  
697 705
      my $row = { map { $_ => { 'data' => '', 'class' => 'listsubtotal', 'align' => $column_alignment{$_}, } } @columns };
698
      $row->{qty}->{data} = $form->format_amount_units('amount'     => $subtotal,
699
                                                       'part_unit'  => $entry->{partunit},
700
                                                       'conv_units' => 'convertible');
701
      $subtotal = 0;
706
      $row->{qty}->{data}         = $form->format_amount_units('amount'     => $subtotals{qty} * 1,
707
                                                               'part_unit'  => $entry->{partunit},
708
                                                               'conv_units' => 'convertible');
709
      $row->{stock_value}->{data} = $form->format_amount(\%myconfig, $subtotals{stock_value} * 1, 2);
710

  
711
      %subtotals                  = map { $_ => 0 } @subtotals_columns;
702 712

  
703 713
      push @{ $row_set }, $row;
704 714
    }
......
708 718
    $idx++;
709 719
  }
710 720

  
721
  if ($column_defs{stock_value}->{visible}) {
722
    $report->add_separator();
723

  
724
    my $row                      = { map { $_ => { 'data' => '', 'class' => 'listsubtotal', } } @columns };
725

  
726
    my $left_col                 = first { $column_defs{$_}->{visible} } @columns;
727

  
728
    $row->{$left_col}->{data}    = $locale->text('Total stock value');
729
    $row->{stock_value}->{data}  = $form->format_amount(\%myconfig, $total_stock_value, 2);
730
    $row->{stock_value}->{align} = 'right';
731

  
732
    $report->add_data($row);
733
  }
734

  
711 735
  $report->generate_with_headers();
712 736

  
713 737
  $lxdebug->leave_sub();
locale/de/all
1299 1299
  'Step 3 of 3: Default units'  => 'Schritt 3 von 3: Standardeinheiten',
1300 1300
  'Steuersatz'                  => 'Steuersatz',
1301 1301
  'Stock'                       => 'Einlagern',
1302
  'Stock value'                 => 'Bestandswert',
1302 1303
  'Storno'                      => 'Storno',
1303 1304
  'Storno (one letter abbreviation)' => 'S',
1304 1305
  'Storno Invoice'              => 'Stornorechnung',
......
1498 1499
  'Top Level'                   => 'Hauptartikelbezeichnung',
1499 1500
  'Total'                       => 'Summe',
1500 1501
  'Total Fees'                  => 'Kumulierte Geb?hren',
1502
  'Total stock value'           => 'Gesamter Bestandswert',
1501 1503
  'Trade Discount'              => 'Rabatt',
1502 1504
  'Trans Id'                    => 'Trans-ID',
1503 1505
  'Trans Type'                  => 'Transfertyp',
locale/de/wh
124 124
  'Select a part'               => 'Artikel auswählen',
125 125
  'Select a vendor'             => 'Einen Lieferanten auswählen',
126 126
  'Stock'                       => 'Einlagern',
127
  'Stock value'                 => 'Bestandswert',
127 128
  'Storno Invoice'              => 'Stornorechnung',
128 129
  'Storno Packing List'         => 'Stornolieferschein',
129 130
  'Subject'                     => 'Betreff',
......
147 148
  'The warehouse or the bin is missing.' => 'Das Lager oder der Lagerplatz fehlen.',
148 149
  'There is not enough left of \'#1\' in bin \'#2\' for the removal of #3.' => 'In Lagerplatz \'#2\' ist nicht genug von \'#1\' vorhanden, um #3 zu entnehmen.',
149 150
  'To (email)'                  => 'An',
151
  'Total stock value'           => 'Gesamter Bestandswert',
150 152
  'Trans Id'                    => 'Trans-ID',
151 153
  'Trans Type'                  => 'Transfertyp',
152 154
  'Transactions, AR transactions, AP transactions' => 'Dialogbuchen, Debitorenrechnungen, Kreditorenrechnungen',
templates/webpages/wh/report_filter_de.html
157 157
        <td align="right"><input name="include_empty_bins" id="include_empty_bins" class="checkbox" type="checkbox" value="Y"></td>
158 158
        <td nowrap><label for="include_empty_bins">Leere Lagerpl&auml;tze anzeigen</label></td>
159 159
       </tr>
160

  
161
       <tr>
162
        <td align="right"><input name="l_stock_value" id="l_stock_value" class="checkbox" type="checkbox" value="Y"></td>
163
        <td nowrap><label for="l_stock_value">Bestandswert</label></td>
164
       </tr>
165

  
160 166
      </table>
161 167
     </td>
162 168
    </tr>
templates/webpages/wh/report_filter_master.html
157 157
        <td align="right"><input name="include_empty_bins" id="include_empty_bins" class="checkbox" type="checkbox" value="Y"></td>
158 158
        <td nowrap><label for="include_empty_bins"><translate>Include empty bins</translate></label></td>
159 159
       </tr>
160

  
161
       <tr>
162
        <td align="right"><input name="l_stock_value" id="l_stock_value" class="checkbox" type="checkbox" value="Y"></td>
163
        <td nowrap><label for="l_stock_value"><translate>Stock value</translate></label></td>
164
       </tr>
165

  
160 166
      </table>
161 167
     </td>
162 168
    </tr>

Auch abrufbar als: Unified diff