| 1 |
lars |
1 |
<?php
|
|
|
2 |
/**
|
|
|
3 |
* Lagerwirtschaft mit warenwirtschaftlichen Zügen.
|
|
|
4 |
* Diese Datei enthält den gesamten PHP-Quelltext des Backendmoduls „Lagerwirtschaft mit warenwirtschaftlichen Zügen“.
|
|
|
5 |
* Nach Abarbeitung des Quelltexts wird das jeweilige Smarty-Template aufgerufen und diesen benötigte Variabeln übergeben.
|
|
|
6 |
*
|
|
|
7 |
* @author Patrick Lautsch <lautsch@weban.de>
|
|
|
8 |
* @copyright 2009 Webagentur Niewerth
|
|
|
9 |
* @package Content-management
|
|
|
10 |
* @version
|
|
|
11 |
* @license propietary
|
|
|
12 |
* @filesource
|
|
|
13 |
*/
|
|
|
14 |
|
|
|
15 |
/**
|
|
|
16 |
* Deutsche Umgebung.
|
|
|
17 |
*/
|
|
|
18 |
setlocale( LC_ALL, "de_DE" );
|
|
|
19 |
|
|
|
20 |
/**
|
|
|
21 |
* Setzte "CET" als Zeitzone.
|
|
|
22 |
*/
|
|
|
23 |
date_default_timezone_set( 'CET' );
|
|
|
24 |
|
|
|
25 |
/**
|
|
|
26 |
* Gibt die Backendmodulgruppe an, in welchem sich das Backendmodul befindet.
|
|
|
27 |
*/
|
|
|
28 |
define( "modul_name", "Warenwirtschaft" );
|
|
|
29 |
|
|
|
30 |
/**
|
|
|
31 |
* Gibt den Modulnamen an.
|
|
|
32 |
*/
|
|
|
33 |
define( "tool_name", "lagerwirtschaft" );
|
|
|
34 |
|
|
|
35 |
/**
|
|
|
36 |
* Gibt den Namen dieser Datei aus.
|
|
|
37 |
*/
|
|
|
38 |
define( "F_NAME", basename($_SERVER["PHP_SELF"]) );
|
|
|
39 |
|
|
|
40 |
/**
|
|
|
41 |
* Connect-Datei einbinden.
|
|
|
42 |
*/
|
|
|
43 |
require_once "../Online-Shop/connect2.php";
|
|
|
44 |
|
|
|
45 |
/**
|
|
|
46 |
* Zusätzliche Funktionen.
|
|
|
47 |
*/
|
|
|
48 |
require_once '../includes/system/functions.lagerwirtschaft.php';
|
|
|
49 |
|
|
|
50 |
/**
|
|
|
51 |
* Start der Session.
|
|
|
52 |
*/
|
|
|
53 |
session_start();
|
|
|
54 |
|
|
|
55 |
/**
|
|
|
56 |
* Smarty Initialisierung.
|
|
|
57 |
*/
|
|
|
58 |
require_once "Weban_Smarty.class.php";
|
|
|
59 |
$GLOBALS["ui"] = new Weban_Smarty();
|
|
|
60 |
$GLOBALS["ui"]->conifg_dir = SMARTY_DIR;
|
|
|
61 |
$GLOBALS["ui"]->template_dir = "templates/";
|
|
|
62 |
$GLOBALS["ui"]->compile_dir = "templates_c";
|
|
|
63 |
$GLOBALS["ui"]->compile_check = true;
|
|
|
64 |
$GLOBALS["ui"]->assign( "eingabefelder", $eingabefelder );
|
|
|
65 |
$GLOBALS["ui"]->assign( "webs", $webs );
|
|
|
66 |
|
|
|
67 |
/**
|
|
|
68 |
* Übergebe den GET-Parameter 'artikelId' an Smarty, falls dieser gesetzt ist.
|
|
|
69 |
*/
|
|
|
70 |
if ( !empty($_GET['artikelId']) )
|
|
|
71 |
{
|
|
|
72 |
$GLOBALS["ui"]->assign("artikelId", $_GET['artikelId']);
|
|
|
73 |
}
|
|
|
74 |
|
|
|
75 |
/**
|
|
|
76 |
* Wenn <var>$_GET['buchungEingetragen']</var> gleich eins ist, dann trage die Buchung in die Datenbank ein
|
|
|
77 |
*/
|
|
|
78 |
if ( $_GET['action'] == "buchungEingetragen" )
|
|
|
79 |
{
|
|
|
80 |
/**
|
|
|
81 |
* Speichere die vom Eingangsbuchungsformular abgeschickten POST-Daten in Variabeln.
|
|
|
82 |
*/
|
|
|
83 |
|
|
|
84 |
/**
|
|
|
85 |
* Lieferant
|
|
|
86 |
*/
|
|
|
87 |
$eingangsbuchungLieferantenNummer = $_POST['lieferant'];
|
|
|
88 |
|
|
|
89 |
/**
|
|
|
90 |
* Datum: Tag
|
|
|
91 |
*/
|
|
|
92 |
$eingangsbuchungDatum = $_POST['datum'];
|
|
|
93 |
|
|
|
94 |
/**
|
|
|
95 |
* Erstelle aus den POST-Arrays <var>$_POST['menge']</var>, <var>$_POST['artikelID']</var> und <var>$_POST['warenwert']</var>
|
|
|
96 |
* ein einziges LOOP-Array.
|
|
|
97 |
*/
|
|
|
98 |
for ( $i = 0; $i < sizeof($_POST['menge']); $i++ )
|
|
|
99 |
{
|
|
|
100 |
/**
|
|
|
101 |
* Wenn im Buchungsformular "Ausgangsbuchung(-)" gewählt wurde, wird vor die Menge ein Minus gehängt.
|
|
|
102 |
*/
|
|
|
103 |
if ( $_POST['buchungsart'][$i] == 'ausgangsbuchung')
|
|
|
104 |
{
|
|
|
105 |
$eingangsbuchungArtikel[$i]['menge'] = -$_POST['menge'][$i];
|
|
|
106 |
} else {
|
|
|
107 |
$eingangsbuchungArtikel[$i]['menge'] = $_POST['menge'][$i];
|
|
|
108 |
}
|
|
|
109 |
|
|
|
110 |
$eingangsbuchungArtikel[$i]['artikelID'] = $_POST['artikelID'][$i];
|
|
|
111 |
$eingangsbuchungArtikel[$i]['warenwert'] = $_POST['warenwert'][$i];
|
|
|
112 |
}
|
|
|
113 |
|
|
|
114 |
/**
|
|
|
115 |
* QUERY: Trage die Buchung in die Datenbank ein.
|
|
|
116 |
*/
|
|
|
117 |
$sql = "
|
|
|
118 |
INSERT INTO
|
|
|
119 |
buchungen
|
|
|
120 |
(
|
|
|
121 |
eintragsdatum
|
|
|
122 |
)
|
|
|
123 |
VALUES
|
|
|
124 |
(
|
|
|
125 |
NOW()
|
|
|
126 |
)
|
|
|
127 |
;";
|
|
|
128 |
|
|
|
129 |
/**
|
|
|
130 |
* QUERY ausführen.
|
|
|
131 |
*/
|
|
|
132 |
$result = mysql_query( $sql ) or die( mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql );
|
|
|
133 |
|
|
|
134 |
/**
|
|
|
135 |
* Die ID der eingetragenen Buchung in der Tabelle "buchungen".
|
|
|
136 |
*/
|
|
|
137 |
$eingangsbuchungBuchungenID = mysql_insert_id();
|
|
|
138 |
|
|
|
139 |
/**
|
|
|
140 |
* Trage die Artikel der Buchung in die Tabelle "lagerbewegungen" ein.
|
|
|
141 |
*/
|
|
|
142 |
for ( $i = 0; $i < sizeof($eingangsbuchungArtikel); $i++ )
|
|
|
143 |
{
|
|
|
144 |
/**
|
|
|
145 |
* QUERY
|
|
|
146 |
*/
|
|
|
147 |
$sql = "
|
|
|
148 |
INSERT INTO
|
|
|
149 |
lagerbewegungen
|
|
|
150 |
(
|
|
|
151 |
artikel,
|
|
|
152 |
buchungen,
|
|
|
153 |
menge
|
|
|
154 |
)
|
|
|
155 |
VALUES
|
|
|
156 |
(
|
|
|
157 |
".$eingangsbuchungArtikel[$i]['artikelID'].",
|
|
|
158 |
".$eingangsbuchungBuchungenID.",
|
|
|
159 |
".$eingangsbuchungArtikel[$i]['menge']."
|
|
|
160 |
)
|
|
|
161 |
;";
|
|
|
162 |
|
|
|
163 |
/**
|
|
|
164 |
* QUERY ausführen
|
|
|
165 |
*/
|
|
|
166 |
$result = mysql_query( $sql ) or die( mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql );
|
|
|
167 |
}
|
|
|
168 |
unset($_GET['action']);
|
|
|
169 |
?>
|
|
|
170 |
<script type="text/javascript">
|
|
|
171 |
location.href="javascript:history.go(-2);";
|
|
|
172 |
</script>
|
|
|
173 |
<?php
|
|
|
174 |
}
|
|
|
175 |
|
|
|
176 |
/**
|
|
|
177 |
* Wenn die Übersichtsseite angezeigt werden soll (<var>$_GET['action']</var> nicht gesetzt oder <var>$_GET['action']</var> = "uebersicht"),
|
|
|
178 |
* dann führe diesen Codeblock aus.
|
|
|
179 |
*/
|
|
|
180 |
if ( $_GET['action'] == "uebersicht" || empty($_GET['action']) )
|
|
|
181 |
{
|
|
|
182 |
/**
|
|
|
183 |
* Setzte die Standardparameter für die Artikelsuche.
|
|
|
184 |
*/
|
|
|
185 |
|
|
|
186 |
/**
|
|
|
187 |
* Bestimmt den Artikelnamen nach dem gesucht werden soll.
|
|
|
188 |
*/
|
|
|
189 |
$sucheArtikelname = "";
|
|
|
190 |
|
|
|
191 |
/**
|
|
|
192 |
* Bestimmt den Bestand nach dem gesucht werden soll.
|
|
|
193 |
*/
|
|
|
194 |
$sucheBestand = NULL;
|
|
|
195 |
|
|
|
196 |
/**
|
|
|
197 |
* Bestimmt in Verbindung mit dem Bestandsoperator nach welchen Beständen gesucht wird.
|
|
|
198 |
*/
|
|
|
199 |
$sucheBestand = 0;
|
|
|
200 |
|
|
|
201 |
/**
|
|
|
202 |
* Bestimmt den Bestandsoperator, welcher angibt ob der gesuchte Bestand größer, kleiner oder gleich dem angegebenen ist.
|
|
|
203 |
* "0" entspricht "="
|
|
|
204 |
* "1" entspricht ">"
|
|
|
205 |
* "2" entspricht "<"
|
|
|
206 |
* "3" bedeutet: keine Bestandssuche
|
|
|
207 |
*/
|
|
|
208 |
$sucheBestandsoperator = 3;
|
|
|
209 |
|
|
|
210 |
/**
|
|
|
211 |
* Bestimmt ob die Suche Absteigend oder Aufsteigend die Suchergebnisse anzeigt.
|
|
|
212 |
* "0" entspricht "Absteigend"
|
|
|
213 |
* "1" entspricht "Aufsteigend"
|
|
|
214 |
*/
|
|
|
215 |
$sucheSortierung = "DESC";
|
|
|
216 |
|
|
|
217 |
/**
|
|
|
218 |
* Bestimmt wie viele Artikel pro Seite angezeigt werden sollen.
|
|
|
219 |
*/
|
|
|
220 |
$sucheArtikelProSeite = 50;
|
|
|
221 |
|
|
|
222 |
/**
|
|
|
223 |
* Bestimmt welche Artikelseite angezeit werden soll.
|
|
|
224 |
*/
|
|
|
225 |
$sucheArtikelseite = 1;
|
|
|
226 |
|
|
|
227 |
/**
|
|
|
228 |
* Bestimmt welche Artikelseite angezeit werden soll.
|
|
|
229 |
*/
|
|
|
230 |
$sucheArtikelanzahl['start'] = 0;
|
|
|
231 |
|
|
|
232 |
/**
|
|
|
233 |
* Wenn "Suche ausführen" geklickt wurde, ersetzte die Standardsuchparameter durch die, die der Benutzer eingegeben hat.
|
|
|
234 |
*/
|
|
|
235 |
if ( $_POST['sucheSubmit'] || $_POST['sucheWeiter'] || $_POST['sucheZurueck'] || $_POST['sucheNeueSeite'] )
|
|
|
236 |
{
|
|
|
237 |
$sucheArtikelname = $_POST['sucheArtikelname'];
|
|
|
238 |
$sucheBestand = $_POST['sucheBestand'];
|
|
|
239 |
$sucheBestandsoperator = $_POST['sucheBestandsoperator'];
|
|
|
240 |
$sucheMeldebestandGroesserBestand = $_POST['sucheMeldebestandGroesserBestand'];
|
|
|
241 |
$sucheSortierung = ($_POST['sucheSortierung']) ? "ASC" : "DESC";
|
|
|
242 |
|
|
|
243 |
/**
|
|
|
244 |
* Sollte <var>$sucheBestand</var> keinen Wert haben, dann setzte diesen auf "0".
|
|
|
245 |
*/
|
|
|
246 |
if ( empty($sucheBestand) )
|
|
|
247 |
{
|
|
|
248 |
$sucheBestand = 0;
|
|
|
249 |
}
|
|
|
250 |
|
|
|
251 |
/**
|
|
|
252 |
* Sollte sich der Suchbegriff geändert haben, dann setzte die Artikelseite auf eins,
|
|
|
253 |
* ansonsten setzte <var>$sucheArtikelseite</var> gleich eins, wenn <var>$sucheArtikelseite</var> gleich false ist,
|
|
|
254 |
* ausßerdem addiere <var>$sucheArtikelseite</var> um den Wert von <var>$_POST['sucheWeiter']</var> und subtrahiere
|
|
|
255 |
* <var>$sucheArtikelseite</var> um den Wert von <var>$_POST['sucheZurueck']</var>.
|
|
|
256 |
*/
|
|
|
257 |
if ( $_POST['sucheAlterArtikelname'] != $sucheArtikelname )
|
|
|
258 |
{
|
|
|
259 |
$sucheArtikelseite = 1;
|
|
|
260 |
}
|
|
|
261 |
else
|
|
|
262 |
{
|
|
|
263 |
$sucheArtikelseite = ($_POST['sucheArtikelseite']) ? $_POST['sucheArtikelseite'] : 1;
|
|
|
264 |
$sucheArtikelseite += $_POST['sucheWeiter'];
|
|
|
265 |
$sucheArtikelseite -= $_POST['sucheZurueck'];
|
|
|
266 |
}
|
|
|
267 |
|
|
|
268 |
/**
|
|
|
269 |
* Bestimmt den Startpunkt der Datenbanksuche und somit auch welche Seite angezeigt wird.
|
|
|
270 |
* Dazu wird die Anzahl der Artikel pro Seite (<var>$sucheArtikelProSeite</var>) durch die aktuelle Seitennummer
|
|
|
271 |
* (<var>$sucheArtikelseite</var>) dividiert und der Wert des Quotionenten mit Anzahl der Artikel pro Seite subtrahiert.
|
|
|
272 |
*/
|
|
|
273 |
$sucheArtikelanzahl['start'] = ($sucheArtikelProSeite * $sucheArtikelseite) - $sucheArtikelProSeite;
|
|
|
274 |
}
|
|
|
275 |
|
|
|
276 |
/**
|
|
|
277 |
* Bestandsoperator bestimmen.
|
|
|
278 |
*/
|
|
|
279 |
if ( $sucheBestandsoperator == 0 )
|
|
|
280 |
{
|
|
|
281 |
$sucheBestandsoperatorZeichen = "=";
|
|
|
282 |
}
|
|
|
283 |
elseif ( $sucheBestandsoperator == 1 )
|
|
|
284 |
{
|
|
|
285 |
$sucheBestandsoperatorZeichen = ">";
|
|
|
286 |
}
|
|
|
287 |
elseif ( $sucheBestandsoperator == 2 )
|
|
|
288 |
{
|
|
|
289 |
$sucheBestandsoperatorZeichen = "<";
|
|
|
290 |
}
|
|
|
291 |
elseif ( $sucheBestandsoperator == 3 )
|
|
|
292 |
{
|
|
|
293 |
$sucheBestandsoperatorZeichen = FALSE;
|
|
|
294 |
}
|
|
|
295 |
else
|
|
|
296 |
{
|
|
|
297 |
die ("<strong>Fehler:</strong> Der Bestandsoperator konnte nicht ermittelt werden!");
|
|
|
298 |
}
|
|
|
299 |
|
|
|
300 |
/**
|
|
|
301 |
* HAVING-Bedingung, welche nur in die nachfolgende Query übernommen wird, wenn ein Bestandsoperatorzeichen
|
|
|
302 |
* ausgewählt wurde, also <var>$sucheBestandsoperatorZeichen</var> nicht den Wert FALSE hat.
|
|
|
303 |
*/
|
|
|
304 |
if ( $sucheBestandsoperatorZeichen != FALSE )
|
|
|
305 |
{
|
|
|
306 |
$havingBedingung = "HAVING bestand $sucheBestandsoperatorZeichen $sucheBestand";
|
|
|
307 |
}
|
|
|
308 |
|
|
|
309 |
/**
|
|
|
310 |
* QUERY: Hole aus der Datenbank alle Artikel, die den angegebenen Parametern entsprechen.
|
|
|
311 |
*/
|
|
|
312 |
$sql = "
|
|
|
313 |
SELECT
|
|
|
314 |
SQL_CALC_FOUND_ROWS
|
|
|
315 |
a.ID as id,
|
|
|
316 |
a.kurzbezeichnung,
|
|
|
317 |
a.durchschnittliche_lieferzeit,
|
|
|
318 |
a.jahreszinssatz,
|
|
|
319 |
a.mindestbestand,
|
|
|
320 |
SUM(b.menge) AS bestand
|
|
|
321 |
FROM
|
|
|
322 |
artikel AS a LEFT JOIN lagerbewegungen as b
|
|
|
323 |
ON a.ID = b.artikel
|
|
|
324 |
WHERE
|
|
|
325 |
a.kurzbezeichnung LIKE '%$sucheArtikelname%'
|
|
|
326 |
OR a.ID = '$sucheArtikelname'
|
|
|
327 |
GROUP BY
|
|
|
328 |
a.ID
|
|
|
329 |
$havingBedingung
|
|
|
330 |
ORDER BY
|
|
|
331 |
a.kurzbezeichnung $sucheSortierung
|
|
|
332 |
LIMIT
|
|
|
333 |
".$sucheArtikelanzahl['start'].", ".$sucheArtikelProSeite."
|
|
|
334 |
;";
|
|
|
335 |
|
|
|
336 |
/**
|
|
|
337 |
* QUERY ausführen.
|
|
|
338 |
*/
|
|
|
339 |
$result = mysql_query( $sql ) or die( mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql );
|
|
|
340 |
|
|
|
341 |
/**
|
|
|
342 |
* Speichere alle zurückgegebenen Artikeldaten in einem Loop-Array mit den Sub-Arrays: id, kurzbezeichnung, durchschnittliche_lieferzeit,
|
|
|
343 |
* jahreszinssatz und mindestbestand.
|
|
|
344 |
*/
|
|
|
345 |
for ( $i = 0; $row = mysql_fetch_assoc($result); $i++ )
|
|
|
346 |
{
|
|
|
347 |
$sucheArtikel[$i]['id'] = $row['id'];
|
|
|
348 |
$sucheArtikel[$i]['kurzbezeichnung'] = $row['kurzbezeichnung'];
|
|
|
349 |
$sucheArtikel[$i]['mindestbestand'] = $row['mindestbestand'];
|
|
|
350 |
}
|
|
|
351 |
|
|
|
352 |
/**
|
|
|
353 |
* Hole die Anzahl der Artikel, die den Suchparametern entsprechen.
|
|
|
354 |
*/
|
|
|
355 |
$sql = "SELECT FOUND_ROWS() AS sucheAnzahlArtikel";
|
|
|
356 |
|
|
|
357 |
/**
|
|
|
358 |
* QUERY ausführen.
|
|
|
359 |
*/
|
|
|
360 |
$result = mysql_query( $sql ) or die( mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql );
|
|
|
361 |
|
|
|
362 |
/**
|
|
|
363 |
* QUERY in ein Assoziatives Array speichern.
|
|
|
364 |
*/
|
|
|
365 |
$row = mysql_fetch_assoc($result);
|
|
|
366 |
|
|
|
367 |
/**
|
|
|
368 |
* Die Anzahl der Artikel, die den Suchparametern entsprechen.
|
|
|
369 |
*/
|
|
|
370 |
$sucheAnzahlArtikel = $row['sucheAnzahlArtikel'];
|
|
|
371 |
|
|
|
372 |
/**
|
|
|
373 |
* Prüfe, ob die Anzahl der Artikel ohne Rest durch die Anzahl der Artikel pro Seite teilbar ist.
|
|
|
374 |
*/
|
|
|
375 |
$rest = $sucheAnzahlArtikel % $sucheArtikelProSeite;
|
|
|
376 |
|
|
|
377 |
/**
|
|
|
378 |
* Sollte <var>$rest</var> größer als 0 sein, rechne die Anzahl der Artikel durch die Artikel pro Seite + 1.
|
|
|
379 |
*/
|
|
|
380 |
if ( $rest > 0 )
|
|
|
381 |
{
|
|
|
382 |
$sucheAnzahlSeiten = (int)($sucheAnzahlArtikel / $sucheArtikelProSeite) + 1;
|
|
|
383 |
}
|
|
|
384 |
else
|
|
|
385 |
{
|
|
|
386 |
$sucheAnzahlSeiten = ($sucheAnzahlArtikel / $sucheArtikelProSeite);
|
|
|
387 |
}
|
|
|
388 |
|
|
|
389 |
/**
|
|
|
390 |
* Sollte die aktuelle Seitennummer (<var>$sucheArtikelseite</var>) größer sein als die Gesamtseitenzahl (<var>$sucheAnzahlSeiten</var>),
|
|
|
391 |
* dann dekrementiere die aktuelle Seitennummer um eins.
|
|
|
392 |
*/
|
|
|
393 |
if ( $sucheArtikelseite > $sucheAnzahlSeiten )
|
|
|
394 |
{
|
|
|
395 |
$sucheArtikelseite--;
|
|
|
396 |
}
|
|
|
397 |
|
|
|
398 |
/**
|
|
|
399 |
* Sollte die aktuelle Seitennummer (<var>$sucheArtikelseite</var>) kleiner sein als eins,
|
|
|
400 |
* dann inkrementiere die aktuelle Seitennummer um eins.
|
|
|
401 |
*/
|
|
|
402 |
if ( $sucheArtikelseite < 1 )
|
|
|
403 |
{
|
|
|
404 |
$sucheArtikelseite++;
|
|
|
405 |
}
|
|
|
406 |
|
|
|
407 |
/**
|
|
|
408 |
* Berechnung aller Bestände der Artikel der aktuellen Seite.
|
|
|
409 |
*/
|
|
|
410 |
for ( $i = 0; $i < sizeof($sucheArtikel); $i++ )
|
|
|
411 |
{
|
|
|
412 |
/**
|
|
|
413 |
* QUERY: Berechnung des aktuellen Bestands für den <var>$sucheArtikel[$i]['id']</var>.
|
|
|
414 |
*/
|
|
|
415 |
$sql = "
|
|
|
416 |
SELECT
|
|
|
417 |
SUM(menge) as bestand
|
|
|
418 |
FROM
|
|
|
419 |
lagerbewegungen
|
|
|
420 |
WHERE
|
|
|
421 |
artikel = ".$sucheArtikel[$i]['id']."
|
|
|
422 |
;";
|
|
|
423 |
|
|
|
424 |
/**
|
|
|
425 |
* QUERY ausführen.
|
|
|
426 |
*/
|
|
|
427 |
$result = mysql_query( $sql ) or die( mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql );
|
|
|
428 |
|
|
|
429 |
/**
|
|
|
430 |
* Das Ergebnis der QUERY in einem assoziativen Array speichern.
|
|
|
431 |
*/
|
|
|
432 |
$row = mysql_fetch_assoc($result);
|
|
|
433 |
|
|
|
434 |
/**
|
|
|
435 |
* Speicherung des Bestands in <var>$sucheArtikel[$i]['bestand']</var>
|
|
|
436 |
*/
|
|
|
437 |
$sucheArtikel[$i]['bestand'] = $row['bestand'];
|
|
|
438 |
}
|
|
|
439 |
|
|
|
440 |
/**
|
|
|
441 |
* Übergabe der Artikel- und Formulardaten an Smarty.
|
|
|
442 |
*/
|
|
|
443 |
/**
|
|
|
444 |
* Übergabe Artikelname
|
|
|
445 |
*/
|
|
|
446 |
$GLOBALS["ui"]->assign("sucheArtikelname", $sucheArtikelname);
|
|
|
447 |
|
|
|
448 |
/**
|
|
|
449 |
* Übergabe Bestand
|
|
|
450 |
*/
|
|
|
451 |
$GLOBALS["ui"]->assign("sucheBestand", $sucheBestand);
|
|
|
452 |
|
|
|
453 |
/**
|
|
|
454 |
* Übergabe Bestandsoperatorennummer
|
|
|
455 |
*/
|
|
|
456 |
$GLOBALS["ui"]->assign("sucheBestandsoperator", $sucheBestandsoperator);
|
|
|
457 |
|
|
|
458 |
/**
|
|
|
459 |
* Übergabe Meldebestand-größer-als-Bestand-Option
|
|
|
460 |
*/
|
|
|
461 |
$GLOBALS["ui"]->assign("sucheMeldebestandGroesserBestand", $sucheMeldebestandGroesserBestand);
|
|
|
462 |
|
|
|
463 |
/**
|
|
|
464 |
* Übergabe Sortierung
|
|
|
465 |
*/
|
|
|
466 |
$GLOBALS["ui"]->assign("sucheSortierung", $sucheSortierung);
|
|
|
467 |
|
|
|
468 |
/**
|
|
|
469 |
* Übergabe Nummer der aktuellen Seite
|
|
|
470 |
*/
|
|
|
471 |
$GLOBALS["ui"]->assign("sucheArtikelseite", $sucheArtikelseite);
|
|
|
472 |
|
|
|
473 |
/**
|
|
|
474 |
* Übergabe der Anzahl der Seiten
|
|
|
475 |
*/
|
|
|
476 |
$GLOBALS["ui"]->assign("sucheAnzahlSeiten", $sucheAnzahlSeiten);
|
|
|
477 |
|
|
|
478 |
/**
|
|
|
479 |
* Übergabe des Artikel-Arrays
|
|
|
480 |
*/
|
|
|
481 |
$GLOBALS["ui"]->assign("artikelLoop", $sucheArtikel);
|
|
|
482 |
}
|
|
|
483 |
|
|
|
484 |
/**
|
|
|
485 |
* Wenn <var>$_GET['action']</var> gleich "buchung" ist, dann führe diesen Codeblock aus.
|
|
|
486 |
*/
|
|
|
487 |
if ( $_GET['action'] == "buchung" )
|
|
|
488 |
{
|
|
|
489 |
/**
|
|
|
490 |
* QUERY: Hole alle Lieferanten des Kunden, die nicht gesperrt sind.
|
|
|
491 |
*/
|
|
|
492 |
$sql = "
|
|
|
493 |
SELECT
|
|
|
494 |
ID as id,
|
|
|
495 |
Name as name
|
|
|
496 |
FROM
|
|
|
497 |
Firma
|
|
|
498 |
WHERE
|
|
|
499 |
gesperrt = 'nein'
|
|
|
500 |
";
|
|
|
501 |
/**
|
|
|
502 |
* QUERY ausführen.
|
|
|
503 |
*/
|
|
|
504 |
$result = mysql_query( $sql ) or die( mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql );
|
|
|
505 |
|
|
|
506 |
/**
|
|
|
507 |
* QUERY in ein Assoziatives Array speichern.
|
|
|
508 |
*/
|
|
|
509 |
for ( $i = 0; $row = mysql_fetch_assoc($result); $i++ )
|
|
|
510 |
{
|
|
|
511 |
$eingangsbuchungLieferanten[$i]['id'] = $row['id'];
|
|
|
512 |
$eingangsbuchungLieferanten[$i]['name'] = $row['name'];
|
|
|
513 |
}
|
|
|
514 |
|
|
|
515 |
/**
|
|
|
516 |
* Übergabe der Lieferanten an Smarty.
|
|
|
517 |
*/
|
|
|
518 |
$GLOBALS["ui"]->assign("lieferantenLoop", $eingangsbuchungLieferanten);
|
|
|
519 |
}
|
|
|
520 |
|
|
|
521 |
/**
|
|
|
522 |
* Wenn <var>$_GET['action']</var> gleich "artikel" ist, dann führe diesen Codeblock aus.
|
|
|
523 |
*/
|
|
|
524 |
if ( $_GET['action'] == "artikel" )
|
|
|
525 |
{
|
|
|
526 |
/**
|
|
|
527 |
* Prüfe ob eine <var>$_GET['id']</var> korrekt übergeben wurde.
|
|
|
528 |
*/
|
|
|
529 |
if ( empty($_GET['id']) )
|
|
|
530 |
{
|
|
|
531 |
/**
|
|
|
532 |
* Abbruch des Skripts.
|
|
|
533 |
*/
|
|
|
534 |
die ("<strong>Fehler:</strong> Sie haben diese Seite ohne id-Parameter aufgerufen!");
|
|
|
535 |
}
|
|
|
536 |
|
|
|
537 |
/**
|
|
|
538 |
* Wenn "Artikeldaten aktualisieren" geklickt wurde updatete in der Datenbank folgende Attribute des Artikels:
|
|
|
539 |
* mindestbestand, durchschnittliche_lieferzeit und jahreszinssatz.
|
|
|
540 |
*/
|
|
|
541 |
if ( $_POST['artikeldaten_eintragen'] )
|
|
|
542 |
{
|
|
|
543 |
/**
|
|
|
544 |
* QUERY: UPDATE der Artikeltabelle.
|
|
|
545 |
*/
|
|
|
546 |
$sql = "
|
|
|
547 |
UPDATE
|
|
|
548 |
artikel
|
|
|
549 |
SET
|
|
|
550 |
mindestbestand = '".$_POST['mindestbestand']."',
|
|
|
551 |
durchschnittliche_lieferzeit = '".$_POST['durchschnittlicheLieferzeit']."',
|
|
|
552 |
jahreszinssatz = '".$_POST['jahreszinssatz']."'
|
|
|
553 |
WHERE
|
|
|
554 |
ID = ".$_GET['id']."
|
|
|
555 |
;";
|
|
|
556 |
|
|
|
557 |
/**
|
|
|
558 |
* QUERY ausführen.
|
|
|
559 |
*/
|
|
|
560 |
mysql_query( $sql ) or die( mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql );
|
|
|
561 |
}
|
|
|
562 |
|
|
|
563 |
/**
|
|
|
564 |
* QUERY: Hole folgende Daten des Artikel: ID (Artikelnummer), kurzbezeichnung (Artikelbezeichnung),
|
|
|
565 |
* durschnittliche_lieferzeit (durchschnittliche Lieferzeit), jahreszinssatz (Jahreszinssatz), mindestbestand (Mindestbestand).
|
|
|
566 |
*/
|
|
|
567 |
$sql = "
|
|
|
568 |
SELECT
|
|
|
569 |
a.ID AS id,
|
|
|
570 |
a.kurzbezeichnung AS artikelbezeichnung,
|
|
|
571 |
a.durchschnittliche_lieferzeit AS durchschnittlicheLieferzeit,
|
|
|
572 |
a.jahreszinssatz,
|
|
|
573 |
a.mindestbestand,
|
|
|
574 |
SUM(b.menge) AS bestand
|
|
|
575 |
FROM
|
|
|
576 |
artikel AS a LEFT JOIN lagerbewegungen AS b
|
|
|
577 |
ON a.ID = b.artikel
|
|
|
578 |
WHERE
|
|
|
579 |
a.ID = ".$_GET['id']."
|
|
|
580 |
GROUP BY
|
|
|
581 |
id
|
|
|
582 |
;";
|
|
|
583 |
|
|
|
584 |
/**
|
|
|
585 |
* QUERY ausführen.
|
|
|
586 |
*/
|
|
|
587 |
$result = mysql_query( $sql ) or die( mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql );
|
|
|
588 |
|
|
|
589 |
/**
|
|
|
590 |
* Prüfe ob keine Artikeldaten zurückgegeben wurden indem ein assoziatives Array mit den Rückgabewerten gefüllt wird.
|
|
|
591 |
*/
|
|
|
592 |
if ( !$artikelArtikeldaten = mysql_fetch_assoc($result) )
|
|
|
593 |
{
|
|
|
594 |
/**
|
|
|
595 |
* Abbruch des Skripts.
|
|
|
596 |
*/
|
|
|
597 |
die ("<strong>Fehler:</strong> Der Artikel (ID=".$_GET['id'].") konnte nicht gefunden werden!");
|
|
|
598 |
}
|
|
|
599 |
|
|
|
600 |
/**
|
|
|
601 |
* Berechnung des durchschnittlichen Lagerbestand.
|
|
|
602 |
*/
|
|
|
603 |
/**
|
|
|
604 |
* QUERY: Hole alle Lagerbewegungen des Artikels der letzten 360 Tage aus der Datenbank.
|
|
|
605 |
*/
|
|
|
606 |
$sql = "
|
|
|
607 |
SELECT
|
|
|
608 |
b.eintragsdatum AS datum,
|
|
|
609 |
a.menge
|
|
|
610 |
FROM
|
|
|
611 |
lagerbewegungen AS a INNER JOIN buchungen AS b
|
|
|
612 |
ON a.buchungen = b.ID
|
|
|
613 |
WHERE
|
|
|
614 |
a.artikel = ".$_GET['id']."
|
|
|
615 |
ORDER BY
|
|
|
616 |
datum DESC
|
|
|
617 |
;";
|
|
|
618 |
|
|
|
619 |
/**
|
|
|
620 |
* QUERY ausführen.
|
|
|
621 |
*/
|
|
|
622 |
$result = mysql_query( $sql ) or die( mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql );
|
|
|
623 |
|
|
|
624 |
/**
|
|
|
625 |
* Speicherung aller Lagerbewegungen als LOOP-Array mit Datum und Menge.
|
|
|
626 |
*/
|
|
|
627 |
for ( $i = 0; $row = mysql_fetch_assoc($result); $i++ )
|
|
|
628 |
{
|
|
|
629 |
$lagerbewegungen[$i]['datum'] = date("d.m.Y H:i:s", strtotime($row['datum']));
|
|
|
630 |
$lagerbewegungen[$i]['menge'] = $row['menge'];
|
|
|
631 |
}
|
|
|
632 |
|
|
|
633 |
/**
|
|
|
634 |
* Die Lagerbewegungen werden zusätzlich in eine zweite Variable gespeichert,
|
|
|
635 |
* damit diese unverändert an Smarty übergeben werden können, da die Lagerbewegungen durch die Berechnung
|
|
|
636 |
* des durchschnittlichen Lagerbestands verfälscht werden würden.
|
|
|
637 |
*/
|
|
|
638 |
$lagerbewegungenArtikel = $lagerbewegungen;
|
|
|
639 |
|
|
|
640 |
/**
|
|
|
641 |
* Addition aller Bestände eines <b>jeden</b> Tages von Beginn bis Ende der Buchungen.
|
|
|
642 |
* Gespeichert wird dies in der Variable <var>$zwischenspeicher</var>.
|
|
|
643 |
*/
|
|
|
644 |
for ( $i = 0; $i < sizeof($lagerbewegungen); $i++ )
|
|
|
645 |
{
|
|
|
646 |
/**
|
|
|
647 |
* Letzter Lagerbewegungseintrag noch nicht erreicht?
|
|
|
648 |
*/
|
|
|
649 |
if ( $i+1 != sizeof($lagerbewegungen) )
|
|
|
650 |
{
|
|
|
651 |
/**
|
|
|
652 |
* Zwischenspeichern des i. Datums im Format "YYYY-MM-TT", vorher "YYYY-MM-TT HH:ii:ss".
|
|
|
653 |
*/
|
|
|
654 |
$temp = explode(" ", $lagerbewegungen[$i]['datum']);
|
|
|
655 |
|
|
|
656 |
/**
|
|
|
657 |
* <var>$tempDatum[0]</var> enthält den Timestamp der i. Lagerbewegung.
|
|
|
658 |
*/
|
|
|
659 |
$tempDatum[0] = strtotime($temp[0]);
|
|
|
660 |
|
|
|
661 |
/**
|
|
|
662 |
* Zwischenspeichern des i+1. Datums im Format "YYYY-MM-TT", vorher "YYYY-MM-TT HH:ii:ss".
|
|
|
663 |
*/
|
|
|
664 |
$temp = explode(" ", $lagerbewegungen[$i+1]['datum']);
|
|
|
665 |
|
|
|
666 |
/**
|
|
|
667 |
* <var>$tempDatum[0]</var> enthält den Timestamp der i+1. Lagerbewegung.
|
|
|
668 |
*/
|
|
|
669 |
$tempDatum[1] = strtotime($temp[0]);
|
|
|
670 |
|
|
|
671 |
/**
|
|
|
672 |
* Ist das i. Datum gleich dem i+1. Datum?
|
|
|
673 |
*/
|
|
|
674 |
if ( $tempDatum[0] == $tempDatum[1] )
|
|
|
675 |
{
|
|
|
676 |
/**
|
|
|
677 |
* Addition der Menge der i. Lagerbewegungen mit der i+1 und Überschreibung der i+1. Menge.
|
|
|
678 |
*/
|
|
|
679 |
$lagerbewegungen[$i+1]['menge'] += $lagerbewegungen[$i]['menge'];
|
|
|
680 |
|
|
|
681 |
/**
|
|
|
682 |
* Setzte die Menge der i. Lagerbewegung auf 0.
|
|
|
683 |
*/
|
|
|
684 |
$lagerbewegungen[$i]['menge'] = 0;
|
|
|
685 |
|
|
|
686 |
/**
|
|
|
687 |
* Setzte ein Flag für die i+1. Lagerbewegung.
|
|
|
688 |
*/
|
|
|
689 |
$lagerbewegungen[$i+1]['flag'] = 1;
|
|
|
690 |
}
|
|
|
691 |
else
|
|
|
692 |
{
|
|
|
693 |
/**
|
|
|
694 |
* Addiere auf die Variable <var>aktuellerBestand</var> den Wert von <var>$lagerbewegungen[$i]['menge']</var>.
|
|
|
695 |
*/
|
|
|
696 |
$aktuellerBestand += $lagerbewegungen[$i]['menge'];
|
|
|
697 |
|
|
|
698 |
/**
|
|
|
699 |
* Ist das Flag <var>$lagerbewegungen[$i]['flag']</var> gesetzt?
|
|
|
700 |
*/
|
|
|
701 |
if ( $lagerbewegungen[$i]['flag'] )
|
|
|
702 |
{
|
|
|
703 |
/**
|
|
|
704 |
* Ziehe vom Datum der i+1. Lagerbewegung das der i. ab und speichere dies in <var>$temp</var>.
|
|
|
705 |
*/
|
|
|
706 |
$temp = $tempDatum[1] - $tempDatum[0];
|
|
|
707 |
|
|
|
708 |
/**
|
|
|
709 |
* Wandle <var>$temp</var> von Timestamp auf Tage um.
|
|
|
710 |
*/
|
|
|
711 |
$temp = ((($temp / 60) / 60) / 24);
|
|
|
712 |
|
|
|
713 |
/**
|
|
|
714 |
* Speichere in der Variable <var>$zwischenspeicher</var> das Ergebnis der Multiplikation
|
|
|
715 |
* von <var>$temp</var> (Anzahl der Tage) und <var>$aktuellerBestand</var>.
|
|
|
716 |
*/
|
|
|
717 |
$zwischenspeicher += $aktuellerBestand * $temp;
|
|
|
718 |
}
|
|
|
719 |
else
|
|
|
720 |
{
|
|
|
721 |
/**
|
|
|
722 |
* Ist <var>$i</var> gleich 0?
|
|
|
723 |
*/
|
|
|
724 |
if ( $i == 0 )
|
|
|
725 |
{
|
|
|
726 |
/**
|
|
|
727 |
* Ziehe vom Datum der i+1. Lagerbewegung das der i. ab und speichere dies in <var>$temp</var>.
|
|
|
728 |
*/
|
|
|
729 |
$temp = $tempDatum[1] - $tempDatum[0];
|
|
|
730 |
|
|
|
731 |
/**
|
|
|
732 |
* Wandle <var>$temp</var> von Timestamp auf Tage um.
|
|
|
733 |
*/
|
|
|
734 |
$temp = ((($temp / 60) / 60) / 24);
|
|
|
735 |
|
|
|
736 |
/**
|
|
|
737 |
* Setzte die Variable <var>$zwischenspeicher</var> auf die Menge der i. Lagerbewegung x die Anzahl an Tagen
|
|
|
738 |
* bis zur i+1 Lagerbewegung.
|
|
|
739 |
*/
|
|
|
740 |
$zwischenspeicher = $lagerbewegungen[$i]['menge'] * $temp;
|
|
|
741 |
}
|
|
|
742 |
else
|
|
|
743 |
{
|
|
|
744 |
/**
|
|
|
745 |
* Überschreibe den Wert von <var>$zwischenspeicher</var> mit dem Ergebnis der Addtion
|
|
|
746 |
* von <var>$zwischenspeicher</var> und <var>$aktuellerBestand</var>.
|
|
|
747 |
*/
|
|
|
748 |
$zwischenspeicher += $aktuellerBestand;
|
|
|
749 |
}
|
|
|
750 |
}
|
|
|
751 |
}
|
|
|
752 |
}
|
|
|
753 |
else
|
|
|
754 |
{
|
|
|
755 |
/**
|
|
|
756 |
* Addiere zum Wert von <var>$aktuellerBestand</var> den Wert von <var>$lagerbewegungen[$i]['menge']</var>.
|
|
|
757 |
*/
|
|
|
758 |
$aktuellerBestand += $lagerbewegungen[$i]['menge'];
|
|
|
759 |
|
|
|
760 |
/**
|
|
|
761 |
* Addiere zum Wert von <var>$zwischenspeicher</var> den Wert von <var>$aktuellerBestand</var>.
|
|
|
762 |
*/
|
|
|
763 |
$zwischenspeicher += $aktuellerBestand;
|
|
|
764 |
}
|
|
|
765 |
}
|
|
|
766 |
|
|
|
767 |
/**
|
|
|
768 |
* Zwischenspeichern des 1. Datums im Format "YYYY-MM-TT", vorher "YYYY-MM-TT HH:ii:ss".
|
|
|
769 |
*/
|
|
|
770 |
$temp = explode(" ", $lagerbewegungen[0]['datum']);
|
|
|
771 |
|
|
|
772 |
/**
|
|
|
773 |
* <var>$tempDatum[0]</var> enthält den Timestamp der 1. Lagerbewegung.
|
|
|
774 |
*/
|
|
|
775 |
$tempDatum[0] = strtotime($temp[0]);
|
|
|
776 |
|
|
|
777 |
/**
|
|
|
778 |
* Zwischenspeichern des 1. Datums im Format "YYYY-MM-TT", vorher "YYYY-MM-TT HH:ii:ss".
|
|
|
779 |
*/
|
|
|
780 |
$temp = explode(" ", $lagerbewegungen[sizeof($lagerbewegungen)-1]['datum']);
|
|
|
781 |
|
|
|
782 |
/**
|
|
|
783 |
* <var>$tempDatum[1]</var> enthält den Timestamp der letzten Lagerbewegung.
|
|
|
784 |
*/
|
|
|
785 |
$tempDatum[1] = strtotime($temp[0]);
|
|
|
786 |
|
|
|
787 |
/**
|
|
|
788 |
* Berechne den Zeitraum in Sek. zwischen der ersten und der letzten Lagerbewegung.
|
|
|
789 |
*/
|
|
|
790 |
$temp = $tempDatum[1] - $tempDatum[0];
|
|
|
791 |
|
|
|
792 |
/**
|
|
|
793 |
* Wandle den Zeitraum zwischen der ersten und der letzten Lagerbewegung in Tage um.
|
|
|
794 |
*/
|
|
|
795 |
$temp = ((($temp / 60) / 60) / 24);
|
|
|
796 |
|
|
|
797 |
/**
|
|
|
798 |
* Berechne den durchschnittlichen Lagerbestand.
|
|
|
799 |
*/
|
|
|
800 |
@$durschnittlicherBestand = $zwischenspeicher / ($temp+1);
|
|
|
801 |
|
|
|
802 |
/**
|
|
|
803 |
* Berechnung des Wareneinsatz.
|
|
|
804 |
* Für die Berechnung des Wareneinsatzes werden alle Warenausgänge der letzten 360 Tage miteinander addiert.
|
|
|
805 |
*/
|
|
|
806 |
/**
|
|
|
807 |
* QUERY: Hole alle Ausgänge des Artikels mit der ID <var>$_GET['id']</var>.
|
|
|
808 |
*/
|
|
|
809 |
$sql = "
|
|
|
810 |
SELECT
|
|
|
811 |
SUM(a.menge) as wareneinsatz
|
|
|
812 |
FROM
|
|
|
813 |
lagerbewegungen as a INNER JOIN buchungen as b
|
|
|
814 |
ON a.buchungen = b.ID
|
|
|
815 |
WHERE
|
|
|
816 |
a.artikel = ".$_GET['id']."
|
|
|
817 |
AND a.menge < 0
|
|
|
818 |
AND b.eintragsdatum > NOW() - INTERVAL 360 DAY
|
|
|
819 |
;";
|
|
|
820 |
|
|
|
821 |
/**
|
|
|
822 |
* QUERY ausführen.
|
|
|
823 |
*/
|
|
|
824 |
$result = mysql_query( $sql ) or die( mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql );
|
|
|
825 |
|
|
|
826 |
/**
|
|
|
827 |
* Speichere das Ergebnis der QUERY in einem assoziativen Array.
|
|
|
828 |
*/
|
|
|
829 |
$row = mysql_fetch_assoc($result);
|
|
|
830 |
|
|
|
831 |
/**
|
|
|
832 |
* Der Wareneinsatz der letzten 360 Tage des Artikels mit der ID <var>$_GET['id']</var>.
|
|
|
833 |
*/
|
|
|
834 |
$wareneinsatz = abs($row['wareneinsatz']);
|
|
|
835 |
|
|
|
836 |
/**
|
|
|
837 |
* Berechnung der Umschlagshäufigkeit.
|
|
|
838 |
*/
|
|
|
839 |
/**
|
|
|
840 |
* QUERY: Hole das höchste und das niedrigste Datum des letzten Jahres der Lagerbewegungen des Artikels mit der ID <var>$_GET['id']</var>.
|
|
|
841 |
*/
|
|
|
842 |
$sql = "
|
|
|
843 |
SELECT
|
|
|
844 |
MIN(b.eintragsdatum) AS minEintragsdatum,
|
|
|
845 |
MAX(b.eintragsdatum) AS maxEintragsdatum
|
|
|
846 |
FROM
|
|
|
847 |
lagerbewegungen AS a INNER JOIN buchungen AS b
|
|
|
848 |
ON a.buchungen = b.ID
|
|
|
849 |
WHERE
|
|
|
850 |
artikel = ".$_GET['id']."
|
|
|
851 |
AND b.eintragsdatum > NOW() - INTERVAL 360 DAY
|
|
|
852 |
;";
|
|
|
853 |
|
|
|
854 |
/**
|
|
|
855 |
* QUERY ausführen
|
|
|
856 |
*/
|
|
|
857 |
$result = mysql_query( $sql ) or die( mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql );
|
|
|
858 |
|
|
|
859 |
/**
|
|
|
860 |
* Speichere das Ergebnis der QUERY in einem assoziativen Array.
|
|
|
861 |
*/
|
|
|
862 |
$row = mysql_fetch_assoc($result);
|
|
|
863 |
|
|
|
864 |
/**
|
|
|
865 |
* Berechne den Zeitraum zwischen <var>$row['minEintragsdatum']</var> und <var>$row['maxEintragsdatum']</var> in Tagen.
|
|
|
866 |
*/
|
|
|
867 |
$temp = explode(" ", $row['minEintragsdatum']);
|
|
|
868 |
$minEintragsdatum = strtotime($temp[0]);
|
|
|
869 |
|
|
|
870 |
$temp = explode(" ", $row['maxEintragsdatum']);
|
|
|
871 |
$maxEintragsdatum = strtotime($temp[0]);
|
|
|
872 |
|
|
|
873 |
$zeitraumEintragsdatum = (((($maxEintragsdatum - $minEintragsdatum) / 60) / 60) / 24) + 1;
|
|
|
874 |
|
|
|
875 |
/**
|
|
|
876 |
* Rechne den Wareneinsatz auf das Jahr hoch.
|
|
|
877 |
*/
|
|
|
878 |
$wareneinsatz *= (360 / $zeitraumEintragsdatum);
|
|
|
879 |
|
|
|
880 |
/**
|
|
|
881 |
* Berechne die Umschlagshäufigkeit.
|
|
|
882 |
*/
|
|
|
883 |
@$umschlagshaeufigkeit = $wareneinsatz / $durschnittlicherBestand;
|
|
|
884 |
|
|
|
885 |
/**
|
|
|
886 |
* Berechne die durchschnittliche Lagerdauer.
|
|
|
887 |
*/
|
|
|
888 |
@$durchschnittlicheLagerdauer = 360 / $umschlagshaeufigkeit;
|
|
|
889 |
|
|
|
890 |
/**
|
|
|
891 |
* Berechne den Lagerzinssatz.
|
|
|
892 |
*/
|
|
|
893 |
$lagerzinssatz = $artikelArtikeldaten['jahreszinssatz'] * $umschlagshaeufigkeit / 360;
|
|
|
894 |
|
|
|
895 |
/**
|
|
|
896 |
* Berechne die Lagerzinskosten.
|
|
|
897 |
*/
|
|
|
898 |
$lagerzinskosten = $lagerzinssatz * $durschnittlicherBestand / 100;
|
|
|
899 |
|
|
|
900 |
/**
|
|
|
901 |
* Berechne den Meldebestand.
|
|
|
902 |
*/
|
|
|
903 |
$meldebestand = $artikelArtikeldaten['mindestbestand'] * ($wareneinsatz / 360);
|
|
|
904 |
|
|
|
905 |
/**
|
|
|
906 |
* Berechnung des verfügbaren Bestands.
|
|
|
907 |
*/
|
|
|
908 |
$bestandsInfo = getArtikelbestandsInfo($artikelArtikeldaten['id']);
|
|
|
909 |
$verfuegbarerBestand = $bestandsInfo['verfuegbareMenge'];
|
|
|
910 |
|
|
|
911 |
/**
|
|
|
912 |
* Übergabe Artikeldaten an Smarty.
|
|
|
913 |
*/
|
|
|
914 |
$GLOBALS["ui"]->assign("artikelArtikeldaten", $artikelArtikeldaten);
|
|
|
915 |
|
|
|
916 |
/**
|
|
|
917 |
* Übergabe Lagerbewegungsdaten an Smarty.
|
|
|
918 |
*/
|
|
|
919 |
$GLOBALS["ui"]->assign("lagerbewegungenArtikel", $lagerbewegungenArtikel);
|
|
|
920 |
|
|
|
921 |
/**
|
|
|
922 |
* Übergabe des durchschnittlichen Bestands an Smarty.
|
|
|
923 |
*/
|
|
|
924 |
$GLOBALS["ui"]->assign("durschnittlicherBestand", number_format($durschnittlicherBestand, 2, ",", "."));
|
|
|
925 |
|
|
|
926 |
/**
|
|
|
927 |
* Übergabe des Wareneinsatz an Smarty.
|
|
|
928 |
*/
|
|
|
929 |
$GLOBALS["ui"]->assign("wareneinsatz", $wareneinsatz);
|
|
|
930 |
|
|
|
931 |
/**
|
|
|
932 |
* Übergabe der durchschnittlichen Lagerdauer an Smarty.
|
|
|
933 |
*/
|
|
|
934 |
$GLOBALS["ui"]->assign("durchschnittlicheLagerdauer", number_format($durchschnittlicheLagerdauer, 2, ",", "."));
|
|
|
935 |
|
|
|
936 |
/**
|
|
|
937 |
* Übergabe der Umschlagshäufigkeit an Smarty.
|
|
|
938 |
*/
|
|
|
939 |
$GLOBALS["ui"]->assign("umschlagshaeufigkeit", number_format($umschlagshaeufigkeit, 2, ",", "."));
|
|
|
940 |
|
|
|
941 |
/**
|
|
|
942 |
* Übergabe des Lagerzinssatz an Smarty.
|
|
|
943 |
*/
|
|
|
944 |
$GLOBALS["ui"]->assign("lagerzinssatz", number_format($lagerzinssatz, 2, ",", "."));
|
|
|
945 |
|
|
|
946 |
/**
|
|
|
947 |
* Übergabe der Lagerzinskosten an Smarty.
|
|
|
948 |
*/
|
|
|
949 |
$GLOBALS["ui"]->assign("lagerzinskosten", number_format($lagerzinskosten, 2, ",", "."));
|
|
|
950 |
|
|
|
951 |
/**
|
|
|
952 |
* Übergabe des Meldebestand an Smarty.
|
|
|
953 |
*/
|
|
|
954 |
$GLOBALS["ui"]->assign("meldebestand", $meldebestand);
|
|
|
955 |
|
|
|
956 |
/**
|
|
|
957 |
* Übergabe des verfügbaren Bestands.
|
|
|
958 |
*/
|
|
|
959 |
$GLOBALS["ui"]->assign('verfuegbarerBestand', $verfuegbarerBestand);
|
|
|
960 |
|
|
|
961 |
}
|
|
|
962 |
/**
|
|
|
963 |
* Auswahl des Smarty-Templates.
|
|
|
964 |
*/
|
|
|
965 |
switch ( $_REQUEST['action'] )
|
|
|
966 |
{
|
|
|
967 |
case 'uebersicht':
|
|
|
968 |
$GLOBALS["ui"]->display( "lagerwirtschaft/uebersicht.tpl" );
|
|
|
969 |
break;
|
|
|
970 |
|
|
|
971 |
case 'buchung':
|
|
|
972 |
$GLOBALS["ui"]->display( "lagerwirtschaft/buchung.tpl" );
|
|
|
973 |
break;
|
|
|
974 |
|
|
|
975 |
case 'artikel':
|
|
|
976 |
$GLOBALS["ui"]->display( "lagerwirtschaft/artikel.tpl" );
|
|
|
977 |
break;
|
|
|
978 |
|
|
|
979 |
default:
|
|
|
980 |
unset( $_SESSION[F_NAME] );
|
|
|
981 |
$GLOBALS["ui"]->display( "lagerwirtschaft/uebersicht.tpl" );
|
|
|
982 |
}
|
|
|
983 |
?>
|