//"dvwal.sc","Dokument VAT w walucie","\Dokumenty\Sprzedaż\Dokument VAT w walucie\",0,2.1.9,SYSTEM
////////////////////////////
// Dokument VAT w walucie
// dvwal.sc
/////////////////

#define SHOWGTU 1

String s

#define XSYSTEM

#define DEKRET
#define PLATWYD
#define WALVAT

#ifndef SHOWOO
#define SHOWOO 1
#endif

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

int VAT = 1

#include "Nagłówek i stopka raportu I"
#include "Engine do dokumentów"

float akcyza
int nDialog, tblIn,nMalaStopka,nMSpos
int kr,bc,nl,nc,nr,bbc,nbl,nb,nbr,bb,sc,sc2,sc3,grub,ss,numr,l12, yramk,dyramk,dxramk,bmp, grayTrigger, yBoldRamk, dyBoldRamk
string sNip,sBuf
int tbl0,tbl1,tbl2,i,j,x,y,kolumnyNP(1),StyleNP(1),kolNP(1),nkolumna
int KolTab1(1),StlTab1(1),kol(1),nStopkaWal
int KolTabPR(2)= 250,250
int StlTabPR(4)
int nTblWidth1,nTblWidth2,nDiff, wSKK=170
int StlTabH(1)
int nSzer, KolTab2(1),StlTab2(1),yPoz, nPosYOld, nPosY
int nTblMarg = 5
long lTemp
int nResult

#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
If PLNonly != -1 Then
iZamienNazweVatOO = 0
EndIf

Float  fPlnOO = 0				// suma kwot zlotowkowych pozycji z odwrotnym obciazeniem
Float  fWalOO = 0				// suma kwot walutowych pozycji z odwrotnym obciazeniem

Int    iNP						// wiersz podsumowania stawki VAT NP

Float  fBruttoSUM				// kwota brutto w podsumowaniu stawki VAT

if GRAF then
	str.wydruk ( 0, -1, -1 )
	strona 50,90,50,100
	CheckFooterSize(xDocument.TypDK)
endif

#include "Dokument sprzedaży - ramki - definicje"
#include "Dokument VAT - ustawienia"
#include "Dokument sprzedaży - ramki"

Int TaxCount = 0                              // Ilosc roznych stawek VAT w pozycjach dokumentu
For i = 1 To i > Size( StawkiVAT )
    TaxCount += Sign( StawkiVAT( i ).netto )
Next i

int sub Add(int pos, int szer, int stl, int typ )
	int i,siz=size(KolTab1)
	if KolTab1(1) then  //jeśli nie pierwsze wywołanie
		siz+=1
		Grow KolTab1,1
		Grow StlTab1,1
		Grow kol,1
	endif
	if pos == -1 then
		pos=siz
	else
		if pos >= SWW then
			i = 1
			while kol(i)!=pos && i<siz
				i += 1
			wend
			if i==siz then Error using "Zapetlenie! %d",pos
			pos = i
		endif
		For i = siz To i<=pos+1 step -1
			KolTab1(i) = KolTab1(i-1)
			StlTab1(i) = StlTab1(i-1)
			kol(i) = kol(i-1)
		Next i
		pos+=1
	endif
	KolTab1(pos) = szer
	StlTab1(pos) = stl
	kol(pos) = typ
endsub

//-----------------------------------
if !GRAF then goto wydruk_tekstowy
bc = Styl ( "nagłówek", 0, "bc" )
nl = Styl ( "tekst", -1, "nl" )
nc = Styl ( "tekst", 0, "nc" )
nr = Styl ( "tekst", 1, "nr" )
kr = Styl ( "kwota", 1, "kr" )
nb = CopyFont ( "tekst",1 )
grub = CopyFont ( "tekst", 1, 45 )
numr = CopyFont ( "tytuł", 1, 45 )
nbl = Styl ( nb, -1, "nbl" )
ss = CopyFont ( "tekst", -1, 25 )
sc = Styl ( ss, 0, "sc" )
sc2 = Styl ( CopyFont ( "tekst", -1, 30 ), 0, "sc2" )
sc3 = Styl ( CopyFont ( "tekst", -1, 32 ), 0, "sc3" )
bb = CopyFont ( "tytuł", 1, 50 )
bbc = Styl ( bb, 0, "bbc" )

StlTabPR(1)=StlTabPR(2)=kr

#ifdef SIMPLIFIED
Add( -1, 105, nc, 0 )
If TaxCount > 1 Then
	Add( -1, Str.Szer - 105 - 180, nl, 0 )
	Add( -1, 180, kr, STAWKAVAT )
Else
	Add( -1, Str.Szer - 105, nl, 0 )
EndIf
#else
Add ( -1, 50, nc, 0 )
Add ( -1, 500, nl, 0 )
if nSWW==2 then KolTab1(2) += 100
if nKod==1 then KolTab1(2) += 100
if bCenaPod then Add ( -1, wSKK, kr, CENAPOD )
if bCenaPod && bRabatDlaWartosci Then Add ( -1, wSKK, kr, WARTPRZEDRAB)
if !nKod then
	if !bWartVat && nSWW!=1 then
		Add ( -1, wSKK, nl, KOD ) //STAWKAVAT (PIERWSZA WARTOSC)
	else
		if !bWart && !(bWartVat && nSWW==1) then
			if CZYNETTO then
				Add ( -1, wSKK, nl, KOD )
			else
				Add ( -1, wSKK, nl, KOD ) //CENAB
			endif
		else
			Add ( 2, 180, nl, KOD )
		endif
	endif
endif
if nSWW==1 then
	if !bWartVat then
		Add ( -1, wSKK, nc, SWW ) //-1 -> STAWKAVAT
	else
		if !bWart then
			if CZYNETTO then
				Add ( -1, wSKK, nc, SWW )
			else
				Add ( -1, wSKK, nc, SWW ) // -1 CENAB
			endif
		else
			Add ( 2, 170, nc, SWW )
		endif
	endif
endif
if nOO==1 then
	Add ( -1, 170, nc, OO )
endif

Add ( -1, 100, kr, ILOSC )
Add ( -1, 80, nc, JM )
if PCenaN then	Add ( -1, wSKK, kr, CENAN )
if PCenaB then Add( -1, wSKK, kr, CENAB )
if PWartN then Add ( -1, wSKK, kr, WARTN )
Add ( -1, wSKK, nr, STAWKAVAT )
StVatPos = size(KolTab1)
if bWartVat then Add ( -1, wSKK, kr, KWOTAVAT )
if PWartB then	Add ( -1, wSKK, kr, WARTB )
if CWalWart then Add(-1,wSKK,kr,CENAWWAL)
if WartWal then Add(-1,wSKK,kr,WARTWWAL) //-1
if bDostawy then
	if !bWartVat && ((nSWW!=1 && nKod) || (nSWW==1 && nKod) || (nSWW!=1 && !nKod))then
		Add ( -1, 220, nl, DOSTAWA ) //STAWKAVAT
	else
		Add ( 2, 220, nl, DOSTAWA )
	endif
endif
if PCenaN || PCenaB then
	if !bWartVat && nSWW!=1 && nKOD && !bDostawy then
			if CZYNETTO then
//				If !bRabatDlaWartosci Then Add ( -1, wSKK, kr, CENAB1 ) //STAWKAVAT
			else								//jm
//				If !bRabatDlaWartosci Then Add ( -1, wSKK, kr, CENAN1 ) //STAWKAVAT
			endif
	else
		if !bWart && (nSWW!=1 || nKod || !bDostawy) then
			if CZYNETTO then
//				If !bRabatDlaWartosci Then Add ( -1, wSKK, kr, CENAB1 )
			else								//jm
//				If !bRabatDlaWartosci Then Add ( -1, wSKK, kr, CENAN1 ) //-1 , CENAB
			endif
		else
			if CZYNETTO then
//				If !bRabatDlaWartosci Then Add ( -1, wSKK, kr, CENAB1 ) //CENAN
			else								//jm
//				If !bRabatDlaWartosci Then Add ( -1, wSKK, kr, CENAN1 ) //CENAB
			endif
		endif
	endif
endif
if bRabaty then
										//WARTPRZEDRAB
	If bRabatDlaWartosci && bCenaPod Then Add ( JM, 120, kr, RABATY)
											//CENAPOD
	If bRabatDlaWartosci && !bCenaPod Then Add ( JM, 120, kr, RABATY)
											//cenapod
	If bCenaPod && !bRabatDlaWartosci then Add ( JM, 120, kr, RABATY )
												//jm
	If !bCenaPod && !bRabatDlaWartosci then Add ( -1, 120, kr, RABATY )
endif
nkol=Size(kol)
if CZYNETTO && PWartN then
	while (nkol > nNettoPos  && kol(nNettoPos)!=WARTN)
		nNettoPos += 1
	wend
	if nNettoPos == nkol-1 then
		Add(-1,wSKK,0,TEMPKOL)
		Add(-1,wSKK,0,TEMPKOL)
	else
		if nNettoPos==nkol-2 then Add(-1,wSKK,0,TEMPKOL)
	endif
endif
#endif

CENAN = CENAN1
CENAB = CENAB1
nkol=Size(kol)
grow StlTabH,nkol-1
for i=1 to i>nkol
	StlTabH (i) = bc
	nTblWidth1 += KolTab1 (i)
next i
nSzer=str.szer
if nTblWidth1 > nSzer then
	message sMarg : error ""
else
#ifndef SIMPLIFIED
	nDiff = ( nSzer - nTblWidth1 ) / nkol
	nTblWidth1 = 0
	for i = 1 to i > nkol
		nTblWidth1 += ( KolTab1 (i) += nDiff )
	next i
	if nTblWidth1 < nSzer then KolTab1(2) += nSzer-nTblWidth1
	nTblWidth1 = nSzer
#endif
endif
For i = 1 To i>=nNettoPos
	nNettoX += KolTab1(i)
Next i

grow KolTab2,3
grow StlTab2,3
dxramk = KolTab1( IIF( CompactForm, 1, nkol-4 ) )
#ifdef SIMPLIFIED
	For i = 1 To i > Size( Koltab2 )
		KolTab2( i ) = IIF( i == 2, 165, 225 )
	Next i
#else
if CZYNETTO && PWartN then
	KolTab2(1) = KolTab1(nNettoPos)
	KolTab2(2) = KolTab1(nNettoPos+1)
	KolTab2(3) = KolTab1(nNettoPos+2)
	KolTab2(4) = KolTab1(nNettoPos+3)
	while kol(nkol)==TEMPKOL
		nTblWidth1-=KolTab1(nkol)
		shrink kol,1
		shrink KolTab1,1
		shrink StlTab1,1
		nkol-=1
	wend
else
	lastpos = nkol
	KolTab2(4) = KolTab1(lastpos)
	KolTab2(3) = KolTab1(lastpos-=1)
	if KolTab2(3)<wSKK then
		KolTab2(3) = wSKK
		KolTab2(2) = 110
		KolTab2(1) = wSKK
	else
		KolTab2(2) = KolTab1(lastpos-=1)
		if KolTab2(2)>wSKK then
			KolTab2(2) = 110
			KolTab2(1) = wSKK
		else
			KolTab2(1) = KolTab1(lastpos-=1)
			if KolTab2(1)<wSKK then KolTab2(1) = wSKK
		endif
	endif
endif
#endif

For i = 1 To i>4
	nTblWidth2 += KolTab2(i)
	StlTab2(i) = kr
Next i
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, 220, 1, bRamki, 0 )
		FRAddCol( IIF( bmpStamp || bMiejsceNapieczec, -34, -50 ), 220, 0, 0, 0 )
		FRAddColRow(130,2,bRamki,nGray)
		FRAddColRow(80,3,bRamki,0)
		FRAddCol( IIF( bmpStamp || bMiejsceNapieczec, -33, -50 ), 220, 0, 0, 0)
		FRAddColRow(65,4,bRamki,0)
		FRAddColRow(-100,5,0,0)
		FRAddColRow(80,6,bRamki,0)
	case 1
		FRAddCol(-33,170,0,0,0)
		FRAddColRow(80,3,bRamki,0)
		FRAddColRow(-100,6,bRamki,0)
		FRAddCol(-34,170,2,1,nGray)
		FRAddCol(-33,170,0,0,0)
		FRAddColRow(-50,4,bRamki,0)
		FRAddColRow(-50,5,0,0)
	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(130,2,1,nGray)
		FRAddColRow(65,4,bRamki,0)
		FRAddColRow(-100,5,0,0)
		FRAddColRow(80,3,bRamki,0)
		FRAddColRow(80,6,bRamki,0)
endselect
FRDraw()
if CZY_WYSTAWCA  Then
	FRNewRow(-1)
	if  (iTyp == FWS && bRW) || iTyp == WKS then
		if bSprzedawca || !nBitmap then
			FRAddCol(-100,10,R_WYSTAWCA,bRamki,0)
		endif
	else
		if bSprzedawca || !nBitmap then
			FRAddCol(-50,10,R_WYSTAWCA,bRamki,0)				
			FRAddCol(-50,10,R_NABYWCA,bRamki,0)
		else
			FRAddCol(-100,10,R_NABYWCA,bRamki,0)
		endif
	endif
	FRDraw()

	if bOdbiorca then 
		FRNewRow(-1)
		FRAddCol(-50,10,R_SPRZEDAWCA,bRamki,0)
		FRAddCol(-50,10,R_ODBIORCA,bRamki,0)
		FRDraw()
		FRNewRow(-1)				
		bOdbiorcaWyst = 0
		FRAddCol(-100,10,R_DANEPLATNOSCI_WYST,bRamki,0)
		FRDraw()	
	else
		FRNewRow(-1)
		FRAddCol(-50,10,R_SPRZEDAWCA,bRamki,0)
		bOdbiorcaWyst = 1
		FRAddCol(-50,10,R_DANEPLATNOSCI_WYST,bRamki,0)
		FRDraw()
	endif

else
	FRNewRow(-1)
	if  (iTyp == FWS && bRW) || iTyp == WKS then
		if bSprzedawca || !nBitmap then
			FRAddCol(-100,10,8,bRamki,0)	
		endif	
	else
		if bSprzedawca || !nBitmap then
			FRAddCol(-50,10,8,bRamki,0)	
			FRAddCol(-50,10,9,bRamki,0)	
		else
			FRAddCol(-100,10,9,bRamki,0)	
		endif
	endif
	FRDraw()
		
	FRNewRow(-1)
	if iTyp==FWS || iTyp== WKS then 
		if bOdbiorca then FRAddCol(-100,10,11,bRamki,0)
	else
		FRAddCol(-100+50*bOdbiorca,10,10,bRamki,0)
		if bOdbiorca then FRAddCol(-100+50*bOdbiorca,10,11,bRamki,0)
	endif
	FRDraw()
endif

if bOpis && sOpis then
	Ramka od 0,#B+10,str.szer,10,bRamki
		SetFont ( "tekst" )
		print " " + sOpis
	koniec
endif
//-----------------------------------------------
if bAnulowano == 1 || bAnulowano == 3 then
	ramka od 0,#Y+10, str.szer,10
		SetFont( CopyFont( "tekst",1,100 ) )
		Align(0)
		print "ANULOWANO"
	koniec
endif

if xPoz.Count() then //!bNoPoz then
	tbl0 = tabela 1,nTblMarg,KolTab1,StlTabH
	ramka od 0, #Y+10,nTblWidth1,10,0,nGray
		tabela #tbl0
			sPom = "Nazwa"
			if nSWW==2 then sPom += ", "+sSWW_ //",SWW/PKWiU"
			if nOO==2 then sPom += ", odwrotne obciążenie"
			if nKod==1 then
				sPom += ", kod"
				if nKodTyp==2 then sPom+=" obcy"
				if nKodTyp==3 then sPom+=" paskowy"
			endif
			kolumna 1 : y = TextHeight("X")/2 : print at #X,y; "Lp."
			kolumna 2 : print at #X,y; sPom
			for i = 3 to i > nkol
				select case kol(i)
					case SWW
						sPom = sSWW_ //"SWW/PKWiU"
					case OO
						sPom = sOO_
					case KOD
						sPom = "Kod"
						if nKodTyp==2 then sPom+=" obcy"
						if nKodTyp==3 then sPom+=" paskowy"
					case ILOSC
						sPom = "Ilość"
					case JM
						sPom = "Jm"
					case CENAPOD
						If bRabatDlaWartosci Then
							If CZYNETTO Then
								sPom = "Cena netto"
							Else
								sPom = "Cena brutto"
							EndIf
						Else
							sPom = "Cennik"
						EndIf
					case CENAN
						sPom = "Cena"+lf+"netto PLN"
					case CENAB
						sPom = "Cena"+lf+"brutto PLN"
					case WARTN
						sPom = "Wartość"+lf+"netto PLN"
					case WARTB
						sPom = "Wartość"+lf+"brutto PLN"
					case STAWKAVAT
						sPom = "Stawka"+lf+"VAT"
					case KWOTAVAT
						sPom = "Kwota"+lf+"VAT"
					case RABATY
						sPom = "Rabat %"
					case WARTPRZEDRAB
						sPom = "Wartość przed rab."
					case DOSTAWA
						sPom = "Nazwa dostawy"
					case CENAWWAL
						Spom = "Cena "+IIF(CZYNETTO, "netto","brutto") + "\nw " + sWaluta
					case WARTWWAL
						nStopkaWal=i-1
						Spom = "Wartość "+IIF(CZYNETTO, "netto","brutto") + "\nw " + sWaluta
				endselect
				select case kol(i)
					case SWW,KOD,ILOSC,JM,RABATY,CENAPOD,DOSTAWA
						y = TextHeight(sPom)/2
					case else
						y = 0
				endselect
				kolumna i : print at #X,y; sPom
			next i
		koniec
	koniec
	nTblMarg = 4005
	tbl1 = tabela 1*!bVertLines,nTblMarg,KolTab1,StlTab1
	For i = 1 To i > xPoz.Count()
		if !xPoz.item(i).dokompletu then
		if !xPoz.item(i).NiePodlega then
		ramka nTblWidth1,5,0,nOddGray*grayTrigger
		if bOddGray then grayTrigger = !grayTrigger
	tabela #tbl1,od 0,#Y
			kolumna 1, (using "%d",xPoz.item(i).lp) + " "
			buf=xPoz.item(i).Opis
			if nSWW==2 then buf+=getCommaPC(xPoz.item(i),xDocument.SendAggregated)
			if nOO==2 then 
				buf+= ", "
				if xPoz.item(i).odwrotneObc then buf+="odwrotne obciążenie"
			endif
			if nKod==1 then
				select case nKodTyp
					case 1
						buf+= ", " + xPoz.item(i).Kod
					case 2
						nResult=xPoz.item(i).PodajKodObcy() : xErr(nResult)
						if nResult then Message sStndError : error ""
						buf+=", "+xPoz.item(i).KodObcy
					case 3
						buf+= ", " + KodPaskowy_pozycji(i)
				endselect
			endif
			kolumna 2,PiszWyrazy(buf,KolTab1(2)-10)
			For j = 3 To j > nkol
				select case kol(j)
					case KOD
						select case nKodTyp
							case 1
								buf = xPoz.item(i).Kod
							case 2
								nResult=xPoz.item(i).PodajKodObcy() : xErr(nResult)
								if nResult then Message sStndError : error ""
								buf = xPoz.item(i).KodObcy
							case 3
								buf = KodPaskowy_pozycji(i)
						endselect
					case SWW
						buf = getPC(xPoz.item(i),xDocument.SendAggregated)
					case OO
						if xPoz.item(i).odwrotneObc then
							buf = "x"
						else
							buf = ""
						endif 
					case JM
						buf = iif(nJednMiary,xPoz.item(i).JednostkaMiaryWp,xPoz.item(i).JednostkaMiary)
					case CENAPOD
						buf = formatuj(iif(nJednMiary,xPoz.item(i).CenaCennikowa,xPoz.item(i).CenaCennikowa/Ceny(i).PrzelJmDod),nCenaRound+1)
					case ILOSC
  					buf = using "%4.4f",iif(nJednMiary,xPoz.item(i).IloscWP,xPoz.item(i).Ilosc)
						delete regular "(0#$)|(.0#$)"
						s = buf : buf = s : Replace "." , ","
					case CENAB
						buf = formatuj( Round(iif(nJednMiary,Ceny(i).CenaBruttoWP,Ceny(i).CenaBrutto),nCenaRound+1),nCenaRound+1 )
					case CENAN
						buf = formatuj( Round(iif(nJednMiary,Ceny(i).CenaNettoWP,Ceny(i).CenaNetto),nCenaRound+1),nCenaRound+1 )
					case WARTB
						buf = kwota(xPoz.item(i).Brutto)
					case WARTN
						buf = kwota ( xPoz.Item(i).Netto)
					case STAWKAVAT
						if( iZamienNazweVatOO && xPoz.item( i ).odwrotneObc ) Then
							buf = strNazwaVatOO
							// dp odliczenia od podsumowan stawki NP
							fPlnOO = fPlnOO + xPoz.item( i ).Brutto
							fWalOO = fWalOO + xPoz.item( i ).BruttoWal
						Else
							buf = xPoz.item(i).StVat.nazwa
						EndIf
					case KWOTAVAT
						buf = kwota ( xPoz.item(i).VAT)
					case RABATY
						buf = using "%2.2f", Round(xPoz.item(i).Rabat*100,nRabatRound)
						find regular "{(/-)|():d##}.{:d##}"
						if (regular 2) == "00" then buf = (regular 1)
						if buf == "0" then buf=""
						s = buf : buf = s : Replace "." , ","
					case WARTPRZEDRAB
						buf = kwota ( ((xPoz.item(i).CenaCennikowa)*xPoz.item(i).Ilosc)/Ceny(i).PrzelJmDod)
					case DOSTAWA
						buf=""
						for idw=1 to idw>nDostawy
							if Dostawy(idw).lp == i then
								buf+= Dostawy(idw).nazwa+" "
							endif
						next idw
					case CENAWWAL
						buf=formatuj(iif(nJednMiary,xPoz.item(i).CenaWP,xPoz.item(i).CenaWP/Ceny(i).PrzelJmDod),nCenaRound+1)
					case WARTWWAL
						buf =kwota(xPoz.item(i).WartoscWP)
				endselect
				kolumna j, PiszWyrazy(buf,KolTab1(j)-10)
			next j
	koniec
		koniec
		if bVertLines then
			if i==1 then DrawLine at 0,#T,nTblWidth1,0
			y = str.pozycja(#B)-str.pozycja(#T)
			x=0
			nPom = 1
			do
				x+=KolTab1(nPom)
				nPom+=1
				DrawLine at x,#T,0,y
			loop until nPom>size(KolTab1)
			DrawLine at 0,#T,0,y
		endif
		endif
		endif
	Next i
endif

if bVertLines then DrawLine at 0,#B,nTblWidth1,0
nTblMarg = 6005

if CZYNETTO then
	xtab = nNettoX
else
	xtab = str.szer-nTblWidth2
endif
if StVatPos < size(KolTab1) - 2 then
	j = StVatPos - 2
else
	j = size(KolTab1) - 4
endif
StVatPos = str.szer //1910
i = size(KolTab1)
for i=1 to i>4
	StVatPos -= 180
next i
shrink KolTab2,-1
grow KolTab2, 3
nTblWidth2 = 0
xtab = 1
for i= size(KolTab1) - 3 to i > size(KolTab1)
	KolTab2(xtab) = 180 //KolTab1(i)
	nTblWidth2 += 180 //KolTab2(xtab)
	xtab += 1
next i
tbl2 = tabela 1,nTblMarg,KolTab2,StlTab2
tbl0 = tabela 1,nTblMarg,koltab2,StlTabH

if PPlnVat then
	//xtab
	Ramka od StVatPos,#Y+10,nTblWidth2,10,0,nGray
		tabela #tbl0
			kolumna 1,"Netto"
			kolumna 2,"%"
			kolumna 3,"VAT"
			kolumna 4,"Brutto"
		koniec
	koniec
	For i = 1 To i>size(StawkiVat)
		iNP = ( StawkiVat(i).Nazwa == "NP" )
		fBruttoSUM = StawkiVat( i ).brutto - IIF( iNP, fPlnOO, 0 )
		if bZerVat || sign(fBruttoSUM,2) then
			tabela #tbl2, od StVatPos,#B
				kolumna 1, kwota ( StawkiVat(i).netto - IIF( iNP, fPlnOO, 0 ))
				kolumna 2, StawkiVat(i).Nazwa
				kolumna 3, kwota ( StawkiVat(i).Vat)
				kolumna 4, kwota ( fBruttoSUM )
			koniec
		endif
	next i
	If Sign( fPlnOO ) Then
		// podsumowanie kwot z odwrotnym obciazeniem
		Tabela #tbl2, Od StVatPos,#B
     		Kolumna 1, Kwota( fPlnOO )
     		Kolumna 2, strNazwaVatOO
     		Kolumna 3, "0,00"
     		Kolumna 4, Kwota( fPlnOO )
  		Koniec
	EndIf
	tbl2 = tabela 5,nTblMarg,KolTab2,StlTab2
	tabela #tbl2, od StVatPos,#B
		kolumna 1, kwota ( xDocument.Netto)
		kolumna 2 :	Align(0) : print "RAZEM"
		kolumna 3, kwota ( xDocument.Vat)
		kolumna 4, kwota ( xDocument.Brutto)
	koniec
endif	

if PWalVat then
	//xtab
	Ramka od StVatPos,#Y+10,nTblWidth2,10,0,nGray
		tabela #tbl0
			kolumna 1, using "Netto w %s", sWaluta
			kolumna 2,"%"
			kolumna 3,"VAT w PLN"
			kolumna 4, using "Brutto w %s", sWaluta
		koniec
	koniec
	For i = 1 To i>size(StawkiVat)
		iNP = ( StawkiVat(i).Nazwa == "NP" )
		fBruttoSUM = StawkiVat( i ).BruttoWal - IIF( iNP, fWalOO, 0 )
		if bZerVat || sign(fBruttoSUM,2) then
			tabela #tbl2, od StVatPos,#B
				kolumna 1, kwota ( StawkiVat(i).nettoWal - IIF( iNP, fWalOO, 0 ) )
				kolumna 2, StawkiVat(i).Nazwa
				kolumna 3, kwota ( StawkiVat(i).vat)
				kolumna 4, kwota ( fBruttoSUM )
			koniec
		endif
	next i
	If Sign( fWalOO ) Then
		// podsumowanie kwot z odwrotnym obciazeniem
		Tabela #tbl2, Od StVatPos,#B
     		Kolumna 1, Kwota( fWalOO )
     		Kolumna 2, strNazwaVatOO
     		Kolumna 3, "0,00"
     		Kolumna 4, Kwota( fWalOO )
  		Koniec
	EndIf
	tbl2 = tabela 1,nTblMarg,KolTab2,StlTab2
	tabela #tbl2, od StVatPos,#B
		kolumna 1, kwota ( xDocument.NettoWal)
		kolumna 2 :	Align(0) : print "RAZEM"
		kolumna 3, kwota ( xDocument.Vat)
		kolumna 4, kwota ( xDocument.BruttoWal)
	koniec
endif
y = str.Pozycja(#B)

if xPoz.Count() && CzyNP then
	grow kolNP,1
	grow KolTab1NP,12 : grow StlTab1NP,12
	KolTab1NP(1)=KolTab1(1)
	StlTab1NP(1)=StlTab1(1)
	KolTab1NP(2)=KolTab1(2)
	StlTab1NP(2)=StlTab1(2)
	for i=3 to i > nkol
		Select case kol(i)
			case STAWKAVAT,SWW,KWOTAVAT,CENAB,WARTB,CENAN,WARTN
				Select Case kol(i)
					case CENAN,CENAB
						if (PCenan+PCenab)==1 || ((PCenan+PCenab)==2 && !KolTab1NP(10)) then
							KolTab1NP(10)+=KolTab1(i)
							StlTab1NP(10)=nr
						else
							KolTab1NP(2)+=KolTab1(i)
						endif
					case WARTN,WARTB
						if (PWartN+PWartB)==1 || ((PWartN+PWartB)==2 && !KolTab1NP(11)) then
							KolTab1NP(11)+=KolTab1(i)
							StlTab1NP(11)=nr
						else
							KolTab1NP(2)+=KolTab1(i)
						endif
					case else
						KolTab1NP(2)+=KolTab1(i)
				endselect
			case KOD
				KolTab1NP(4)=KolTab1(i)
				StlTab1NP(4)=nl
			case ILOSC
				KolTab1NP(5)=KolTab1(i)
				StlTab1NP(5)=nr
			case JM
				KolTab1NP(6)=KolTab1(i)
				StlTab1NP(6)=nc
			case CENAPOD
				KolTab1NP(3)=KolTab1(i)
				StlTab1NP(3)=nr
			case RABATY
				KolTAb1NP(7)+=KolTab1(i)
				StlTab1NP(7)=nr
			case WARTPRZEDRAB
				KolTab1NP(8)+=KolTAb1(i)
				StlTAb1NP(8)=nr
			case DOSTAWA
				KolTAb1NP(9)+=KolTab1(i)
				StlTab1NP(9)=nc
			case CENAWWAL
				KolTab1NP(12)+=KolTab1(i)
				StlTab1NP(12)=nr
			case WARTWWAL
				KolTab1NP(13)+=KolTab1(i)
				StlTab1NP(13)=nr
		endselect
	next i
	for i=1 to i > 13
		if KolTab1NP(i)!=0 then
			if KolumnyNP(size(KolumnyNP))!=0 then grow kolumnyNP,1 : grow StyleNP,1
			KolumnyNP(size(KolumnyNP))=KolTab1NP(i)
			StyleNP(size(StyleNP))=StlTab1NP(i)
		endif
	next i
	grow StlTabHNP, size(kolumnyNP)-1 //tabela stylow headera
	for i=1 to i > size(StlTabHNP)
		StlTabHNP(i)=StlTabH(1)
	next i
	tbl0=tabela 0, nTblMarg,str.szer,nc
	tabela #tbl0, od #X,#B+20
		kolumna 1, "POZYCJE NIE PODLEGAJĄCE VAT"
	koniec
	ntblMarg=5
	tbl0 = tabela 1,nTblMarg,KolumnyNP,StlTabHNP
	ramka od 0, #Y+10,nTblWidth1,10,0,nGray
		tabela #tbl0
			sPom = "Nazwa"
			if nKod==1 then
				sPom += ",kod"
				if nKodTyp==2 then sPom+=" obcy"
				if nKodTyp==3 then sPom+=" paskowy"
			endif
			kolumna 1 : y = TextHeight("X")/2 : print at #X,y; "Lp."
			kolumna 2 : print at #X,y; sPom
			nKolumna=2
			for i = 3 to i > size(KolTab1NP)
				if KolTab1NP(i)!=0 then
					nkolumna+=1
				select case i
					case 4//KOD
						sPom = "Kod"
						if nKodTyp==2 then sPom+=" obcy"
						if nKodTyp==3 then sPom+=" paskowy"
					case 5//ILOSC
						sPom = "Ilość"
					case 6//JM
						sPom = "Jm"
					case 3//CENAPOD
						If bRabatDlaWartosci Then
							sPom = "Cena PLN"
						Else
							sPom = "Cennik"
						EndIf
					case 7
						sPom = "Rabat %"
					case 8
						sPom = "Wartość przed rab."
					case 9
						sPom = "Nazwa dostawy"
					case 10
						sPom="Cena"+LF+"PLN"
					case 11
						sPom="Wartość"+LF+"PLN"
						nMSpos=nkolumna-1
					case 12
						sPom="Cena w "+sWaluta
					case 13
						if !nMSpos then nMSPos=nkolumna-1
						sPom="Wartość w "+sWaluta
				endselect
				select case i
					case 3,4,5,7,6,9
						y = TextHeight(sPom)/2
					case else
						y = 0
				endselect
				kolumna nkolumna : print at #X,y; sPom
				endif
			next i
		koniec
	koniec
	if nMSpos then
		for i=1 to i > nMSpos-1
			nMalaStopka+=KolumnyNP(i)
		next i
	endif
	nTblMarg = 4005
	tbl1 = tabela 1*!bVertLines,nTblMarg,KolumnyNP,StyleNP
	nInc=1
	For i = 1 To i > xPoz.Count()
		if !xPoz.item(i).dokompletu then
		if xPoz.item(i).NiePodlega then
		ramka nTblWidth1,5,0,nOddGray*grayTrigger
		if bOddGray then grayTrigger = !grayTrigger
		tabela #tbl1,od 0,#Y
		kolumna 1, (using "%d",nInc) + " " : nInc+=1
		sBuf= xPoz.item(i).Opis
		if nKod==1 then
			select case nKodTyp
				case 1
					sBuf+= ", " + xPoz.item(i).Kod
				case 2
					nResult=xPoz.item(i).PodajKodObcy() : xErr(nResult)
					if nResult then Message sStndError : error ""
					sBuf+= ", " + xPoz.item(i).KodObcy
				case 3
					sBuf+= ", " + KodPaskowy_pozycji(i)
			endselect
		endif
		kolumna 2, PiszWyrazy(sBuf,KolumnyNP(2)-10)
		nkolumna=2
		For j = 3 To j > size(KolTab1NP)
			if KolTAb1NP(j)!=0 then
				nkolumna+=1
				select case j
				case 4
					select case nKodTyp
						case 1
							buf = xPoz.item(i).Kod
						case 2
							nResult=xPoz.item(i).PodajKodObcy() : xErr(nResult)
							if nResult then Message sStndError : error ""
							buf = xPoz.item(i).KodObcy
						case 3
							buf = KodPaskowy_pozycji(i)
					endselect
				case 6
					buf = " " + iif(nJednMiary,xPoz.item(i).JednostkaMiaryWP,xPoz.item(i).JednostkaMiary)
				case 3
					buf = formatuj ( Round(iif(nJednMiary,xPoz.item(i).CenaCennikowa/fKurs,(xPoz.item(i).CenaCennikowa/Ceny(i).PrzelJmDod)/fKurs),nCenaRound+1),nCenaRound+1 )
				case 5
 					buf = using "%4.4f",iif(nJednMiary,xPoz.item(i).IloscWP,xPoz.item(i).Ilosc)
					delete regular "(0#$)|(.0#$)"
					s = buf : buf = s : Replace "." , ","
				case 7
					buf = using "%2.2f", Round(xPoz.item(i).rabat*100 , nRabatRound)
					find regular "{(/-)|():d##}.{:d##}"
					if (regular 2) == "00" then buf = (regular 1)
					if buf == "0" then buf=""
					s = buf : buf = s : Replace "." , ","
				case 8
					buf = kwota ( iif(nJednMiary,xPoz.item(i).CenaCennikowa * xPoz.item(i).IloscWP,xPoz.item(i).CenaCennikowa * xPoz.item(i).Ilosc))
				case 9
					buf=""
					for idw=1 to idw>nDostawy
						if Dostawy(idw).lp == i then
							//ObliczWys(Dostawy(idw).nazwa,KolTab1(j)-15)
							buf+= Dostawy(idw).nazwa+" "
						endif
					next idw
				case 10
					buf=formatuj(Round(iif(nJednMiary,Ceny(i).CenaNettoWP,Ceny(i).CenaNetto),nCenaRound+1),nCenaRound+1)
				case 11
					buf = kwota ( xPoz.item(i).Wartosc )
				case 12
					buf=formatuj(Round(iif(nJednMiary,xPoz.item(i).CenaWP,xPoz.item(i).CenaWP/Ceny(i).PrzelJmDod),nCenaRound+1),nCenaRound+1)
				case 13
					buf = kwota(xPoz.item(i).BruttoWal)
			endselect
			kolumna nkolumna, PiszWyrazy(buf,KolumnyNP(nkolumna)-10)
			endif
		next j
	koniec
koniec
	if bVertLines then
		if i==1 then DrawLine at 0,#T,nTblWidth1,0
		y = str.pozycja(#B)-str.pozycja(#T)
		x=0
		nPom = 1
		do
			x+=KolTab1NP(nPom)
			nPom+=1
			DrawLine at x,#T,0,y
		loop until nPom>size(KolTab1NP)
		DrawLine at 0,#T,0,y
	endif
endif
endif
Next i

y = str.Pozycja(#B)
if nMSpos || CompactForm then
	if (pWartN||pWartB) && CWalWart && WartWal then tbl1=tabela 1*!bVertLines,nTblMarg,kolumnyNP(size(kolumnyNP)-3),bc,kolumnyNP(size(kolumnyNP)-2),nr,KolumnyNP(size(kolumnyNP)-1),nc,KolumnyNP(size(kolumnyNP)),nr
	if (pWartN||pWartB) && CWalWart && !WartWal then tbl1=tabela 1*!bVertLines,nTblMarg,kolumnyNP(size(kolumnyNP)-2),bc,KolumnyNP(size(kolumnyNP)-1),nr
	if (pWartN||pWartB) && WartWal && !CWalWart then tbl1=tabela 1*!bVertLines,nTblMarg,KolumnyNP(size(kolumnyNP)-2),bc,KolumnyNP(size(kolumnyNP)-1),nr,KolumnyNP(size(kolumnyNP)),nr
	if ((pWartN||pWartB) && !WartWal && !CWalWart) || (WartWal && !(pWartN+pWartB) ) || CompactForm then tbl1=tabela 1*!bVertLines,nTblMarg,KolumnyNP(size(kolumnyNP)-1),bc,KolumnyNP(size(kolumnyNP)),nr
	i=2
	tabela #tbl1, od nMalaStopka,#Y
		kolumna 1, "RAZEM"
		if (pWartN||pWartB) then kolumna i," "+ kwota(xDocument.NiePodlega) : i+=1
		if (pWartN||pWartB) && CWalWart && WartWal then kolumna i, "X" : i+=1
		if WartWal then kolumna i,kwota(xDocument.NiePodlegaWal)
		If CompactForm Then Kolumna i, ( Using "%s %s", Kwota( xDocument.NiePodlegaWal ), sWaluta )
	koniec
endif
y = str.Pozycja(#B)
endif

print at 0,y+20;
//FRNewRow(0)
//FRAddCol(700,90,18,bRamki,0)
//FRAddCol(50,90,0,0,-1)
//FRAddCol(-100,90,13,0,-1)
//FRDraw()

if xDocument.objId == DokumentSpObjId && xDocument.CzyWystawiony == 0 then
    fDoZaplatyWal -= xDocument.rozliczonoZaliczkamiBrutto
endif

ramka od 0,#B+10,700,90,bRamki
   	SetStyl ( nbl )
   	print at 30,20;"Razem do zapłaty: "
   	SetFont ( grub )
   	print kwota(fDoZaplatyWal)+" "+sWaluta
koniec
	
SetStyl ( nl )
	print at #R+50,#T+40;" "
	if Sign ( fDoZaplatyWal - fWplatyWal) then
		if fWplatyWal then
			print "Zapłacono: "
			SetFont ( nb )
			print kwota( fWplatyWal )+" "+sWaluta;
			SetStyl ( nl )
			print "     "
		endif
		print "Pozostało do zapłaty: "
		SetFont ( nb )
		print kwota ( fDoZaplatyWal - fWplatyWal )+" "+sWaluta
	else
		SetFont(grub)
		print "ZAPŁACONO"
	endif

ramka od 0,#B+10,str.szer,90,bRamki
	SetStyl ( nbl )
	print at 30,20;"Słownie: "
	SetFont ( "tekst" )
	print KwotaNaTekst( (using "%.2f",round(fDoZaplatyWal,2)),sWaluta)
koniec

#ifdef SIMPLIFIED
If CompactReportNo == 5 && !PPlnVAT && !PWalVAT Then
	Print At 0, #Y + 10;
	FRNewRow( 0 )
	FRAddCol( 700, 90, 23, bRamki, 0 )
	FRDraw()
EndIf
#endif

Zaliczki(xDocument.id)

IF (bWartoscAkcyzy) THEN
	akcyza = ObliczAkcyze()
	ramka od 0,#B+10,700,90,bRamki
		SetStyl ( nbl )
		print at 30,20;"Wartość akcyzy: "
		SetFont ( "tekst" )
		IF akcyza == -1 THEN
			print "nieznana"
		ELSE
			print Kwota(akcyza)
		ENDIF
	koniec
ENDIF

if bRabPods then
	tbl0 = tabela 1,nTblMarg,KolTabPR,StlTabH
	Ramka od str.szer-500,#Y+50,500,10,0,nGray
		tabela #tbl0
			if fRabat >= 0 then
				kolumna 1,"W sumie rabat"
			else
				kolumna 1,"W sumie narzut"
			endif
			if CZYNETTO then
				kolumna 2,"Netto"
			else
				kolumna 2,"Brutto"
			endif
		koniec
	koniec
	tbl0 = tabela 1,nTblMarg,KolTabPR,StlTabPR
	tabela #tbl0, od str.szer-500,#Y
		if fRabat >= 0 then
			kolumna 1, kwota( Round(fRabat , nRabatRound) ) + "%"
		else
			kolumna 1, kwota( -Round(fRabat , nRabatRound) ) + "%"
		endif
		if CZYNETTO then
			if fRabat >= 0 then
				kolumna 2, kwota ( tot_wartbaza - (xDocument.Netto+xDocument.NiePodlega))
			else
				kolumna 2, kwota ( (xDocument.Netto+xDocument.NiePodlega) - tot_wartBaza)
			endif
		else
			if fRabat >= 0 then
				kolumna 2, kwota ( tot_wartbaza - (xDocument.Brutto+xDocument.NiePodlega))
			else
				kolumna 2, kwota ( (xDocument.Brutto+xDocument.NiePodlega)-tot_wartBaza)
			endif
		endif
	koniec
endif
print at 0,#B+50;
FRNewRow(0)
FRAddCol(-100,250,14,0,0)
FRDraw()
PlatWyd()
Notatka()
NotatkaRodz()
Dekretacje()
ProFormaInfo()
Footer(1)
end
wydruk_tekstowy:
	#include "dokument VAT tryb tekstowy"
ProFormaInfoTxt()
FooterTxt(1)