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
SL/DB/MetaSetup/Default.pm
40 40
  datev_check_on_gl_transaction             => { type => 'boolean', default => 'true' },
41 41
  datev_check_on_purchase_invoice           => { type => 'boolean', default => 'true' },
42 42
  datev_check_on_sales_invoice              => { type => 'boolean', default => 'true' },
43
  delivery_plan_calculate_transferred_do    => { type => 'boolean', default => 'false', not_null => 1 },
44
  delivery_plan_show_value_of_goods         => { type => 'boolean', default => 'false', not_null => 1 },
43 45
  dunning_ar                                => { type => 'integer' },
44 46
  dunning_ar_amount_fee                     => { type => 'integer' },
45 47
  dunning_ar_amount_interest                => { type => 'integer' },
SL/DB/OrderItem.pm
50 50
  return sum(map { AM->convert_unit($_->unit => $self->unit) * $_->qty } @doi_delivered);
51 51
}
52 52

  
53
sub value_of_goods {
54
  my ($self) = @_;
55

  
56
  my $price_factor = $self->price_factor ? $self->price_factor : 1;
57

  
58
  return ($self->qty * $self->sellprice * (1 - $self->discount ) / $price_factor);
59
}
60

  
61
sub taxincluded {
62
  my ($self) = @_;
63

  
64
  return SL::DB::Manager::Order->find_by(id => $self->trans_id)->taxincluded ?  $::locale->text('WARN: Tax included value!') : '';
65
}
53 66
1;
locale/de/all
414 414
  'CSV import: shipping addresses' => 'CSV-Import: Lieferadressen',
415 415
  'CTI settings'                => 'CTI-Einstellungen',
416 416
  'Calculate'                   => 'Berechnen',
417
  'Calculate the value of goods for delivery plan (WARNING:  Experimental (not taxincluded safe!)' => 'Warenverkaufswert anzeigen (Brutto / Netto), so wie im Auftrags-Beleg gespeichert. Benötigt das Recht: Verkaufs-Aufträge bearbeiten.',
417 418
  'Calling #1 now'              => 'Wähle jetzt #1',
418 419
  'Can not create that quantity with current stock' => 'Diese Anzahl kann mit dem gegenwärtigen Lagerbestand nicht hergestellt werden.',
419 420
  'Cancel'                      => 'Abbrechen',
......
787 788
  'Delivery Order(s) for full qty created' => 'Lieferschein(e) mit kompletter Menge erstellt',
788 789
  'Delivery Orders'             => 'Lieferscheine',
789 790
  'Delivery Plan'               => 'Lieferplan',
791
  'Delivery Plan check for transferred delivery orders' => 'Lieferplan berücksichtig den Status des Lieferscheins (ausgelagert / nicht ausgelagert)',
790 792
  'Delivery Plan for currently outstanding sales orders' => 'Lieferplan für offene Verkaufsaufträge',
791 793
  'Delivery Terms'              => 'Lieferbedingungen',
792 794
  'Delivery terms'              => 'Lieferbedingungen',
......
2170 2172
  'Show Salesman'               => 'Verkäufer anzeigen',
2171 2173
  'Show TODO list'              => 'Aufgabenliste anzeigen',
2172 2174
  'Show Transfer via default'   => 'Ein- / Auslagern über Standardlagerplatz anzeigen (zusätzlicher Knopf in Beleg Lieferschein)',
2175
  'Show Value of Goods for Delivery Plan' => 'Warenverkaufswert im Lieferplan anzeigen.',
2173 2176
  'Show administration link'    => 'Link zur Administration anzeigen',
2174 2177
  'Show all parts'              => 'Alle Artikel anzeigen',
2175 2178
  'Show by default'             => 'Standardmäßig anzeigen',
......
2420 2423
  'The dataset #1 has been created.' => 'Die Datenbank #1 wurde angelegt.',
2421 2424
  'The dataset #1 has been deleted.' => 'Die Datenbank #1 wurde gelöscht.',
2422 2425
  'The deductible amount'       => 'Der abziehbare Skontobetrag',
2426
  'The default delivery plan only checks if all delivery orders have been created not if the goods are transferred. This feature will check if all the goods are transferred. Caveat: Only the state of the delivery orders are checked not partial transferred delivery orders (in technical terms: the table inventory is not checked' => 'Standardmässig wird beim Lieferplan überprüft, ob es eine vollständige Liefermenge über alle Lieferscheine gibt. Dies ist dann die Statusbedingung für geliefert oder nicht geliefert. Mit dieser Erweiterung wird geprüft ob die Lieferbelege auch wirklich ausgelagert sind oder nicht. Teilausgelagerte Lieferscheine werden allerdings nicht berücksichtigt (Technischer Hintergrund: Keine Überprüfung der Lagertabelle inventory).',
2423 2427
  'The default value depends on the variable type:' => 'Die Bedeutung des Standardwertes hängt vom Variablentypen ab:',
2424 2428
  'The delivery order has not been marked as delivered. The warehouse contents have not changed.' => 'Der Lieferschein wurde nicht als geliefert markiert. Der Lagerinhalt wurde nicht verändert.',
2425 2429
  'The delivery term has been created.' => 'Die Lieferbedingungen wurden angelegt.',
......
2793 2797
  'Valid until'                 => 'gültig bis',
2794 2798
  'Valid/Obsolete'              => 'Gültig/ungültig',
2795 2799
  'Value'                       => 'Wert',
2800
  'Value of goods'              => 'Warenverkaufswert',
2796 2801
  'Variable'                    => 'Variable',
2797 2802
  'Variable Description'        => 'Datenfeldbezeichnung',
2798 2803
  'Variable Name'               => 'Datenfeldname (intern)',
......
2825 2830
  'View warehouse content'      => 'Lagerbestand ansehen',
2826 2831
  'View/edit all employees sales documents' => 'Bearbeiten/ansehen der Verkaufsdokumente aller Mitarbeiter',
2827 2832
  'Von Konto: '                 => 'von Konto: ',
2833
  'WARN: Tax included value!'   => 'ACHTUNG: Steuer im Preis inbegriffen!',
2828 2834
  'WHJournal'                   => 'Lagerbuchungen',
2829 2835
  'Warehouse'                   => 'Lager',
2830 2836
  'Warehouse From'              => 'Quelllager',
sql/Pg-upgrade2/defaults_add_delivery_plan_config.sql
1
-- @tag: defaults_add_delivery_plan_config
2
-- @description: Konfigurative Erweiterungen für den Lieferplan (od)
3
-- @depends: release_3_1_0
4
ALTER TABLE defaults ADD COLUMN delivery_plan_show_value_of_goods boolean NOT NULL DEFAULT FALSE;
5
ALTER TABLE defaults ADD COLUMN delivery_plan_calculate_transferred_do boolean NOT NULL DEFAULT FALSE;
6

  
templates/webpages/client_config/_warehouse.html
87 87
    [% LxERP.t8('Any stock contents containing a best before date will be impossible to stock out otherwise.') %]
88 88
   </td>
89 89
  </tr>
90
  <tr><td colspan="3"><hr /></td></tr>
91
<tr>
92
   <td align="right">[% LxERP.t8('Show Value of Goods for Delivery Plan') %]</td>
93
   <td>
94
    [% L.yes_no_tag('defaults.delivery_plan_show_value_of_goods', SELF.defaults.delivery_plan_show_value_of_goods) %]
95
   </td>
96
   <td>
97
   [% LxERP.t8('Calculate the value of goods for delivery plan (WARNING:  Experimental (not taxincluded safe!)') %]
98
   </td>
99
  </tr>
100
 <tr>
101
  <td align="right">[% LxERP.t8('Delivery Plan check for transferred delivery orders') %]</td>
102
   <td>
103
    [% L.yes_no_tag('defaults.delivery_plan_calculate_transferred_do', SELF.defaults.delivery_plan_calculate_transferred_do) %]
104
   </td>
105
   <td>
106
   [% LxERP.t8('The default delivery plan only checks if all delivery orders have been created not if the goods are transferred. This feature will check if all the goods are transferred. Caveat: Only the state of the delivery orders are checked not partial transferred delivery orders (in technical terms: the table inventory is not checked') %]
107
   </td>
108
  </tr>
90 109
 </table>
91 110
</div>

Auch abrufbar als: Unified diff