FIFO und LIFO

MisterSimpson

Simpsons Fan
ID: 50883
L
20 April 2006
2.947
106
Hi ich komme bei FIFO und LIFO nicht weiter. Bei FIFO ist ja die letzten Preise entscheiden und bei LIFO die ersten Preise entscheiden.

Ich habe mal FIFO gemacht, aber weiß nicht ob es richtig ist. Bei LIFO weiß ich nicht wie ich das machen soll.

Könnt ihr euch das mal bitte anschauen?

 
Wie lautet denn deine Aufgabenstellung?

LIFO und FIFO erklären sich doch im Prinzip selbst.

LIFO ist das Tellerwaschprinzip, der neuste dreckige Geschirr steht oben auf dem Stapel und wird zuerst gewaschen.

FIFO ist das Toilettenprinzip an der Autobahn ^^, die Frau die zuerst zum Klo rennt kommt auch zuerst drauf.
 
Aufgabenstellung gibt es nicht. Wir haben das jetzt mit dem gewogenen Durschnitt berechnet und jetzt sollen wir das mit FIFO und LIFO berechnen.
 
Ich hoffe ich habe mich an keiner Stelle mit Zellzordnungen geirrt. Es ist etwas ausführlicher, damit bei jedem Bestand und Abgang erkennbar ist, welcher Teilbestand vorhanden bzw. abgeht.

bewertungsverfahrene0338.png
 
Ich habe eben noch ein kleines Programm geschrieben. Die wesentliche Variable ist unten dargestellt.

Man braucht übrigens nicht für jede Bewertungsmethode eine eigene Funktion. Der nötige Unterschied zwischen Fifo und Lifo besteht ausschließlich in einer einzigen Manipulation der Eingangsvariablen (Liste der jeweiligen Teilbestände) mit einer Umkehrung der Reihenfolge. Möchte man noch duwe in der gleichen Funktion bearbeiten wäre eine eigene Funktion zwar kürzer, doch mit einer zusätzlichen Manipulation am Funktionsende (Eliminierung der Teilbestände) ist die sonstige Verarbeitung bei allen drei Methoden gleich.

Kurze Erklärung zur Ausgabe:
  • Jede Bestandsänderung ist durchnummeriert und zeigt die Mengenveränderung bzw. bei einem Zugang auch den Wert
  • Für jede Bewertungsmethode (fifo, lifo, duwe; Edit 2: hifo, lofo) wird nach jeder Bestandsveränderung der sich jeweils ergebende Bestand bewertet, bei Abgängen auch der Abgangswert.
  • Bei lifo, fifo, hifo und lofo werden zusätzlich die Teilbestände angegeben. Die Nummern entsprechen dabei dem n-ten Zugang (ähnlich wie die unterschiedlichen Farben in meinem obigen Bild). Bei duwe gibt es keine Teilbestände.
  • wert_n ist der Wert pro Einheit (Stück, Liter etc)
  • Der Anfangsbestand wird durch den 1. Zugang realisiert.
  • Edit: Nun sind auch noch die Teilabgänge angegeben. Nummerierung genau wie bei den Teilbeständen.

Tut mir leid für die vielleicht etwas unübersichtliche Ausgabe, aber für eine spezielle Ausgabefunktion hatte ich jetzt keine Lust mehr.

1. Teil (Splitting wegen max 20.000 Zeichen)
Code:
[_bestandsverlauf:private] => 
 (
  [1] => 
   (
    [veränderung] => 
     (
      [menge] => 2000
      [wert] => 45
     )

    [bewertung] => 
     (
      [fifo] => 
       (
        [bestand] => 
         (
          [menge] => 2000
          [wert_ges] => 90000
          [wert_n] => 45
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 2000
            [wert] => 45
           )

         )

       )

      [lifo] => 
       (
        [bestand] => 
         (
          [menge] => 2000
          [wert_ges] => 90000
          [wert_n] => 45
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 2000
            [wert] => 45
           )

         )

       )

      [duwe] => 
       (
        [bestand] => 
         (
          [menge] => 2000
          [wert_ges] => 90000
          [wert_n] => 45
         )

       )

      [hifo] => 
       (
        [bestand] => 
         (
          [menge] => 2000
          [wert_ges] => 90000
          [wert_n] => 45
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 2000
            [wert] => 45
           )

         )

       )

      [lofo] => 
       (
        [bestand] => 
         (
          [menge] => 2000
          [wert_ges] => 90000
          [wert_n] => 45
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 2000
            [wert] => 45
           )

         )

       )

     )

   )

  [2] => 
   (
    [veränderung] => 
     (
      [menge] => -1000
      [wert] =>
     )

    [bewertung] => 
     (
      [fifo] => 
       (
        [abgaenge] => 
         (
          [menge] => 1000
          [wert_ges] => 45000
          [wert_n] => 45
         )

        [teilabgaenge] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

         )

        [bestand] => 
         (
          [menge] => 1000
          [wert_ges] => 45000
          [wert_n] => 45
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

         )

       )

      [lifo] => 
       (
        [abgaenge] => 
         (
          [menge] => 1000
          [wert_ges] => 45000
          [wert_n] => 45
         )

        [teilabgaenge] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

         )

        [bestand] => 
         (
          [menge] => 1000
          [wert_ges] => 45000
          [wert_n] => 45
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

         )

       )

      [duwe] => 
       (
        [abgaenge] => 
         (
          [menge] => 1000
          [wert_ges] => 45000
          [wert_n] => 45
         )

        [teilabgaenge] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

         )

        [bestand] => 
         (
          [menge] => 1000
          [wert_ges] => 45000
          [wert_n] => 45
         )

       )

      [hifo] => 
       (
        [abgaenge] => 
         (
          [menge] => 1000
          [wert_ges] => 45000
          [wert_n] => 45
         )

        [teilabgaenge] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

         )

        [bestand] => 
         (
          [menge] => 1000
          [wert_ges] => 45000
          [wert_n] => 45
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

         )

       )

      [lofo] => 
       (
        [abgaenge] => 
         (
          [menge] => 1000
          [wert_ges] => 45000
          [wert_n] => 45
         )

        [teilabgaenge] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

         )

        [bestand] => 
         (
          [menge] => 1000
          [wert_ges] => 45000
          [wert_n] => 45
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

         )

       )

     )

   )

  [3] => 
   (
    [veränderung] => 
     (
      [menge] => 3000
      [wert] => 50
     )

    [bewertung] => 
     (
      [fifo] => 
       (
        [bestand] => 
         (
          [menge] => 4000
          [wert_ges] => 195000
          [wert_n] => 48.75
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 3000
            [wert] => 50
           )

         )

       )

      [lifo] => 
       (
        [bestand] => 
         (
          [menge] => 4000
          [wert_ges] => 195000
          [wert_n] => 48.75
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 3000
            [wert] => 50
           )

         )

       )

      [duwe] => 
       (
        [bestand] => 
         (
          [menge] => 4000
          [wert_ges] => 195000
          [wert_n] => 48.75
         )

       )

      [hifo] => 
       (
        [bestand] => 
         (
          [menge] => 4000
          [wert_ges] => 195000
          [wert_n] => 48.75
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 3000
            [wert] => 50
           )

         )

       )

      [lofo] => 
       (
        [bestand] => 
         (
          [menge] => 4000
          [wert_ges] => 195000
          [wert_n] => 48.75
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 3000
            [wert] => 50
           )

         )

       )

     )

   )
 
Zuletzt bearbeitet:
2. Teil (Splitting wegen max. 20.000 Zeichen)
Code:
  [4] => 
   (
    [veränderung] => 
     (
      [menge] => -500
      [wert] =>
     )

    [bewertung] => 
     (
      [fifo] => 
       (
        [abgaenge] => 
         (
          [menge] => 500
          [wert_ges] => 22500
          [wert_n] => 45
         )

        [teilabgaenge] => 
         (
          [1] => 
           (
            [menge] => 500
            [wert] => 45
           )

         )

        [bestand] => 
         (
          [menge] => 3500
          [wert_ges] => 172500
          [wert_n] => 49.29
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 500
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 3000
            [wert] => 50
           )

         )

       )

      [lifo] => 
       (
        [abgaenge] => 
         (
          [menge] => 500
          [wert_ges] => 25000
          [wert_n] => 50
         )

        [teilabgaenge] => 
         (
          [2] => 
           (
            [menge] => 500
            [wert] => 50
           )

         )

        [bestand] => 
         (
          [menge] => 3500
          [wert_ges] => 170000
          [wert_n] => 48.57
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 2500
            [wert] => 50
           )

         )

       )

      [duwe] => 
       (
        [abgaenge] => 
         (
          [menge] => 500
          [wert_ges] => 24375
          [wert_n] => 48.75
         )

        [teilabgaenge] => 
         (
          [1] => 
           (
            [menge] => 500
            [wert] => 48.75
           )

         )

        [bestand] => 
         (
          [menge] => 3500
          [wert_ges] => 170625
          [wert_n] => 48.75
         )

       )

      [hifo] => 
       (
        [abgaenge] => 
         (
          [menge] => 500
          [wert_ges] => 25000
          [wert_n] => 50
         )

        [teilabgaenge] => 
         (
          [2] => 
           (
            [menge] => 500
            [wert] => 50
           )

         )

        [bestand] => 
         (
          [menge] => 3500
          [wert_ges] => 170000
          [wert_n] => 48.57
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 2500
            [wert] => 50
           )

         )

       )

      [lofo] => 
       (
        [abgaenge] => 
         (
          [menge] => 500
          [wert_ges] => 22500
          [wert_n] => 45
         )

        [teilabgaenge] => 
         (
          [1] => 
           (
            [menge] => 500
            [wert] => 45
           )

         )

        [bestand] => 
         (
          [menge] => 3500
          [wert_ges] => 172500
          [wert_n] => 49.29
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 500
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 3000
            [wert] => 50
           )

         )

       )

     )

   )

  [5] => 
   (
    [veränderung] => 
     (
      [menge] => 2000
      [wert] => 55
     )

    [bewertung] => 
     (
      [fifo] => 
       (
        [bestand] => 
         (
          [menge] => 5500
          [wert_ges] => 282500
          [wert_n] => 51.36
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 500
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 3000
            [wert] => 50
           )

          [3] => 
           (
            [menge] => 2000
            [wert] => 55
           )

         )

       )

      [lifo] => 
       (
        [bestand] => 
         (
          [menge] => 5500
          [wert_ges] => 280000
          [wert_n] => 50.91
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 2500
            [wert] => 50
           )

          [3] => 
           (
            [menge] => 2000
            [wert] => 55
           )

         )

       )

      [duwe] => 
       (
        [bestand] => 
         (
          [menge] => 5500
          [wert_ges] => 280625
          [wert_n] => 51.02
         )

       )

      [hifo] => 
       (
        [bestand] => 
         (
          [menge] => 5500
          [wert_ges] => 280000
          [wert_n] => 50.91
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 2500
            [wert] => 50
           )

          [3] => 
           (
            [menge] => 2000
            [wert] => 55
           )

         )

       )

      [lofo] => 
       (
        [bestand] => 
         (
          [menge] => 5500
          [wert_ges] => 282500
          [wert_n] => 51.36
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 500
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 3000
            [wert] => 50
           )

          [3] => 
           (
            [menge] => 2000
            [wert] => 55
           )

         )

       )

     )

   )

  [6] => 
   (
    [veränderung] => 
     (
      [menge] => -3500
      [wert] =>
     )

    [bewertung] => 
     (
      [fifo] => 
       (
        [abgaenge] => 
         (
          [menge] => 3500
          [wert_ges] => 172500
          [wert_n] => 49.29
         )

        [teilabgaenge] => 
         (
          [1] => 
           (
            [menge] => 500
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 3000
            [wert] => 50
           )

         )

        [bestand] => 
         (
          [menge] => 2000
          [wert_ges] => 110000
          [wert_n] => 55
         )

        [teilbestand] => 
         (
          [3] => 
           (
            [menge] => 2000
            [wert] => 55
           )

         )

       )

      [lifo] => 
       (
        [abgaenge] => 
         (
          [menge] => 3500
          [wert_ges] => 185000
          [wert_n] => 52.86
         )

        [teilabgaenge] => 
         (
          [3] => 
           (
            [menge] => 2000
            [wert] => 55
           )

          [2] => 
           (
            [menge] => 1500
            [wert] => 50
           )

         )

        [bestand] => 
         (
          [menge] => 2000
          [wert_ges] => 95000
          [wert_n] => 47.5
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 1000
            [wert] => 50
           )

         )

       )

      [duwe] => 
       (
        [abgaenge] => 
         (
          [menge] => 3500
          [wert_ges] => 178570
          [wert_n] => 51.02
         )

        [teilabgaenge] => 
         (
          [1] => 
           (
            [menge] => 3500
            [wert] => 51.02
           )

         )

        [bestand] => 
         (
          [menge] => 2000
          [wert_ges] => 102040
          [wert_n] => 51.02
         )

       )

      [hifo] => 
       (
        [abgaenge] => 
         (
          [menge] => 3500
          [wert_ges] => 185000
          [wert_n] => 52.86
         )

        [teilabgaenge] => 
         (
          [3] => 
           (
            [menge] => 2000
            [wert] => 55
           )

          [2] => 
           (
            [menge] => 1500
            [wert] => 50
           )

         )

        [bestand] => 
         (
          [menge] => 2000
          [wert_ges] => 95000
          [wert_n] => 47.5
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 1000
            [wert] => 50
           )

         )

       )

      [lofo] => 
       (
        [abgaenge] => 
         (
          [menge] => 3500
          [wert_ges] => 172500
          [wert_n] => 49.29
         )

        [teilabgaenge] => 
         (
          [1] => 
           (
            [menge] => 500
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 3000
            [wert] => 50
           )

         )

        [bestand] => 
         (
          [menge] => 2000
          [wert_ges] => 110000
          [wert_n] => 55
         )

        [teilbestand] => 
         (
          [3] => 
           (
            [menge] => 2000
            [wert] => 55
           )

         )

       )

     )

   )

  [7] => 
   (
    [veränderung] => 
     (
      [menge] => 1500
      [wert] => 58
     )

    [bewertung] => 
     (
      [fifo] => 
       (
        [bestand] => 
         (
          [menge] => 3500
          [wert_ges] => 197000
          [wert_n] => 56.29
         )

        [teilbestand] => 
         (
          [3] => 
           (
            [menge] => 2000
            [wert] => 55
           )

          [4] => 
           (
            [menge] => 1500
            [wert] => 58
           )

         )

       )

      [lifo] => 
       (
        [bestand] => 
         (
          [menge] => 3500
          [wert_ges] => 182000
          [wert_n] => 52
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 1000
            [wert] => 50
           )

          [4] => 
           (
            [menge] => 1500
            [wert] => 58
           )

         )

       )

      [duwe] => 
       (
        [bestand] => 
         (
          [menge] => 3500
          [wert_ges] => 189040
          [wert_n] => 54.01
         )

       )

      [hifo] => 
       (
        [bestand] => 
         (
          [menge] => 3500
          [wert_ges] => 182000
          [wert_n] => 52
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 1000
            [wert] => 50
           )

          [4] => 
           (
            [menge] => 1500
            [wert] => 58
           )

         )

       )

      [lofo] => 
       (
        [bestand] => 
         (
          [menge] => 3500
          [wert_ges] => 197000
          [wert_n] => 56.29
         )

        [teilbestand] => 
         (
          [3] => 
           (
            [menge] => 2000
            [wert] => 55
           )

          [4] => 
           (
            [menge] => 1500
            [wert] => 58
           )

         )

       )

     )

   )

  [8] => 
   (
    [veränderung] => 
     (
      [menge] => -1000
      [wert] =>
     )

    [bewertung] => 
     (
      [fifo] => 
       (
        [abgaenge] => 
         (
          [menge] => 1000
          [wert_ges] => 55000
          [wert_n] => 55
         )

        [teilabgaenge] => 
         (
          [3] => 
           (
            [menge] => 1000
            [wert] => 55
           )

         )

        [bestand] => 
         (
          [menge] => 2500
          [wert_ges] => 142000
          [wert_n] => 56.8
         )

        [teilbestand] => 
         (
          [3] => 
           (
            [menge] => 1000
            [wert] => 55
           )

          [4] => 
           (
            [menge] => 1500
            [wert] => 58
           )

         )

       )

      [lifo] => 
       (
        [abgaenge] => 
         (
          [menge] => 1000
          [wert_ges] => 58000
          [wert_n] => 58
         )

        [teilabgaenge] => 
         (
          [4] => 
           (
            [menge] => 1000
            [wert] => 58
           )

         )

        [bestand] => 
         (
          [menge] => 2500
          [wert_ges] => 124000
          [wert_n] => 49.6
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 1000
            [wert] => 50
           )

          [4] => 
           (
            [menge] => 500
            [wert] => 58
           )

         )

       )

      [duwe] => 
       (
        [abgaenge] => 
         (
          [menge] => 1000
          [wert_ges] => 54010
          [wert_n] => 54.01
         )

        [teilabgaenge] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 54.01
           )

         )

        [bestand] => 
         (
          [menge] => 2500
          [wert_ges] => 135025
          [wert_n] => 54.01
         )

       )

      [hifo] => 
       (
        [abgaenge] => 
         (
          [menge] => 1000
          [wert_ges] => 58000
          [wert_n] => 58
         )

        [teilabgaenge] => 
         (
          [4] => 
           (
            [menge] => 1000
            [wert] => 58
           )

         )

        [bestand] => 
         (
          [menge] => 2500
          [wert_ges] => 124000
          [wert_n] => 49.6
         )

        [teilbestand] => 
         (
          [1] => 
           (
            [menge] => 1000
            [wert] => 45
           )

          [2] => 
           (
            [menge] => 1000
            [wert] => 50
           )

          [4] => 
           (
            [menge] => 500
            [wert] => 58
           )

         )

       )

      [lofo] => 
       (
        [abgaenge] => 
         (
          [menge] => 1000
          [wert_ges] => 55000
          [wert_n] => 55
         )

        [teilabgaenge] => 
         (
          [3] => 
           (
            [menge] => 1000
            [wert] => 55
           )

         )

        [bestand] => 
         (
          [menge] => 2500
          [wert_ges] => 142000
          [wert_n] => 56.8
         )

        [teilbestand] => 
         (
          [3] => 
           (
            [menge] => 1000
            [wert] => 55
           )

          [4] => 
           (
            [menge] => 1500
            [wert] => 58
           )

         )

       )

     )

   )

 )
Noch ein Wort zu HiFo und LoFo. Diese beiden Vertreter sind mangels gesetzlicher Grundlage eher ignorierbar, aber zur Vollständigkeit sind sie auch mit aufgenommen, zumal bis auf die Sortierung der Eingangsvariable (wegen der Arraystruktur etwas länger als nur eine Zeile) wieder die selbe Funktion benutzt werden kann.