//"dokexpk1.sc","Dokument eksportowy korygujący","\Dokumenty\Sprzedaż\Korekta eksportu\",0,2.1.10,SYSTEM
/////////////////////////
// Dokument eksportowy korygujący
// dokexpk1.sc
////////////////////////

#include "Dokument sprzedaży - ramki - definicje 2"
int stopka
Int pozNetto
int rowY = 0

#define SHOW_KSEF_INFO
#include "KSeF Extension"
Int bInfoKSeF
int SHOWKSEFINFOdefined = 1

#define EXPORTVATPLN
Int EXPORTVATdefined = 0

#ifdef EXPORTVAT
	EXPORTVATdefined = 1
#else
	EXPORTVATdefined = 0
#endif

string TitleForm(6),ListFormNP(2), ListForm(3), PodsForm, PodsForm2, StopForm, ListPodForm, NabOdbForm

#define SHOWGTU 1


#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 bNettoBrutto
Int bVat
Int bZerVat
Int StlHeadNP( 1 )

#include "Lang_pol"
#define OK 2
#define ANULUJ -1
#define WALUTOWY
int nID_Rap=0
string KodTowaru
string cmbBoxKod(3) = "własny","obcy","paskowy"
string sNab,sOdb,sNip,sTmp
int nPom,x,y,py,dx,dy,pdy,bmp,b
int 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,stawka
int KolTab1(1), StlTab1(1), KolTab2(2), StlTab2(2), tbl1, tbl2, tblHead1, StlHead(1), tblIn
int tbl1Szer, tbl2Szer

int VAT = 0, i,bFNotatka
string nazwaRaportu
int bmpbtn,chkPrzed,chkPo,bOddTrigger,bKhTeleadr
string tKodDialog(3) = "W osobnej kolumnie","Obok nazwy towaru","Nie pokazuj"
long lTemp
int licznik, wsp = 1,  wsp1 = 1, sp,Nptrigger,czypozNP
string RazemPom, VatPom, sIlosc, sPom
string cmbBoxZaokrCen(3) = "0,01","0,001","0,0001"
int t1_width
int t2_width
int bOpisTypu
int bStanRozl
Int bPlatnosci
int bPrintStopka = 0

String Platnosci(1)
#include "Dokument sprzedaży - ramki - definicje"
#include "Nagłówek i stopka raportu I"
#include "Engine do dokumentów korygujących"
#include "Formatowanie ramek nagłówka"
#include "Kwota na tekst angielski"

#ifdef SIMPLIFIED
	Int TaxCount = 0                              // Ilosc roznych stawek VAT w pozycjach dokumentu
	For i = 1 To i > Size( StPrzed )
	    TaxCount += Sign( StPrzed( i ).netto )
	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
	// Ramka z pozycjami bez stawek VAT ( jak w raporcie bazowym ) - do szybkiej modyfikacji
	// TaxCount = 1
	// TaxChanged = 0
#endif

Int czyKorektaKursu = Sign( xDocument.kurs - xDocument.kursVatkoryg, 6 )

int nLang
float wartoscwwalucie=xDocument.wartoscwwalucie

#ifdef SHOW_KSEF_INFO
	ksefNumber = xDocument.numberKsef
	ksefPostDate = xDocument.dataWystawieniaKsef
#endif

NoDate = 1
string sSekcja = GetReportName()
string sSekcjaIn = sSekcja
sSekcja += " "+xDocument.TypDK
if GetIni( sSekcja, "Notatka")!="" then sSekcjaIn=sSekcja

int bPokaz = !Val( Arg7 )

#include "Ustawienia grafiki"

int bPrzed		= Val( GetIni( sSekcjaIn,"Przed korekta" ) )
int bPo				= Val( GetIni( sSekcjaIn,"Po korekcie" ) )
int nDat			= Val( GetIni( sSekcjaIn, "Data sprzedaży" ) )
rBoxData.Init(1,1, nDat,bKZ)
int bOdbiorca	= Val( GetIni( sSekcjaIn, "Pokaz odbiorcę" ) )
int bKonth		= Val( GetIni( sSekcjaIn, "Kontrahent" ) )
int bNotat		= Val( GetIni( sSekcjaIn, "Notatka" ) )
int bNotatRodz = Val( GetIni( sSekcjaIn, "Notatka z rodzaju" ) )
int bKurs			= Val( GetIni ( sSekcjaIn, "Kurs" ) )
int nKod			= GetValFromIni("Pokaz kod",2)
int nKodTyp   = GetValFromIni("Rodzaj kodu" ,1)
bKhTeleadr	=	GetValFromIni("Dane teleadresowe kontrahenta",0)
int bDekretacje = Val( GetIni ( sSekcjaIn, "Dekretacje" ) )
int bDostawy	= Val( GetIni ( sSekcjaIn, "Dostawy" ) )
int nJednMiary   = GetValFromIni("Jednostka miary" ,1)
int nCenaRound = GetValFromIni("Zaokr. ceny",1)
int bRabaty,CzyRabaty
int offset1
bRabaty=Val(GetIni(sSekcjaIn,"Rabaty")) : CzyRabaty=1
#include "Ustawienia wydruku uproszczonego - GetIni"

#include "Dokumenty korygujące - include"

int sub OnCommand(int id,int msg)
	if !id && !msg then
		if !GRAF then Enable ( bmpbtn,-1 )
	endif
endsub

int sub Validate()
	Validate = OK
endsub

if !GRAF then goto wydr_tekst:

int sub ZapiszKorekte( InfoPoz poz, int lin, string op_key, int  typ, String StVatPrzedKorekta )

	int ddy,t
#ifdef SIMPLIFIED
	If NPtrigger Then
		tbl1 = Tabela !bVertLines, 4005, KolTab1NP, StlTab1NP
	EndIf
#endif 
	ramka od 0,#Y, tbl1Szer,5,0,nOddGray*bOddTrigger
		tabela #tbl1, od 0, #Y
		//	stawka = poz.stawka
			kolumna 1, using "%d", poz.lp
			buf = mPozOpis.Get(Poz.opis)
			if nKod==1 then
				select case nKodTyp
					case 1
						buf += ", "+Poz.Kod
					case 2
						buf += ", "+Poz.KodObcy
					case 3
						buf += ", "+KodPaskowy_pozycji(poz.kod)
				endselect
			endif
			delete regular "\n$"
			kolumna 2, PiszWyrazy(buf,KolTab1(2)-10)
#ifdef SIMPLIFIED
			If !NPtrigger Then
				If TaxCount > 1 || TaxChanged Then
					Kolumna 3, Poz.StVat
				EndIf
				If TaxChanged Then
					Kolumna 4, StVatPrzedKorekta
				EndIf
			EndIf
#else
			t=3
			if !nKod then
				select case nKodTyp
					case 1
						KodTowaru=Poz.Kod
					case 2
						KodTowaru=Poz.KodObcy
					case 3
						KodTowaru=KodPaskowy_pozycji(poz.kod)
				endselect
				kolumna t,PiszWyrazy(KodTowaru,KolTab1(t)) : t+=1
			endif
			kolumna t, PiszWyrazy(iif(nJednMiary,poz.JmWP,poz.Jm),KolTab1(t)-10) : t+=1
			if bRabaty then kolumna t,(using "%3.2f",poz.Rabaty) : t+=1
			if bDostawy then
				buf=""
				for idw=1 to idw>nDostawy
					if Dostawy(idw).lp == poz.lpsuper && Dostawy(idw).typ==typ && Dostawy(idw).ilosc!=0 then
						buf+=Dostawy(idw).nazwa+" "
					endif
				next idw
				kolumna t, PiszWyrazy(buf,KolTab1(t)-10) : t+=1
			endif
			buf = using "%4.4f", iif(nJednMiary,poz.IloscWP,poz.Ilosc)
			delete regular "(0#$)|(.0#$)"
			kolumna t, PiszWyrazy(buf,KolTab1(t)-10) : t+=1
			if (xDocument.Charakter == WDK && typ != 2) Then
				kolumna t, formatuj ( Round(iif(nJednMiary,poz.CenaWWalucieWp,poz.CenaWWalucie),nCenaRound+1),nCenaRound+1 ) : t+=1
			else
				kolumna t, formatuj ( Round(iif(nJednMiary,poz.CenaWP,poz.Cena)/fKurs,nCenaRound+1),nCenaRound+1 ) : t+=1
			endif
			kolumna t, poz.stVAT : t+=1
			If xDocument.Charakter == WDK && (typ == 1 || typ == 3) Then
			    czyKorektaKursu = Sign(xDocument.kurs - xDocument.kursVatkoryg, 6)
			    If czyKorektaKursu != 0 Then
			        fKurs = IIf(typ == 1, xDocument.kursVATKoryg, xDocument.kurs)
			    EndIf
			EndIf
			kolumna t, kwota( (poz.NiePodlega+poz.wartoscnetto)/fKurs ) : t+=1
#endif
		Koniec
	Koniec
	if bVertLines then
		if lin then DrawLine at 0,#T,tbl1Szer,0
		ddy = str.pozycja(#B)-str.pozycja(#T)
		x=0
		lin = 1
		do
			x+=KolTab1(lin)
			lin+=1
			DrawLine at x,#T,0,ddy
		loop until lin>size(KolTab1)
		DrawLine at 0,#T,0,ddy
	endif
	if bOddGray then bOddTrigger = !bOddTrigger
endsub

int sub RysujNaglowek(int offset)
	
#ifdef SIMPLIFIED
	If NPtrigger Then
		tblHead1 = Tabela 1, 10005, KolTab1NP, StlHeadNP
	Endif
#endif
	ramka od 0,#Y+offset,tbl1Szer,10,0,nGray
		tabela #tblHead1
				kolumna 1, LP_L
				select case nKodTyp
					case 1
						KodTowaru = KOD_L +" "+ TOWARU_L
					case 2
						KodTowaru = KOD_L +" "+ TOWARU_L +" "+ OBCY_L
					case 3
						KodTowaru = KOD_L +" "+ TOWARU_L +" "+ PASKOWY_L
				endselect
			kolumna 2,iif(nKod==1, NAZWA_L + ", " + KodTowaru, NAZWA_L +" "+ TOWARU_L +" "+ LUB_L +" "+ USLUGI_L)
#ifdef SIMPLIFIED
			If !NPtrigger Then
				If TaxCount > 1 || TaxChanged Then
					Kolumna 3, STAWKA_L +" "+ VAT_L
				EndIf
				If TaxChanged Then
					Kolumna 4, "Stawka VAT\nprzed korektą"
				EndIf
			EndIf
#else
			i=3
			if !nKod then Kolumna i,KodTowaru : i+=1
			kolumna i,JM_L : i+=1
			if bRabaty then Kolumna i,RABAT_L +" %" : i+=1
			if bDostawy then kolumna i,NAZWA_L +" "+ DOSTAWY_L : i+=1
			kolumna i,ILOSC_L : i+=1
			kolumna i,CENA_L : i+=1
			kolumna i,STAWKA_L +" "+ VAT_L : pozNetto=i : i+=1
			kolumna i,WARTOSC_L
#endif
		koniec
	koniec
endsub

int sub MalaStopka( float t_netto , int offset)
#ifdef OO_ONLY
	SetStyl( nbl )
	Print "Sprzedaż objęta odwrotnym obciążeniem."
#endif
#ifdef SIMPLIFIED
	tabela #tbl2, od str.szer - tbl2Szer,#B//+offset
		kolumna 1, RAZEM_L
		// Do czasu poprawienia podsumowan w raporcie bazowym
		// kolumna 2, kwota( t_netto ) + IIF( CompactForm, " " + sWaluta, "" )
		kolumna 2, kwota( IIF( czyKorektaKursu && CompactForm, 0, t_netto ) ) + IIF( CompactForm, " " + sWaluta, "" )
	koniec
#endif
	pom = str.pozycja(#B) - str.pozycja(#T)
	// ramka od #L,#T, tbl2Szer-1,pom-2,2,-1
	// koniec
endsub

int sub StopkaVat(int nStat,int nParam)

	int i,j,nTab(4),nStyl(4),nStylH(4),nRamkaStart,nRAmkadiff,y
	string tekst
	int poz0=0, isPoz=0
	Float kursKorygowany
	//jezeli nie ma pozycji netto to nie drukujemy stopki
	if(pozNetto == 0) then exit
		For i=1 to i>4
			nTab(i)=KolTab1(pozNetto+(i==2))
		next i
	for i=1 to i>4
		nStyl(i)=StlTab1(pozNetto)
		nStylH(i)=StlHead(pozNetto)
		nRamkaDiff+=nTab(i)
	next i
	nRamkaStart=str.szer-nRamkaDiff
if !bNettoBrutto || !bVat then
	j=Tabela 1,4005,nTab,nStylH
	Ramka od nRamkaStart,#Y+10,nRAmkaDiff,10,0,nGray
		Tabela	#j
			Kolumna 1,IIF(nLang,"Net value",WARTOSC_L +" "+ NETTO_L)
			Kolumna 2,IIF(nLang,VAT_L +" "+ STAWKA_L, STAWKA_L +" "+ VAT_L)
			Kolumna 3,IIF(nLang,VAT_L +" "+ KWOTA_L, KWOTA_L +" "+ VAT_L)
			Kolumna 4,IIF(nLang,"Gross value",WARTOSC_L +" "+ BRUTTO_L)
		koniec
	koniec
	y=str.pozycja(#B)
else
	y=str.Pozycja(#B)
	j=Tabela 1,4005,Koltab1(pozNetto-1),nc
	Ramka od nRamkaStart-KolTab1(pozNetto-1),#B,KolTab1(pozNetto-1),10,0,nGray
		tabela #j
			kolumna 1,RAZEM_L
		koniec
	koniec
	Ramka od nRamkaStart-KolTab1(pozNetto-1),#B,KolTab1(pozNetto-1),10,0,0
		tabela #j
			kolumna 1,WTYM_L
		koniec
	koniec
	stopka=1
endif
	j=Tabela 1,4005,nTab,nStyl

	Ramka od nRamkaStart,y,nRamkaDiff,10,0,0
	Select case nStat
		case 0
#ifdef WDK_ANG
			kursKorygowany = IIF(fKursPrzed > 0, fKursPrzed, fKurs)
#else
			kursKorygowany = fKurs
#endif
			if bNettoBrutto && bVAT then
				tabela #j
					kolumna 1, kwota( tot_nettobaza/kursKorygowany)
					kolumna 2, "X"
					kolumna 3, kwota( tot_vatbaza/kursKorygowany)
					kolumna 4, kwota( tot_bruttobaza/kursKorygowany)
				koniec
			endif
			For i = 1 to i > size(StPrzed)//cursize
				if Sign ( StPrzed(i).netto,2 ) || Sign ( StPrzed(i).vat,2 ) || bZerVat then
					isPoz = 1
					tabela #j
	 					kolumna 1, kwota( StPrzed(i).netto/kursKorygowany )
						kolumna 2, StPrzed(i).Nazwa
						kolumna 3, kwota( StPrzed(i).vat/kursKorygowany )
						kolumna 4, kwota( StPrzed(i).brutto/kursKorygowany )
					koniec
				endif
				//znajdź pozycję "0%"
				if Mid(StPrzed(i).Nazwa,2,1) =="0" then
					poz0=i
				endif
			Next i
			//wyświetlenie pozycji zerowej, gdy nie wyświetla żadnej
			if poz0 && !isPoz then
				tabela #j
	 				kolumna 1, kwota( StPrzed(poz0).netto/kursKorygowany )
					kolumna 2, StPrzed(poz0).Nazwa
					kolumna 3, kwota( StPrzed(poz0).vat/kursKorygowany )
					kolumna 4, kwota( StPrzed(poz0).brutto/kursKorygowany )
				koniec
			endif
			if !bNettoBrutto || !bVat then
			tabela #j
				kolumna 1, kwota( tot_nettobaza/kursKorygowany)
				kolumna 2, RAZEM_L
				kolumna 3, kwota( tot_vatbaza/kursKorygowany)
				kolumna 4, kwota( tot_bruttobaza/kursKorygowany)
			koniec
			endif
		case 1
			if bNettoBrutto && bVAT then
				tabela #j
					kolumna 1, kwota( xDocument.Netto/fKurs)
					kolumna 2, "X"
					kolumna 3, kwota( xDocument.Vat/fKurs)
					kolumna 4, kwota( xDocument.Brutto/fKurs)
				koniec
			endif
			For i = 1 to i > size(StKorekta) //cursize
				if Sign ( StKorekta(i).netto,2 ) ||  Sign ( StKorekta(i).vat,2 ) || bZerVat then
					tabela #j
						kolumna 1, kwota( StKorekta(i).netto/fKurs )
						kolumna 2, StKorekta(i).nazwa
						kolumna 3, kwota( StKorekta(i).vat/fKurs )
						kolumna 4, kwota( StKorekta(i).brutto /fKurs)
					koniec
				endif
			Next i
			if !bNettoBrutto || !bVat then
			if !nParam || (nParam && (xDocument.Netto+xDocument.Vat+xDocument.Brutto)) then
				tabela #j
					kolumna 1, kwota( xDocument.Netto/fKurs)
					kolumna 2, RAZEM_L
					kolumna 3, kwota( xDocument.Vat/fKurs)
					kolumna 4, kwota( xDocument.Brutto/fKurs)
				koniec
			endif
			endif
		case 2
			if bNettoBrutto && bVAT then
				tabela #j
					kolumna 1, kwota( (tot_nettoBaza+xDocument.Netto)/fKurs)
					kolumna 2, "X"
					kolumna 3, kwota(( tot_vatBaza+xDocument.Vat)/fKurs)
					kolumna 4, kwota((tot_bruttoBaza+xDocument.Brutto)/fKurs)
				koniec
			endif
			For i = 1 to i > size(StPo)//cursize
				if Sign( StPo(i).netto+StPrzed(i).netto, 2 ) || Sign ( StPo(i).vat+StPrzed(i).vat, 2 ) || bZerVat then
					tabela #j
						kolumna 1, kwota( StPo(i).Netto/fKurs)
						kolumna 2, StPo(i).nazwa
						kolumna 3, kwota( StPo(i).Vat/fKurs)
						kolumna 4, kwota( StPo(i).Brutto/fKurs)
					koniec
				endif
			Next i
			if !bNettoBrutto || !bVat then
			tabela #j
				kolumna 1, kwota( (tot_nettoBaza+xDocument.Netto)/fKurs)
				kolumna 2, RAZEM_L
				kolumna 3, kwota( (tot_vatBaza+xDocument.Vat)/fKurs)
				kolumna 4, kwota((tot_bruttoBaza+xDocument.Brutto)/fKurs)
			koniec
			endif
	endselect
	koniec
endsub

#define EkspKorDef
#include "Dokument sprzedaży - ramki 2"

if GRAF then goto wydr_graf:

wydr_tekst:
//dla tekstowego:
string sPom2, sPomD, sDostawy,sTmpStr
long iddok
int tbl0,bWydania,nRatio
#include "Engine do wydruków tekstowych"

int sub StopkaVatTxt(int nStat)
	int i,n(5),dl,ile,dwa
	dl=size(nTabSzer)
	for i=dl-3 to i>dl
		ile+=nTabSzer(i)
	next i
	n(1)=nTabSzer(dl-4)
	n(2)=ile/4
	n(3)=ile/4
	n(4)=ile/4
	n(5)=ile/4
	SetStyl ( sl )

	if !bNettoBrutto || !bVat then
		print DrukujStopkeTxt(dl-3,1,n(2),NETTO_L,0,1)
		print DrukujStopkeTxt(0,2,n(3),IIF(nLang,VAT_L +" "+ STAWKA_L , STAWKA_L +" "+ VAT_L),0,1)
		print DrukujStopkeTxt(0,3,n(4),IIF(nLang,VAT_L +" "+ KWOTA_L , KWOTA_L +" "+ VAT_L) ,0,1)
		print DrukujStopkeTxt(0,4,n(5),BRUTTO_L,0,1);lf
		if RestData(size(RestData)).sdane!="" then DrukujStopkeRst(dl-3) : print lf
	endif

	Select case nStat
		case 0
			if bNettoBrutto && bVAT then
				print DrukujStopkeTxt(dl-4,1,n(1),RAZEM_L,0,1)
				print DrukujStopkeTxt(0,2,n(2),kwota( tot_nettobaza/fKurs),0,1)
				print DrukujStopkeTxt(0,3,n(3),"X",0,1)
				print DrukujStopkeTxt(0,4,n(4),kwota( tot_vatbaza/fKurs),0,1)
				print DrukujStopkeTxt(0,5,n(5),kwota( tot_bruttobaza/fKurs),0,1);lf
				if RestData(size(RestData)).sdane!="" then DrukujStopkeRst(dl-4) : print lf
				dwa=1
				if !bzervat then
					while  !(Sign ( StPrzed(dwa).netto,2 ) || Sign ( StPrzed(dwa).vat,2 ))
						dwa+=1
					wend
				endif
				print DrukujStopkeTxt(dl-4,1,n(1),WTYM_L,0,1)
				print DrukujStopkeTxt(0,2,n(2), kwota( StPrzed(dwa).netto/fKurs ),0,1)
				print DrukujStopkeTxt(0,3,n(3),StPrzed(dwa).Nazwa,0,1)
				print DrukujStopkeTxt(0,4,n(4), kwota( StPrzed(dwa).vat/fKurs ),0,1)
				print DrukujStopkeTxt(0,5,n(5),kwota( StPrzed(dwa).brutto/fKurs ),0,1);lf
				if RestData(size(RestData)).sdane!="" then DrukujStopkeRst(dl-4) : print lf
			endif
			For i = 1+dwa to i > size(StPrzed)//cursize
				if Sign ( StPrzed(i).netto,2 ) || Sign ( StPrzed(i).vat,2 ) || bZerVat then
				print DrukujStopkeTxt(dl-3,1,n(2), kwota( StPrzed(i).netto/fKurs ),0,1)
				print DrukujStopkeTxt(0,2,n(3),StPrzed(i).Nazwa,0,1)
				print DrukujStopkeTxt(0,3,n(4), kwota( StPrzed(i).vat/fKurs ),0,1)
				print DrukujStopkeTxt(0,4,n(5),kwota( StPrzed(i).brutto/fKurs ),0,1);lf
				if RestData(size(RestData)).sdane!="" then DrukujStopkeRst(dl-3) : print lf
				endif
			Next i
			dwa=0
			if !bNettoBrutto || !bVat then
				print DrukujStopkeTxt(dl-3,1,n(2),kwota( tot_nettobaza/fKurs),0,1)
				print DrukujStopkeTxt(0,2,n(3),RAZEM_L,0,1)
				print DrukujStopkeTxt(0,3,n(4),kwota( tot_vatbaza/fKurs),0,1)
				print DrukujStopkeTxt(0,4,n(5),kwota( tot_bruttobaza/fKurs),0,1);lf
				if RestData(size(RestData)).sdane!="" then DrukujStopkeRst(dl-3) : print lf
			endif
		case 1
			if bNettoBrutto && bVAT then
				print DrukujStopkeTxt(dl-4,1,n(1),RAZEM_L,0,1)
				print DrukujStopkeTxt(0,2,n(2),kwota( xDocument.Netto/fKurs),0,1)
				print DrukujStopkeTxt(0,3,n(3),"X",0,1)
				print DrukujStopkeTxt(0,4,n(4),kwota(xDocument.Vat/fKurs),0,1)
				print DrukujStopkeTxt(0,5,n(5),kwota( xDocument.Brutto/fKurs),0,1);lf
				if RestData(size(RestData)).sdane!="" then DrukujStopkeRst(dl-4) : print lf
				dwa=1
				if !bzervat then
					while  !(Sign ( StKorekta(dwa).netto,2 ) ||  Sign ( StKorekta(dwa).vat,2 ))
						dwa+=1
					wend
				endif
				print DrukujStopkeTxt(dl-4,1,n(1),WTYM_L,0,1)
				print DrukujStopkeTxt(0,2,n(2), kwota( StKorekta(dwa).netto/fKurs ),0,1)
				print DrukujStopkeTxt(0,3,n(3),StKorekta(dwa).nazwa,0,1)
				print DrukujStopkeTxt(0,4,n(4), kwota( StKorekta(dwa).vat/fKurs  ),0,1)
				print DrukujStopkeTxt(0,5,n(5),kwota( StKorekta(dwa).brutto /fKurs ),0,1);lf
				if RestData(size(RestData)).sdane!="" then DrukujStopkeRst(dl-4) : print lf
			endif
			For i = 1+dwa to i > size(StKorekta) //cursize
				if Sign ( StKorekta(i).netto,2 ) ||  Sign ( StKorekta(i).vat,2 ) || bZerVat then
					print DrukujStopkeTxt(dl-3,1,n(2), kwota( StKorekta(i).netto/fKurs ),0,1)
					print DrukujStopkeTxt(0,2,n(3),StKorekta(i).nazwa,0,1)
					print DrukujStopkeTxt(0,3,n(4), kwota( StKorekta(i).vat/fKurs  ),0,1)
					print DrukujStopkeTxt(0,4,n(5),kwota( StKorekta(i).brutto /fKurs ),0,1);lf
					if RestData(size(RestData)).sdane!="" then DrukujStopkeRst(dl-3) : print lf
				endif
			Next i
			dwa=0
			if !bNettoBrutto || !bVat then
				print DrukujStopkeTxt(dl-3,1,n(2),kwota( xDocument.Netto/fKurs),0,1)
				print DrukujStopkeTxt(0,2,n(3),RAZEM_L,0,1)
				print DrukujStopkeTxt(0,3,n(4),kwota(xDocument.Vat/fKurs),0,1)
				print DrukujStopkeTxt(0,4,n(5),kwota( xDocument.Brutto/fKurs),0,1);lf
				if RestData(size(RestData)).sdane!="" then DrukujStopkeRst(dl-3) : print lf
			endif
		case 2
			if bNettoBrutto && bVAT then
				print DrukujStopkeTxt(dl-4,1,n(1),RAZEM_L,0,1)
				print DrukujStopkeTxt(0,2,n(2),kwota( (tot_nettoBaza+xDocument.Netto)/fKurs),0,1)
				print DrukujStopkeTxt(0,3,n(3),"X",0,1)
				print DrukujStopkeTxt(0,4,n(4),kwota(( tot_vatBaza+xDocument.Vat)/fKurs),0,1)
				print DrukujStopkeTxt(0,5,n(5),kwota( (tot_bruttoBaza+xDocument.Brutto)/fKurs),0,1);lf
				if RestData(size(RestData)).sdane!="" then DrukujStopkeRst(dl-4) : print lf
				dwa=1
				if !bzervat then
					while  !(Sign( StPo(dwa).netto+StPrzed(dwa).netto, 2 ) || Sign ( StPo(dwa).vat+StPrzed(dwa).vat, 2 ))
						dwa+=1
					wend
				endif
				print DrukujStopkeTxt(dl-4,1,n(1),WTYM_L,0,1)
				print DrukujStopkeTxt(0,2,n(2), kwota( StPo(dwa).netto/fKurs ),0,1)
				print DrukujStopkeTxt(0,3,n(3),StPo(dwa).nazwa,0,1)
				print DrukujStopkeTxt(0,4,n(4), kwota( StPo(dwa).vat/fKurs  ),0,1)
				print DrukujStopkeTxt(0,5,n(5),kwota( StPo(dwa).brutto /fKurs ),0,1);lf
				if RestData(size(RestData)).sdane!="" then DrukujStopkeRst(dl-4) : print lf
			endif
			For i = 1+dwa to i > size(StPo)//cursize
				if Sign( StPo(i).netto+StPrzed(i).netto, 2 ) || Sign ( StPo(i).vat+StPrzed(i).vat, 2 ) || bZerVat then
					print DrukujStopkeTxt(dl-3,1,n(2), kwota( StPo(i).netto/fKurs ),0,1)
					print DrukujStopkeTxt(0,2,n(3),StPo(i).nazwa,0,1)
					print DrukujStopkeTxt(0,3,n(4), kwota( StPo(i).vat/fKurs  ),0,1)
					print DrukujStopkeTxt(0,4,n(5),kwota( StPo(i).brutto /fKurs ),0,1);lf
					if RestData(size(RestData)).sdane!="" then DrukujStopkeRst(dl-3) : print lf
				endif
			Next i
			dwa=0
			if !bNettoBrutto || !bVat then
				print DrukujStopkeTxt(dl-3,1,n(2),kwota( (tot_nettoBaza+xDocument.Netto)/fKurs),0,1)
				print DrukujStopkeTxt(0,2,n(3),"X",0,1)
				print DrukujStopkeTxt(0,3,n(4),kwota(( tot_vatBaza+xDocument.Vat)/fKurs),0,1)
				print DrukujStopkeTxt(0,4,n(5),kwota( (tot_bruttoBaza+xDocument.Brutto)/fKurs),0,1);lf
				if RestData(size(RestData)).sdane!="" then DrukujStopkeRst(dl-3) : print lf
			endif
	endselect
endsub

int sub HeaderBig()
	string netto
	int pos
	SetStyl(sl)
	rysuj "-" : print "\n"
	sp = str.szer/sw - 45
	netto = BRUTTO_L
	if CZYNETTO then netto= NETTO_L
	if nTabSzer(1)==0 then
		for i=1 to i > size(KolTab1)
			UstalSzerKolumn(i,KolTab1(i))
		next i
		DopasujDoStrony()
	endif

	select case nKod
		case 0
			select case nKodTyp
				case 1
					KodTowaru =  KOD_L +" "+ TOWARU_L
				case 2
					KodTowaru = KOD_L +" "+ TOWARU_L +" "+ OBCY_L
				case 3
					KodTowaru = KOD_L +" "+ TOWARU_L +" "+ PASKOWY_L
			endselect
			buf = NAZWA_L +" "+ TOWARU_L +" "+ LUB_L +" "+ USLUGI_L
		case 1
			buf =  NAZWA_L
			select case nKodTyp
				case 1
					buf += ", "+ KOD_L +" "+ TOWARU_L
				case 2
					buf += ", "+ KOD_L +" "+ TOWARU_L +" "+ OBCY_L
				case 3
					buf += ", "+  KOD_L +" "+ TOWARU_L +" "+ PASKOWY_L
			endselect
		case 2
			buf = NAZWA_L +" "+ TOWARU_L +" "+ LUB_L +" "+ USLUGI_L
		endselect
		print DrukujDaneTxt(1,KolTab1(1),LP_L,0)
		print DrukujDaneTxt(2,KolTab1(2),buf,0)
		pos=2
#ifdef SIMPLIFIED
		If !NPtrigger Then
			If TaxCount > 1 || TaxChanged Then
			    Print DrukujDaneTxt( 3, KolTab1( 3 ), STAWKA_L +" "+ VAT_L, 0 )
			EndIf
			If TaxChanged Then
			    Print DrukujDaneTxt( 4, KolTab1( 4 ), "Stawka VAT\nprzed korektą", 0 )
			EndIf
		EndIf
		Print LF
#else
		if nKod then
			print DrukujDaneTxt(pos+=1,KolTab1(pos),JM_L,0)
			if bRabaty then print DrukujDaneTxt(pos+=1,KolTAb1(pos),RABAT_L +" %",0)
			if bDostawy then print DrukujDaneTxt(pos+=1,KolTab1(pos),NAZWA_L +" "+ DOSTAWY_L,0)
		else
			print DrukujDaneTxt(pos+=1,KolTab1(pos),KodTowaru,0)
			print DrukujDaneTxt(pos+=1,KolTab1(pos),"J.m.",0)
			if bRabaty then print DrukujDaneTxt(pos+=1,KolTAb1(pos),RABAT_L +" %",0)
			if bDostawy then print DrukujDaneTxt(pos+=1,KolTab1(pos),NAZWA_L +" "+ DOSTAWY_L,0)
		endif
		print DrukujDaneTxt(pos+=1,KolTab1(pos),ILOSC_L,0)
		print DrukujDaneTxt(pos+=1,KolTab1(pos),CENA_L,0)
		print DrukujDaneTxt(pos+=1,KolTab1(pos),WARTOSC_L,0);lf
#endif
		if RestData(size(RestData)).sdane!="" then DrukujDaneRst() : print lf
		rysuj "-" : print "\n"
endsub

int sub ZapiszLinie(InfoPoz poz, string op_key, int typ, String StVatPrzedKorekta)
	int pos
	SetStyl(sl)
	//	stawka = poz.stawka
	buf = using "%4.4f", iif(nJednMiary,poz.IloscWP,poz.Ilosc)
	delete regular "(0#$)|(.0#$)"
	sIlosc = buf
	buf = mPozOpis.Get(Poz.opis)
	if nKod==1 then
		select case nKodTyp
			case 1
				buf+=", "+Poz.Kod
			case 2
				buf+=", "+Poz.KodObcy
			case 3
				buf+=", "+KodPaskowy_pozycji(poz.kod)
		endselect
	endif
	//	buf = buf //DajNazwe( buf, sp-26*(!nKod)-26*bDostawy )
	delete regular "^*\n"
	sPom=buf
	sDostawy=""
	if bDostawy then
		for idw=1 to idw>nDostawy
			if Dostawy(idw).lp == poz.lpsuper && Dostawy(idw).typ==typ && Dostawy(idw).ilosc!=0 then
				sDostawy+=Dostawy(idw).nazwa+" "//DajNazwe( Dostawy(idw).nazwa+lf, 11)
			endif
		next idw
	endif
	sPomD=sDostawy
	print DrukujDaneTxt(1,KolTab1(1),(using "%d", poz.lp ),1)
	print DrukujDaneTxt(2,KolTab1(2),sPom,-1)
	pos=2
#ifdef SIMPLIFIED
	If !NPtrigger Then
		If TaxCount > 1 || TaxChanged Then
		    Print DrukujDaneTxt( 3, KolTab1( 3 ), Poz.StVat, 0 )
		EndIf
		If TaxChanged Then
		    Print DrukujDaneTxt( 4, KolTab1( 4 ), StVatPrzedKorekta, 0 )
		EndIf
	EndIf
	Print LF
#else
	if nKod then
		print DrukujDaneTxt(pos+=1,KolTab1(pos),iif(nJednMiary,poz.JmWP,poz.Jm),0)
		if bRabaty then print DrukujDaneTxt(pos+=1,KolTab1(pos),(using "%3.2f",Poz.Rabaty),0)
		if bDostawy then print DrukujDaneTxt(pos+=1,KolTab1(pos),sPomD,0)
	else
		select case nKodTyp
			case 1
				KodTowaru = Poz.Kod
			case 2
				KodTowaru = Poz.KodObcy
			case 3
				KodTowaru = KodPaskowy_pozycji(poz.kod)
		endselect
		print DrukujDaneTxt(pos+=1,KolTab1(pos),KodTowaru,-1)
		print DrukujDaneTxt(pos+=1,KolTab1(pos),iif(nJednMiary,poz.JmWP,poz.Jm),0)
		if bRabaty then print DrukujDaneTxt(pos+=1,KolTab1(pos),(using "%3.2f",Poz.Rabaty),0)
		if bDostawy then print DrukujDaneTxt(pos+=1,KolTab1(pos),sPomD,0)
	endif
	print DrukujDaneTxt(pos+=1,KolTab1(pos),sIlosc,1)
	print DrukujDaneTxt(pos+=1,KolTab1(pos),formatuj ( Round(iif(nJednMiary,poz.CenaWP,poz.Cena)/fKurs,nCenaRound+1),nCenaRound+1 ),1)
	print DrukujDaneTxt(pos+=1,KolTab1(pos),kwota( (poz.NiePodlega+poz.Wartoscnetto)/fKurs ),1);lf
#endif
	if RestData(size(RestData)).sdane!="" then DrukujDaneRst() : print lf
endsub

int sub NagMaly( float t_netto )
	SetStyl ( sl )
#ifdef SIMPLIFIED
    String totalText = RAZEM_L
    Int    totalWidth = TextWidth( totalText, "17cpi" )
	Print PODZIALKOL; totalText; PODZIALKOL
	Print Spacje( ( Str.Szer - totalWidth ) / TextWidth( "W", "17cpi" ) - 3 )
	// Do czasu poprawienia podsumowan w raporcie bazowym
	//	Print Kwota( t_netto ); " "; sWaluta; PODZIALKOL; LF
	Print Kwota( IIF( czyKorektaKursu && CompactForm, 0, t_netto ) ); " "; sWaluta; PODZIALKOL; LF
#else
	print DrukujStopkeTxt(size(nTabSzer)-1,size(nTabSzer)-1,nTabszer(size(nTabSzer)-1),RAZEM_L,0,1)
	print DrukujStopkeTxt(0,size(nTabSzer),nTabSzer(size(nTabSzer)),kwota(t_netto),1,1);lf
#endif
	if RestData(size(RestData)).sdane!="" then DrukujStopkeRst(size(nTabSzer)-1) : print lf
endsub

wydr_graf:
#include "Dokument eksportowy korygujący - include"