//"fvwalkor.sc","Faktura VAT korygująca w walucie","\Dokumenty\Sprzedaż\Korekta VAT w walucie\",0,2.1.12,SYSTEM
///////////////////////////////
// Faktura VAT korygująca w walucie
// fvwalkor.sc
//////////////////////////////

#define SHOWGTU 1

#include "Lang_pol"
#include "Wydruki - include"

#define WALVAT
#define OK 2
#define ANULUJ -1
#define NAZWA_ 1
#define KOD_ 2
#define SWW_ 3
#define JEDN_ 4
#define ILOSC_ 5
#define RABATY_ 6
#define CENA_ 7
#define WARTN_ 8
#define WARTB_ 9
#define STVAT_ 10
#define KWVAT_ 11
#define TEMPKOL_ 12
#define DOSTAWA_ 13
#define CENAB_ 14
#define CENAN_ 15
#define WCENA_ 16
#define WWART_ 17
#define WWARTN_ 18
#define WWARTB_ 19
#define WCENAN_ 20
#define WCENAB_ 21
#define STVAT_PRZED_ 22
#define OO_ 23

#define PLATWYD

#ifndef SHOWOO
#define SHOWOO 1
#endif

Int l12, tbl0, bPlatnosci, bWydania
String Platnosci(1), sNotatka, SNotatkaRodz

#ifdef SIMPLIFIED				// dla poprawienia przejrzystosci kodu
Int CompactForm = 1				// "if-defowanie" pojedynczych linii
#else
Int CompactForm = 0
#endif

#ifdef SIMPLIFIED
Int    bOpis
Int    bRabatDlaWartosci
Int    BtnOk
Int    nRabatRound
String CmbBoxData( 2 ) = "Data sprzedaży", "Okres sprzedaży"
#endif

int nID_Rap=1
string cmbBoxKod(3) = "własny","obcy","paskowy"
string sNab,sOdb,sNip,sTmp
int b,nPom,x,y,py,dx,dy,pdy,bmp,tblin,nFPos, sc,sl,nc,nr,nl,bc,br,bbc,bw,nw,sw,bbw,marg,numr,sc2,sc3,nbl
int nb,grub,ss,bb,gc,sr,bl,kr
int KolTab1(1), StlTab1(1), KolTab2(1), StlTab2(1), tbl1, tbl2, tblHead1, tblHead2, StlHead(1)
int KolDsc(1), KolTab1Small(1),StlTab1Small(1)
int tbl1Szer, tbl2Szer, tbl3Szer, tblUp,tblDown,tblUpHead,tblDownHead,tblLeft, tbl3,tblOfsX2,cenaWidth,bKodBelow
string TitleForm(6), ListForm(3), PodsForm(2), StopForm, ListPodForm, NabOdbForm
int podsum,  VAT = 1,kolumnyNP(1),StlTabHNP(1),StlTabNP(1),tbl1NP,tbl1HNP, tbl1NPSzer
string nazwaRaportu
int chkPrzed,chkPo,bOddTrigger, czyPozPoKorekcie
float fRatio,ftotKIlosc,ftotKCena,tot_nettopokor,tot_vatpokor,tot_bruttopokor
long lTemp
int licznik, wsp = 1,  wsp1 = 1, sp, i, stawka, bKhTeleadr, bmpbtn, t1_width,t2_width, iCzyKolOk,WNettoPos, NumerPos
string RazemPom, VatPom, sIlosc, sPom

record rNPRec
	int Opis
	int nSzer
endrec
rNPRec KolDscNP(1)
#include "Nagłówek i stopka raportu I"
#include "Engine wydruków korekt"
#include "Formatowanie ramek nagłówka"

NoDate = 1

#include "Dokument sprzedaży - ramki - definicje"
#include "Faktura VAT korygująca - ustawienia"
#include "Dokumenty korygujące - include"

#ifdef SIMPLIFIED
Int TaxCount = 0                              // Ilosc roznych stawek VAT (dokument korygowany)
For i = 1 To i > rStVat.mIdx.Size()
	TaxCount += Sign( rStVat.rPrzed( i ).rNetto.Get( 1 ) )
Next i
Int TaxChanged = 0                            // Korekta stawki VAT
For i = 1 To i > Size( Przed ) || TaxChanged
	TaxChanged = ( Przed( i ).StVat != Po( i ).StVat )
Next i
#endif

#ifndef strNazwaVatOO_DEFINED
#define strNazwaVatOO_DEFINED
String strNazwaVatOO = "--"		// nazwa stawki VAT odwrotnego obciazenia
#endif

Int iZamienNazweVatOO = 1		// pozycje z odwrotnym obciazeniem -> zamieniaj "NP " na "--"

								// wylaczamy w innych raportach
#ifdef SIMPLIFIED
iZamienNazweVatOO = 0
#endif
#ifdef PNABYWCE
iZamienNazweVatOO = 0
#endif

// dla potrzeb nazwy stawki VAT dla pozycji z odwrotnym obciazeniem
#define PO_PRZED	1			// pozycje przed korekta
#define PO_KOREKTY	2			// korekty stawki VAT, ilosci, ceny, wartosci
#define PO_PO		3			// pozycje po korekcie
#define PO_ND		4			// pozostale sekcje / raporty

Float  fPlnOO( 4 ) = 0,0,0,0	// suma kwot zlotowkowych pozycji z odwrotnym obciazeniem ( 4 sekcje )
Float  fWalOO( 4 ) = 0,0,0,0	// suma kwot walutowych pozycji z odwrotnym obciazeniem   ( 4 sekcje )

int sub DrukujKontakt(string t1, string t2, string fx, string eml, int flatmode)
	if flatmode then
		if t1 then
			SetFont("tekst") : print "Telefon: "
			SetFont(nb)	:		print t1
			if t2 then print ", ";t2
			flatmode = 0
		endif
		if fx then
			if !flatmode then print "   "
			SetFont("tekst") : print "Fax: "
			SetFont(nb) : print fx;
			flatmode=0
		endif
		if eml then
			if !flatmode then print "     "
			SetFont("tekst") : print "E-mail: "
			SetFont(nb) : print eml
		endif
		exit
	endif
	if t1 then
		tabela #tblIn
			kolumna 1
			SetFont("tekst") : print "Telefon:"
			kolumna 2
			SetFont(nb)
			print t1
			if t2 then print ", ";t2
			if fx then
				SetFont("tekst")
				print "   Fax: "
				SetFont(nb)
				print fx
			endif
		koniec
	endif
	if fx && !t1 then
		tabela #tblIn
			kolumna 1
			SetFont ( "tekst" ) : print "Fax:"
			kolumna 2
			SetFont ( nb ) : print fx;
		koniec
	endif
	if eml then
		tabela #tblIn
			kolumna 1
			SetFont ( "tekst" ) : print "E-mail:"
			kolumna 2
			SetFont ( nb ) : print eml
		koniec
	endif
endsub

int sub FRDrawContent( int FRszer, int FRwys , int FRid )
	if FRid==1 then
		if !bmpStamp then
			SetStyl ( sc )
			print at #X,FRwys-40;"pieczęć firmy"
		else
			bmp = Bitmap FRszer,FRwys,sBitmap
			Bitmap #bmp
		endif
	endif
	if FRid==2 then
		SetStyl ( bbc )
		pom =  TextHeight(sNazwaDok) *(1+ ( BreakLine ( FRSzer, 1, 1, sNazwaDok ) != Len( sNazwaDok ) ))
		print at #X,#Y+(FRwys-pom)/2;sNazwaDok
		PrintMPP(xDocument)
	endif
	if FRid==3 then
		SetStyl ( nc )
		print at #X,#Y+10;sDataWyst;"  ";MiejsceWyst;LF
		SetStyl ( sc )
		print od #X,#Y;"data i miejsce wystawienia dokumentu"
	endif
	if FRid==4 then
			SetStyl ( nc )
			SetFont ( numr )
			y = TextHeight( sNumerDok )
			x = ( FRszer-TextWidth(sNumerDok,numr))/2
			SetStyl ( nl )
			if x<TextWidth("Nr ") then
				print od (FRszer-TextWidth("Nr "))/2,#Y+y-TextHeight("Nr");"Nr";lf
			else
				print od x-TextWidth("Nr "),#Y+y-TextHeight("Nr");"Nr"
			endif
			SetStyl ( nc )
			SetFont ( numr )
			print od 0, #Y;sNumerDok
	endif
	if FRid==5 then
		x = TextWidth(sNapis,grub)
		buf=sNapis
		if find "DUPLIKAT" then
			buf = " "+data()
		else
			buf=""
		endif
		y = TextWidth(buf,"tekst")
		SetFont(grub)
		print at (FRSzer-x-y)/2,(FRWys-TextHeight(sNapis,grub))/2;sNapis
		SetFont("tekst")
		print at (FRSzer-x-y)/2+x,#Y+(TextHeight(sNapis,grub)-TextHeight(buf,"tekst"));buf
	endif
	if FRid==6 then		
		rBoxData.PrintGraf(sDataSp, sc, nc, 0, 1, str.Pozycja(#X), str.Pozycja(#Y)+10)
	endif
	if FRid==7 then
		bmp = Bitmap nBmpCoord(1),nBmpCoord(2),sBitmap
		Bitmap #bmp, at nBmpCoord(3),nBmpCoord(4)
	endif
	if FRid==8 then
		if DokZakupu then
			SetStyl ( nl )
			nPom = TextWidth("Sprzedawca: ")+10
			tblIn = tabela 0,5,nPom,nl,FRszer-nPom,nbl
			tabela #tblIn
				kolumna 1,"Sprzedawca: "
				kolumna 2,PiszWyrazy(sNabywca,FRSzer-nPom-10)
			koniec
			nPom = TextWidth("Telefon:")+10
			tblIn = tabela 0,5,nPom,nl,FRszer-nPom,nbl
			tabela #tblIn
				kolumna 1,"Adres:"
				sTMp=sNabKodPocz+" "+sNabMiasto
				if sNabAdres then sTmp+=", "+sNabAdres
				if sNabKrajNazwa != "Polska" then sTmp+=", "+sNabKrajNazwa
				kolumna 2, PiszWyrazy(sTmp,FRszer-nPom-10)
			koniec
			sPom = sNabNip
			if sPom then
				tabela #tblIn
					kolumna 1
					SetFont ( "tekst" ) : print DajNip( sPom )
					kolumna 2
					SetFont ( nb ) : print buf
					if bKonth then SetFont ( "tekst" ) : print "  Kod: " : SetFont ( nb ) : print sNabKod 
				koniec
			endif
			if bKhTeleadr then DrukujKontakt(sNabTel1,sNabTel2,sNabFax,sNabEMail,FRSzer>str.szer/2)
			If bNotatkaKh Then print " "+sNotatkaKontr
		else
            // Tymczasowo nadpisujemy dane sprzedawcy przechowywane w zmiennych
		    DaneSprzedawcy tmpSprzedawca
		    if CZY_WYSTAWCA Then
		        tmpSprzedawca.Nazwa 		= sFNazwa
		        tmpSprzedawca.KodPocztowy 	= sFkodPocz
		        tmpSprzedawca.Miejscowosc 	= sFMiejsce
		        tmpSprzedawca.Adres			= sFAdres
		        tmpSprzedawca.Nip			= sFNip

		        sFNazwa		= nSprzedawca.Nazwa
		        sFkodPocz	= nSprzedawca.KodPocztowy
		        sFMiejsce 	= nSprzedawca.Miejscowosc
		        sFAdres 	= nSprzedawca.Adres
		        sFNip 		= nSprzedawca.Nip

		        sFTel1	= ""
		        sFTel2	= ""
		        sFFax	= ""
		        sFEmail	= ""
		    EndIf
			SetStyl ( nl )
			nPom = TextWidth("Sprzedawca: ")+10
			tblIn = tabela 0,5,nPom,nl,FRszer-nPom,nbl
			tabela #tblIn
				kolumna 1,"Sprzedawca: "
				kolumna 2,PiszWyrazy(sFNazwa,FRszer-nPom-10)
			koniec
			nPom = TextWidth("Telefon:  ")+10
			tblIn = tabela 0,5,nPom,nl,FRszer-nPom,nbl
			tabela #tblIn
				kolumna 1,"Adres:"
				sTmp=sFkodPocz+" "+sFMiejsce
				if sFAdres then sTmp+= ", "+sFAdres
				kolumna 2, piszwyrazy(sTmp,FRszer-nPom-10)
			koniec
			sPom = GetNipEx(sFNip)
			if sPom then
				tabela #tblIn
					kolumna 1
					SetFont ( "tekst" ) : print DajNip( sPom )
					kolumna 2
					SetFont ( nb ) : print buf
				koniec
			endif
			if bDrukBDO == "1" && CZY_WYSTAWCA == 0 then
				tabela #tblIn
					kolumna 1,"BDO: "
					kolumna 2,sFBDO
				koniec
			endif
			if bKhTeleadr then DrukujKontakt(sFTel1,sFTel2,sFFax,sFEmail,0)
			if bFNotatka then print " "+sFNotatka
            // Przywracamy do zmiennych prawidłowe dane sprzedawcy
		    if CZY_WYSTAWCA Then
		        sFNazwa 	= tmpSprzedawca.Nazwa 
		        sFkodPocz 	= tmpSprzedawca.KodPocztowy
		        sFMiejsce	= tmpSprzedawca.Miejscowosc
		        sFAdres  	= tmpSprzedawca.Adres
		        sFNip		= tmpSprzedawca.Nip
		endif
	endif
	endif
	if FRid==9 then
 	 	SetStyl ( nl )
		nPom = TextWidth("Nabywca: ")+10
		tblIn = tabela 0,5,nPom,nl,FRSzer-nPom,nbl
		if DokZakupu then
			tabela #tblIn
					kolumna 1,"Nabywca:"
					kolumna 2,sFNazwa
				koniec
				nPom = TextWidth("Telefon:")+10
				tblIn = tabela 0,5,nPom,nl,FRszer-nPom,nbl
					tabela #tblIn
				kolumna 1,"Adres:"
				sTMp=sFkodPocz+" "+sFMiejsce
				if sFAdres then sTmp+=", "+sFAdres
				kolumna 2, PiszWyrazy(sTmp,FRszer-nPom-10)
			koniec
			sPom = sFNip
			if sPom then
				tabela #tblIn
					kolumna 1
					SetFont ( "tekst" ) : print DajNip( sPom )
					kolumna 2
					SetFont ( nb ) : print buf
				koniec
			endif
			if bDrukBDO == "1" && CZY_WYSTAWCA == 0 then
				tabela #tblIn
					kolumna 1,"BDO: "
					kolumna 2,sFBDO
				koniec
			endif
		else
			If bNDane Then
				tabela #tblIn
					kolumna 1,"Nabywca:"
					kolumna 2,sNabywca
					if FRszer>str.szer/2 then
						SetFont ( "tekst" )
				   		print "    Adres: "
			  	 		SetFont ( nb )
	   					print sNabKodPocz;" ";sNabMiasto
						if sNabAdres then print ", ";sNabAdres
						if sNabKrajNazwa != "Polska" then print ", ";sNabKrajNazwa: print lf
					endif
				koniec
				nPom = TextWidth("Telefon:  ")+10
				tblIn = tabela 0,5,nPom,nl,FRSzer-nPom,nbl
				if FRSzer<=str.szer/2 then
					sTmp=""
					tabela #tblIn
						kolumna 1,"Adres:"
						sTmp+= sNabKodPocz+" "+sNabMiasto
						if sNabAdres then sTmp+= ", "+sNabAdres
						if sNabKrajNazwa != "Polska" then sTmp+= ", "+sNabKrajNazwa
						kolumna 2,piszwyrazy(sTmp,FRSzer-nPom-10)
					koniec
				endif
			Else
				Tabela #tblIn
					Kolumna 1, "Nabywca"
				Koniec
			EndIf
			if sNabNip then
				tabela #tblIn
					kolumna 1
					SetFont ( "tekst" ) : print DajNip( sNabNip )
					kolumna 2
	   			SetFont ( nb ) : print buf;"  "
					if bKonth then SetFont ( "tekst" ) : print "  Kod: " : SetFont ( nb ) : print sNabKod
				koniec
			endif
			if bKonth && !sNabNip then
				tabela #tblIn
					kolumna 1
					SetFont ( "tekst" ) : print " Kod: "
					kolumna 2
					SetFont ( nb ) : print sNabKod
				koniec
			endif		
		endif
		if DokZakupu then
			DrukujKontakt(sFTel1,sFTel2,sFFax,sFEmail,0)
			if bFNotatka then print " "+sFNotatka
		else
			if bKhTeleadr then DrukujKontakt(sNabTel1,sNabTel2,sNabFax,sNabEMail,FRSzer>str.szer/2)
			If bNotatkaKh Then print " "+sNotatkaKontr
		endif
	endif
	if FRid==11 then
		SetStyl ( nl )
		if DokZakupu then
			nPom = TextWidth ( "Dostawca: " )+10
		else
			nPom = TextWidth ( "Odbiorca: " )+10
		endif
		tblIn = tabela 0,5,nPom,nl,FRszer-nPom,nbl
		tabela #tblIn
			if DokZakupu then
			kolumna 1,"Dostawca: "
		else
			kolumna 1,"Odbiorca: "
		endif
			kolumna 2,sOdbiorca
		koniec
		tabela #tblIn
			kolumna 1,"Adres: "
			kolumna 2
			print sOdbKodPocz;" ";sOdbMiasto
			if sOdbAdres then print ", ";sOdbAdres
			if sOdbKrajNazwa != "Polska" then print ", ";sOdbKrajNazwa: print lf
		koniec
	endif
	if FRid==14 then
		x=(FRSzer-1400)/4
		nPom = tabela 0,0,x,nl,700,nl,2*x,nl,700,nl
		tabela #nPom, at 0,0
			kolumna 2
			buf = Arg5 : sPom="sc2"
			if find regular "=-(^u$)|(upowa?nienie)" then
				buf="Dokument wystawiony na podstawie pisemnego upoważnienia kupującego"
			else
				if !buf then
					buf="nazwisko i podpis osoby upoważnionej do odebrania dokumentu"
				else
					buf="Odebrał(a): "+buf : sPom="sc3"
				endif
			endif
		 	SetStyl ( sPom )
			print at #X,#Y+210;buf
			kolumna 4
			buf="nazwisko i podpis osoby upoważnionej do\nwystawienia dokumentu"	: sPom="sc2"
			if Arg4 then buf="Wystawił(a): "+Arg4 : sPom="sc3"
	 		SetStyl ( sPom )
			print at #X,#Y+210;buf
		koniec
		y=str.pozycja(#B)-str.pozycja(#T)
		if bRamki then
			DrawLine at x,0,700,0,1 : DrawLine at x,y,700,0,1
			DrawLine at x,0,0,y,1 : DrawLine at x+700,0,0,y,1
			x=x*3+700
			DrawLine at x,0,700,0,1 : DrawLine at x,y,700,0,1
			DrawLine at x,0,0,y,1 : DrawLine at x+700,0,0,y,1
		endif
	endif
	if FRid==16 then
		SetStyl ( nc )
		print at #X, #Y+10; sNrKoryg
		print lf
		SetStyl( sc )
		print od #X, #Y; "numer, data dokumentu korygowanego"
	endif
	if FRid==17 ||  FRid==18 then
		SetStyl ( nl )
		print "Forma płatności: "
		SetFont ( nb )
		print sPlatName
		SetFont ( "tekst" )
		if FRid==18 then
			print lf;"Termin płatności: "
		else
			print "    Termin płatności: "
		endif
		SetFont ( nb )
		print sTerminPlat
		SetFont ( "tekst" )
		if xDocument.FormaPl.Typ==1 then
			if FRid==18 then
				print lf;"Bank: "
			else
				print "    Bank: "
			endif
			SetFont ( nb )
			print sNazwaBanku
			SetFont ( "tekst" )
			if FRid==18 then
				print lf;"Konto: "
			else
				print "   Konto: "
			endif
			SetFont ( nb )
			print sKonto

			if bIsSwift then
				SetFont ( "tekst" )	
				if FRid==18 then
					print lf;" Swift: "
				else
					print "   Swift: "
				endif
				SetFont ( nb )
				print sSwift
			endif
		endif
		SetFont ("tekst")
		print "    Waluta: "
		SetFont(nb)
		print sWaluta
		if PKurs then
			SetFont ("tekst")
			print "    Kurs dla VAT: "
			SetFont (nb)
			print SformatujKursWaluty( fkurs )
		endif
		if PKursDoch then
			SetFont ("tekst")
			print "    Kurs CIT/PIT: "
			SetFont (nb)
			print SformatujKursWaluty( fkursDoch )
		endif
	endif
	If FRid == 26 Then
		SetStyl( nc )
		Print At #X , #Y + 10 ; sNrKorygExtra
		Print LF
		SetStyl( sc )
		Print Od #X , #Y ; "numer, data dokumentu korygowanego"
	EndIf
endsub

//zmienne uzywane w liniach 696 703
int tabtmp, tmp_tab(2), tmp_tabstl(2), SmTabPos

#include "Engine do korekty VAT w walucie"
#include "Dokument sprzedaży - ramki 2"

if GRAF then
	str.wydruk( 0, -1, -1 )
	strona 50, 90, 50, 80
	CheckFooterSize(xDocument.TypDK)
	nb = CopyFont( "tekst",1 )
	grub = CopyFont( "tekst", 1, 45 )
	ss = CopyFont( "tekst", -1, 25 )
	bb = CopyFont( "tytuł", 1, 50 )
	numr = CopyFont ( "tytuł", 1, 45 )

	gc = styl( grub, 0 )
	sc = styl( ss, 0)
 	sc2 = Styl ( CopyFont ( "tekst", -1, 30 ), 0, "sc2" )
 	sc3 = Styl ( CopyFont ( "tekst", -1, 32 ), 0, "sc3" )
	nc = styl( "tekst", 0)
	bc = styl( "nagłówek", 0)
	bl = Styl( "nagłówek",-1 )
	bbc =	styl( bb, 0)
	kr = styl( "kwota",1 )
	nl = styl( "tekst", -1)
	nr = styl( "tekst", 1)
	sl = Styl( ss, -1 )
	sr = Styl( ss, 1 )
	nbl = Styl ( nb, -1, "nbl" )
	if CreateColumns()== 0 then goto wyjscie
	j = 0
	for i=1 to i > size(KolTab1)
		j += KolTab1(i)
	next i
	if j > 2050 then Message "Zbyt małe marginesy lub zbyt wiele kolumn. Ico:S" : goto wyjscie
	grow KolDscNP,size(KolDsc)-1
	for i=1 to i > size(KolDsc)
		KolDscNP(i).Opis=KolDsc(i)
		KolDSCNP(i).nSzer=KolTab1(i)
	next i
	if !nKod && KolTab1(3)<240 then
		bKodBelow=1
		CreateColumns()
	endif
	nPom = 1
	if PWartN  && PWartB && PVat then
		for i= NumerPos+1 to i > NumerPos+4
			if nPom>1 then grow KolTab2,1 : grow StlTab2,1
			KolTab2(nPom) = KolTab1(i)
			StlTab2(nPom) = kr
			nPom+=1
		next i
	else
		for i= size(KolTab1) - 3 to i > Size(KolTab1)
			if nPom>1 then grow KolTab2,1 : grow StlTab2,1
			KolTab2(nPom) = 180  //KolTab1(i)
			StlTab2(nPom) = kr
			nPom+=1
		next i
	endif
	StlTab2(2)=nc

	tbl3 = Tabela 1, 5, KolTab2, StlTab2
	for i=1 to i > size(KolTab2)
		tbl3Szer += kolTab2(i)
	next i

	if size(KolTab2)==3 then
		grow KolTab2,1 : KolTab2(4)=KolTab1(size(KolTab1))
		grow StlTab2,1 : StlTab2(4)=kr
	endif

	if KolDsc(size(kolDsc))==TEMPKOL_ then shrink kolDsc,1 : shrink KolTab1,1 : shrink StlTab1,1
	tblOfsX2 = 0
	nPom = 6+(bVat && bBrutto) + (!nKod && !bKodBelow) + (bDostawy && (bVat || bBrutto))
	for i=1 to i>size(kolTab1)
		if i<nPom then tblOfsX2+=kolTab1(i)
		if i==nPom-1 then cenaWidth+=kolTab1(i)
		tbl1Szer+=kolTab1(i)
	next i
	for i=1 to i>size(kolTab2)
		tbl2Szer+=kolTab2(i)
	next i
	if bKodBelow then
		grow KolTab1Small,size(kolTab1)-4
		grow StlTab1Small,size(kolTab1)-4
		for i=4 to i>size(kolTab1)
			KolTab1Small(i-3)=KolTab1(i)
			StlTab1Small(i-3)=StlTab1(i)
			KolDsc(i-3)=KolDsc(i)
		next i
		shrink KolDsc,3
		if KolTab1(2)<50 then Message "Zbyt małe marginesy lub zbyt wiele kolumn. Ico:S" : goto wyjscie
		tblUp = Tabela !bVertLines, 4005, KolTab1(2), StlTab1(2),KolTab1(3), StlTab1(3)
		tblDown = Tabela 0, 4005, KolTab1(2)+KolTab1(3), StlTab1(2)
		tblUpHead = Tabela 1, 4005, KolTab1(2), bc,KolTab1(3), bc
		tblDownHead = Tabela 0, 4005, KolTab1(2)+KolTab1(3), bc
		tbl1 = Tabela 0, 4005, KolTab1Small, StlTab1Small
		tblHead1 = Tabela 0, 5, KolTab1Small, StlHead
		tblLeft = Tabela 0, 4005, KolTab1(1), nc
	else
		tbl1 = Tabela !bVertLines, 4005, KolTab1, StlTab1
		tblHead1 = Tabela 1, 5, KolTab1, StlHead
	endif
	tbl2 = tabela 1, 4005, KolTab2, StlTab2
	tblHead2 = Tabela 1, 5, KolTab2, StlHead
endif

if nDat == 1 then
	sDataSp = sDajOkres(sDataSp)
endif

if GRAF then goto tryb_graf
#include "Faktura VAT korygująca w walucie - tryb tekstowy"
FooterTxt(1)
end

wyjscie:
error ""

tryb_graf:
if nBitmap==1 then
	if !nBmpCoord(1) then nBmpCoord(1)=str.szer
	if !nBmpCoord(2) then nBmpCoord(2)=250
	bmp = Bitmap nBmpCoord(1),nBmpCoord(2),sBitmap
	Bitmap #bmp, at nBmpCoord(3),nBmpCoord(4)
	print lf : print at #X,#Y+5;
endif
FRNewRow(0)
select case nBitmap
	case 0
		If bmpStamp || bMiejsceNapieczec Then FRAddCol(-33,IIF(!bmpStamp,140,220),1,bRamki,0)
		FRAddCol(IIF( bmpStamp || bMiejsceNapieczec, -34, -50 ),IIF(!bmpStamp,140,220),2,bRamki,nGray)
		FRAddCol(IIF( bmpStamp || bMiejsceNapieczec, -33, -50 ),IIF(!bmpStamp,140,220),0,0,0)
		FRAddColRow(IIF(!bmpStamp,65,95),4,bRamki,0)
		FRAddColRow(-100,5,0,0)
		FRDraw()
		FRNewRow(-1)
		FRAddCol(-33,IIF(!bmpStamp,80,70),16,0,0)
		FRAddCol(-34,IIF(!bmpStamp,80,70),6,0,0)
		FRAddCol(-33,IIF(!bmpStamp,80,70),3,0,0)
		FRDraw()
		FRNewRow(-(str.Pozycja(#B) - str.Pozycja(#T)))
		FRAddCol(-67,(str.Pozycja(#B) - str.Pozycja(#T)),0,bRamki,-1)
		FRAddCol(-33,(str.Pozycja(#B) - str.Pozycja(#T)),0,bRamki,-1)
		If sNrKorygExtra != "" Then
			FRDraw()
			FRNewRow( -1 )
			FRAddCol( -100 , IIF( !bmpStamp , 80 , 70 ) , 26 , bRamki , 0 )
		EndIf
	case 1
		FRAddCol(-33,230,16,bRamki,0)
		FRAddCol(-34,230,0,0,0)
		FRAddColRow(140,2,bRamki,nGray)
		FRAddColRow(80,3,bRamki,0)
		FRAddCol(-33,230,0,0,0)
		FRAddColRow(65,4,bRamki,0)
		FRAddColRow(-100,5,0,0)
		FRAddColRow(80,6,bRamki,0)
		If sNrKorygExtra != "" Then
			FRDraw()
			FRNewRow( -1 )
			FRAddCol( -100 , 230 , 26 , bRamki , 0 )
		EndIf
	case 2
		lTemp = str.szer
		lTemp = lTemp*66/100
		nPom=lTemp
		if !nBmpCoord(1) then nBmpCoord(1)=nPom - nBmpCoord(3)
		if !nBmpCoord(2) then nBmpCoord(2)=450 - iif(nBmpCoord(4)>=450,0,nBmpCoord(4))
		if nBmpCoord(1)>nPom then nBmpCoord(1)= nPom
		if nBmpCoord(1)+nBmpCoord(3)>nPom then nBmpCoord(3)=0
		nPom = iif(nBmpCoord(2)+nBmpCoord(4)>450,nBmpCoord(2)+nBmpCoord(4),450)
		FRAddCol(nBmpCoord(1)+nBmpCoord(3),nPom,7,0,0)
		FRAddCol(-100,nPom,0,0,0)
		FRAddColRow(120,2,1,nGray)
		FRAddColRow(65,4,bRamki,0)
		FRAddColRow(-100,5,0,0)
		FRAddColRow(80,3,bRamki,0)
		FRAddColRow(80,6,bRamki,0)
		FRDraw()

		FRNewRow(-1)
		FRAddCol(-50,10,16,bRamki,0)
		FRAddCol(-50,10,18,bRamki,0)
		If sNrKorygExtra != "" Then
			FRDraw()
			FRNewRow( -1 )
			FRAddCol( -100 , 10 , 26 , bRamki , 0 )
		EndIf
endselect
FRDraw()
FRNewRow(-1)
if bSprzedawca || !nBitmap then
	FRAddCol(-50,10,8,bRamki,0)
	FRAddCol(-50,10,9,bRamki,0)
else
	FRAddCol(-100,10,9,bRamki,0)
endif
FRDraw()

if nBitmap!=2 then
	FRNewRow(-1)
	FRAddCol(-100+50*bOdbiorca,10,17+bodbiorca,bRamki,0)
	if bOdbiorca then FRAddCol(-100+50*bOdbiorca,10,11,bRamki,0)
	FRDraw()
else
	if bOdbiorca then
		FRNewRow(-1)
		FRAddCol(-100,10,11,bRamki,0)
		FRDraw()
	endif
endif
j = 1
for i = Size(KolTab1) - 1 to i > Size(KolTab1)
	tmp_tab(j) =  KolTab1(i)
	tmp_tabstl(j) = kr
	j += 1
next i
for i = 1 to i > size(KolTab1) - 2
	SmTabPos += KolTab1(i)
next i
if xPoz.Count() then
	if bPrzed then
		//pozycje korygowane
		for b=1 to b > size(Przed)
			if Przed(b).np == 0 then
				SetStyl( bc )
				print at #X,#Y+20;"POZYCJE KORYGOWANE" + LF
				RysujNaglowek(0,10)
				if iCzyKolOk == -1 then Goto wyjscie
				bOddTrigger = 0
				pom = 1
				for i = b to i > size( Przed )
					if Przed(i).np == 0 then ZapiszKorekte(0,Przed(i),pom,(using"B%d",Przed(i).lp),1,i,"",PO_PRZED) : pom =0
				next i
				if bStopki then//stopki pod każdą sekcją
					if PPlnVAT then//czy w ogóle drukujemy stopke VAT PLN
						if((pVAT+pWartN+pWartB)!=3) then
							StopkiVat(0,0)
						else
							//da się zrobić pod tabelką bez nagłówków
							Podsumowanie_w_Walucie(0)
						endif
					endif
					if PWalVAT then//czy drukujemy stopke VAT  w walucie
						StopkiVAT(0,1)
					endif
				else
					//nie ma stopek pod każdą sekcją 
					//powinno być jakoweś podsumowanie
					Podsumowanie_w_walucie(0)
				endif				
			endif
			exit
		next b
	endif
	//korekty
	podsum = 0
	SetStyl( bl )
#ifndef SIMPLIFIED
	if czyKorektaKursu then
		for b=1 to b>size(Korekty)
			if Korekty(b).np == 0 && Korekty(b).nKorStat==4 then
				SetStyl(bc)
				print at #X,#Y+20;"KOREKTA KURSU VAT:\n"
				RysujNaglowek(0,10)
				if iCzyKolOk == -1 then goto wyjscie
				bOddTrigger = 0
				for i = b to i > size( Korekty )
					if Korekty(i).np == 0 && Korekty(i).nkorStat==4 then ZapiszKorekte(0,Korekty(i),i==1,(using"K%d",Korekty(i).lp),2,i,"",PO_KOREKTY)
				next i
				if bVertLines then DrawLine at 0,#B,tbl1Szer,0
				exit
			endif
		next b
	else
		for b=1 to b>size(Korekty)
			if Korekty(b).np == 0 && Korekty(b).nKorStat==1 then
				SetStyl(bc)
				print at #X,#Y+20;"KOREKTY STAWKI VAT:\n"
				RysujNaglowek(0,10)
				if iCzyKolOk == -1 then goto wyjscie
				bOddTrigger = 0
				for i = b to i > size( Korekty )
					if Korekty(i).np == 0 && Korekty(i).nkorStat==1 then ZapiszKorekte(0,Korekty(i),i==1,(using"K%d",Korekty(i).lp),2,i,"",PO_KOREKTY)
				next i
				if bVertLines then DrawLine at 0,#B,tbl1Szer,0
				exit
			endif
		next b
		for b=1 to b > size(Korekty)
			if Korekty(b).np == 0 && Korekty(b).nKorStat==2 then
				SetStyl(bc)
				print at 0,#Y+20;"KOREKTY ILOŚCI:\n"
				RysujNaglowek(0,10)
				if iCzyKolOk == -1 then goto wyjscie
				bOddTrigger = 0
				for i=b to i > size(Korekty)
					if Korekty(i).np == 0 && Korekty(i).nkorStat==2 then ZapiszKorekte(0,Korekty(i),i==1,(using"K%d",Korekty(i).lp),2,b,"",PO_KOREKTY)
				next i
				exit
				if bVertLines then DrawLine at 0,#B,tbl1Szer,0
			endif
		next b
		for b=1 to b > size(Korekty)
			if Korekty(b).np == 0 && Korekty(b).nKorStat==3 then
				SetStyl(bc)
				print at 0,#Y+20;"KOREKTY CENY:\n"
				RysujNaglowek(0,10)
				if iCzyKolOk == -1 then goto wyjscie
				bOddTrigger = 0
				for i=b to i > size(Korekty)
					if Korekty(i).np == 0 && Korekty(i).nkorStat==3  then ZapiszKorekte(0,Korekty(i),b==1,(using"K%d",Korekty(i).lp),2,b,"",PO_KOREKTY)
				next i
				exit
			endif
		next b
	endif
#endif

	//czy sa pozycje po korekcie
	czyPozPoKorekcie = 0
	if bPo && size(Po)>0 && Po(1).np == 0 then czyPozPoKorekcie = 1


	if Korekty(1).np == 0 then
		if bStopki then//stopki pod każdą sekcją
			if PPlnVAT then//czy w ogóle drukujemy stopke VAT PLN
				if((pVAT+pWartN+pWartB)!=3) then
					StopkiVat(1,0)
				else
					//da się zrobić pod tabelką bez nagłówków
					Podsumowanie_w_Walucie(1)
				endif
			endif
			if PWalVAT then//czy drukujemy stopke VAT  w walucie
				StopkiVAT(1,1)
			endif
		else
			//nie ma stopek pod każdą sekcją 
			//powinno być jakoweś podsumowanie
			
			//jeżeli nie będzie pozycji po korekcie
			//podumowanie nie potrzebne 
			// przypadek podobny do stopek po każdą sekcją 
			if czyPozPoKorekcie then
            	Podsumowanie_w_walucie(1)
			endif
		endif	
	endif



	if czyPozPoKorekcie then
	// po korekcie
		podsum = 0
		SetStyl(bc)
		Print At #X, #Y + 20; IIF( CompactForm, "KOREKTY POZYCJI:\n", "POZYCJE PO KOREKCIE:\n" )
		RysujNaglowek(0,10)
		bOddTrigger = 0
		pom = 1
		for i = 1 to i > size( Po )
			if Po(i).np == 0 then ZapiszKorekte(0,Po(i) , pom,(using"K%d",Po(i).lp),3,i,Przed(i).StVat,PO_PO) : pom = 0
		next i
		if bStopki then//stopki pod każdą sekcją
			if PPlnVAT then//czy w ogóle drukujemy stopke VAT PLN
				if((pVAT+pWartN+pWartB)!=3) then
					StopkiVat(2,0)
				else
					//da się zrobić pod tabelką bez nagłówków
					Podsumowanie_w_Walucie(2)
				endif
			endif
			if PWalVAT then//czy drukujemy stopke VAT  w walucie
				StopkiVAT(2,1)
			endif
		else
			//nie ma stopek pod każdą sekcją 
			//powinno być jakoweś podsumowanie
			Podsumowanie_w_walucie(2)
		endif
	endif

	if Przed(1).np == 0 && !bStopki then
		if PPlnVAT then
			if(czyPozPoKorekcie || (pVAT+pWartN+pWartB)!=3) then
				StopkiVat(1,0)
			else
				//da się zrobić pod tabelką bez nagłówków
				bStopki = 1
				Podsumowanie_w_Walucie(1)
				bStopki = 0
			endif			
		endif
		if PWalVAT then StopkiVAT(1,1)
    endif

	if CzyNP then PozycjeNP()
#ifdef SIMPLIFIED
	If bOpis Then
#endif
		ramka od 0,#Y+20,str.szer,10,bRamki*5
			SetStyl( nl )
			print " Przyczyna korekty : "
			SetFont ( nb )
			print sOpis
		koniec
#ifdef SIMPLIFIED
	EndIf
#endif

Zaliczki(xDocument.id)

/////**********************************POCZATEK PODSUMOWANIA
	if DokZakupu then 
		rWplaty.wWAL = -1 * rWplaty.wWAL
		rWplaty.wPLN = -1 * rWplaty.wPLN
	endif
    wartoscVat = xDocument.Vat
    wartoscBrutto = xDocument.bruttoWal
    if xDocument.objId == DokumentSpObjId then
        wartoscVat -= xDocument.rozliczonoZaliczkamiVat
        wartoscBrutto -= xDocument.rozliczonoZaliczkamiBrutto
    endif
	ramka od 0,#B+20, str.szer,90, bRamki
 		SetStyl( bl )
		 buf = "Razem brutto :"
		print at 30, 20;buf
		if wartoscVat < -0.000001 then wsp1 = -1
 		SetFont( grub )
 		print " " + kwota( (wartoscBrutto * wsp) ) + " " + sWaluta + "   "
#ifndef SIMPLIFIED
  	if PVat || PWartN || PWartB then
#endif
			if wartoscVat > 0.000001 then
 				buf =  "w tym zwiększenie podatku VAT :"
			else
 				buf =  "w tym zmniejszenie podatku VAT :"
			endif
	 		sTmp =  " " + kwota( wartoscVat * wsp1) + " PLN   "
			t1_width=textwidth(buf,bl)+textwidth(sTmp,grub)
			if (str.szer-str.pozycja(#X)-t1_width) < 50 then print lf:print at 30,#Y;""
			SetStyl( bl ):print buf:SetFont( grub ):print sTmp
#ifndef SIMPLIFIED
	endif
#endif
		print lf
		SetStyl( bl )
        wartoscBrutto = rDoZaplaty.wWAL
        if xDocument.objId == DokumentSpObjId && xDocument.CzyWystawiony == 0 then
            wartoscBrutto -= xDocument.rozliczonoZaliczkamiBrutto
        endif
		if wartoscBrutto> 0.000001 then
			 buf = "Razem do zapłaty :"
		else
			if wartoscBrutto < -0.000001 then
				buf =  "Razem do zwrotu :"
				wsp = -1
			else
				buf =  "Razem : "
				wsp = 0
			endif
		endif
		print at 30, #Y;buf
 		SetFont( grub )
 		print " " + kwota( wsp*round(wartoscBrutto,2)) + " " + sWaluta + "   "
		if Sign((wartoscBrutto-rWplaty.wWAL),2) then
			if (rwplaty.wWAL > 0.000001) || (rwplaty.wWAL < -0.000001) then
				if rWplaty.wWAL > 0.000001 then
					buf =  "Zapłacono :"
				else
					buf = "Zwrócono :"
				endif
		 		sTmp = kwota( rwplaty.wWAL * wsp1)+" "+sWaluta
		 		t1_width=textwidth(buf,bl)+textwidth(sTmp,grub)
				if (str.szer-str.pozycja(#X)-t1_width) < 50 then print lf:print at 30,#Y;""
				SetStyl( bl ):print buf:SetFont( grub ):print sTmp
			endif
			if wartoscBrutto > 0.000001 then
				buf = "Pozostało do zapłaty : "
			else
				buf =  "Pozostało do zwrotu : "
			endif
			sTmp=kwota( round(wartoscBrutto - rWplaty.wWAL, 2) * wsp) + " " + sWaluta
			t1_width=textwidth(buf,bl)+textwidth(sTmp,grub)
			if (str.szer-str.pozycja(#X)-t1_width) < 50 then print lf:print at 30,#Y;""
			SetStyl( bl ):print buf:SetFont( grub ):print sTmp
		else
			sTmp=  iif(rWplaty.wWAL > 0.000001,"ZAPŁACONO","ZWRÓCONO")
			t1_width=textwidth(sTmp,grub)
			t2_width=str.pozycja(#X)
			if (str.szer-str.pozycja(#X)-t1_width) < 50 then print lf:print at 30,#Y;""
			SetFont( grub ):	print sTmp
		endif
	koniec
	ramka od #L, #B+10, str.szer, 90, bRamki
		SetStyl( bl )
		print at 30, 20; "Słownie:"
		print " " + KwotaNaTekst( (using "%.2f",round(xDocument.rzeczywistaWysokoscNaleznosci,2) * wsp ), sWaluta )
	koniec
endif
/////**********************************KONIEC


print at 0,#B+50;
FRNewRow(0)
FRAddCol(-100,250,14,0,0)
FRDraw()


DokumentyWydania()
PlatWyd()

if bNotat && sNotat then	
MultiPagePrint( sNotat, 0, Str.Pozycja( #Y ) + 20, Str.Szer, 10, bRamki, nl )
endif
if arg6 != "" then
	ramka od 0, #y+20, str.szer, 10
		SetFont ( nb ) : Align(-1)
		print "UWAGA: "
		SetFont ( "tekst" )
		print Arg6
	koniec
endif
if bNotatRodz && sNotatRodz then
	MultiPagePrint( sNotatRodz, 0, Str.Pozycja( #Y ) + 20, Str.Szer, 10, bRamki, nl )
endif

Dekretacje()
Footer(1)
