| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401 |
- &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12
- &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 ************************** */
- DEF VAR cParam AS CHAR NO-UNDO.
- DEF VAR cFirma AS CHAR NO-UNDO.
- DEF VAR iVonArtnr AS INT NO-UNDO.
- DEF VAR iBisArtnr AS INT NO-UNDO.
- DEF VAR iVonInhalt AS INT NO-UNDO.
- DEF VAR iBisInhalt AS INT NO-UNDO.
- DEF VAR iVonJahr AS INT NO-UNDO.
- DEF VAR iBisJahr AS INT NO-UNDO.
- DEF VAR cBenutzer AS CHAR INIT 'Batch' NO-UNDO.
- DEF VAR cLogName AS CHAR NO-UNDO.
- DEF STREAM LogStream.
- DEF TEMP-TABLE tBestand
- FIELD Lager AS INT
- FIELD ilRecid AS RECID
- FIELD iaRecid AS RECID
- FIELD Inv_Datum AS DATE
- FIELD Inv_Bestand AS DEC
- FIELD Eingang AS DEC
- FIELD Ausgang AS DEC
- FIELD iTrnr AS INT
- .
- /* _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
- /* ************************ Function Prototypes ********************** */
- &IF DEFINED(EXCLUDE-getLogName) = 0 &THEN
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getLogName Procedure
- FUNCTION getLogName RETURNS CHARACTER
- ( /* parameter-definitions */ ) FORWARD.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ENDIF
- &IF DEFINED(EXCLUDE-writeLogFile) = 0 &THEN
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD writeLogFile Procedure
- FUNCTION writeLogFile RETURNS LOGICAL
- ( ipMessage AS CHAR ) FORWARD.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ENDIF
- /* *********************** 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 = 61.4.
- /* END WINDOW DEFINITION */
- */
- &ANALYZE-RESUME
-
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure
- /* *************************** Main Block *************************** */
- DEF VAR cMessage AS CHAR NO-UNDO.
-
- cLogName = DYNAMIC-FUNCTION('getLogName':U) NO-ERROR.
-
- cParam = SESSION:PARAMETER.
- ASSIGN
- cFirma = ENTRY(1, cParam, ';')
- iVonArtnr = INTEGER(ENTRY(2, cParam, ';'))
- iBisArtnr = INTEGER(ENTRY(3, cParam, ';'))
- iVonInhalt = INTEGER(ENTRY(4, cParam, ';'))
- iBisInhalt = INTEGER(ENTRY(5, cParam, ';'))
- iVonJahr = INTEGER(ENTRY(6, cParam, ';'))
- iBisJahr = INTEGER(ENTRY(7, cParam, ';')).
- cMessage = SUBSTITUTE('Start der Bestandeskorrektur am &1 um &2 für Firma &3', STRING(TODAY,'99.99.9999'), STRING(TIME,'HH:MM:SS'), cFirma).
- cMessage = cMessage + SUBSTITUTE(' mit Parameter -> &1-&2 / &3-&4 / &5-&6' , iVonArtnr, iBisArtnr, iVonInhalt, iBisInhalt, iVonJahr, iBisJahr).
- DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
- RUN RECHNEN.
-
- cMessage = SUBSTITUTE('Ende der Bestandeskorrektur am &1 um &2 für Firma &3', STRING(TODAY,'99.99.9999'), STRING(TIME,'HH:MM:SS'), cFirma).
- DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
- RUN KUNBESTBEREINIGEN.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- /* ********************** Internal Procedures *********************** */
- &IF DEFINED(EXCLUDE-KUNBESTBEREINIGEN) = 0 &THEN
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE KUNBESTBEREINIGEN Procedure
- PROCEDURE KUNBESTBEREINIGEN :
- /*------------------------------------------------------------------------------
- Purpose:
- Parameters: <none>
- Notes:
- ------------------------------------------------------------------------------*/
- FOR EACH KunBest
- WHERE KunBest.Firma = cFirma:
- FIND Artst NO-LOCK OF KunBest NO-ERROR.
- IF NOT AVAILABLE Artst THEN
- DO:
- DELETE KunBest.
- NEXT.
- END.
- IF NOT Artst.Aktiv THEN
- DO:
- DELETE KunBest.
- NEXT.
- END.
- IF Artst.Ausverk <> 9 THEN NEXT.
- DELETE KunBest.
- END.
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ENDIF
- &IF DEFINED(EXCLUDE-RECHNEN) = 0 &THEN
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RECHNEN Procedure
- PROCEDURE RECHNEN :
- /*------------------------------------------------------------------------------
- Purpose:
- Parameters: <none>
- Notes:
- ------------------------------------------------------------------------------*/
- DEF VAR VInvBest AS DEC DECIMALS 4 NO-UNDO.
- DEF VAR VEingang AS DEC DECIMALS 4 NO-UNDO.
- DEF VAR VAusgang AS DEC DECIMALS 4 NO-UNDO.
- DEF VAR VDatum AS DATE NO-UNDO.
- DEF VAR nOldBestand AS DEC DECIMALS 4 NO-UNDO.
- DEF VAR cString AS CHAR NO-UNDO.
-
- DEF BUFFER bArtLager FOR ArtLager.
- DEF BUFFER bArtst FOR Artst .
- DEF BUFFER bArtbw FOR Artbw .
- DISABLE TRIGGERS FOR LOAD OF Artst .
- DISABLE TRIGGERS FOR LOAD OF ArtLager.
- FOR EACH bArtst NO-LOCK
- WHERE bArtst.Firma = cFirma
- AND bArtst.Artnr >= iVonArtnr
- AND bArtst.Artnr <= iBisArtnr
- AND bArtst.Inhalt >= iVonInhalt
- AND bArtst.Inhalt <= iBisInhalt
- AND bArtst.Jahr >= iVonJahr
- AND bArtst.Jahr <= iBisJahr:
-
- EMPTY TEMP-TABLE tBestand.
-
- FOR EACH bArtLager NO-LOCK
- WHERE bArtLager.Firma = cFirma
- AND bArtLager.Artnr = bArtst.Artnr
- AND bArtLager.Inhalt = bArtst.Inhalt
- AND bArtLager.Jahr = bArtst.Jahr:
- CREATE tBestand.
- ASSIGN
- tBestand.Lager = bArtLager.Lager
- tBestand.ilRecid = RECID(bArtLager)
- tBestand.iaRecid = RECID(bArtst)
- tBestand.Inv_Datum = bArtLager.Datum_Inv
- tBestand.iTrnr = 0.
-
- IF tBestand.Inv_Datum <> ? THEN
- DO:
- FOR EACH bArtbw NO-LOCK
- WHERE bArtbw.Firma = bArtst.Firma
- AND bArtbw.Artnr = bArtst.Artnr
- AND bArtbw.Inhalt = bArtst.Inhalt
- AND bArtbw.Jahr = bArtst.Jahr
- AND bArtbw.Lager = bArtLager.Lager
- AND bArtbw.Tr_Art = 21
- AND bArtbw.Datum = tBestand.Inv_Datum :
-
- IF bArtbw.Trnr > tBestand.iTrnr THEN tBestand.iTrnr = bArtbw.Trnr.
- END.
- END.
-
- IF tBestand.Inv_Datum = ? THEN
- DO:
- FIND FIRST bArtbw NO-LOCK USE-INDEX Artbw-k7
- WHERE bArtbw.Firma = bArtst.Firma
- AND bArtbw.Artnr = bArtst.Artnr
- AND bArtbw.Inhalt = bArtst.Inhalt
- AND bArtbw.Jahr = bArtst.Jahr
- AND bArtbw.Lager = bArtLager.Lager
- AND bArtbw.Tr_Art = 21 NO-ERROR.
- IF AVAILABLE bArtbw THEN tBestand.Inv_Datum = bArtbw.Datum.
- ELSE tBestand.Inv_Datum = 01/01/0001.
- IF AVAILABLE bArtbw AND
- bArtbw.Trnr < tBestand.iTrnr THEN tBestand.iTrnr = bArtbw.Trnr.
- END.
- END.
-
- FOR EACH tBestand:
- FOR EACH bArtbw NO-LOCK USE-INDEX Artbw-k2
- WHERE bArtbw.Firma = bArtst.Firma
- AND bArtbw.Artnr = bArtst.Artnr
- AND bArtbw.Inhalt = bArtst.Inhalt
- AND bArtbw.Jahr = bArtst.Jahr
- AND bArtbw.Lag_Buch = TRUE
- AND bArtbw.Lager = tBestand.Lager
- AND bArtbw.Datum >= tBestand.Inv_Datum:
- IF bArtbw.Datum = tBestand.Inv_Datum AND
- bArtbw.Tr_Art < 21 AND
- bArtbw.Trnr < tBestand.iTrnr THEN NEXT.
-
- DO WHILE TRUE:
- IF bArtbw.Tr_Art < 11 THEN
- DO:
- tBestand.Ausgang = tBestand.Ausgang + bArtbw.Menge.
- LEAVE.
- END.
- IF bArtbw.Tr_Art < 21 THEN
- DO:
- tBestand.Eingang = tBestand.Eingang + bArtbw.Menge.
- LEAVE.
- END.
- tBestand.Inv_Bestand = tBestand.Inv_Bestand + bArtbw.Menge.
- LEAVE.
- END.
- END.
- END.
-
- REPEAT TRANSACTION:
- FIND FIRST tBestand.
- FIND Artst EXCLUSIVE-LOCK
- WHERE RECID(Artst) = tBestand.iaRecid NO-WAIT NO-ERROR.
- IF NOT AVAILABLE Artst AND
- LOCKED Artst THEN
- DO:
- cString = SUBSTITUTE('Artst &1 ist in Zugriff', Artst.Artnr ).
- DYNAMIC-FUNCTION('writeLogFile':U, cString) NO-ERROR.
- NEXT.
- END.
- nOldBestand = Artst.Bestand.
- Artst.Bestand = 0.
- FOR EACH tBestand:
- FIND ArtLager EXCLUSIVE-LOCK
- WHERE RECID(ArtLager) = tBestand.ilRecid NO-WAIT NO-ERROR.
- IF NOT AVAILABLE ArtLager AND
- LOCKED ArtLager THEN
- DO:
- cString = SUBSTITUTE('ArtLager &1 ist in Zugriff', Artst.Artnr ).
- DYNAMIC-FUNCTION('writeLogFile':U, cString) NO-ERROR.
- NEXT.
- END.
- ASSIGN
- ArtLager.Inv_Best = tBestand.Inv_Bestand
- ArtLager.Eingang = tBestand.Eingang
- ArtLager.Ausgang = tBestand.Ausgang
- ArtLager.Bestand = tBestand.Inv_Bestand
- + tBestand.Eingang
- - tBestand.Ausgang.
- IF tBestand.Inv_Datum <> 01/01/0001 THEN ArtLager.Datum_Inv = tBestand.Inv_Datum.
- Artst.Bestand = Artst.Bestand + ArtLager.Bestand.
- RELEASE ArtLager.
- END.
- IF Artst.Bestand <> nOldBestand THEN
- DO:
- cString = SUBSTITUTE('&1;&2;&3', Artst.Artnr, Artst.Bestand, nOldBestand ).
- DYNAMIC-FUNCTION('writeLogFile':U, cString) NO-ERROR.
- END.
- RELEASE Artst.
- LEAVE.
- END.
- END.
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ENDIF
- /* ************************ Function Implementations ***************** */
- &IF DEFINED(EXCLUDE-getLogName) = 0 &THEN
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getLogName Procedure
- FUNCTION getLogName RETURNS CHARACTER
- ( /* parameter-definitions */ ) :
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- DEF VAR cPath AS CHAR NO-UNDO.
-
- GET-KEY-VALUE SECTION 'GrundEinstellungen'
- KEY 'Ge_MIS_LOGS'
- VALUE cPath.
- IF cPath = '' OR
- cPath = ? THEN cPath = SESSION:TEMP-DIRECTORY.
- IF SUBSTRING(cPath, LENGTH(cPath), 01) <> '/' AND
- SUBSTRING(cPath, LENGTH(cPath), 01) <> '\' THEN cPath = cPath + '\'.
- cPath = cPath
- + 'BestandesKorrektur.csv'.
- RETURN cPath.
- END FUNCTION.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ENDIF
- &IF DEFINED(EXCLUDE-writeLogFile) = 0 &THEN
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION writeLogFile Procedure
- FUNCTION writeLogFile RETURNS LOGICAL
- ( ipMessage AS CHAR ) :
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- DEF VAR cString AS CHAR NO-UNDO.
- cString = SUBSTITUTE('&1', ipMessage).
- OUTPUT STREAM LogStream TO VALUE(cLogName) APPEND.
- PUT STREAM LogStream CONTROL cString CHR(10).
- OUTPUT STREAM LogStream CLOSE.
- RETURN TRUE.
- END FUNCTION.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ENDIF
|