Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 33e8932c

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

  • ID 33e8932ce36d4fbe58a9649b1a233c54f6400d6d
  • Vorgänger 96ddb932
  • Nachfolger 9b92c0c6

DeliveryValueReport: do_closed_qty wiederhergestellt

Unterschiede anzeigen:

SL/Controller/DeliveryValueReport.pm
11 11
use SL::Locale::String;
12 12
use SL::Helper::ShippedQty;
13 13
use SL::AM;
14
use SL::DBUtils ();
14
use SL::DBUtils qw(selectall_as_map);
15
use List::MoreUtils qw(uniq);
15 16
use Carp;
16 17
use Data::Dumper;
17 18

  
......
38 39
  netto_shipped_qty       => t8('Net Value in delivery orders'),
39 40
  delivered_qty           => t8('transferred in / out'),
40 41
  netto_delivered_qty     => t8('Net value transferred in / out'),
42
  do_closed_qty           => t8('Qty in closed delivery orders'),
43
  netto_do_closed_qty     => t8('Net value in closed delivery orders'),
41 44
);
42 45

  
43 46

  
......
68 71

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

  
73 76

  
74 77
  my @sortable    = qw(reqdate customer vendor ordnumber partnumber description);
......
82 85
                           obj_link => sub { $self->link_to($_[0]->part)                                      } },
83 86
    partnumber        => {      sub => sub { $_[0]->part->partnumber                                          },
84 87
                           obj_link => sub { $self->link_to($_[0]->part)                                      } },
85
    qty               => {      sub => sub { $_[0]->qty_as_number .
86
                                             ($rp_csv_mod ? '' : ' ' .  $_[0]->unit)                           } },
87
    netto_qty         => {      sub => sub { $::form->format_amount(\%::myconfig,
88
                                              ($_[0]->qty * $_[0]->sellprice * (1 - $_[0]->discount) /
89
                                                                         ($_[0]->price_factor || 1), 2))       },},
90
    unit              => {      sub => sub {  $_[0]->unit                                                      },
91
                            visible => $rp_csv_mod                                                             },
92
    shipped_qty       => {      sub => sub { $::form->format_amount(\%::myconfig, $_[0]{shipped_qty}, 2) .
93
                                             ($rp_csv_mod ? '' : ' ' .  $_[0]->unit)                           } },
94
    netto_shipped_qty => {      sub => sub { $::form->format_amount(\%::myconfig, $_[0]{netto_shipped_qty}, 2) },},
95
    not_shipped_qty   => {      sub => sub { $::form->format_amount(\%::myconfig, $_[0]->qty - $_[0]{shipped_qty}
96
                                               - $_[0]{delivered_qty} - $_[0]{do_closed_qty}, 2) .
97
                                             ($rp_csv_mod ? '' : ' ' .  $_[0]->unit)                           } },
98
    delivered_qty     => {      sub => sub { $::form->format_amount(\%::myconfig, $_[0]{delivered_qty}, 2) .
99
                                             ($rp_csv_mod ? '' : ' ' .  $_[0]->unit)                           } },
100
    netto_delivered_qty => {    sub => sub { $::form->format_amount(\%::myconfig, $_[0]{netto_delivered_qty}, 2) },},
101
    netto_not_shipped_qty => {  sub => sub { $::form->format_amount(\%::myconfig,(($_[0]->qty -
102
                                             $_[0]{shipped_qty} - $_[0]{delivered_qty} - $_[0]{do_closed_qty})
103
                                             * ($_[0]->sellprice * (1 - $_[0]->discount) /
104
                                                                             ($_[0]->price_factor || 1)), 2))  },},
88
    qty               => {      sub => sub { _format_qty($_[0], 'qty', $rp_csv_mod)                           } },
89
    netto_qty         => {      sub => sub { _format_val($_[0], 'qty')                                        },},
90
    unit              => {      sub => sub {  $_[0]->unit                                                     },
91
                            visible => $rp_csv_mod                                                              },
92
    shipped_qty       => {      sub => sub { _format_qty($_[0], 'shipped_qty', $rp_csv_mod)                   } },
93
    netto_shipped_qty => {      sub => sub { _format_val($_[0], 'shipped_qty')                                },},
94
    not_shipped_qty   => {      sub => sub { _format_qty($_[0], 'not_shipped_qty', $rp_csv_mod)               } },
95
    netto_not_shipped_qty => {  sub => sub { _format_val($_[0], 'not_shipped_qty')                            },},
96
    delivered_qty     => {      sub => sub { _format_qty($_[0], 'delivered_qty', $rp_csv_mod)                 } },
97
    netto_delivered_qty => {    sub => sub { _format_val($_[0], 'delivered_qty')                              },},
98
    do_closed_qty     => {      sub => sub { _format_qty($_[0], 'do_closed_qty', $rp_csv_mod)                 },},
99
    netto_do_closed_qty => {    sub => sub { _format_val($_[0], 'do_closed_qty')                              },},
105 100
    ordnumber         => {      sub => sub { $_[0]->order->ordnumber                                           },
106 101
                           obj_link => sub { $self->link_to($_[0]->order)                                      } },
107 102
    vendor            => {      sub => sub { $_[0]->order->vendor->name                                        },
......
248 243
  }
249 244
}
250 245

  
246
sub _format_qty {
247
  my ($item, $col, $csv_mod) = @_;
248

  
249
  $::form->format_amount(\%::myconfig, $item->{$col}, 2) .  ($csv_mod ? '' : ' ' .  $item->unit)
250
}
251

  
252
sub _format_val {
253
  my ($item, $col) = @_;
254

  
255
  $::form->format_amount(\%::myconfig, $item->{$col} * $item->sellprice * (1 - $item->discount) / ($item->price_factor || 1), 2)
256
}
257

  
251 258

  
252 259
sub calc_qtys_price {
253 260
  my ($self, $orderitems) = @_;
......
261 268

  
262 269
  $_->{delivered_qty} = delete $_->{shipped_qty} for @$orderitems;
263 270

  
264
  SL::Helper::ShippedQty
265
    ->new(require_stock_out => 0)
271
  my $helper = SL::Helper::ShippedQty
272
    ->new(require_stock_out => 0, keep_matches => 1)
266 273
    ->calculate($orderitems)
267 274
    ->write_to_objects;
268 275

  
269 276
  for my $item (@$orderitems) {
270 277
    $item->{not_shipped_qty} = $item->qty - $item->{shipped_qty};
278
    $item->{do_closed_qty}   = 0;
271 279

  
272 280
    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;
281
  }
282

  
283
  if (my @all_doi_ids = uniq map { $_->[1] } @{ $helper->matches }) {
284
    my %oi_by_id = map { $_->id => $_ } @$orderitems;
285
    my $query    = sprintf <<'', join ', ', ("?")x@all_doi_ids;
286
      SELECT DISTINCT doi.id, closed FROM delivery_orders
287
      LEFT JOIN delivery_order_items doi ON (doi.delivery_order_id = delivery_order.id)
288
      WHERE doi.id IN (%s)
289

  
290
    my %doi_is_closed = selectall_as_map($::form, SL::DB->client->dbh, $query, (id => 'closed'), @all_doi_ids);
291

  
292
    for my $match (@{ $helper->matches }) {
293
      next unless $doi_is_closed{$match->[1]};
294
      $oi_by_id{$match->[0]}->{do_closed_qty} += $match->[2];
295
    }
275 296
  }
276 297
}
277 298

  
locale/de/all
1831 1831
  'Net amount (for verification)' => 'Nettobetrag (zur Überprüfung)',
1832 1832
  'Net amounts differ too much' => 'Nettobeträge weichen zu sehr ab.',
1833 1833
  'Net value in Order'          => 'Netto Auftrag',
1834
  'Net value in closed delivery orders' => 'Netto in geschlossenen Lieferscheinen',
1834 1835
  'Net value transferred in / out' => 'Netto ein- /ausgelagert',
1835 1836
  'Net value without delivery orders' => 'Netto ohne Lieferschein',
1836 1837
  'Netherlands'                 => 'Niederlande',
......
2323 2324
  'Qty equals #1'               => 'Menge ist #1',
2324 2325
  'Qty in Order'                => 'Menge Auftrag',
2325 2326
  'Qty in Selected Records'     => 'Menge in gewählten Belegen',
2327
  'Qty in closed delivery orders' => 'Menge in geschlossenen Lieferscheinen',
2326 2328
  'Qty in delivery orders'      => 'Menge mit Lieferschein',
2327 2329
  'Qty in stock'                => 'Lagerbestand',
2328 2330
  'Qty less than #1'            => 'Menge weniger als #1',

Auch abrufbar als: Unified diff