Lagerbestände ins Minus buchen?

Allgemeine Diskussionen um die ERP Software AvERP

Moderator: SYNERPY

Antworten
nagy
Beiträge: 28
Registriert: Fr Nov 25, 2005 12:08 pm
Wohnort: Köln

Lagerbestände ins Minus buchen?

Beitrag von nagy »

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
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

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.
Gast

Beitrag von Gast »

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.
Hm.. ok...

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. 8)

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. :-D
nagy
Beiträge: 28
Registriert: Fr Nov 25, 2005 12:08 pm
Wohnort: Köln

Beitrag von nagy »

sorry... war schon wieder nicht eingelogt... :roll:

gruß
Ingo Schuster
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

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:

Code: Alles auswählen


IF (NEW.LIST < 0) THEN EXCEPTION XXX

Bei dem XXX kann vorher eine Exception definiert werden, die den richtigen Text trägt.
nagy
Beiträge: 28
Registriert: Fr Nov 25, 2005 12:08 pm
Wohnort: Köln

Beitrag von nagy »

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:

Code: Alles auswählen


IF (NEW.LIST < 0) THEN EXCEPTION XXX

Bei dem XXX kann vorher eine Exception definiert werden, die den richtigen Text trägt.
ähm..... *doofguck*
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.... !
nagy
Beiträge: 28
Registriert: Fr Nov 25, 2005 12:08 pm
Wohnort: Köln

Beitrag von nagy »

hallo,

kann mir den bitte jemand sagen, wo ich diese zeit einfüge und was ein trigger ist?
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.... !
Vegeta
Beiträge: 106
Registriert: Di Nov 02, 2004 1:35 pm

Beitrag von Vegeta »

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:

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;
...
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"
nagy
Beiträge: 28
Registriert: Fr Nov 25, 2005 12:08 pm
Wohnort: Köln

Beitrag von nagy »

admin hat geschrieben: Im BARTLH BEFORE UPDATE Trigger muss einfach folgende Zeile eingefügt werden:

Code: Alles auswählen


IF (NEW.LIST < 0) THEN EXCEPTION XXX

Bei dem XXX kann vorher eine Exception definiert werden, die den richtigen Text trägt.
Was kann ich den für die XXX eintragen? ein beispiel bitte... !
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.... !
nagy
Beiträge: 28
Registriert: Fr Nov 25, 2005 12:08 pm
Wohnort: Köln

Beitrag von nagy »

Guten Morgen,

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
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.
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.... !
Bernd
Beiträge: 3
Registriert: Do Dez 08, 2005 8:34 pm

Beitrag von Bernd »

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;
nagy
Beiträge: 28
Registriert: Fr Nov 25, 2005 12:08 pm
Wohnort: Köln

Beitrag von nagy »

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;
öhm... ok...

ich sehe ich muss noch viel lernen..... :shock:

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.... !
Gast

Beitrag von Gast »

hm...

ok.. ich habs nun probiert, aber ich kann nach wie vor noch bestände ins negative buchen.

wo ist mein fehler. muss ich die datenbank danach neu starten oder reicht es wenn ich den trigger neu starte.
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Wurde hier der Trigger BARTLH_BU1 geändert?
nagy
Beiträge: 28
Registriert: Fr Nov 25, 2005 12:08 pm
Wohnort: Köln

Beitrag von nagy »

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.
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.... !
Antworten