Name('Záporný zůstatek v pokladně') ; pod tímto názvem bude sestava v menu Designed('PkldnMan') ; sestava bude dostupná z okna Adrman Author('Winduo Team','EMail: winduo@winduo.cz','http://www.winduo.com','http://www.winduo.cz') ;informace o autorovi Descr('Záporný zůstatek v pokladně','Změna třídění - Ne','Filtr - Ano') ;popis sestavy, tento text bude v bublince ;FileName('PokZapor.WNS') ; pod tímto názvem bude sestava uložena na disku Veta:LongInt ; definuje proměnnou (pokladna) Pozice:LongInt ; definuje proměnnou Datum:Word=0 SCisloPokl:String[3] CisloPokl:Word=0 ZustPred:Real=0 Zustatek:Real=0 Castka:Real=0 AsponJeden:Boolean=False DeclareRec('Pokladna') DeclareRec('KeyPokladna1') ; přiřazení a definice třídícího klíče ClearKey(KeyPokladna1) ; resetuje ukazatel aktuální věry v souboru WNSType(1); NewWNS('PokZapor.WNS','Záporné zůstatky v pokladně') DlgFollowMouse(False) ;{definice uvodniho dialogu} DefDialog('Záporný zůstatek v pokladně',462,224) DlgShade(-1,'',4,27,453,124) DlgStatic(-1,' Volba údajů',3,5,84) DlgStatic(-1,'Zadej číslo pokladny',10,34,150) DlgEdit(101,SCisloPokl,165,29,38,,3,,'1234567890') DlgOnLineHelp(101,'Číslo pokladny, nevyplněno - znamená, že vyhodnotí ty doklady, které mají číslo pokladny NULA nebo nevyplněno') DlgButton(id_OK,'OK',414-124,156); DlgOnLineHelp(id_OK,'Pokračuje ve zpracování') DlgButton(id_Cancel,'Zpět',373,156); DlgOnLineHelp(id_Cancel,'Ukončí bez zpracování') if(DlgExecute(True)<>ID_OK) Halt CisloPokl=Val(SCisloPokl) SetColumn(0,ta_Left,10); SetColumn(1,ta_Left,8); SetColumn(2,ta_Left,25); SetColumn(3,ta_Right,13); SetColumn(4,ta_Right,13); SetColumn(5,ta_Right,13); SetHead('Datum\tDoklad\tPopis\tZůstatek před\tČástka\tZůstatek po'); SetDescr(0,0,TA_Right|descr_PageNum,'Strana: '); if(CisloPokl=0) SetDescr(1,0,TA_Center,'Vyhledání záporného zůstatku v pokladně'); else SetDescr(1,0,TA_Center,'Vyhledání záporného zůstatku v pokladně číslo: '+Str(CisloPokl)); SetDescr(2,0,TA_Left|descr_Date,'Datum: '); SetDescr(3,1,TA_Left|descr_UserDescr,''); pokud je pouzit descr_UserDescr, tak si program vyzada dodatecny popis if(IsFilter(Pokladna)) ; dotaz, zda je aktivní filtr do sestav begin SetDescr(4,1,TA_Right,'Aktívní filtr'); end InitStatus(UsedKeys(KeyPokladna1)) ; inicializace stavoveho prouzku While(NextKey(Keypokladna1,Veta)) ; začátek cyklu přes celý soubor begin ; začátek příkazu pro zpracování jedné věty ReadRec(Pokladna,Veta) ; přečte větu ze souboru if((Pokladna.CisPokl=CisloPokl) and (InFilter(Pokladna))) begin ; začátek příkazu pro operace s těmi, které prošly filtrem ZustPred=Zustatek if(Pokladna.Vydaj) Castka=(Pokladna.Castka*(-1)) else Castka=(Pokladna.Castka) Zustatek=Zustatek+Castka if(Zustatek<0) begin AsponJeden=True AddLine(StrDate(Pokladna.Datum)+#9+Pokladna.Doklad+#9+Pokladna.Popis+#9+Str(ZustPred,0,2)+#9+Str(Castka,0,2)+#9+Str(Zustatek,0,2)) end end ; konec příkazu pro věty, které prošly filtrem Inc(Pozice) ; zvyseni citace zpracovanych vet SetStatus(Pozice) ; nastaveni stavoveho prouzku end ; konec příkazu pro zpracování jedné věty if(AsponJeden=False) AddComment('Nebyl objeven žádný stav, kdy by zůstatek pokladny klesnul pod nulu') END