; Výkaz ZaZ pro podnikatele v plném rozsahu pro rok 2016 ; verze z 26.8.2016 FileName('FIVZ'+ObdMesic(2)+ObdRok(2)+'.WNS') Designed('') Author('Milan Slíva','EMail: sliva@fi.cz','http://www.fi.com') Descr('VZaZ pro nevýdělečné organizace v plném rozsahu','podle Vyhl. 324/2015 rok 2016') ValidInt:String='-0123456789' ValidFloat:String='-0123456789..' Radkovani:Real=6 Procedure Hlavicka() DataHeight:Real=Polozek*Radkovani; Pen(0,0.7) RoundBox(ColPos[1],YHeadTop,Width,Height+DataHeight,3.3,3.3) Line(XZacatek1,YHeadTop+Height,Width,0) Pen(0,0.1) FontSize(3.5) FontFace(Normal); Line(ColPos[2],YHeadTop,0,Height+DataHeight); Line(ColPos[3],YHeadTop,0,Height+DataHeight); Line(ColPos[4],YHeadTop,0,Height+DataHeight); Line(ColPos[5],YHeadTop,0,Height+DataHeight); Line(ColPos[6],YHeadTop,0,Height+DataHeight); LocR=ColPos[1] LocR2=LocR+(ColAct[1]/2) XText(LocR2,YHeadTop+2,ColAct[1]-3,TA_CENTER,'Položka'); XText(LocR2,YHeadTop+11,ColAct[1]-3,TA_CENTER,'a'); LocR=LocR+ColAct[1] LocR2=LocR+(ColAct[2]/2) XText(LocR2,YHeadTop+2,ColAct[2]-3,TA_CENTER,'T E X T'); XText(LocR2,YHeadTop+11,ColAct[2]-3,TA_CENTER,'b'); LocR=LocR+ColAct[2] LocR2=LocR+(ColAct[3]/2) XText(LocR2,YHeadTop+11,ColAct[3]-3,TA_CENTER,'c'); LocR=LocR+ColAct[3] LocR2=LocR+(ColAct[4]/2) XText(LocR2,YHeadTop+2,ColAct[4]-3,TA_CENTER,'činnost'); XText(LocR2,YHeadTop+6,ColAct[4]-3,TA_CENTER,'hlavní'); XText(LocR2,YHeadTop+11,ColAct[4]-3,TA_CENTER,'1'); LocR=LocR+ColAct[4] LocR2=LocR+(ColAct[5]/2) XText(LocR2,YHeadTop+2,ColAct[5]-3,TA_CENTER,'činnost'); XText(LocR2,YHeadTop+6,ColAct[5]-3,TA_CENTER,'hospodářská'); XText(LocR2,YHeadTop+11,ColAct[5]-3,TA_CENTER,'2'); LocR=LocR+ColAct[5] LocR2=LocR+(ColAct[6]/2) XText(LocR2,YHeadTop+4,ColAct[6]-3,TA_CENTER,'celkem'); XText(LocR2,YHeadTop+11,ColAct[6]-3,TA_CENTER,'3'); LineS(XZacatek1,YDataTop+Radkovani,Width,0,0,Radkovani,Polozek-1) end; Procedure PrintFromFile() LocW=0 While((EOF(Soubor)=False) and (LocWAsc('$'))and(FirstChar<>Asc('@'))) begin Inc(HotovoRadku) if(InArray(Radky,HotovoRadku)) begin Inc(LocW) if(FirstChar=Asc('#')) begin ReadedLine=FromChar(',',FromChar(',',ReadedLine)); end ReadedLine=ReadedLine+#9+Str(HotovoRadku); DynTab(ReadedLine) end; end end; end; SetFillToBlank('') INI:String=DataPath+'VYKAZY.INI' TiskJenNenul:Boolean TiskNulRadku:Boolean=GetBoolean(GetFromIni('VYKAZY','TiskNulRadku',INI)) TiskJenNenul=(not TiskNulRadku) LocI:Integer VelikostPisma:Real=0 VelikostPisma=Val(GetFromIni('VYKAZY','VelikostPisma',INI)) if(VelikostPisma=0) VelikostPisma=3.5 PocetDesMist:Byte=0 ZpusobZaokr:Byte=Val(GetDataINI('INFO','ZaokrouhleniVykazu')) if(ZpusobZaokr=1) PocetDesMist=2 if(ZpusobZaokr=2) PocetDesMist=2 if(PocetDesMist=0) begin ValidAct:String=ValidInt end else begin ValidAct:String=ValidFloat end; DeclareRec('Program') TypVykazu:Byte=Val(GetFromIni('VYKAZY','TypVykazu',INI)) FormName:String=GetTabName(4); JeCislo:Boolean LineNum:Word=1 i:Byte=1 j:Byte=1 k:Byte l:Byte z:Byte=1 StatusWindowInCall(False) ItsBlank:Boolean LocStr:String LocStr1:String LocStr2:String LocR2:Real LocW:Word LocBo:Boolean TiskniSloupce:Word=$38 if(Length(ObdMesic(2))<>0) begin Name('Výkaz zisků a ztrát - Formulář za '+ObdMesic(2)+ObdRok(2)) TypVykazu=Program.TypJednotky end else begin Name('Výkaz zisků a ztrát - Prázdný') ItsBlank=True TiskJenNenul=False ReadedLine:String FirstChar:Byte DefName:String=GetRelevantName(form_ZZ,TypVykazu); NamesCount:Word=GetRelevantTable(form_ZZ,'Names'); DefDialog('Rozsah formuláře',256,112); DlgShade(-1,,8,8,240,32); DlgCombo(101,DefName,12,12,232,256,33,CBS_DropDownList,Names); DlgButton(id_OK,'OK',56,46); DlgButton(id_Cancel,'Zpět',138,46); if(DlgExecute(True)<>id_OK) Halt; TypVykazu=GetRelevantID(form_ZZ,DefName); end; Global NazevSest2:String=GetRelevantName(form_ZZ,TypVykazu); if(ItsBlank) begin Soubor:TextFile; Open(Soubor,FormName); end else begin OpenWNS(WNSName) SaveWnsPos(1) end; Rozhrani:Word=GetTableBoundary(form_ZZ); SouborTab:TextFile Open(SouborTab,GetTabName(1)) While(not(EOF(SouborTab))) begin LocStr=Readln(SouborTab) if(CompareStr(Copy(LocStr,1,1),'*')) begin if(CompareStr(UpCase(Copy(LocStr,2,3)),'VH=')) ;*VH= číslo řádku s Výsledkem hospodaření begin LocStr=ToChar(' ',LocStr) RadekVH=Val(FromChar('=',LocStr)) GoTo(KonecCyklu) end end end KonecCyklu: RadkuCelkem:Word=GetTableLines(form_ZZ); RadkuNaklady:Word RadkuVynosy:Word Radku:Word=GetRelevantLines(form_ZZ,TypVykazu,'Radky') HotovoRadku:Word HotovoRadkuSave:Word CisRad:Word IndexOd:Word=GetFirstIndex(Radky) IndexDo:Word=GetLastIndex(Radky) While(IndexOd<=IndexDo) begin if(Radky[IndexOd]RadkuNaklady) Polozek=RadkuNaklady; Hlavicka(); TabPos(YDataTop+1.5) DefTab(3,Radkovani,ColPos[1]+2,ColAct[1]-4,TA_LEFT|TA_Constrict,ColPos[2]+2,ColAct[2]-4,TA_Both|TA_Constrict,ColPos[3]+ColAct[3]/2,ColAct[3],TA_Center|TA_ConStrict) if(ItsBlank) begin PrintFromFile() end else begin HotovoRadkuSave=HotovoRadku LoadWnsPos(1) LocW=0 While(LocW0) begin LoadWNSPos(2); Inc(HotovoRadku) if(InArray(Radky,HotovoRadku)) begin Inc(LocW) TabFromWns(2,6,1,$7) end else begin SkipWNSLine(2,6,1) end; end; end; LoadWnsPos(1) HotovoRadku=HotovoRadkuSave FontSize(4.5) FontFace(Bold|Italic) DefTab(3,Radkovani,ColPos[4]+ColAct[4]-2,ColAct[4]-4,TA_RIGHT|TA_Constrict,ColPos[5]+ColAct[5]-2,ColAct[5]-4,TA_RIGHT|TA_Constrict,ColPos[6]+ColAct[6]-2,ColAct[6]-4,TA_RIGHT|TA_Constrict) TabPos(YDataTop+1) LocW=0 While(LocW0) begin LoadWNSPos(2); Inc(HotovoRadku) if(InArray(Radky,HotovoRadku)) begin Inc(LocW) TabFromWns(2,6,1,TiskniSloupce) end else begin SkipWNSLine(2,6,1) end; end; end; SaveWnsPos(1) FontSize(3.3) FontFace(Normal) Text(XKonec1,YBottom-1,TA_RIGHT,'Vytištěno systémem WinDUO') end; Dec(RadkuNaklady,Polozek); ; {dalsi strany naklady} While(RadkuNaklady<>0) begin NextPage(); YBottom:Real=285 Height:Real=Y1Hlav1 YHeadTop:Real=15 YDataTop:Real=15+Height Width:Real=XKonec1-XZacatek1 Polozek=Int((YBottom-YDataTop)/Radkovani); if(Polozek>RadkuNaklady) Polozek=RadkuNaklady; FONTSIZE(5) FontFace(Bold) TEXT(XZacatek1+Width,YHeadTop-7,TA_RIGHT,'Náklady') Hlavicka(); TabPos(YDataTop+1.5) DefTab(3,Radkovani,ColPos[1]+2,ColAct[1]-4,TA_LEFT|TA_Constrict,ColPos[2]+2,ColAct[2]-4,TA_Both|TA_Constrict,ColPos[3]+ColAct[3]/2,ColAct[3],TA_Center|TA_ConStrict) if(ItsBlank) begin PrintFromFile() end else begin LoadWnsPos(1) HotovoRadkuSave=HotovoRadku LocW=0 While(LocW0) begin LoadWNSPos(2); Inc(HotovoRadku) if(InArray(Radky,HotovoRadku)) begin Inc(LocW) TabFromWns(2,6,1,$7) end else begin SkipWNSLine(2,6,1) end; end; end; LoadWnsPos(1) HotovoRadku=HotovoRadkuSave FontSize(4.5) FontFace(Bold|Italic) DefTab(3,Radkovani,ColPos[4]+ColAct[4]-2,ColAct[4]-4,TA_RIGHT|TA_Constrict,ColPos[5]+ColAct[5]-2,ColAct[5]-4,TA_RIGHT|TA_Constrict,ColPos[6]+ColAct[6]-2,ColAct[6]-4,TA_RIGHT|TA_Constrict) TabPos(YDataTop+1) LocW=0 While(LocW0) begin LoadWNSPos(2); Inc(HotovoRadku) if(InArray(Radky,HotovoRadku)) begin Inc(LocW) TabFromWns(2,6,1,TiskniSloupce) end else begin SkipWNSLine(2,6,1) end; end; end; SaveWnsPos(1) FontSize(3.3) FontFace(Normal) Text(XKonec1,YBottom-1,TA_RIGHT,'Vytištěno systémem WinDUO') end; Dec(RadkuNaklady,Polozek); end; ;{VYNOSY} While(RadkuVynosy<>0) begin YBottom:Real=285 Height:Real=Y1Hlav1 if(TypVykazu=0)or(HotovoRadku>Rozhrani) begin NextPage(); YHeadTop=15 YDataTop=15+Height LocBo=true end else begin YHeadTop=YHeadTop+Height+DataHeight+15; YDataTop=YHeadTop+Height LocBo=false end; Width:Real=XKonec1-XZacatek1 Polozek=Int((YBottom-YDataTop)/Radkovani); if(Polozek>RadkuVynosy) Polozek=RadkuVynosy; FONTSIZE(5) FontFace(Bold) TEXT(XZacatek1+Width,YHeadTop-7,TA_RIGHT,'Výnosy') Hlavicka(); TabPos(YDataTop+1.5) DefTab(3,Radkovani,ColPos[1]+2,ColAct[1]-4,TA_LEFT|TA_Constrict,ColPos[2]+2,ColAct[2]-4,TA_Both|TA_Constrict,ColPos[3]+ColAct[3]/2,ColAct[3],TA_Center|TA_ConStrict) if(ItsBlank) begin PrintFromFile() end else begin LoadWnsPos(1) HotovoRadkuSave=HotovoRadku LocW=0 While(LocW0) begin LoadWNSPos(2); Inc(HotovoRadku) if(InArray(Radky,HotovoRadku)) begin Inc(LocW) TabFromWns(2,6,1,$7) end else begin SkipWNSLine(2,6,1) end; end; end; LoadWnsPos(1) HotovoRadku=HotovoRadkuSave FontSize(4.5) FontFace(Bold|Italic) DefTab(3,Radkovani,ColPos[4]+ColAct[4]-2,ColAct[4]-4,TA_RIGHT|TA_Constrict,ColPos[5]+ColAct[5]-2,ColAct[5]-4,TA_RIGHT|TA_Constrict,ColPos[6]+ColAct[6]-2,ColAct[6]-4,TA_RIGHT|TA_Constrict) TabPos(YDataTop+1) LocW=0 While(LocW0) begin LoadWNSPos(2); Inc(HotovoRadku) if(InArray(Radky,HotovoRadku)) begin Inc(LocW) TabFromWns(2,6,1,TiskniSloupce) end else begin SkipWNSLine(2,6,1) end; end; end; SaveWnsPos(1) if(LocBo) begin FontSize(3.3) FontFace(Normal) Text(XKonec1,YBottom-1,TA_RIGHT,'Vytištěno systémem WinDUO') end; end; Dec(RadkuVynosy,Polozek); end; END