Lagerbestände ins Minus buchen?
Moderator: SYNERPY
-
nagy
- Beiträge: 28
- Registriert: Fr Nov 25, 2005 12:08 pm
- Wohnort: Köln
Lagerbestände ins Minus buchen?
Hallo,
eine weitere Frage beschäftigt mich immer mehr. Wieso kann ich den Artikel die ich grade angelegt habe und zu denen ich noch keinen Wareneingang geschweige den eine Bestellung habe Verkaufen?
Lieferschein (ohne rückstandmengen)
Rechnung
alles kein problem und ohne jegliche meldung des Systems. Wo kann ich das ändern, das ich keine negativen Buchungen durchführen kann? (Der einzige der sowas darf währe zb. der user Worstcase (der bei mir aber nicht funktioniert))
gruß
Ingo Schuster
eine weitere Frage beschäftigt mich immer mehr. Wieso kann ich den Artikel die ich grade angelegt habe und zu denen ich noch keinen Wareneingang geschweige den eine Bestellung habe Verkaufen?
Lieferschein (ohne rückstandmengen)
Rechnung
alles kein problem und ohne jegliche meldung des Systems. Wo kann ich das ändern, das ich keine negativen Buchungen durchführen kann? (Der einzige der sowas darf währe zb. der user Worstcase (der bei mir aber nicht funktioniert))
gruß
Ingo Schuster
-
admin
- Site Admin
- Beiträge: 2673
- Registriert: Di Feb 10, 2004 5:48 am
- Wohnort: Bayreuth
Wir hatten den ein oder anderen Kunden, der keine negativen Lagerbestände haben wollte. Der Rekord liegt bei zwei Tagen, bis wir die Funktion wieder entfernen mussten. Ein negativer Lagerbestand ist zwar nicht wirklich möglich, aber wenn der Versandmitarbeiter die Ware in der Hand hält, draußen die Spedition wartet, aber kein Lieferschein gedruckt werden kann, weil jemand in der Fertigung vergessen hat die Ware einzubuchen, dann merkt man, dass negative Bestände nicht richtig, aber doch praktikabel sind.
Am besten ist es, wenn man hier über das Nachrichtensystem eine Meldung an den Lagerverantwortlichen sendet, dass ein Lager ins Negative gefallen ist. Dieser kann dann entsprechende Schritte einleiten (der Fertigung auf die Füße treten, Korrektur über laufende Inventur etc).
Der Benutzer WORSTCASE muss über die Benutzerverwaltung ganz normal angelegt werden. Beim Anlegen gibt es nicht besonderes zu beachten. Aber bitte Vorsicht bei der Verwendung, da hier sehr viel kaputt gemacht werden kann.
Am besten ist es, wenn man hier über das Nachrichtensystem eine Meldung an den Lagerverantwortlichen sendet, dass ein Lager ins Negative gefallen ist. Dieser kann dann entsprechende Schritte einleiten (der Fertigung auf die Füße treten, Korrektur über laufende Inventur etc).
Der Benutzer WORSTCASE muss über die Benutzerverwaltung ganz normal angelegt werden. Beim Anlegen gibt es nicht besonderes zu beachten. Aber bitte Vorsicht bei der Verwendung, da hier sehr viel kaputt gemacht werden kann.
-
Gast
Hm.. ok...admin hat geschrieben:Wir hatten den ein oder anderen Kunden, der keine negativen Lagerbestände haben wollte. Der Rekord liegt bei zwei Tagen, bis wir die Funktion wieder entfernen mussten. Ein negativer Lagerbestand ist zwar nicht wirklich möglich, aber wenn der Versandmitarbeiter die Ware in der Hand hält, draußen die Spedition wartet, aber kein Lieferschein gedruckt werden kann, weil jemand in der Fertigung vergessen hat die Ware einzubuchen, dann merkt man, dass negative Bestände nicht richtig, aber doch praktikabel sind.
aber das wird für meinen Betrieb nicht praktikabel sein.
Ich habe keine Produktion, sonder lediglich einen Handel und da ist es ganz einfach, ist das Produkt nicht da, kann ich es nicht verkaufen.
Das System sollte mir wenn ich einen Auftrag über eine Position eröffne die nicht am Lager ist spätetestens beim Abspeichern eine Meldung bringen das kein der Postion entsprechnder Lagerbestand verfügbar ist. Und beim Lieferschein druck eben einen Entsprechenden rückstand vermerkt. Dieser Rückstand soll dann bitte am nächsten Tag, besser aber sofort in den Bestellvorschlag eingehen, idealerweise mit angabe des Auftrags.
Sollte ich den Artikel aber in der Hand halten und er ist nicht im System, dann muss ich die Möglichkeit haben diesen Artikel manuel im System nachzubuchen. (Das dürfen aber nicht alle Mitarbeiter)
Ich finde es Inventurtechnich und auch von der Bewertung her sehr zweifelhaft, das ich
A. Bestand rein und rausbuchen kann wie ich will
und
B. Ich Ware verkaufen kann ich dich gar nicht Besitze.
Gruß
Ingo Schuster
PS: Wenn Sie dieses Script noch haben, wäre ich Ihnen dankbar, wenn sie mir das zusenden.
-
admin
- Site Admin
- Beiträge: 2673
- Registriert: Di Feb 10, 2004 5:48 am
- Wohnort: Bayreuth
Auch bei einem Handelsunternehmen wird es dazu kommen, dass die Ware vorhanden ist, aber nicht im System. Abweichungen gibt es leider immer.
Im BARTLH BEFORE UPDATE Trigger muss einfach folgende Zeile eingefügt werden:
Bei dem XXX kann vorher eine Exception definiert werden, die den richtigen Text trägt.
Im BARTLH BEFORE UPDATE Trigger muss einfach folgende Zeile eingefügt werden:
Code: Alles auswählen
IF (NEW.LIST < 0) THEN EXCEPTION XXX
-
nagy
- Beiträge: 28
- Registriert: Fr Nov 25, 2005 12:08 pm
- Wohnort: Köln
ähm..... *doofguck*admin hat geschrieben:Auch bei einem Handelsunternehmen wird es dazu kommen, dass die Ware vorhanden ist, aber nicht im System. Abweichungen gibt es leider immer.
Im BARTLH BEFORE UPDATE Trigger muss einfach folgende Zeile eingefügt werden:
Bei dem XXX kann vorher eine Exception definiert werden, die den richtigen Text trägt.Code: Alles auswählen
IF (NEW.LIST < 0) THEN EXCEPTION XXX
da ich keine ahnung vom einfügen von zeilen in trigger... weis ich gar nicht was ich da jetzt machen muss... *smile*
Gruß
Ingo Schuster
________________________
wo kämen wir den hin, wenn jeder sagen würde wo kämen wir den hin und keiner ginge um zu schauen, wohin man den käme, wenn man den ginge.... !
Ingo Schuster
________________________
wo kämen wir den hin, wenn jeder sagen würde wo kämen wir den hin und keiner ginge um zu schauen, wohin man den käme, wenn man den ginge.... !
-
nagy
- Beiträge: 28
- Registriert: Fr Nov 25, 2005 12:08 pm
- Wohnort: Köln
-
Vegeta
- Beiträge: 106
- Registriert: Di Nov 02, 2004 1:35 pm
Hallo,
das ganze wird auf Datenbank-Ebene gelöst, d.h. du benutzt ein Programm (z.B. EMS InterBase & FireBird Manager) um auf die Datenbank zuzugreifen.
Nachdem du die Datenbank geöffnet hast, suchst du dir die entsprechende Tabelle (in diesem Fall die Tabelle "BARTLH") und wählst diese aus. Wenn die Tabelle geöffnet wurde, gibt es dort einen Punkt, der "Trigger" heißt. Wählt man diesen an, hat man die Wahl zwischen "Before Insert"- , "Before Update"-, "BeforeDelete"-Triggern, usw.
Unter Before Update gibt es nun den Trigger für Before Update, welcher heißt: "BARTLH_BU0". Diesen zum Bearbeiten öffnen.
Dort steht ziemlich oben folgender Code:
Dort einfach die Zeile einfügen.
Gruß
Vegeta
PS: Ein Trigger ist eine Funktion, die automatisch ausgeführt werden soll, wenn ein bestimmtes Ereignis ausgelöst wird. Hier wäre es das Ereignis "Before Update" --> "Vor dem Update eines Datensatzes wird dieser Trigger ausgeführt"
das ganze wird auf Datenbank-Ebene gelöst, d.h. du benutzt ein Programm (z.B. EMS InterBase & FireBird Manager) um auf die Datenbank zuzugreifen.
Nachdem du die Datenbank geöffnet hast, suchst du dir die entsprechende Tabelle (in diesem Fall die Tabelle "BARTLH") und wählst diese aus. Wenn die Tabelle geöffnet wurde, gibt es dort einen Punkt, der "Trigger" heißt. Wählt man diesen an, hat man die Wahl zwischen "Before Insert"- , "Before Update"-, "BeforeDelete"-Triggern, usw.
Unter Before Update gibt es nun den Trigger für Before Update, welcher heißt: "BARTLH_BU0". Diesen zum Bearbeiten öffnen.
Dort steht ziemlich oben folgender Code:
Code: Alles auswählen
...
IF (NEW.GESPEICHERT <> OLD.GESPEICHERT) THEN EXCEPTION KEINE_AENDERUNG;
IF (NEW.LBEST IS NULL) THEN NEW.LBEST = 0.0;
IF (NEW.LHOECHST IS NULL) THEN NEW.LHOECHST = 0.0;
IF (NEW.LIST IS NULL) THEN NEW.LIST = 0.0;
IF (NEW.LMIND IS NULL) THEN NEW.LMIND = 0.0;
IF (NEW.LRESERV IS NULL) THEN NEW.LRESERV = 0.0;
IF (NEW.LSOLL IS NULL) THEN NEW.LSOLL = 0.0;
IF (NEW.LVERF IS NULL) THEN NEW.LVERF = 0.0;
IF (NEW.LVORG IS NULL) THEN NEW.LVORG = 0.0;
IF (NEW.LWARN IS NULL) THEN NEW.LWARN = 0.0;
IF (NEW.LEIN IS NULL) THEN NEW.LEIN = 0.0;
IF (NEW.LAUS IS NULL) THEN NEW.LAUS = 0.0;
...Gruß
Vegeta
PS: Ein Trigger ist eine Funktion, die automatisch ausgeführt werden soll, wenn ein bestimmtes Ereignis ausgelöst wird. Hier wäre es das Ereignis "Before Update" --> "Vor dem Update eines Datensatzes wird dieser Trigger ausgeführt"
-
nagy
- Beiträge: 28
- Registriert: Fr Nov 25, 2005 12:08 pm
- Wohnort: Köln
Was kann ich den für die XXX eintragen? ein beispiel bitte... !admin hat geschrieben: Im BARTLH BEFORE UPDATE Trigger muss einfach folgende Zeile eingefügt werden:
Bei dem XXX kann vorher eine Exception definiert werden, die den richtigen Text trägt.Code: Alles auswählen
IF (NEW.LIST < 0) THEN EXCEPTION XXX
Gruß
Ingo Schuster
________________________
wo kämen wir den hin, wenn jeder sagen würde wo kämen wir den hin und keiner ginge um zu schauen, wohin man den käme, wenn man den ginge.... !
Ingo Schuster
________________________
wo kämen wir den hin, wenn jeder sagen würde wo kämen wir den hin und keiner ginge um zu schauen, wohin man den käme, wenn man den ginge.... !
-
nagy
- Beiträge: 28
- Registriert: Fr Nov 25, 2005 12:08 pm
- Wohnort: Köln
Guten Morgen,
nun hab ich das mal probiert und den Trigger geändert
aber leider bekomm ich sofort eine fehlermeldung
---------- ERROR MESSAGE ----------
fmCompile.quCompile:
Invalid token.Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 33, char 1.
IF.
was mach ich falsch....
in line 33 steht die zeile vor die ich oben das X gemacht habe, das stehe natürlich nicht in der datenbank.
nun hab ich das mal probiert und den Trigger geändert
Code: Alles auswählen
IF (NEW.GESPEICHERT <> OLD.GESPEICHERT) THEN EXCEPTION KEINE_AENDERUNG;
IF (NEW.LBEST IS NULL) THEN NEW.LBEST = 0.0;
IF (NEW.LHOECHST IS NULL) THEN NEW.LHOECHST = 0.0;
IF (NEW.LIST IS NULL) THEN NEW.LIST = 0.0;
IF (NEW.LMIND IS NULL) THEN NEW.LMIND = 0.0;
IF (NEW.LRESERV IS NULL) THEN NEW.LRESERV = 0.0;
IF (NEW.LSOLL IS NULL) THEN NEW.LSOLL = 0.0;
IF (NEW.LVERF IS NULL) THEN NEW.LVERF = 0.0;
IF (NEW.LVORG IS NULL) THEN NEW.LVORG = 0.0;
IF (NEW.LWARN IS NULL) THEN NEW.LWARN = 0.0;
IF (NEW.LEIN IS NULL) THEN NEW.LEIN = 0.0;
IF (NEW.LAUS IS NULL) THEN NEW.LAUS = 0.0;
IF (NEW.LIST < 0) THEN EXCEPTION XXX
IF (NEW.LMIND > NEW.LSOLL) THEN NEW.LMIND = NEW.LSOLL;
IF (NEW.LHOECHST < NEW.LSOLL) THEN NEW.LHOECHST = NEW.LSOLL;
XIF (NEW.ZAEHLINTERVALL IS NULL) THEN NEW.ZAEHLINTERVALL = 0;
IF (NEW.LAGERGK IS NULL) THEN NEW.LAGERGK = 0.0;
IF (NEW.BUCH_KZ IS NULL) THEN
---------- ERROR MESSAGE ----------
fmCompile.quCompile:
Invalid token.Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 33, char 1.
IF.
was mach ich falsch....
in line 33 steht die zeile vor die ich oben das X gemacht habe, das stehe natürlich nicht in der datenbank.
Gruß
Ingo Schuster
________________________
wo kämen wir den hin, wenn jeder sagen würde wo kämen wir den hin und keiner ginge um zu schauen, wohin man den käme, wenn man den ginge.... !
Ingo Schuster
________________________
wo kämen wir den hin, wenn jeder sagen würde wo kämen wir den hin und keiner ginge um zu schauen, wohin man den käme, wenn man den ginge.... !
-
Bernd
- Beiträge: 3
- Registriert: Do Dez 08, 2005 8:34 pm
Hallo Nagy,
IF (NEW.LIST < 0) THEN EXCEPTION XXX
Die XXX müßte als eine Exception deklariert werden, deshalb die Fehlermeldung da es sie nicht gibt.
Wenn du das XXX durch KEINE_AENDERUNG ersetzt und als Abschluss ein Semikolon setzt wird es laufen, mit der Exception (Fehlermeldung) das keine Änderung vorgenommen wurde.
Bsp.:
IF (NEW.LIST < 0) THEN EXCEPTION KEINE_AENDERUNG;
IF (NEW.LIST < 0) THEN EXCEPTION XXX
Die XXX müßte als eine Exception deklariert werden, deshalb die Fehlermeldung da es sie nicht gibt.
Wenn du das XXX durch KEINE_AENDERUNG ersetzt und als Abschluss ein Semikolon setzt wird es laufen, mit der Exception (Fehlermeldung) das keine Änderung vorgenommen wurde.
Bsp.:
IF (NEW.LIST < 0) THEN EXCEPTION KEINE_AENDERUNG;
-
nagy
- Beiträge: 28
- Registriert: Fr Nov 25, 2005 12:08 pm
- Wohnort: Köln
öhm... ok...Bernd hat geschrieben:Hallo Nagy,
IF (NEW.LIST < 0) THEN EXCEPTION XXX
Die XXX müßte als eine Exception deklariert werden, deshalb die Fehlermeldung da es sie nicht gibt.
Wenn du das XXX durch KEINE_AENDERUNG ersetzt und als Abschluss ein Semikolon setzt wird es laufen, mit der Exception (Fehlermeldung) das keine Änderung vorgenommen wurde.
Bsp.:
IF (NEW.LIST < 0) THEN EXCEPTION KEINE_AENDERUNG;
ich sehe ich muss noch viel lernen.....
dangö
Gruß
Ingo Schuster
________________________
wo kämen wir den hin, wenn jeder sagen würde wo kämen wir den hin und keiner ginge um zu schauen, wohin man den käme, wenn man den ginge.... !
Ingo Schuster
________________________
wo kämen wir den hin, wenn jeder sagen würde wo kämen wir den hin und keiner ginge um zu schauen, wohin man den käme, wenn man den ginge.... !
-
Gast
-
nagy
- Beiträge: 28
- Registriert: Fr Nov 25, 2005 12:08 pm
- Wohnort: Köln
guten morgen,
nein, der trigger den ich geändert habe ist der
BARTLH_BU0.
einen
BARTLH_BU1
trigger hab ich in der tabelle gar nicht.
nein, der trigger den ich geändert habe ist der
BARTLH_BU0.
einen
BARTLH_BU1
trigger hab ich in der tabelle gar nicht.
Gruß
Ingo Schuster
________________________
wo kämen wir den hin, wenn jeder sagen würde wo kämen wir den hin und keiner ginge um zu schauen, wohin man den käme, wenn man den ginge.... !
Ingo Schuster
________________________
wo kämen wir den hin, wenn jeder sagen würde wo kämen wir den hin und keiner ginge um zu schauen, wohin man den käme, wenn man den ginge.... !