*    smaze zaporne zustatky v operacich VK a VP od zadaneho cisla dokladu
*      *      *      *      *     *BEZ HADA*     *      *      *      *      *

DO clos_data

USE (m.gcdat_path + "doklady") IN 0 ORDER c_dokl
USE (m.gcdat_path + "obraty")  IN 0

prvni_c_dokl = vyber_zacatek()

IF m.prvni_c_dokl > 0
    SELECT obraty
    SET RELATION TO c_dokl INTO doklady
    SET FILTER TO INLIST(operace, "VP", "VK") .and. mnozstvi < 0 .and. zustatek < 0 .and. c_dokl >= m.prvni_c_dokl
    INDEX on STR(c_dokl) + STR(c_karty) + STR(poradi) TO qwe

    DO WHILE .T.

        LOCATE FOR INLIST(operace, "VP", "VK") .and. mnozstvi < 0 .and. zustatek < 0
        IF .not. FOUND()
            EXIT 
        ENDIF 
        ?? "."
        SCATTER FIELDS c_stredisk, operace, c_dokl, c_karty, poradi MEMVAR
        korekce = - zustatek

        tex_zac  = TRANS(c_stredisk, "999999 ") + operace + STR(c_dokl,8) + TRANSFORM(c_karty, "  karta:999999") + TRANSFORM(poradi, " por:999999") + TRANSFORM(m.korekce, " korekce:999999.9999")
        texticek = m.tex_zac + TRANS(zustatek, "  zust:999999.9999") + " --> " + TRANS(zustatek + m.korekce, "999999.9999") + TRANS(mnozstvi, "  mn:999999.9999") + " --> " + TRANS(mnozstvi + m.korekce, "999999.9999") + "   datum_dokl:" + DTOC(doklady.datum_dokl)
        small_log (texticek, PROGRAM())

        REPLACE  spdan WITH mnozstvi, spstupne WITH zustatek, serial_no WITH "MINUS", zustatek WITH zustatek + m.korekce, mnozstvi WITH mnozstvi + m.korekce


        SCAN FOR c_stredisk = m.c_stredisk .and. c_karty = m.c_karty .and. ((c_dokl = m.c_dokl .and. poradi > m.poradi) .or. (c_dokl > m.c_dokl))

            tex_zac  = TRANS(c_stredisk, "999999 ") + operace + STR(c_dokl,8) + SPACE(14) + TRANSFORM(poradi, " por:999999") + SPACE(20)
            texticek = m.tex_zac + TRANS(zustatek, "  zust:999999.9999") + " --> " + TRANS(zustatek + m.korekce, "999999.9999")
            small_log (texticek, PROGRAM())

            REPLACE spstupne WITH zustatek, serial_no WITH "MINUS", zustatek WITH zustatek + m.korekce
        ENDSCAN 

        small_log ("", PROGRAM())
    ENDDO 
    MESSAGEBOX("Nezapomen pustit PREPOCET SKLADU",1+48,PROGRAM(), 3333)
ENDIF 
DO clos_data


* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
FUNCTION vyber_zacatek
SELECT disti obraty.c_dokl, obraty.operace, doklady.datum_dokl, kdy ORDER BY obraty.c_dokl;
       WHERE INLIST(obraty.operace, "VP", "VK") .and. mnozstvi < 0 .and. zustatek < 0;
       FROM obraty LEFT JOIN doklady ON doklady.c_dokl = obraty.c_dokl INTO CURSOR menaz
IF RECCOUNT() = 0
    MESSAGEBOX("Nejsou zadne zaporne zustatky VP a VK",1+16,PROGRAM(), 3333)
    RETURN 0
ELSE 
    DEFINE POPUP soubory PROMPT FIELD STR(c_dokl, 8) + " | " + operace + " | " + DTOC(datum_dokl) + " | " + TTOC(kdy, 3) FROM 1,33 FONT 'Courier NEW' TITLE "Vyber, od ktereho dokladu zapory mazat"
    ON SELECTION POPUP soubory DEACTI POPUP 
    ACTIVATE POPUP soubory
    RELEASE POPUPS soubory
ENDIF 
IF EMPTY(PROMPT())
    RETURN 0
ELSE 
    RETURN menaz.c_dokl
ENDIF 
