
mapValue mvPrawaDok
mvPrawaDok.Type (string)

// Ustawienie praw uzytkownikow do typow dokumentow
mvPrawaDok.Set("Admin","|FVS|PAR|")
mvPrawaDok.Set("DD","|PAR|")

// typy kolumn
#define ftString	0	
#define ftInt   	1	
#define ftLong   	16
#define ftMoney   	2
#define ftDate   	3
#define ftBitmap   	17
#define ftCheck   	7
#define ftDrop   	128

// kolumny
#define	COL_NAZWA	0
#define	COL_OPCJA	1
#define	COL_WART	2
#define	COL_VALUE	3

#define COL_dg_SKROT	0
#define COL_dg_ID   	1
#define COL_dg_CHECK	2
#define COL_dg_NAZWA   	3
#define COL_dg_TYP   	4
#define	COL_dg_VALUE	5
#define	COL_dg_SERIA	6


string sCo
int iU

dispatch dgDok

//------------------------------------------------
int Sub AddColumn(dispatch g, string ColName, int ColWidth, int ColType, int ColSize, int ColHidden, int ColLocked)
//------------------------------------------------
	int col

    G.ColumnCount = G.ColumnCount + 1
    col = G.ColumnCount - 1
    G.Columns(col).Name 		= ColName
    G.Columns(col).Width 		= ColWidth
    G.Columns(col).FieldType(ColType,ColSize)
    G.Columns(col).hidden 		= ColHidden
    G.Columns(col).Locked 		= ColLocked

endsub



//----------------------------------------------------------------------------------------------------
int Sub WczytajListeDok()
//----------------------------------------------------------------------------------------------------	

dispatch dRow

	dgDok.ColumnCount = 0
	dgDok.TreeMode = 1

	AddColumn(dgDok, "Nazwa", 150, ftString,100, 0, 1)	
	AddColumn(dgDok, "Id", 60, ftLong,0, 1, 0)						
	AddColumn(dgDok, "A", 20, ftCheck,0, 1, 1)	
	AddColumn(dgDok, "Nazwa", 60, ftString,100, 1, 1)				
	AddColumn(dgDok, "typ", 60, ftLong,0, 1, 0)				
	AddColumn(dgDok, "Opis", 160, ftString,100, 0, 0)
	AddColumn(dgDok, "Seria", 60, ftString,100, 1, 0)


	dgDok.Template.SetFont(0, "Arial", 14, 1)
	dgDok.Template.SetFont(1, "Arial", 14, 0)
	dgDok.Template.SetFont(-1, "Arial", 14, 1)
	dgDok.RowHeader = 0

				dRow = dgDok.InsertRow(dgDok.RowCount)
				dRow.Value(COL_dg_SKROT) = "Dokumenty"
				dRow.Value(COL_dg_ID) = 7001
				dRow.Value(COL_dg_NAZWA) = ""

			

	BaseXT xt
	int err
	int k

	BaseDK dok

for k = 1 to k > dgDok.RowCount
	xt.SetKey("super")
	xt.SetKeySeg("super",dgDok.Rows(k-1).Value(COL_dg_ID))
	xt.SetKeySeg("kod","")	

	err = xt.GetRec(GE)
	while err == 0 
		if xt.GetField("super") != dgDok.Rows(k-1).Value(COL_dg_ID) then exit

				if xt.GetField("typ") != "0" then
	
					buf = mvPrawaDok.Get( CurrentUser(),"" )

					if (find regular "{*}/|"+xt.GetField("kod") + "/|{*}") then				

									dok.GetRecById( xt.GetField("klient") )
				
				
									dRow = dgDok.InsertChildRow(k-1,0)
									dRow.Value(COL_dg_SKROT) = xt.GetField("kod")
									dRow.Value(COL_dg_ID) = xt.GetField("id")
									dRow.Value(COL_dg_TYP) = xt.GetField("typ")
										if xt.GetField("typ") == "32" then
											dRow.Value(COL_dg_VALUE) = dok.GetField("nazwa")
											dRow.Value(COL_dg_SERIA) = dok.GetField("odadres")
										endif
									if xt.GetField("flag") == 128 then dRow.Value(COL_dg_CHECK) = 1
					else

					if xt.GetField("typ") != "32" then
	
									dRow = dgDok.InsertChildRow(k-1,0)
									dRow.Value(COL_dg_SKROT) = xt.GetField("kod")
									dRow.Value(COL_dg_ID) = xt.GetField("id")
									dRow.Value(COL_dg_TYP) = xt.GetField("typ")
					endif

					endif
				endif

		err = xt.GetRec(NX)
	wend
next k


// porozwijaj wszytkie gazie
for k = 1 to k > dgDok.RowCount
	dgDok.Rows(k-1).Expanded = 1
next k
	


endsub

//------------------------------------------------
int sub Wybierz()
//------------------------------------------------

dispatch dRow
iorec io
long iddok 

	dRow = dgDok.Rows(dgDok.CurRow)

	if dgDok.CurRow > 0 then
		if dRow.Value(COL_dg_TYP) == 32  then
	
				io.SetField("typ_dokumentu", dRow.Value(COL_dg_SKROT))	
				//io.SetField("seria", "sFVs")	
				//io.SetField("rodzaj", "")
				//io.SetField("katalog", "")
					
				iddok = io.ImportSP()
	
				OpenWindow("SP.TPL", iddok, 1, 1)
	
			Wybierz = -1
		else
	
			Wybierz = 1
		endif
	endif
endsub

//------------------------------------------------
int sub OnCommandDok(int id, int msg)
//------------------------------------------------

	if id == 0 && msg == 0 then
		WczytajListeDok()
	endif

endsub


//------------------------------------------------
int sub PokazForme()
//------------------------------------------------

	Form "Mix-soft Nowy Dokument (" + CurrentUser() + ")",375,416
		  control "grid", dgDok, 5,5,360,340
		  button "Anuluj", 95,355,80,25, -1
		  button "Wybierz", 5,355,80,25, Wybierz()

	int ko = execform OnCommandDok

endsub

PokazForme()

NoOutPut()