Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 4ecb8321

Von Jan Büren vor etwa 10 Jahren hinzugefügt

Erweiterung Lieferplan Belege wirklich ausgelagert und Warenverkaufswert (default: aus)

Erweiterung Mandantenkonfiguration im Bereich Lager zum Einschalten von
a) Warenverkaufswert
Falls aktiviert erscheint eine neue Spalte im Lieferplan, die den Wert der
ausgeliefert Waren angibt. Berechnungen mit sellprice sind in der kivi immer
hakelig. Hier die getesten Fälle:
- Rabatt i.O.
- Preisfaktor i.O.
- Steuer im Preis inbegriffen (eine Warnung wird generiert).

b) Lieferplan berücksichtigt die tatsächlich ausgelagerten Lieferscheine
Falls der Firmenprozess zwei Rollen vorgibt (Lieferschein-Ersteller und
Lieferschein-Auslagerer), konnte dies mit dem vorhanden Bericht nicht klar
eingesehen werden. Entsprechend werden bei dieser Funktion nur die tatsächlich
ausgelagerten Lieferscheine berücksichtigt. Achtung: Teilausgelagerte Belege
werden nicht berücksichtigt (keine verknüpfung mit tabelle inventory)

Unterschiede anzeigen:

SL/Controller/DeliveryPlan.pm
26 26
  not_shipped_qty   => t8('not shipped'),
27 27
  ordnumber         => t8('Order'),
28 28
  customer          => t8('Customer'),
29
  value_of_goods    => t8('Value of goods'),
29 30
);
30 31

  
31 32
sub action_list {
......
47 48
  my $report      = SL::ReportGenerator->new(\%::myconfig, $::form);
48 49
  $self->{report} = $report;
49 50

  
50
  my @columns     = qw(reqdate customer ordnumber partnumber description qty shipped_qty not_shipped_qty delivered_qty);
51
  my @columns     = qw(reqdate customer ordnumber partnumber description qty shipped_qty not_shipped_qty delivered_qty value_of_goods);
51 52
  my @sortable    = qw(reqdate customer ordnumber partnumber description);
52 53

  
53 54
  my %column_defs = (
......
66 67
                           obj_link => sub { $self->link_to($_[0]->order->customer)                                          } },
67 68
  );
68 69

  
70
  # add value of goods in report
71
  if ($main::auth->assert('sales_order_edit') && $::instance_conf->get_delivery_plan_show_value_of_goods) {
72
    $column_defs{value_of_goods} = { sub =>  sub { $::form->format_amount(\%::myconfig, $_[0]->value_of_goods, 2) . ' ' . $_[0]->taxincluded } };
73
  }
69 74
  $column_defs{$_}->{text} = $sort_columns{$_} for keys %column_defs;
70 75

  
71 76
  $report->set_options(
......
127 132
sub delivery_plan_query {
128 133
  my $employee_id = SL::DB::Manager::Employee->current->id;
129 134
  my $oe_owner = $_[0]->all_edit_right ? '' : " oe.eployee_id = $employee_id AND";
135
  # check delivered state for delivery_orders (transferred out) if enabled
136
  my $filter_delivered = $::instance_conf->get_delivery_plan_calculate_transferred_do  ?
137
      "AND (SELECT delivered from delivery_orders where id = doi.delivery_order_id)" : '';
130 138
  [
131 139
  'order.customer_id' => { gt => 0 },
132 140
  'order.closed' => 0,
......
155 163
          rl.to_table = 'delivery_orders' AND
156 164
          rl.to_id = doi.delivery_order_id AND
157 165
          oi.parts_id = doi.parts_id
166
          $filter_delivered
158 167
      ) tuples GROUP BY parts_id, trans_id, qty
159 168
    ) partials
160 169
    LEFT JOIN orderitems oi ON partials.parts_id = oi.parts_id AND partials.trans_id = oi.trans_id
......
162 171

  
163 172
    UNION ALL
164 173

  
165
    -- 4. since the join over record_links fails for sales_orders wihtout any delivery order
174
    -- 4. since the join over record_links fails for sales_orders without any delivery order
166 175
    --    retrieve those without record_links at all
167 176
    SELECT oi.id FROM orderitems oi, oe
168 177
    WHERE
......
207 216
          (oe.quotation = 'f' OR oe.quotation IS NULL) AND NOT oe.closed
208 217
      ) rl
209 218
      LEFT JOIN delivery_order_items doi ON (rl.to_id = doi.delivery_order_id)
219
      WHERE 1 = 1
220
      $filter_delivered
210 221
      GROUP BY rl.from_id, doi.parts_id
211 222
    ) agg ON (agg.oid = oi.trans_id AND agg.parts_id = oi.parts_id)
212 223
    LEFT JOIN oe ON oe.id = oi.trans_id

Auch abrufbar als: Unified diff