; DDT pro tisk inv. dopisu pohled. i závazků ; verze z 30.6.2004 ; Autor: WinDUO Team Name('Inventarizační dopis') Designed('ZavMan#1','PohlMan#1') Author('Winduo Team','EMail: winduo@winduo.cz','http://www.winduo.com','http://www.winduo.cz') Descr('Tisk inventarizačního dopisu o nezaplacených pohledávkách / závazcích') FileName('Zapocet.WNS') ValidCisla:String='0123456789' IF(Version()<5) Error('Tento soubor nelze zpracovat ve Vaší verzi WinDUO'+#13+#13+'Zajistěte si vyšší verzi...',mb_IconStop) ;{definice promennych} xLogoStart:Real=20 ; x-souradnice leveho horniho roku LOGO yLogoStart:Real=10 ; y-souradnice leveho horniho roku LOGO xLogoVel:Real=20 ; x velikost logo yLogoVel:Real=20 ; y velikost logo PosunY:Real=0 ; pocitadlo y souradnice pro aktualni radek xNAdresa:Real=20 ; x-souradnice nasi adresy xPAdresa:Real=110 ; x-souradnice adresy partnera yPAdresa:Real=50 ; y-souradnice adresy partnera xT1:Real=25 ; x-souřadnice 1. části hlavního textu yT1:Real=80 ; y-souřadnice 1. části hlavního textu xT2:Real=25 ; x-souřadnice 2. části hlavního textu yT2:Real=95 ; y-souřadnice 2. části hlavního textu xT10:Real=35+10 ; x-souradnice stredu leveho podpisu xT11:Real=130+10 ; x-souradnice stredu praveho podpisu xNazvy:Real=35 ; x-souřadnice názvů firem xZapocteno:Real=105 ; x-souradnice středu částky k započtení xTab1:Real=25 ; x-souradnice 1.sloupce tabulky (var. symb) xTab2:Real=48 ; x-souradnice 2.sloupce tabulky (dat. vyst) xTab3:Real=75 ; x-souradnice 3.sloupce tabulky (datum spl) xTab4:Real=120 ; x-souradnice 4.sloupce tabulky (castka na fakt.) xTab5:Real=145 ; x-souradnice 5.sloupce tabulky (uhrazeno) xTab6:Real=170 ; x-souradnice 6.sloupce tabulky (zbyva k uhrade) yDalsiStrana:Real=30 ; y-souradnice tisku na dalsi strane yRazitka:Word=30 ; kolik mm zabere prostor pro razitka DelkaStrany:Real=297-58-yRazitka ; delka strany, po odecteni podpisu a vyhodnoceni na konci TiskLogo:Boolean=False Odkud:String[1]=UpCase(Copy(GetBindName(),1,1)) if(CompareStr(Odkud,'P')) begin Zaznam1J:String='pohledávka' Zaznam1M:String='pohledávky' Zaznam2M:String='pohledávek' Zaznam3M:String='pohledávkám' T8:String='Uznáváme jako dlužník výše uvedené pohledávky Vaší společnosti: ' T12:String='Razítko a podpis odběratele:' T13:String='za dodavatele:' DeclareRec('Pohledavka') DeclareRec('KeyPohledavka3') DeclareRec('Faktura') DeclareRec('KeyFaktura1') Kniha:String='Pohledavka' Klic:String='Key'+kniha+'3' end else begin Zaznam1J:String='závazek' Zaznam1M:String='závazky' Zaznam2M:String='závazků' Zaznam3M:String='závazkům' T8:String='Souhlasíme jako věřitel s výše uvedenými závazky Vaší společnosti: ' T12:String='Razítko a podpis dodavatele:' T13:String='za odběratele:' DeclareRec('Zavazek') DeclareRec('KeyZavazek3') Kniha:String='Zavazek' Klic:String='Key'+kniha+'3' end ;{texty} T1:String='Věc: Inventarizace '+Zaznam2M+' ke dni ' T2:String='Na základě evidence '+Zaznam2M+' prováděné v souladu se zákonem č. 563/91 S. ve znění pozdějších' T3:String='předpisů Vás tímto žádáme' T4:String='o odsouhlasení stavu našich '+Zaznam2M+' ke dni: ' T5:String='Odsouhlasení nám zašlete v jednom vyhotovení na naši adresu nejpozději do: ' T6:String='Pokud neobdržíme Vaše vyjádření v tomto termínu, budeme považovat uvedený stav našich' T7:String=Zaznam2M+' za správný.' T9:String='a to co do předmětu a výše fakturace ve smyslu § 323 Obchodního zákoníku.' T10:String='Výše uvedený stav Vašich '+Zaznam2M+' souhlasí s naší evidencí.' T11:String='Datum:' ;{ostatni promenne} DeclareRec('Program') SledICO:LongInt DeclareRec('Adresar') DeclareRec('KeyAdresar1') VetaA:LongInt VetaP:LongInt VetaF:LongInt DatumInv:Word DatumOdp:Word Zalohovka:Boolean Beru:Boolean x:Boolean ;Aspon1:LongInt=0 SumaP:Real=0 SumaZ:Real=0 CelkemP:Real CelkemZ:Real Zapocteno:Real VSPoslP:String VSPoslZ:String ;{definice uvodniho dialogu, zadání období} ;DlgFollowMouse(True) DefDialog('Inventarizační dopis',462,224) DlgShade(-1,'',4,27,453,124) DlgStatic(-1,'Tisk inventarizačního dopisu (k nezálohovým) '+Zaznam3M,16,4,390) DlgStatic(-1,'IČ:',10,34,32) DlgEditICO(103,SledICO,50,32,,,104,105) DlgOnLineHelp(103,'IČ firmy, pro kterou chcete inv. dopis sestavit (F7)') DlgStatic(104,'',132,34,322) DlgStatic(105,'',132,52,322) DlgStatic(-1,'Datum inventarizace:',10,76,142) DlgEditDate(106,DatumInv,153,72) DlgOnLineHelp(106,'Datum, ke kterému chcete sestavit inventarizační dopis') DlgStatic(-1,'Datum odpovědi:',260,76,132) DlgEditDate(107,DatumOdp,372,72) DlgOnLineHelp(107,'V dopisu je uvedeno, do kdy má partner zaslat odpověď') DlgDivider(16,98,424,0) DlgStatic(-1,'Prostor pro razítka v mm:',10,107,167) DlgEdit(108,YRazitka,185,105,30,,2) DlgOnLineHelp(108,'Zde zadejte, jaký prostor na výšku (v mm) potřebujete pro razítka. Někdy tím ušetříte skok na novou stranu') IF(Length(Program.Logo)>1) ; dotaz, zda existuje logo begin DlgCheckBox(109,TiskLogo,10,127,340,,'Tisknout logo do dopisu') DlgOnLineHelp(109,'Pokud máte v nastavení faktury uvedeno logo, může být vytisknuto i do tohoto dopisu') end DlgButton(id_OK,'OK',166+120,156); DlgOnLineHelp(id_OK,'Pokračuje ve zpracování') DlgButton(id_Cancel,'Zpět',373,156); DlgOnLineHelp(id_Cancel,'Ukončí bez zpracování') ;DlgButton(id_Help,'Help',33,156); ;DlgOnLineHelp(id_Help,'Help') ;DlgSetHelp(help_Context,1040) IF(DlgExecute(True)<>ID_OK) Halt IF(SledICO=0) ; není vyplněno IČO begin Halt('Nevyplnili jste IČ'+#13+'Zpracování bylo ukončeno') end DelkaStrany=297-58-yRazitka ; delka strany, po odecteni podpisu a vyhodnoceni na konci ;{vyhledani adresy} ; zjisteni a tisk adresy: KeyAdresar1.Length=4 KeyAdresar1.Ico=SwapL(SledIco) if(FindKey(KeyAdresar1,VetaA)) begin ReadRec(Adresar,VetaA) end else begin ClearRec(Adresar) Halt('K zadanému IČ není v adresáři adresa'+#13+'Zpracování bylo ukončeno') end ;{test, zda existuje aspon jedna nezaplacená nezálohová pohledávka} if(CompareStr(Odkud,'P')) begin KeyPohledavka3.Length=4 KeyPohledavka3.Ico=SwapL(SledIco) if(SearchKey(KeyPohledavka3,VetaP)) begin ReadRec(Pohledavka,VetaP) While((Pohledavka.ICO=SledICO)and(VetaP<>0)) begin if(not(Pohledavka.Uhrazena)) begin Zalohovka=False if(Pohledavka.PohlFlags&1<>0) begin if(Pohledavka.TypD=1) Zalohovka=True end else begin KeyFaktura1.Length=6 KeyFaktura1.Cislo=SwapL(Pohledavka.Cislo) KeyFaktura1.Radek=0 if(FindKey(KeyFaktura1,VetaF)) begin ReadRec(Faktura,VetaF); if(Faktura.Typ=1) Zalohovka=True end else begin ClearRec(Faktura); end; end if((not Zalohovka)and(Pohledavka.DatVyst<=DatumInv)) begin SumaP=SumaP+Pohledavka.Castka-Pohledavka.Uhrazeno end end x=NextKey(KeyPohledavka3,VetaP) ReadRec(Pohledavka,VetaP) end end end else begin KeyZavazek3.Length=4 KeyZavazek3.Ico=SwapL(SledIco) if(SearchKey(KeyZavazek3,VetaP)) begin ReadRec(Zavazek,VetaP) While((Zavazek.ICO=SledICO)and(VetaP<>0)) begin if(not(Zavazek.Uhrazena)) begin if((Zavazek.DatVyst<=DatumInv)and(Zavazek.TypD<>1)) begin SumaP=SumaP+Zavazek.Castka-Zavazek.Uhrazeno end end x=NextKey(KeyZavazek3,VetaP) ReadRec(Zavazek,VetaP) end end end if(SumaP=0) begin Halt('Pro firmu: IČ='+NULL(SledICO,8,True)+' '+Adresar.Nazev+' není žádný záznam - '+Zaznam1J) end else begin ; vypocet a tisk započtu: ;{tisk hlavicky - nase adresa} FontFace(Bold); FontSize(3.5); IF(TiskLogo) begin PaintMetaFile(xLogoStart,yLogoStart,xLogoVel,yLogoVel,Program.Logo); ; tisk logo o velikosti 20x20 mm end PosunY=yLogoVel+6 ; počítá y-souřadnici ClearFontIndex() GetFontIndex(60,Program.Firma) GetFontIndex(60,Program.Rozsireni) GetFontIndex(60,Program.Ulice) GetFontIndex(60,Program.Mesto) FontIndex() IF(Length(Program.Rozsireni)<>0) ; je-li nazev nasi firmy dvouradkovy begin Text(xNAdresa,PosunY,TA_LEFT,Program.Firma) PosunY=PosunY+3.3 ; počítá y-souřadnici ;FontSize(3.0) ; velikost písma Text(xNAdresa,PosunY,TA_LEFT,Program.Rozsireni) PosunY=PosunY+3.3 ; počítá y-souřadnici FontFace(Normal); Text(xNAdresa,PosunY,TA_LEFT,Program.Ulice) PosunY=PosunY+3.3 ; počítá y-souřadnici Text(xNAdresa,PosunY,TA_LEFT,Program.PSC+' '+Program.Mesto) PosunY=PosunY+3.3 ; počítá y-souřadnici end else ; je-li nazev nasi firmy jednoradkovy begin Text(xNAdresa,PosunY,TA_LEFT,Program.Firma) PosunY=PosunY+4 ; počítá y-souřadnici FontFace(Normal); Text(xNAdresa,PosunY,TA_LEFT,Program.Ulice) PosunY=PosunY+4 ; počítá y-souřadnici Text(xNAdresa,PosunY,TA_LEFT,Program.PSC+' '+Program.Mesto) PosunY=PosunY+4 ; počítá y-souřadnici end ;{tisk hlavicky - adresa partnera} FontFace(Bold); FontSize(4.5) ; velikost písma ClearFontIndex() GetFontIndex(60,Adresar.Nazev) GetFontIndex(60,Adresar.Rozsireni) GetFontIndex(60,Adresar.Ulice) GetFontIndex(60,Adresar.PSC+' '+Adresar.Mesto) FontIndex() IF(Length(Adresar.Rozsireni)<>0) ; je-li nazev nasi firmy dvouradkovy begin Text(xPAdresa,yPAdresa,TA_LEFT,Adresar.Nazev) PosunY=yPAdresa+4.3 ; počítá y-souřadnici Text(xPAdresa,PosunY,TA_LEFT,Adresar.Rozsireni) PosunY=PosunY+3.8 ; počítá y-souřadnici FontFace(Normal); Text(xPAdresa,PosunY,TA_LEFT,Adresar.Ulice) PosunY=PosunY+3.8 ; počítá y-souřadnici Text(xPAdresa,PosunY,TA_LEFT,Adresar.PSC+' '+Adresar.Mesto) PosunY=PosunY+3.8 ; počítá y-souřadnici end else ; je-li nazev nasi firmy jednoradkovy begin Text(xPAdresa,yPAdresa,TA_LEFT,Adresar.Nazev) PosunY=yPAdresa+4.3 ; počítá y-souřadnici FontFace(Normal); Text(xPAdresa,PosunY,TA_LEFT,Adresar.Ulice) PosunY=PosunY+4.3 ; počítá y-souřadnici Text(xPAdresa,PosunY,TA_LEFT,Adresar.PSC+' '+Adresar.Mesto) PosunY=PosunY+4.3 ; počítá y-souřadnici end ;{tisk 1. casti textu} FontFace(Bold|Italic); FontSize(4.5) ; velikost písma Text(xT1,yT1,TA_LEFT,T1+StrDate(DatumInv)) ;{tisk 2. casti textu} FontFace(Normal); FontSize(3.5) ; velikost písma Text(xT2,yT2,TA_LEFT,T2) PosunY=yT2+3.8 ; počítá y-souřadnici ;{tisk nasi adresy} ; FontFace(Bold); ; T2=Program.Firma ; IF(Length(Program.Rozsireni)<>0) ; T2=T2+' '+Program.Rozsireni ; T2=T2+', IČ: '+Program.ICO ; IF(Length(Program.DIC)<>0) ; T2=T2+', DIČ: '+Program.DIC ; XText(xNazvy,PosunY,140,TA_LEFT,T2) ; PosunY=PosunY+3.8 ; počítá y-souřadnici ; T2=Program.PSC+' '+Program.Mesto+', '+Program.Ulice ; XText(xNazvy,PosunY,140,TA_LEFT,T2) ; PosunY=PosunY+3.8 ; počítá y-souřadnici ;{tisk 3. casti textu} FontFace(Normal); Text(xT2,PosunY,TA_LEFT,T3) PosunY=PosunY+3.8 ; počítá y-souřadnici ;{tisk adresy partnera} FontFace(Bold) ; T2=Adresar.Nazev ; IF(Length(Adresar.Rozsireni)<>0) ; T2=T2+' '+Adresar.Rozsireni ; T2=T2+', IČ: '+Adresar.ICO ; IF(Length(Adresar.DIC)<>0) ; T2=T2+', DIČ: '+Adresar.DIC ; XText(xNazvy,PosunY,140,TA_LEFT,T2) ; PosunY=PosunY+3.8 ; počítá y-souřadnici ; T2=Adresar.PSC+' '+Adresar.Mesto+', '+Adresar.Ulice ; XText(xNazvy,PosunY,140,TA_LEFT,T2) ; PosunY=PosunY+4.8 ; počítá y-souřadnici ;{tisk 4. casti textu} ; FontFace(Normal); Text((188-xT2)/2,PosunY,TA_Center,T4+StrDate(DatumInv)) PosunY=PosunY+3.8 ; počítá y-souřadnici ;{tisk, kolik bude započteno} ;IF(SumaP0)) begin if(not(Pohledavka.Uhrazena)) begin Zalohovka=False if(Pohledavka.PohlFlags&1<>0) begin if(Pohledavka.TypD=1) Zalohovka=True end else begin KeyFaktura1.Length=6 KeyFaktura1.Cislo=SwapL(Pohledavka.Cislo) KeyFaktura1.Radek=0 if(FindKey(KeyFaktura1,VetaF)) begin ReadRec(Faktura,VetaF); if(Faktura.Typ=1) Zalohovka=True end else begin ClearRec(Faktura); end; end if((not Zalohovka)and(Pohledavka.DatVyst<=DatumInv)) begin Text(xTab1,PosunY,TA_Left,Pohledavka.Doklad) Text(xTab2,PosunY,TA_Left,StrDate(Pohledavka.DatVyst)) Text(xTab3,PosunY,TA_Left,StrDate(Pohledavka.DatSpl)) Text(xTab4,PosunY,TA_Right,StrFinanc(Pohledavka.Castka,2,True)) Text(xTab5,PosunY,TA_Right,StrFinanc(Pohledavka.Uhrazeno,2,True)) Text(xTab6,PosunY,TA_Right,StrFinanc(Pohledavka.Castka-Pohledavka.Uhrazeno,2,True)) PosunY=PosunY+3.8 ; počítá y-souřadnici If(PosunY>DelkaStrany) begin NextPage PosunY=yDalsiStrana end SumaP=SumaP+Pohledavka.Castka-Pohledavka.Uhrazeno VSPoslP=Pohledavka.Doklad end end x=NextKey(KeyPohledavka3,VetaP) ReadRec(Pohledavka,VetaP) end FontFace(Bold); Text(xTab1,PosunY,TA_Left,'Celkem') Text(xTab6,PosunY,TA_Right,StrFinanc(SumaP,2,True)) PosunY=PosunY+3.8 ; počítá y-souřadnici end end else begin ;výpis závazků KeyZavazek3.Length=4 KeyZavazek3.Ico=SwapL(SledIco) SumaP=0 if(SearchKey(KeyZavazek3,VetaP)) begin ReadRec(Zavazek,VetaP) While((Zavazek.ICO=SledICO)and(VetaP<>0)) begin if(not(Zavazek.Uhrazena)) begin if((Zavazek.DatVyst<=DatumInv)and(Zavazek.TypD<>1)) begin Text(xTab1,PosunY,TA_Left,Zavazek.Doklad) Text(xTab2,PosunY,TA_Left,StrDate(Zavazek.DatVyst)) Text(xTab3,PosunY,TA_Left,StrDate(Zavazek.DatSpl)) Text(xTab4,PosunY,TA_Right,StrFinanc(Zavazek.Castka,2,True)) Text(xTab5,PosunY,TA_Right,StrFinanc(Zavazek.Uhrazeno,2,True)) Text(xTab6,PosunY,TA_Right,StrFinanc(Zavazek.Castka-Zavazek.Uhrazeno,2,True)) PosunY=PosunY+3.8 ; počítá y-souřadnici If(PosunY>DelkaStrany) begin NextPage PosunY=yDalsiStrana end SumaP=SumaP+Zavazek.Castka-Zavazek.Uhrazeno VSPoslP=Zavazek.Doklad end end x=NextKey(KeyZavazek3,VetaP) ReadRec(Zavazek,VetaP) end FontFace(Bold); Text(xTab1,PosunY,TA_Left,'Celkem') Text(xTab6,PosunY,TA_Right,StrFinanc(SumaP,2,True)) PosunY=PosunY+3.8 ; počítá y-souřadnici end end PosunY=PosunY+1 ; počítá y-souřadnici FontFace(Normal); Text(xTab1,PosunY,TA_Left,T6) PosunY=PosunY+3.8 ; počítá y-souřadnici Text(xTab1,PosunY,TA_Left,T7) PosunY=PosunY+3.8 ; počítá y-souřadnici PosunY=PosunY+8 ; počítá y-souřadnici Text(xT2,PosunY,TA_Left,T13) PosunY=PosunY+yRazitka ; počítá y-souřadnici Text(xT2,PosunY,TA_Left,T8+' '+Program.Firma+', IČ: '+NULL(Program.ICO,8)) PosunY=PosunY+3.8 ; počítá y-souřadnici Text(xT2,PosunY,TA_Left,T9) PosunY=PosunY+3.8 ; počítá y-souřadnici FontFace(Bold); Text(xT2,PosunY,TA_Left,T10) PosunY=PosunY+3.8 ; počítá y-souřadnici PosunY=PosunY+3.8 ; počítá y-souřadnici ; Text(xT10,PosunY,TA_Center,T12) Text(xT2,PosunY,TA_Left,T11) Text(xT11,PosunY,TA_Center,T12) PosunY=PosunY+3.8 ; počítá y-souřadnici ; Text(xT10,PosunY,TA_Center,T10) PosunY=PosunY+3.8 ; počítá y-souřadnici ClearFontIndex() ; GetFontIndex(60,Program.Firma) ; GetFontIndex(60,Program.Rozsireni) ; GetFontIndex(60,Adresar.Nazev) ; GetFontIndex(60,Adresar.Rozsireni) ; FontIndex() ; Text(xT10,PosunY,TA_Center,Program.Firma) ; Text(xT11,PosunY,TA_Center,Adresar.Nazev) ; PosunY=PosunY+3.8 ; počítá y-souřadnici ; Text(xT10,PosunY,TA_Center,Program.Rozsireni) ; Text(xT11,PosunY,TA_Center,Adresar.Rozsireni) PosunY=PosunY+3.8 ; počítá y-souřadnici end