Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 7fb98401

Von Sven Schöling vor mehr als 7 Jahren hinzugefügt

  • ID 7fb9840166f036f4d0ab1f937213abcf199f819f
  • Vorgänger e40c9d4d
  • Nachfolger f2043c7d

DeliveryValueReport: Auf ShppedQty Helper umgestellt.

Leider fällt geht dabei die Information verloren, wieviel davon in
geschlossenen Lieferscheinen ist. Wenn benötigt, muss das nachgebaut
werden.

Unterschiede anzeigen:

SL/Controller/DeliveryValueReport.pm
9 9
use SL::Controller::Helper::GetModels;
10 10
use SL::Controller::Helper::ReportGenerator;
11 11
use SL::Locale::String;
12
use SL::Helper::ShippedQty;
12 13
use SL::AM;
13 14
use SL::DBUtils ();
14 15
use Carp;
......
37 38
  netto_shipped_qty       => t8('Net Value in delivery orders'),
38 39
  delivered_qty           => t8('transferred in / out'),
39 40
  netto_delivered_qty     => t8('Net value transferred in / out'),
40
  do_closed_qty           => t8('Qty in closed delivery orders'),
41
  netto_do_closed_qty     => t8('Net value in closed delivery orders')
42 41
);
43 42

  
44 43

  
......
69 68

  
70 69
  my @columns     = qw(reqdate customer vendor ordnumber partnumber description unit qty netto_qty
71 70
                       not_shipped_qty netto_not_shipped_qty shipped_qty netto_shipped_qty delivered_qty
72
                       netto_delivered_qty do_closed_qty netto_do_closed_qty);
71
                       netto_delivered_qty);
73 72

  
74 73

  
75 74
  my @sortable    = qw(reqdate customer vendor ordnumber partnumber description);
......
103 102
                                             $_[0]{shipped_qty} - $_[0]{delivered_qty} - $_[0]{do_closed_qty})
104 103
                                             * ($_[0]->sellprice * (1 - $_[0]->discount) /
105 104
                                                                             ($_[0]->price_factor || 1)), 2))  },},
106
    do_closed_qty     => {      sub => sub { $::form->format_amount(\%::myconfig, $_[0]{do_closed_qty}, 2) .
107
                                             ($rp_csv_mod ? '' : ' ' .  $_[0]->unit)                           },},
108
    netto_do_closed_qty => {    sub => sub { $::form->format_amount(\%::myconfig, $_[0]{netto_do_closed_qty}, 2) },},
109 105
    ordnumber         => {      sub => sub { $_[0]->order->ordnumber                                           },
110 106
                           obj_link => sub { $self->link_to($_[0]->order)                                      } },
111 107
    vendor            => {      sub => sub { $_[0]->order->vendor->name                                        },
......
255 251

  
256 252
sub calc_qtys_price {
257 253
  my ($self, $orderitems) = @_;
258
  # using $orderitem->shipped_qty 40 times is far too slow. need to do it manually
259
  # also for calc net values
260 254

  
261 255
  return unless scalar @$orderitems;
262 256

  
263
  my %orderitems_by_id = map { $_->id => $_ } @$orderitems;
257
  SL::Helper::ShippedQty
258
    ->new(require_stock_out => 1)
259
    ->calculate($orderitems)
260
    ->write_to_objects;
264 261

  
265
  my $query = <<SQL;
266
    SELECT oi.id, doi.qty, doi.unit, doe.delivered, doe.closed,
267
           oi.sellprice, oi.discount, oi.price_factor
268
    FROM record_links rl
269
    INNER JOIN delivery_order_items doi ON (doi.id = rl.to_id)
270
    INNER JOIN orderitems oi            ON (oi.id  = rl.from_id)
271
    INNER JOIN delivery_orders doe      ON (doe.id = doi.delivery_order_id)
272
    WHERE rl.from_table = 'orderitems'
273
      AND rl.to_table   = 'delivery_order_items'
274
      AND oi.id IN (@{[ join ', ', ("?")x @$orderitems ]})
275
SQL
276

  
277
  my $result = SL::DBUtils::selectall_hashref_query($::form, $::form->get_standard_dbh, $query, map { $_->id } @$orderitems);
278

  
279
  for my $row (@$result) {
280
    my $item = $orderitems_by_id{ $row->{id} };
281
    $item->{shipped_qty}   ||= 0;
282
    $item->{delivered_qty} ||= 0;
283
    $item->{do_closed_qty} ||= 0;
284
    $item->{shipped_qty}    += AM->convert_unit($row->{unit} => $item->unit) * $row->{qty}  unless ($row->{delivered} || $row->{closed});
285
    $item->{delivered_qty}  += AM->convert_unit($row->{unit} => $item->unit) * $row->{qty}  if ($row->{delivered} && !$row->{closed});
286
    $item->{do_closed_qty}  += AM->convert_unit($row->{unit} => $item->unit) * $row->{qty}  if ($row->{closed});
287
    $item->{not_shipped_qty} += AM->convert_unit($row->{unit} => $item->unit) * $row->{qty} unless ($row->{delivered});
288

  
289
    my $price_factor = $row->{price_factor} || 1;
290
    $item->{netto_shipped_qty}   = $item->{shipped_qty} * $row->{sellprice} * (1 - $row->{discount} ) / $price_factor;
291
    $item->{netto_delivered_qty} = $item->{delivered_qty} * $row->{sellprice} * (1 - $row->{discount} ) / $price_factor;
292
    $item->{netto_do_closed_qty} = $item->{do_closed_qty} * $row->{sellprice} * (1 - $row->{discount} ) / $price_factor;
262
  $_->{delivered_qty} = delete $_->{shipped_qty} for @$orderitems;
263

  
264
  SL::Helper::ShippedQty
265
    ->new(require_stock_out => 0)
266
    ->calculate($orderitems)
267
    ->write_to_objects;
268

  
269
  for my $item (@$orderitems) {
270
    $item->{not_shipped_qty} = $item->qty - $item->{shipped_qty};
293 271

  
272
    my $price_factor = $item->price_factor || 1;
273
    $item->{netto_shipped_qty}   = $item->{shipped_qty}   * $item->sellprice * (1 - $item->discount) / $price_factor;
274
    $item->{netto_delivered_qty} = $item->{delivered_qty} * $item->sellprice * (1 - $item->discount) / $price_factor;
294 275
  }
295 276
}
296 277

  
locale/de/all
1829 1829
  'Net amount (for verification)' => 'Nettobetrag (zur Überprüfung)',
1830 1830
  'Net amounts differ too much' => 'Nettobeträge weichen zu sehr ab.',
1831 1831
  'Net value in Order'          => 'Netto Auftrag',
1832
  'Net value in closed delivery orders' => 'Netto in geschlossenen Lieferscheinen',
1833 1832
  'Net value transferred in / out' => 'Netto ein- /ausgelagert',
1834 1833
  'Net value without delivery orders' => 'Netto ohne Lieferschein',
1835 1834
  'Netherlands'                 => 'Niederlande',
......
2315 2314
  'Qty equals #1'               => 'Menge ist #1',
2316 2315
  'Qty in Order'                => 'Menge Auftrag',
2317 2316
  'Qty in Selected Records'     => 'Menge in gewählten Belegen',
2318
  'Qty in closed delivery orders' => 'Menge in geschlossenen Lieferscheinen',
2319 2317
  'Qty in delivery orders'      => 'Menge mit Lieferschein',
2320 2318
  'Qty in stock'                => 'Lagerbestand',
2321 2319
  'Qty less than #1'            => 'Menge weniger als #1',

Auch abrufbar als: Unified diff