Code: Alles auswählen
FUNCTION mwst_jsal_aktualisiere( x_tg , x_jjjj ) // gesichtet 20.03.2014
LOCAL ar_mwst := {}
LOCAL ar_bst := {}
LOCAL ar_feh := {}
LOCAL su := 0
LOCAL xx // M.K. 24.04.2013
MEMVAR oVtPara
DEFAULT x_tg TO oVtPara:m_mtg_nr
DEFAULT x_jjjj TO oVtPara:m_mtg_jahr
BEGIN SEQUENCE
nim_jo( "S" , 0 , 1 , "JO" )
jo->(DbSetFilter({|| jo->jjjj = x_jjjj},"jo->jjjj = x_jjjj"))
jo->(DbEval({||su := ascan( ar_bst , jo->gruppe + jo->konto ), IF( su = 0 ,LADE_JOF(ar_bst,ar_mwst) , ADD_JOF(ar_mwst,su))}))
JO->(DbCloseArea())
nim_fib( "s" , 0 , 1 , "FIB" )
//*********************** siehe Erklärung unten ************************************************************************
fib->(DbSetFilter( {|| fib->sel1 = "BUC" .AND. SubStr(fib->nr_buc,1,2) = SubStr(x_jjjj,3,2)},"fib->sel1 = 'BUC' .AND. SubStr(fib->nr_buc,1,2) = SubStr(x_jjjj,3,2)"))
//*****************************************************************************************************************
fib->(DbEval({||su := AScan(ar_bst, fib->gruppe + fib->konto), IF( su = 0 ,LADE_FIBF(ar_bst,ar_mwst) , ADD_FIBF(ar_mwst,su))}))
FIB->(DbCloseArea())
nim_vo( "S" , 0 , 1 , "VO" )
vo->(DbSetFilter({|| vo->jjjj = x_jjjj},"vo->jjjj = x_jjjj"))
vo->(DbEval({||su := AScan(ar_bst, vo->gruppe + vo->konto ),IF( su = 0 ,LADE_VOF(ar_bst,ar_mwst) , ADD_VOF(ar_mwst,su))}))
VO->(DbCloseArea())
nim_sal( "S" , 0 , 1 , "JSAL" )
jsal->(DbEval({||su := AScan( ar_bst, jsal->gruppe + jsal->konto ),;
IF( su > 0 ,Eval({||net_rlo(),JSAL->b_mwst := ar_mwst[su,1] ,;
JSAL->k_mwst := ar_mwst[su,2] ,;
JSAL->o_mwst := ar_mwst[su,3] ,;
JSAL->v_mwst := ar_mwst[su,5] ,;
jsal->(DbUnlock());
};
),;
);
};
);
)
**** Kontrolle Kasse
AEval( ar_mwst , {|a,xi|xx := xi, ar_mwst[xi,10] := ar_mwst[xi,2] - ar_mwst[xi,4],;
IF( Round(ar_mwst[xi,4],2) # Round(ar_mwst[xi,2],2) ,;
Eval({|| AAdd(ar_feh,"FEHLER KASSE bei :: " + oVtPara:m_mtg_nr + " : " + oVtPara:m_mtg_jahr + " :: in :: "+ ar_bst[xx] ),;
AAdd(ar_feh," :: in JO : " + Str(ar_mwst[xx, 2],10,2)) ,;
AAdd(ar_feh," :: in FiBu : " + Str(ar_mwst[xx, 4],10,2)) ,;
AAdd(ar_feh," :: Diff. : " + Str(ar_mwst[xx,10],10,2)) ,;
AAdd(ar_feh," ");
};
),NIL;
);
};
)
IF len(ar_feh) > 0
sic_in_datei( ar_feh ) // lass stehen
ENDIF
JSAL->(DbCloseArea())
END SEQUENCE
ASize( ar_mwst , 0 )
ASize( ar_bst , 0 )
ASize( ar_feh , 0 )
su := NIL
xx := NIL
RETURN NIL
Wenn ich den Filter oben entferne, dann läuft alles ohne Probleme und die Handles halten sich im zivilen Bereich. Sorry, aber ich verstehe das nicht und sehe auch nichts mehr.
Lasse ich den Filter drin und nehme das Dbeval raus, knallt es trotzdem . Also muß es irgendwie an dem Filter liegen.