Parameter nfThaiCard
** Selemenu 
** THAICARD-1,ThaiCard With 1,อ่านบัตรประชาชน-เช็คอิน
** THAICARD-2,ThaiCard With 2,อ่านบัตรประชาชน-ทำสัญญา
nfThaiCard=Iif(Type('nfThaiCard')$'LU',1,nfThaiCard)
Private OldAlias
OldAlias=Alias()
***
*** 
nThaiCard=2 && เลือก Option ต่างๆ
***
*** 
Do Case 
Case nThaiCard=0 && ทำงานตามปรกติ 
	cCardFlTar='_Card\Card.Txt'
Case nThaiCard=1 && สำหรับ RD แบบ ThaiIDService
	cCardFlTar='_Card\Data\Card.Txt'
	If File('R:\Temp\ThaiID.exe')
		Txt="Run /n R:\Temp\ThaiID.exe /Read /Exit /JPGOn /RTNOn /Folder='C:\Pos\Prog\Ho\_Card' /Filename='Card'"  
	Else
		Txt="Run /n D:\ThaiID\ThaiID.exe /Read /Exit /JPGOn /RTNOn /Folder='D:\BdPos1\_Card' /Filename='Card'"  
	Endif 
	&Txt 
Case nThaiCard=2 && สำหรับ RD แบบ SDK
	Copy File Data\FileHave.Dir To _Card\FileHave.Opn
	cCardFlTar='_Card\RdCard.Txt'
	Txt="Run /n RDCard.Exe"	
	&Txt 
	Do While File('_Card\FileHave.Opn')
		Do Fox_Time With '....กรุณาคลิก OK หรือ Cancel ที่เครื่องอ่านบัตร',1.00
	EndDo
Endcase
********
Do MessInWin With 1,'TmThaiCard','','กำลังตรวจหาเครื่องอ่านบัตรประชาชน',''
For ICard=1 To 5
	cTemp='THAICARD'
	If File(cCardFlTar)
		Do Case 	
		Case nThaiCard=1	
			Do RdCdSERV
		Case nThaiCard=2	
			Do RdCdDll
		EndCase
		Do Case 
		Case nfThaiCard=1 && ตอนเช็คอิน
			_CurObj=Objnum(m.Docno_id)
			KeyBoard '{Enter}'
		Case nfThaiCard=2 && ตอนทำสัญญา
			_CurObj=Objnum(m.Docno_id)
			KeyBoard '{Enter}'
		Endcase
		Delete File &cCardFlTar
		Show Gets
		Exit 
	Endif 
	If ICard=10
		Do Fox_Mess With 'พบปัญหา เครื่องออกบัตร กรุณาติดต่อเจ้าหน้าที่'
	Endif 
EndFor 

Do MessInWin With 0,'TmThaiCard','','',''
If Used(OldAlias) .and. !Empty(OldAlias)
	Select &OldAlias
Endif 
Return 



Procedure RdCdDll && จากโปรแกรมที่เขียนเอง
If Used('RdThaiCard')
	Use In RdThaiCard
Endif 
Create Cursor TmThaiCard (CardText C(200))
Create Cursor RdThaiCard (Guestname C(75),PreName C(25),GuestAddr1 C(75),GuestAddr2 C(75),BirthDate D,ExpirDate D)
Select TmThaiCard
Append From (cCardFlTar) Type Sdf 
Go 1
m.Docno_Id=Alltrim(CardText)
Go 2
m.Guestname=Alltrim(CardText)
Do CutBLname With m.GuestName In \Pos\Security\Prog\Sec4Prog
Do ChgNm2Pre With m.PreName,m.GuestName In \Pos\Security\Prog\Sec4Prog
Go 4
m.GuestAddr=Alltrim(CardText)
Do CutBLname With m.GuestAddr In \Pos\Security\Prog\Sec4Prog
nTemp=Rat('อำเภอ',m.GuestAddr)
If nTemp=0
	m.GuestAddr1=m.GuestAddr
	m.GuestAddr2=''
Else
	m.GuestAddr1=Alltrim(Substr(m.GuestAddr,1,nTemp-1))
	m.GuestAddr2=Alltrim(Substr(m.GuestAddr,nTemp))
Endif 
Go 5
m.BirthDate=Ctod(RdCdSERV2(Alltrim(CardText)))
Go 8
m.ExpirDate=Ctod(RdCdSERV2(Alltrim(CardText)))
** Brow Window BillScren 
Insert Into RdThaiCard From Memvar 
Use In TmThaiCard
Return 




Procedure RdCdSERV  && สำหรับบริษัท R-d ฟอร์จูน 
Create Cursor TmThaiCard (CardText C(150),TextCut C(100),FieldMap C(50),dTempCard L)
Select TmThaiCard
Append From (cCardFlTar) Type Sdf 
Delete All For Empty(CardText)
Replace All CardText With Alltrim(CardText)
Go Top 
Select TmThaiCard
Scan 
	nPosition=0
	cTempCard=Space(0)
	m.dTempCard=.F.
	Do Case 
	Case CardText='เลขประจำตัวประชาชน : '
		nPosition=Len('เลขประจำตัวประชาชน : ')
		cTempCard='m.Docno_Id'
		m.Docno_Id=Alltrim(Substr(CardText,nPosition+1)) && เป็นคีย์หลัก เพื่อหา 
	Case CardText='ชื่อตัวและชื่อสกุล : '
		nPosition=Len('ชื่อตัวและชื่อสกุล : ')
		cTempCard='m.GuestName'
	Case CardText='Name :'
		nPosition=Len('Name :')
		cTempCard='m.GuestName2'
	Case CardText='ที่อยู่ :'
		nPosition=Len('ที่อยู่ :')
		cTempCard='m.GuestAddr'
	Case CardText='เกิดวันที่ :'
		nPosition=Len('เกิดวันที่ :')
		cTempCard='m.BirthDate'
		m.dTempCard=.T.
	Case CardText='วันบัตรหมดอายุ :'
		nPosition=Len('วันบัตรหมดอายุ :')
		cTempCard='m.ExpirDate'
		m.dTempCard=.T.
	Case CardText='เพศ :'
		nPosition=Len('เพศ :')
	Case CardText='XX'
		nPosition=Len('XX')
	EndCase
	If !Empty(nPosition)
		Replace TextCut With Alltrim(Substr(CardText,nPosition+1)),FieldMap With cTempCard 	
		Replace dTempCard With m.dTempCard
		If dTempCard
			Replace TextCut With RdCdSERV2(Alltrim(TmThaiCard.TextCut))
		Endif 
	Endif 
EndScan 
Go Top In TmThaiCard
** Modi Repo ThaiCard 
** Repo Form ThaiCard Preview 
Delete All For Empty(FieldMap)
Do Case 
Case nfThaiCard=1 && ตอนเช็คอิน
	=vGdayRun4()
Case nfThaiCard=2 && ตอนทำสัญญา
	=VDocID1()
EndCase
Select TmThaiCard
Go Top In TmThaiCard
Scan 
	If TmThaiCard.dTempCard
		Txt=Alltrim(TmThaiCard.FieldMap)+"=Ctod('"+Alltrim(TmThaiCard.TextCut)+"')"
	Else
		Txt=Alltrim(TmThaiCard.FieldMap)+"='"+Alltrim(TmThaiCard.TextCut)+"'"
	Endif 
	&Txt
EndScan 
*****
m.Prename=Space(0)
m.GuestAddr=Alltrim(m.GuestAddr)
nTemp=Rat('อำเภอ',m.GuestAddr)
If nTemp=0
	m.GuestAddr1=m.GuestAddr
	m.GuestAddr2=''
Else
	m.GuestAddr1=Alltrim(Substr(m.GuestAddr,1,nTemp-1))
	m.GuestAddr2=Alltrim(Substr(m.GuestAddr,nTemp))
Endif 
Do CutBLname With m.GuestName In \Pos\Security\Prog\Sec4Prog
Do ChgNm2Pre With m.PreName,m.GuestName In \Pos\Security\Prog\Sec4Prog
******
*** Edit Window BillScren 
Use In TmThaiCard
Return 




Function RdCdSERV2  && แปลง Text เป็น วันที่ 
Parameter tmDate0
tmDate1=Padl(Alltrim(Substr(tmDate0,1,2)),2,'0')
tmDate2=Alltrim(Substr(tmDate0,3,6))
Do Case
Case tmDate2='ก.พ.'
	tmDate3='02'
Case tmDate2='มี.ค.'
	tmDate3='03'
Case tmDate2='เม.ย.'
	tmDate3='04'
Case tmDate2='พ.ค.'
	tmDate3='05'
Case tmDate2='มิ.ย.'
	tmDate3='06'
Case tmDate2='ก.ค.'
	tmDate3='07'
Case tmDate2='ส.ค.'
	tmDate3='08'
Case tmDate2='ก.ย.'
	tmDate3='09'
Case tmDate2='ต.ค.'
	tmDate3='10'
Case tmDate2='พ.ย.'
	tmDate3='11'
Case tmDate2='ธ.ค.'
	tmDate3='12'
Otherwise
	tmDate3='01'
EndCase
tmDate4=Alltrim(Substr(tmDate0,9,6)) && 543
tmDate5=Alltrim(Str(Val(tmDate4)-543))
tmDateR=tmDate1+'/'+tmDate3+'/'+tmDate5
Return tmDateR




Procedure ForCard1  && สำหรับบริษัท ที่ปากเกร็ด
Create Cursor TmThaiCard (Docno_id C(25),Guestname C(75),birth_date C(10),guestaddr1 C(75),guestaddr2 C(75),guestaddr3 C(75))
Modi COmm (cCardFlTar) Noedit 
Append From (cCardFlTar) Type Deli With ,
Replace All Docno_id With Alltrim(Docno_id),Guestname With Alltrim(Guestname),birth_date With Alltrim(birth_date);
,Guestaddr1 With Alltrim(Guestaddr1),Guestaddr2 With Alltrim(Guestaddr2),Guestaddr3 With Alltrim(Guestaddr3)
Go Top 
Scatter Memvar 
m.birthdate=Ctod(m.birth_date)
cCardFlTr2='_Card\'+Alltrim(m.Docno_id)+'.Txt'
Copy File (cCardFlTar) To (cCardFlTr2)
Delete File (cCardFlTar)
=vGdayRun4()
Select TmThaiCard
Scatter Memvar 
Use In TmThaiCard
Return 



