
meillo@0: \section{Das Einkaufsinformationssystem}
meillo@0: 
meillo@0: 
meillo@0: Dieses Programm umfasst Reports aus den Bereichen
meillo@0: \begin{itemize}
meillo@0:   \item Lieferantenanalysen
meillo@0:   \item Artikelanalysen
meillo@0:   \item Tagesgeschäft
meillo@0:   \item Fehlteilmanagement
meillo@0: \end{itemize}
meillo@0: Die ersten zwei Bereiche wurden von meinem Vorgänger schon fertig gestellt. Das Tagesgeschäft war meine erste Aufgabe.
meillo@0: Es war gut an einem bereits begonnen Programm weiterzumachen, da das im Normalfall einfach als selbst von Grund auf Entwerfen ist. Gerade wenn man sich mit dem System noch nicht besonders gut auskennt.
meillo@0: 
meillo@0: 
meillo@0: 
meillo@0: 
meillo@0: 
meillo@0: 
meillo@0: \subsection{Tagesgeschäft}
meillo@0: 
meillo@0: \begin{figure}[hbt]
meillo@0:   \centering
meillo@0:   \includegraphics[width=10cm]{Pics/eis-tagesgeschaeft.png}
meillo@0:   \caption{Die Eingabemaske des Tagesgeschäft-Programmteils}\label{Fig:eis-tagesgeschaeft}
meillo@0: \end{figure}
meillo@0: 
meillo@0: Der Reiter \textit{Tagesgeschäft} enthält im oberen Bereich Formularfelder mit denen die Daten eingeschränkt werden können. Auf diese Weise kann zum Beispiel nur ein bestimmter Lieferant, oder nur eine Gruppe von Artikeln betrachtet werden. Einzelne Einschränkungsfelder sind je nach gewähltem Report eventuell auch deaktiviert. So macht zum Beispiel beim \textit{Herstellkosten-Check}\footnote{Eine Auflistung von Artikeln deren Soll-Herstellkosten oder letzter Einkaufspreis mehr als 5\% von den Standard-Herstellkosten abweichen} eine Einschränkung nach Lieferant oder Einkäufer keinen Sinn, da hier die Artikel ohne sonstigen Zusammenhang betrachtet werden.
meillo@0: 
meillo@0: Bei den Bestellnummernkreisen können beliebig weitere hinzugefügt werden. Bei Lieferant und Einkäufer kann über eine Suchfunktion die Lieferanten-/Einkäufer-Nummer anhand des Namens ermittelt werden. Und bei manchen Reports können die Datensätze zeitlich begrenzt werden.
meillo@0: 
meillo@0: Ich möchte nun zwei Reports näher vorstellen.
meillo@0: 
meillo@0: 
meillo@0: 
meillo@0: \subsubsection{Bestellobligoanalyse}
meillo@0: 
meillo@0: Dieser Report stellt eine übersichtliche Darstellung der auf das Unternehmen zukommenden Kosten im Bereich Einkauf bereit.
meillo@0: Die Analyse bezieht sich erst einmal auf Kalenderwochen, aber Monatssummen sind vorhanden. Zudem sind für alle Zeiträume Drilldowns auf die konkreten Bestellungen vorhanden. Es wird also eine Bestellobligoübersicht für alle Detailstufen angeboten.
meillo@0: 
meillo@0: \begin{figure}[hbt]
meillo@0:   \centering
meillo@0:   \includegraphics[width=10cm]{Pics/eis-bestellobligo.png}
meillo@0:   \caption{Die Bestellobligoanalyse}\label{Fig:eis-bestellobligo}
meillo@0: \end{figure}
meillo@0: 
meillo@0: %\begin{figure}[hbt]
meillo@0: %  \centering
meillo@0: %  \includegraphics[width=14cm]{Pics/eis-bestellobligo-drilldown.png}
meillo@0: %  \caption{Drilldown bei der Bestellobligoanalyse}\label{Fig:eis-bestellobligo-drilldown}
meillo@0: %\end{figure}
meillo@0: 
meillo@0: Im Drilldown zeigt ein Klick auf einen Lieferantennamen seine Kontaktdaten an.
meillo@0: 
meillo@0: 
meillo@0: 
meillo@0: \subsubsection{Reale Wiederbeschaffungszeit}
meillo@0: 
meillo@0: In diesem Report kann die tatsächliche (reale) Wiederbeschaffungszeit mit der, im Artikelstamm abgelegten, geplanten Wiederbeschaffungszeit verglichen werden. Bei größeren Abweichungen, die farblich hervorgehoben sind, können dann die Artikelstammdaten korrigiert werden. Falls dies nicht gemacht würde, würde es im, vom ERP-System generierten, Produktionsplan zu Wartezeiten und Verschiebungen kommen. Um die Zeitplanung im Produktionsplan möglichst optimal zu halten (Stichwort ``Just-in-time'') müssen die benötigten Daten natürlich auch möglichst exakt sein.
meillo@0: 
meillo@0: Aber auch in der Beziehung zum Lieferant sind die reale Wiederbeschaffungszeit und ihre Abweichung zur Geplanten wichtige Daten. Mit einer anschaulichen Übersicht kann hier beim Lieferant ein gewisser Druck ausgeübt werden, falls er seine `versprochenen' Lieferzeiten nicht einhält. Oft ist bei Gesprächen mit dem Lieferant die reine Präsenz dieser Daten und ihre sofortige und detaillierte Abrufbarkeit, der entscheidende `Trumpf'.
meillo@0: 
meillo@0: Wenn Artikel von verschiedenen Lieferanten bezogen werden, dann lassen sich diese sehr schön gegenüberstellen. Und gegen die Fakten aus Abbildung \ref{Fig:eis-realewbz-drilldown} muss der untere Lieferant erst einmal etwas sagen.
meillo@0: 
meillo@0: \begin{figure}[hbt]
meillo@0:   \centering
meillo@0:   \includegraphics[width=10cm]{Pics/eis-realewbz-drilldown.png}
meillo@0:   \caption{Wiederbeschaffungszeiten eines Artikels von zwei Lieferanten}\label{Fig:eis-realewbz-drilldown}
meillo@0: \end{figure}
meillo@0: 
meillo@0: 
meillo@0: 
meillo@0: 
meillo@0: 
meillo@0: 
meillo@0: 
meillo@0: 
meillo@0: 
meillo@0: \subsection{Fehlteilmanagement}
meillo@0: 
meillo@0: \begin{figure}[hbt]
meillo@0:   \centering
meillo@0:   \includegraphics[width=10cm]{Pics/eis-fehlteilmanagement.png}
meillo@0:   \caption{Startmaske des Fehlteilmanagements}\label{Fig:eis-fehlteilmanagement}
meillo@0: \end{figure}
meillo@0: 
meillo@0: Dieser Programmteil zeigt die momentanen Fehlteile und alle dafür laufenden Bestellungen auf.
meillo@0: 
meillo@0: Als erstes wir eine Liste mit allen Projekten in denen noch Teile fehlen generiert. Von dieser kann je ein Drilldown mit einer Gruppierung nach Lieferanten oder nach Baugruppen aufgerufen werden. Die beiden Drilldowns bieten dabei leicht unterschiedliche Funktionen.
meillo@0: 
meillo@0: Da das Fehlteilmanagement mich recht lange beschäftigt hat und auch im Montageinformationssystem integriert ist, möchte ich hier etwas genauer darauf eingehen.
meillo@0: 
meillo@0: Anzumerken wäre hier vielleicht noch, dass das Fehlteilmanagement auch die komplizierteste Datenbeschaffung hatte --- Joins über zwölf Tabellen, ebensoviele Where-Bedingungen und eine getrennte Behandlung von kundenspezifischen und Standardartikeln. Hier hatte ich dann auch Performanceprobleme die nun zwar nicht ganz verschwunden, aber inzwischen in einem erträglichen Rahmen sind. Im Nachhinein gesehen, wäre es vielleicht besser gewesen, einfacheres SQL und dafür komplexeres PHP zu verwenden. Inwiefern die Geschwindigkeit dabei gestiegen (und die Lesbarkeit des Codes eventuell gesunken) wäre, darüber kann ich nur spekulieren.
meillo@0: 
meillo@0: 
meillo@0: \subsubsection{Drilldown nach Lieferanten}
meillo@0: 
meillo@0: Die Tabelle ist logisch dreigeteilt:
meillo@0: \begin{itemize}
meillo@0:   \item Die linken acht Spalten (bis zur senkrechten schwarzen Linie) enthalten Daten zum Artikel selbst.
meillo@0:   \item Die nächsten vier Spalten stellen die Bestellung dar. Laufen mehrere Bestellungen die auf diesen Artikel passen, so werden sie allen angezeigt. Das Lieferdatum ist rötlich hinterlegt, falls die Bestellung erst nach dem benötigten Datum eintreffen würde.
meillo@0:   \item Die letzten Spalten ermöglichen es den Einkäufern zusätzliche Informationen zu den Bestellungen einzutragen und sich selbst an Bestellungen erinnern zu lassen.
meillo@0: \end{itemize}
meillo@0: 
meillo@0: \begin{figure}[hbt]
meillo@0:   \centering
meillo@0:   \includegraphics[width=14cm]{Pics/eis-ftm-drilldown-lieferanten.png}
meillo@0:   \caption{Drilldown nach Lieferanten im Fehlteilmanagement}\label{eis-ftm-drilldown-lieferanten}
meillo@0: \end{figure}
meillo@0: 
meillo@0: Dieser dritte Tabellenteil verbindet dann auch das Einkaufs- mit dem Montageinformationsystem. Denn die eingetragenen Notizen können über das Montageinformationssystem abgerufen werden. Eingetragene verschobene Liefertermine oder bereits vollzogenen Mahnungen ersparen so manchen Anruf.
meillo@0: 
meillo@0: Mit der \textit{Erinnerung in X Tagen} kann man sich in einer selbst gewählten Anzahl von Tagen eine Erinnerung zukommen lassen. Diese wird von einem Job automatisch per Email verschickt.
meillo@0: Die Email-Adressen wurden dabei über eine Abfrage des LDAP-Verzeichnises gewonnen.
meillo@0: 
meillo@0: Am Anfang der Seite und über jeder Baugruppe befindet sich ein Link mit dem ein PDF-Dokument der ganzen Seite oder nur der einzelnen Baugruppe erzeugt werden kann. Dieses ist besser zum Ausdrucken geeignet und kann problemlos per Email verschickt werden.
meillo@0: PDFs habe ich mit der FPDF-Bibliothek\footnote{\textit{FPDF} ist Freeware und auf http://fpdf.org zu finden.} erstellt. Die einzige Schwierigkeit dabei war das Überführen eines (eher) fließenden Layouts in HTML in ein Layout mit absoluten Maßen im PDF. Größere Probleme gab es dabei allerdings nicht.
meillo@0: 
meillo@0: 
meillo@0: 
meillo@0: \subsubsection{Drilldown nach Baugruppen}
meillo@0: 
meillo@0: \begin{figure}[hbt]
meillo@0:   \centering
meillo@0:   \includegraphics[width=14cm]{Pics/eis-ftm-drilldown-baugruppen.png}
meillo@0:   \caption{Drilldown nach Baugruppen im Fehlteilmanagement}\label{eis-ftm-drilldown-baugruppen}
meillo@0: \end{figure}
meillo@0: 
meillo@0: Die Aufteilung der Tabelle entspricht der im Lieferantendrilldown.
meillo@0: 
meillo@0: Anders sind hingegen die letzten Spalten. Der Drilldown nach Baugruppen stellt hier so etwas wie das Gegenstück zum Drilldown nach Lieferanten dar. Die Bemerkungen können hier nur gelesen werden, dafür können Aufforderungen zurück an die Einkäufer geschickt werden, dass sie ihre Bestellungen überprüfen sollten.
meillo@0: 
meillo@0: Funktionen wie diese gehen über das ursprüngliche Programmkonzept hinaus. Sie sind erst im Laufe der Programmentwicklung aufgekommen und herangereift. Es war häufig so, dass das Programm erst mit dem Programmieren gewachsen ist und seine endgültige Gestalt bekommen hat. Dies war vor allem durch den engen Kontakt mit den Anwendern möglich. Sie haben jede Programmversion direkt getestet und mir Verbesserungen, Anregungen und Wünsche mitgeteilt. Mir hat es gut gefallen, auf diese Weise Programme zu ``erarbeiten''.
meillo@0: 
meillo@0: 
meillo@0: An dieser Stelle möchte ich nun zum Montageinformationssystem (kurz \textit{MontIS}) überleiten.




