&ANALYZE-SUSPEND _VERSION-NUMBER UIB_v9r12 &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS Procedure /*------------------------------------------------------------------------ File : Purpose : Syntax : Description : Author(s) : Created : Notes : ----------------------------------------------------------------------*/ /* This .W file was created with the Progress AppBuilder. */ /*----------------------------------------------------------------------*/ /* *************************** Definitions ************************** */ DEFINE INPUT PARAMETER ipFirma AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER ipKnr AS INTEGER NO-UNDO. DEFINE INPUT PARAMETER ipFaknr AS INTEGER NO-UNDO. DEFINE INPUT PARAMETER ipVerbuch AS LOG NO-UNDO. DEFINE INPUT PARAMETER ipNeuFnr AS LOG NO-UNDO. DEFINE INPUT PARAMETER ipSpez AS LOG NO-UNDO. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE cBenutzer AS CHARACTER NO-UNDO. DEFINE TEMP-TABLE tSavko LIKE Savko . DEFINE TEMP-TABLE tSavze LIKE Savze . DEFINE TEMP-TABLE tSavGebKo LIKE SavGebKo. DEFINE TEMP-TABLE tSavGKon LIKE SavGKon . DEFINE TEMP-TABLE tSavRabSu LIKE SavRabSu. DEFINE TEMP-TABLE tSavSpRab LIKE SavSpRab. DEFINE TEMP-TABLE tPassant LIKE Passant . /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE Procedure &Scoped-define DB-AWARE no /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: Procedure Allow: Frames: 0 Add Fields to: Neither Other Settings: CODE-ONLY COMPILE */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW /* DESIGN Window definition (used by the UIB) CREATE WINDOW Procedure ASSIGN HEIGHT = 15 WIDTH = 60. /* END WINDOW DEFINITION */ */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure /* *************************** Main Block *************************** */ FOR EACH Savko NO-LOCK USE-INDEX Savko-k6 WHERE Savko.Firma = ipFirma AND Savko.Faknr = ipFaknr AND Savko.Knr = ipKnr: CREATE tSavko. BUFFER-COPY Savko TO tSavko. END. FIND FIRST tSavko NO-LOCK NO-ERROR. IF NOT AVAILABLE tSavko THEN RETURN. FOR EACH tSavko: FOR EACH Savze NO-LOCK WHERE Savze.Firma = tSavko.Firma AND Savze.Aufnr = tSavko.Aufnr : CREATE tSavze. BUFFER-COPY Savze TO tSavze. END. FOR EACH SavGebKo NO-LOCK WHERE SavGebKo.Firma = tSavko.Firma AND SavGebKo.Aufnr = tSavko.Aufnr : CREATE tSavGebKo. BUFFER-COPY SavGebKo TO tSavGebKo. END. FOR EACH SavGKon NO-LOCK WHERE SavGKon.Firma = tSavko.Firma AND SavGKon.Aufnr = tSavko.Aufnr : CREATE TSavGKon. BUFFER-COPY SavGKon TO TSavGKon. END. FOR EACH SavRabSu NO-LOCK WHERE SavRabSu.Firma = tSavko.Firma AND SavRabSu.Aufnr = tSavko.Aufnr : CREATE tSavRabSu. BUFFER-COPY SavRabSu TO tSavRabSu. END. FOR EACH SavSpRab NO-LOCK USE-INDEX SavSpRab-k1 WHERE SavSpRab.Firma = tSavko.Firma AND SavSpRab.Aufnr = tSavko.Aufnr: CREATE tSavSpRab. BUFFER-COPY SavSpRab TO tSavSpRab. END. FOR EACH Passant NO-LOCK WHERE Passant.Firma = tSavko.Firma AND Passant.Knr = tSavko.Knr AND Passant.Faknr = tSavko.Faknr: CREATE tPassant. BUFFER-COPY Passant TO tPassant. END. END. cDateiName = 'geloeschte_auftraege.log'. cBenutzer = DYNAMIC-FUNCTION('getDBUser':U) NO-ERROR. OUTPUT TO VALUE(cDateiName) APPEND NO-MAP NO-CONVERT. RUN STORNO. OUTPUT CLOSE. RETURN RETURN-VALUE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &IF DEFINED(EXCLUDE-STORNO) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE STORNO Procedure PROCEDURE STORNO : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO. DEFINE VARIABLE cRet AS CHARACTER NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. DEFINE VARIABLE ja AS LOG NO-UNDO. DEFINE VARIABLE iFaknr AS INTEGER NO-UNDO. DEFINE VARIABLE cTotal AS CHARACTER NO-UNDO. DEFINE VARIABLE iKnr AS INTEGER NO-UNDO. DEFINE VARIABLE iTrnr1 AS INTEGER INIT 0 NO-UNDO. DEFINE VARIABLE FBFirma AS CHARACTER NO-UNDO. DEFINE VARIABLE nTotale AS DECIMAL EXTENT 15 NO-UNDO. cRet = ''. FIND FIRST tSavko. FIND Steuer NO-LOCK WHERE Steuer.Firma = tSavko.Firma. FBFirma = Steuer.FBFirma. IF Steuer.Fwc09 <> '' THEN FBFirma = Steuer.Fwc09. STORNO: REPEAT TRANSACTION ON ERROR UNDO, LEAVE: FOR EACH tSavko: ASSIGN iFaknr = tSavko.Faknr iKnr = tSavko.Fak_Knr. PUT CONTROL STRING(NOW,'99.99.9999 HH:MM:SS.SSS') ' / ' cBenutzer ' / ' 'Knr = ' STRING(tSavko.Knr,'999999') ' / ' 'Faknr = ' STRING(tSavko.Faknr,'999999') ' / ' 'Auftragstotal = ' STRING(tSavko.Auf_Tot,'zzz,zz9.99-') ' / ' 'Neue Rechnungsnummer = ' STRING(ipNeuFnr,'ja/nein') ' / ' 'Nochmals verbuchen = ' STRING(ipVerbuch,'ja/nein') ' / ' 'Spezial löschen = ' STRING(ipSpez,'ja/nein') CHR(10). FOR EACH tSavze WHERE tSavze.Firma = tSavko.Firma AND tSavze.Aufnr = tSavko.Aufnr : IF tSavze.Artnr = 0 THEN NEXT. IF NOT tSavze.Verbucht THEN NEXT. ASSIGN tSavze.MGeli = tSavze.MGeli * -1 tSavze.Net_Betr = tSavze.Net_Betr * -1 tSavze.Auf_Rab = tSavze.Auf_Rab * -1 tSavze.Abh_Rab = tSavze.Abh_Rab * -1 tSavze.Auf_Sp_Rab = tSavze.Auf_Sp_Rab * -1. hBuffer = BUFFER tSavze:HANDLE. ja = DYNAMIC-FUNCTION('buchenArtikel':U, tSavko.Fak_Knr, hBuffer) NO-ERROR. /* Umsätze zurückbuchen */ IF ipVerbuch OR ipSpez THEN NEXT. FIND Artbw OF tSavze NO-ERROR. IF NOT AVAILABLE Artbw THEN NEXT. IF NOT Artbw.Lag_Buch THEN DO: DELETE Artbw. NEXT. END. FIND ArtLager OF Artbw NO-ERROR. ASSIGN ArtLager.Bestand = ArtLager.Bestand - tSavze.MGeli ArtLager.Ausgang = ArtLager.Ausgang + tSavze.MGeli. DELETE Artbw. END. END. FIND FIRST tSavko. DO WHILE TRUE: FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = tSavko.Firma AND Debst.Knr = tSavko.Fak_Knr NO-ERROR. FOR EACH Debop USE-INDEX Debop-k1 WHERE Debop.Firma = tSavko.Firma AND Debop.Knr = iKnr AND Debop.Faknr = iFaknr : IF iTrnr1 = 0 THEN iTrnr1 = Debop.Trnr1. Debst.Saldo = Debst.Saldo - Debop.Saldo. Debst.Saldo_Frw = Debst.Saldo_Frw - Debop.Saldo_Frw. DELETE Debop. END. FOR EACH Debfa WHERE Debfa.Firma = tSavko.Firma AND Debfa.Knr = iKnr AND Debfa.Faknr = iFaknr: IF iTrnr1 = 0 THEN iTrnr1 = Debfa.Trnr1. DELETE Debfa. END. FOR EACH Debwu WHERE Debwu.Firma = tSavko.Firma AND Debwu.Knr = iKnr AND Debwu.Faknr = iFaknr: IF iTrnr1 = 0 THEN iTrnr1 = Debwu.Trnr1. DELETE Debwu. END. FOR EACH Debhi WHERE Debhi.Firma = tSavko.Firma AND Debhi.Knr = iKnr AND Debhi.Faknr = iFaknr: IF iTrnr1 = 0 THEN iTrnr1 = Debhi.Trnr1. DELETE Debhi. END. FOR EACH Debza WHERE Debza.Firma = tSavko.Firma AND Debza.Knr = iKnr AND Debza.Faknr = iFaknr: IF iTrnr1 = 0 THEN iTrnr1 = Debza.Trnr1. DELETE Debza. END. FOR EACH Interf WHERE Interf.Firma = FBFirma AND Interf.Trnr1 = iTrnr1: DELETE Interf. END. LEAVE. END. FOR EACH tSavSpRab: FIND SavSpRab OF tSavSpRab. DELETE SavSpRab. END. FOR EACH tSavRabSu: FIND SavRabSu OF tSavRabSu. DELETE SavRabSu. END. FOR EACH TSavGKon: FIND SavGKon OF TSavGKon. DO WHILE TRUE: IF SavGKon.Depot = 0 THEN LEAVE. FIND LAST GebKontr USE-INDEX GebKontr-k1 WHERE GebKontr.Firma = tSavko.Firma AND GebKontr.Knr = tSavko.Knr NO-LOCK NO-ERROR. IF AVAILABLE GebKontr THEN ix = GebKontr.Trnr + 1. ELSE ix = 1. CREATE GebKontr. ASSIGN GebKontr.Firma = tSavko.Firma GebKontr.Knr = tSavko.Knr GebKontr.Trnr = ix GebKontr.Geb_Cd = SavGKon.Geb_Cd GebKontr.Datum = tSavko.Fak_Datum GebKontr.Doknr = tSavko.Faknr GebKontr.Preis = SavGKon.Depot GebKontr.Eingang = SavGKon.Eingang * -1 GebKontr.Ausgang = SavGKon.Ausgang * -1 GebKontr.MWST_Cd = SavGKon.MWST_Cd . LEAVE. END. DELETE SavGKon. END. FOR EACH tSavGebKo: FIND SavGebKo OF tSavGebKo. DELETE SavGebKo. END. FOR EACH tSavze: FIND Savze OF tSavze. DELETE Savze. END. FOR EACH tSavko: FIND Savko OF tSavko. DELETE Savko. END. FOR EACH tPassant: FIND Passant OF tPassant. DELETE Passant. END. IF NOT ipVerbuch AND NOT ipSpez THEN LEAVE. FOR EACH tSavze: ASSIGN tSavze.MGeli = tSavze.MGeli * -1 tSavze.Net_Betr = tSavze.Net_Betr * -1 tSavze.Auf_Rab = tSavze.Auf_Rab * -1 tSavze.Abh_Rab = tSavze.Abh_Rab * -1 tSavze.Auf_Sp_Rab = tSavze.Auf_Sp_Rab * -1 tSavze.Verbucht = FALSE. END. IF ipNeuFnr THEN DO: iFaknr = 0. RUN "v8/steunr.p" ( INPUT 2, OUTPUT iFaknr ). IF RETURN-VALUE <> '' THEN iFaknr = 0. END. FOR EACH tSavko: CREATE Aufko. BUFFER-COPY tSavko EXCEPT Faknr Gedruckt TO Aufko ASSIGN Aufko.Faknr = iFaknr Aufko.Gedruckt = FALSE Aufko.Verbucht = FALSE. END. FOR EACH tSavze: CREATE Aufze. BUFFER-COPY tSavze TO Aufze. END. FOR EACH tSavGebKo: CREATE AufGebKo. BUFFER-COPY tSavGebKo TO AufGebKo. END. FOR EACH tSavGKon: CREATE AufGKon. BUFFER-COPY tSavGKon TO AufGKon. END. FOR EACH tSavRabSu: CREATE AufRabSu. BUFFER-COPY tSavRabSu TO AufRabSu. END. FOR EACH tSavSpRab: CREATE AufSpRab. BUFFER-COPY tSavSpRab TO AufSpRab. END. DYNAMIC-FUNCTION('createAufGebKo':U, tSavko.Aufnr ) NO-ERROR. LEAVE. END. FOR EACH tSavko: DYNAMIC-FUNCTION('calculateAuftragsTotal':U, tSavko.Firma, tSavko.Aufnr, OUTPUT nTotale ) NO-ERROR. END. RETURN cRet. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF