Seite 1 von 1

gelöschte Artikel AKTIV_JN

Verfasst: Di Feb 12, 2008 3:43 pm
von pedro
Hallo,
wie stell ich denn ein, dass gelöschte Artikel in der 2008-Version tatsächlich gelöscht werden. Derzeit sind sie immer noch da und haben offenbar "N" im Feld AKTIV_JN. In einigen Programmen, z.B. Lagerbuchen ohne Stückliste, werden auch diese gelöschten Artikel angezeigt, was ziemlich irritiert. Auch beim Schnellsuchfeld führt das zu problemen: Verzweig in Debugger mit sausw="22.
Gruß

Verfasst: Di Feb 12, 2008 4:04 pm
von admin
Ein Artikel, der schon einmal verwendet wurde, kann nicht gelöscht werden. Daher wird der Artikel beim Löschen automatisch auf inaktiv gestellt.

Verfasst: Di Feb 12, 2008 4:12 pm
von pedro
admin hat geschrieben:Ein Artikel, der schon einmal verwendet wurde, kann nicht gelöscht werden. Daher wird der Artikel beim Löschen automatisch auf inaktiv gestellt.
o.k. wenn z.B. Relationen da sind, z.B. ein Arbeitsplan etc existiert, leuchtet das ein, aber wenn ich z.B. Artikel 4711 anlege, muss ich den doch löschen können, und zwar so, daß er nirgends mehr ersichtlich ist und so dass z.B. diese Nummer später wieder bei Bedarf angelegt werden kann.

Verfasst: Fr Mai 29, 2009 8:45 am
von sthiesen
Das wird wohl nur direkt über die Datenbank gehen...

Verfasst: Fr Mai 29, 2009 9:51 am
von admin
Wir haben das jetzt so gelöst, dass der Artikel gelöscht wird, wenn beim Löschen keine Fehlermeldung kommt (weil der Artikel beispielsweise bereits in einer Rechnung vorkommt etc). Sonst wird der Artikel auf inaktiv gesetzt.

Code: Alles auswählen


SET SQL DIALECT 3;

SET NAMES ISO8859_1;


SET TERM ^ ;


CREATE OR ALTER TRIGGER V_BSA_BD0 FOR V_BSA
ACTIVE BEFORE DELETE POSITION 0
AS
BEGIN
  POST_EVENT 'DUMMY_EVENT';
END
^


CREATE OR ALTER TRIGGER V_BSA_BD0 FOR V_BSA
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE SJA VARCHAR(1);
DECLARE VARIABLE SNEIN VARCHAR(1);
BEGIN
  /* Letzter Stand 19.05.2009 09:44:02 PF */
  /* Protokollieren, dass Aktion hier durchgelaufen ist */
  IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
    INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('V_BSA_BD0');

  EXECUTE PROCEDURE P_BFIRMA_JANEIN RETURNING_VALUES(:SJA,:SNEIN);

  BEGIN
    DELETE FROM BSA WHERE ID = OLD.ID;
                   
    -- Artikel deaktivieren, statt sie zu löschen, wenn bereits Abhängigkeiten
    -- vorhanden sind
    WHEN ANY DO
      UPDATE BSA
      SET AKTIV_JN = :SNEIN
      WHERE ID = OLD.ID AND
            AKTIV_JN = :sJA; -- Nicht, wenn Resteverwertung oder sonstiger Status
  END
END
^


SET TERM ; ^


/* Privileges of triggers */
GRANT INSERT ON A_WASMACHTIB TO TRIGGER V_BSA_BD0;
GRANT SELECT, UPDATE, DELETE ON BSA TO TRIGGER V_BSA_BD0;
GRANT UPDATE, REFERENCES ON V_BSA TO TRIGGER V_BSA_BD0;
GRANT EXECUTE ON PROCEDURE P_BFIRMA_JANEIN TO TRIGGER V_BSA_BD0;