*** กรณีปรับเวอร์ชั่นเก่า ให้ดูที่ https://drive.google.com/drive/folders/1iGty6BkfFo56QdFAPHi_8eqUWtTWEquS
**** สำหรับ หจก.อัมพันธ์
**** เปิด-ปิดแบบทุกห้อง
Procedure AllOpenRun && เปิดไฟทั้งหมดแบบทีเดียว
*** Do AllOpenRun In AmPhan.Prg
If !Fox_Alert('จะปรับห้องเฉพาะห้องที่มีแขกพัก เลือก OK')
	Return 
Endif 
Close Data
Do OpFL4Rd With 'RoomCode','Rmno',0 In \Pos\Security\Prog\Sec4Prog
Do OpFL4Rd With 'Room','Tag1',0 In \Pos\Security\Prog\Sec4Prog
Create Cursor All2Room (T2RmOpen C(7))
*** หารายวัน
Select RoomCode
Scan For !Empty(RoomCode.KeyRmCode)
	If Seek(Dtos(pdHoDate)+RoomCode.Rmno,'Room')  .or. Seek(Dtos(pdHoDate-1)+RoomCode.Rmno,'Room')
		Do Case 
		Case Room.Status='I' .and. Room.NameWithR2<>'O'
			m.T2RmOpen=':M'+Alltrim(RoomCode.KeyRmCode)+'1'
			Insert Into All2Room From Memvar 
		Case Room.Status='C' .and. Room.CloseFlag=4
			m.T2RmOpen=':M'+Alltrim(RoomCode.KeyRmCode)+'1'
			Insert Into All2Room From Memvar 
		EndCase 
	Else	
		*** ไม่ต้องทำอะไร
	Endif 
EndScan 
*** หารายเดือน
Select Room 
Scan For Room.Room4Flag='M'
	Select RoomCode 
	If Seek(Room.Roomno,'RoomCode')
		m.T2RmOpen=':M'+Alltrim(RoomCode.KeyRmCode)+'1'
		Insert Into All2Room From Memvar 
	Endif 
	Select Room 
EndScan 
Select All2Room
Copy To All2Room Type SDF
txtFire='Run /n txt2com 1 com1 2 All2Room.txt'
&txtFire	
cFoxMessColor="RGB(255,255,0)" && สำหรับ Fox_Time
Do Fox_Time With 'กำลังปรับระบบไฟ',5
Delete File All2Room.txt
Close Data
*** Do Fox_Mess With 'ปรับปรุงสำเร็จ'
Return 



Procedure AllOpenDIV && เปิดไฟทั้งหมดแบบทีละห้อง
If !Fox_Alert('ต้องการ ปรับห้องทั้งหมด เลือก OK')
	Return 
Endif 
Close Data
Do OpFL4Rd With 'RoomCode','Rmno',0 In \Pos\Security\Prog\Sec4Prog
Do OpFL4Rd With 'Room','Tag1',0 In \Pos\Security\Prog\Sec4Prog
Do OpFL4Rd With 'Dbfrun\RmShow','',1 In \Pos\Security\Prog\Sec4Prog
Do Case 
Case Type('RmShow.FireForMat')='N' .and. RmShow.FireForMat=2 
	TxtOpenFR="Do Open4Kip"
Case Type('RmShow.FireForMat')='N' .and. RmShow.FireForMat=3 
	TxtOpenFR="Do Open4Halls"
Case Type('RmShow.FireForMat')='N' .and. RmShow.FireForMat=4 
	TxtOpenFR="Do Open4Txt"
Case Type('RmShow.FireForMat')='N' .and. RmShow.FireForMat=5 
	TxtOpenFR="Do Open4Kip2"  
Otherwise 
	TxtOpenFR="Do Open4RM With '1' In AmPhan.Prg"
EndCase
cComPortAT=Iif(Empty(RmShow.ComPortAct),'1',Alltrim(RmShow.ComPortAct))
RoomActive='1'
*** หารายวัน
Select RoomCode
Scan For !Empty(RoomCode.KeyRmCode)
	mKeyRmCode=Alltrim(RoomCode.KeyRmCode)
	If Seek(Dtos(pdHoDate)+RoomCode.Rmno,'Room')  .or. Seek(Dtos(pdHoDate-1)+RoomCode.Rmno,'Room')
		Do Case 
		Case Room.Status='I' .and. Room.NameWithR2<>'O'
			&TxtOpenFR
		Case Room.Status='C' .and. Room.CloseFlag=4
			&TxtOpenFR
		EndCase 
	Else	
		*** ไม่ต้องทำอะไร
	Endif 
EndScan 
*** หารายเดือน
Select Room 
Scan For Room.Room4Flag='M'
	Select RoomCode 
	If Seek(Room.Roomno,'RoomCode')
		mKeyRmCode=Alltrim(RoomCode.KeyRmCode)
		&TxtOpenFR
	Endif 
	Select Room 
EndScan 
Close Data
Do Fox_Mess With 'ปรับปรุงสำเร็จ'
Return 




Procedure Open4RM
Parameter RoomActive
If npData4Act=2 && ข้อมูลทดสอบ  
	cFoxMessColor="RGB(255,255,0)" && เหลือง
	Do Fox_Time With 'ข้อมูลทดสอบ ไม่เปิด/ปิดไฟ',1
	Return 
Endif 
Private fAmOpenCom
** RoomActive '0'=ปิดไฟ, '1'=เปิดไฟ
If Empty(RoomCode.KeyRmCode) && ไม่มี Code ไม่ต้องทำงาน
	Return 
Endif 
If !Used('RmShow')
	Use Dbfrun\RmShow In 0 Share Noupdate Alias RmShow 
	Go Top In RmShow
Endif 
fAmOpenCom=.F.
fAmpAction=Iif(Type('fAmpAction')='N',fAmpAction,0)
Do fAmOpenCom 
If !fAmOpenCom
	Return 
Endif 
cComPortAT=Iif(Empty(RmShow.ComPortAct),'1',Alltrim(RmShow.ComPortAct))
mKeyRmCode=Alltrim(RoomCode.KeyRmCode)
Do Case
Case RoomCode.Rmno=Room.Roomno && ตรวจสอบว่าเป็นห้องที่ถูกต้อง 
	*** ตรวจสอบว่าเป็นไฟแม่บ้านหรือไม่
	If !Empty(RoomCode.KeyRmMaid) .and. Room.Status='C'
		Do Case 
		Case Empty(Room.DoorOpFlag) .and. Room.CloseFlag=1
			fAmpAction=222 && ใช้ไฟแม่บ้าน
			mKeyRmCode=Alltrim(RoomCode.KeyRmMaid)
		Case Room.DoorOpFlag=4 .and. Room.CloseFlag=4
			fAmpAction=222 && ใช้ไฟแม่บ้าน
			mKeyRmCode=Alltrim(RoomCode.KeyRmMaid)
		Endcase
	Endif 
Case fAmpAction=2222 .and. !Empty(RoomCode.KeyRmMaid) && ปิดไฟไฟแม่บ้าน
	mKeyRmCode=Alltrim(RoomCode.KeyRmMaid)
EndCase
**** ป้องกันการเปิดหลายหน้าจอ
Private LockAlias,LockError
If !File('Temp\AmPLock.Dbf')
	LockAlias=Alias()
	Select 0
	Create Dbf Temp\AmPLock (AmLock C(10))
	Use 
	If !Empty(LockAlias) .and. Used(LockAlias)
		Select &LockAlias
	Endif 
Endif 
LockError=On('Error')
On Error Do ErroLock In \Pos\Security\Prog\Bd2Prg2.Prg With Error(),1,'Q'
If !Used('AmPLock')
	Use Temp\AmPLock In 0 Exclusive Noupdate 
Endif 
On Error &LockError
****
Do OpFL4Chk With 'SysPara',0,1 In \Pos\Security\Prog\Sec4Prog && เปิดแบบอ่าน 
Do OpFL4Chk With 'Ho_Util',0,1 In \Pos\Security\Prog\Sec4Prog && เปิดแบบอ่าน 
If Ho_Util.Spec_Mach<>1 && ยกเลิกชั่วคราว
	Return 
Endif 
Private OldRoom
OldRoom = Alias()
cfho2Mach=Space(0)
m.Ho2MacFlag=1
***
cBAmpan='BakData\F_'+ChgM_T2T(SysPara.SysDate,8)
If !File(cBAmpan+'.Dbf')
	Do CrcBAmpan
Endif 
If !Used('F_BackUP')
	Use (cBAmpan) In 0 Share Alias F_BackUP 
Endif 
***
If File('Dbfrun\Ho2Mach.Dbf')
	If !Used('Ho2Mach')
		Use Dbfrun\Ho2Mach In 0 Share Noupdate Alias Ho2Mach
	Endif 
	Go Top In Ho2Mach
	m.Ho2MacFlag=Ho2Mach.Ho2MacFlag
	If Between(m.Ho2MacFlag,3,4) 
		cfho2Mach=Alltrim(Ho2Mach.Ho2MacDir)+'Txt2Mach.Dbf'
	Endif 
Endif 
cpHoToPrg=Iif(Type('cpHoToPrg')='U','XXX',cpHoToPrg)
Do Case
Case m.Ho2MacFlag=0 && ยกเลิกชั่วคราว
	Return 
Case !(cpHoToPrg$'HFR,M2D,FRO,AM,DM,FRAM,XXX') 
	Do Fox_Show With 1,'เข้าในส่วนผู้จัดการ','ไม่สามารถเปิดไฟได้','กรุณาตรวจสอบ',''
	Return 	
Case Between(m.Ho2MacFlag,3,4) .and. !File(cfho2Mach) && แบบเครื่องลูก 
	Do Fox_Show With 0,'ส่งสัญญาณไฟไม่ได้','ไม่พบไฟล์ '+cfho2Mach,'กรุณาตรวจสอบ',''
	Return 
EndCase
If File('BdProduct.Prg')
	txtProd='Do BdProduct'
	&txtProd
Endif 
Do Case 
Case m.Ho2MacFlag=6 && ส่งเข้าโปรแกรม D:\BdPos\txt2com.exe 
	If File("M:\HoVFP.Exe") && เปลี่ยนตามตำแหน่งที่ ไฟล์ AmpTech อยู่
		TxtRoom="M:\Ho2Mach\R" 
	Else
		TxtRoom="Ho2Mach\R" 
	Endif 
	TxtRoom=TxtRoom+Alltrim(RoomCode.Rmno)+RoomActive+'.txt'
	Create Cursor TmAmpTech (Txt2Mach C(7))
	Select TmAmpTech
	Append Blank 
	Replace Txt2Mach With ':M'+mKeyRmCode+RoomActive
	TxtRoom="Copy To "+TxtRoom+" Type Sdf"
	&TxtRoom
	Do Am_Alert In AmPhan.prg
	Use In TmAmpTech
	If Used('F_BackUP')
		Select F_BackUP
		Append Blank 
		Replace F_RoomNo With RoomCode.Rmno,F_Status With Iif(RoomActive='0','OFF','ON ')
		Replace F_Card With mKeyRmCode,F_Date With Left(Dtoc(Date()),5),F_Time With Left(Time(),5)
		Replace F_ConTrol With TxtRoom
	Endif 
Case !Empty(cfho2Mach)  && กรณีเครื่องลูก สำหรับเปิดไฟ 
	If !Used('Txt2Mach')
		Use (cfho2Mach) In 0 Share Alias Txt2Mach
	Endif 
	Select Txt2Mach
	Append Blank 
	Replace Txt2Mach With ':M'+mKeyRmCode+RoomActive
	Replace Txt2Room With RoomCode.Rmno
	Replace ComPuName With Sys(0)
	Replace CLSendDt With Date(),CLSendTM With Time()
	Use In Txt2Mach
Otherwise
	If Ho_Util.Spec_MachW=1
		Do Fox_Wait With 0,'Fox_Wait','ห้อง '+Alltrim(RoomCode.Rmno);
		+' (KEY ='+mKeyRmCode+')','จะทำการ '+IIf(RoomActive='0','ปิด','เปิด')+'ไฟ',''
	Endif 
	txtFire=Space(0)
	Do Case 
	Case .F. && Empty(Sys(2000,'*.Exe')) && Run ภายใต้ Source
		 ** Do Fox_Wait With 0,'Fox_Wait','ห้อง '+Alltrim(RoomCode.Rmno);
		 ** +' (KEY ='+mKeyRmCode+')','จะทำการ '+IIf(RoomActive='0','ปิด','เปิด')+'ไฟ',''
	Case Type('RmShow.FireForMat')='N' .and. RmShow.FireForMat=2 
		Do Open4Kip  
	Case Type('RmShow.FireForMat')='N' .and. RmShow.FireForMat=3 
		Do Open4Halls
	Case Type('RmShow.FireForMat')='N' .and. RmShow.FireForMat=4 
		Do Open4Txt
	Case Type('RmShow.FireForMat')='N' .and. RmShow.FireForMat=5 
		Do Open4Kip2  
	Otherwise && แบบปรกติ 
		Do Open4Dos  
	Endcase
	If Used('F_BackUP')
		Select F_BackUP
		Append Blank 
		Replace F_RoomNo With RoomCode.Rmno,F_Status With Iif(RoomActive='0','OFF','ON ')
		Replace F_Card With mKeyRmCode,F_Date With Left(Dtoc(Date()),5),F_Time With Left(Time(),5)
		Replace F_Control With txtFire
		Do AddF_Prog  && ปรับปรุงใน F_BackUP.F_Prog
	Endif 
EndCase
If Used('F_BackUP')
	*** Do Fle4Cloud With 3,'' && อ่านไฟล์ UDT_C บนระบบ คลาวด์
	Select F_BackUP
	If .F. && ให้ใช้่จาก txt2com แทน แต่ให้คงอยู่ อนาคตอาจใช้
		Set Order To Tag1
		Copy To BakData\Open_R Type Sdf For !Empty(F_RoomNo) .and. F_RoomNo<>'000' Field F_RoomNo,F_Date,F_Time,F_Status,F_Card,F_Prog
		Set Order To Tag2 Descend
		Copy To BakData\Open_T Type Sdf For !Empty(F_RoomNo) .and. F_RoomNo<>'000' Field F_RoomNo,F_Date,F_Time,F_Status,F_Card,F_Prog
		Copy To BakData\Ctrl_T Type Sdf For !Empty(F_RoomNo) .and. !Empty(F_Control) Field F_RoomNo,F_Control
	Endif 
	Use In F_BackUP
Endif 
If fAmpAction=222 && ใช้ไฟอันที่ 2
	Select Room 
	Replace FirstCrdno With 'FIRE2'
Endif 
*** 
cTempAmp=RepowayRET(1)+'UDT_C.Txt'
If File(cTempAmp)
	cTempAmp='Do '+cTempAmp
	&cTempAmp
ENdif 
***
If !Empty(OldRoom) .and. Used(OldRoom)
	Select &OldRoom
Endif
fAmpAction=0  && คืนค่า 
*** 
*** เมื่อแก้แล้วให้ใช้คำสั่ง Comp AmPhan
Return 



*** กรณีพักชั่วคราวหมดเวลาและค้างคืนรายเดือนเลยเวลา และแจ้งปิดห้อง
Procedure TimeOut 
If !(cpHoToPrg$'HFR,M2D,FRO,XXX')
	Return 	
Endif 
If Room.Room4Flag<>'D'
	*** Return && กรณีเป็นรายเดือนให้เอาออก 
Endif 
If npData4Act=2 && ข้อมูลทดสอบ  
	cFoxMessColor="RGB(255,255,0)" && เหลือง
	Do Fox_Time With 'ข้อมูลทดสอบ ไม่เปิด/ปิดไฟ',3
	Return 
Endif 
Private AliasTime
AliasTime=Alias()
If !Used('RmShow')
	Do OpFL4Rd With 'Dbfrun\RmShow','',1 In \Pos\Security\Prog\Sec4Prog
Endif 
If !Used('SysPara')
	Do OpFL4Rd With 'SysPara','',1 In \Pos\Security\Prog\Sec4Prog
Endif 
If !Used('Ho_Util')
	Do OpFL4Rd With 'Ho_Util','',1 In \Pos\Security\Prog\Sec4Prog
Endif 
If Ho_Util.Spec_Mach<>1 && ยกเลิกชั่วคราว
	Return 
Endif 
Do SoundOnRMD && เสียงเตือนรายวัน
cComPortAT=Iif(Empty(RmShow.ComPortAct),'1',Alltrim(RmShow.ComPortAct))
cFoxMessColor="RGB(255,255,0)" && สำหรับ Fox_Time
Do Case 
Case Room.Room4Flag='D' && รายวัน 
	**** กรณีชั่วคราว ต้องดักก่อน
	If Room.Night='T' 
		Do Case 
		Case Empty(Ho_Util.WarnRoomOT)
			Return 
		Case m.ChRunMin-(Room.NightTM*60)+(Room.NightAddTm*60)<=Ho_Util.WarnRoomOT
			Return 
		Otherwise 
			****
		EndCase 
	Endif 
	Select Room
	If Room.NameWithR2<>'O' .and. (RmShow.Auto2conti=1 .or. Fox_Alert("'"+Alltrim(Room.Roomno)+"' หมดเวลาแล้ว เลือก OK เพื่อปิดไฟ"))
		Do Open4RM With '0' In AmPhan    
		If RmShow.Auto2conti=1
			Do Fox_Time With 'ตัดไฟห้อง '+Alltrim(Room.Roomno),5
		Endif 
	Endif 
	**** ตรวจสอบซ้ำ ครั้งที่ 2
	If Room.NameWithR2<>'O'
		If IsReadOnly('Room')
			Do OpFL4Wr With 'Room',Order('Room'),Recno('Room') In \Pos\Security\Prog\Sec4Prog
		Endif 
		Select Room
		Replace Room.NameWithR2 With 'O'
	Endif 
Case Room.Room4Flag='M' .and. Room.Closeuser<>'0' .and. !Empty(SysPara.Mntm4Late)  && รายเดือน 
	*** dtnextmon,Mntm4Late,tmnextmon
	lFG4Fire=.F.
	Do Case 
	Case Empty(SysPara.tmnextmon)  && เวลา
		lFG4Fire=.F.
	Case Room.RoomDate+SysPara.Mntm4Late=Date() .and. Time()>=SysPara.tmnextmon
		lFG4Fire=.T.
	Case Room.RoomDate+SysPara.Mntm4Late<Date()
		lFG4Fire=.T.
	EndCase
	If lFG4Fire
		If IsReadOnly('Room')
			Do OpFL4Wr With 'Room',Order('Room'),Recno('Room') In \Pos\Security\Prog\Sec4Prog
		Endif 
		Select Room
		Replace Room.Closeuser With '0'
		Do Open4RM With '0' In AmPhan
		If RmShow.Auto2conti=1
			Do Fox_Time With 'ตัดไฟห้อง '+Alltrim(Room.Roomno),5
		Endif 
	Endif 
EndCase
If !Empty(AliasTime) .and. Used(AliasTime)
	Select &AliasTime
Endif
Return 



***** ส่งตามรูปแบบเดิม 
Procedure Open4Dos 
Create Cursor OpenClose (txtact C(7))
Create Cursor OpenClose2 (txtact C(7))  && ไฟล์สำรอง
Create Cursor OpenClose3 (txtact C(7))  && ไฟล์สำรอง
Select OpenClose		
Appen Blank 
Replace txtact With ':M'+mKeyRmCode+RoomActive
Do \Pos\Security\Prog\Selemenu With 'OPEN4DOS','','เสริม-เปิดไฟหลายห้อง',.T.
Select OpenClose
Do Txt4AmPhan In UtilHo3
Copy To txtact.Txt Type Sdf  
Select OpenClose2
If Reccount('OpenClose2')<>0 && ไฟล์สำรอง
	Copy To txtact2.Txt Type Sdf  
Endif 
Select OpenClose3
If Reccount('OpenClose3')<>0 && ไฟล์สำรอง
	Copy To txtact3.Txt Type Sdf  
Endif 
Do Fle4CLOSE With 'OpenClose','OpenClose2','OpenClose3' In \Pos\Security\Prog\Sec4Prog.Prg
*******
Do Case
Case .F. .and. File('Txt2Com.Exe')
	mKeyRmCode=Iif(Type('mKeyRmCode')='U',Alltrim(RoomCode.KeyRmCode),mKeyRmCode)
	Do Am_Alert In AmPhan.prg
	txtFire='Run /n txt2com 1 com'+cComPortAT+' 2 :M'+Alltrim(mKeyRmCode)+Alltrim(RoomActive)
	&txtFire
Case File('Open00.Bat')
	If !File('OpenM2D.Bat')
		Copy File Open00.Bat To OpenMACH.Bat
		Copy File Open00.Bat To OpenFRAM.Bat
		Copy File Open00.Bat To OpenHFR.Bat
		Copy File Open00.Bat To OpenM2D.Bat
		Copy File Open00.Bat To OpenFRO.Bat
		Copy File Open00.Bat To OpenAM.Bat
		Copy File Open00.Bat To OpenDM.Bat
		Copy File Open00.Bat To Open01.Bat
		If File('Ho2Mach\Ho2Mach.Dbf')
			Copy File Open00.Bat To OpenMach.Bat
		Endif 
	Else
		dfAmDTCR1=Dtos(Fdate('Open00.Bat'))+Left(FTime('Open00.Bat'),5)
		dfAmDTCR2=Dtos(Fdate('OpenHFR.Bat'))+Left(FTime('OpenHFR.Bat'),5)
		If dfAmDTCR1<>dfAmDTCR2
			Copy File Open00.Bat To OpenMACH.Bat
			Copy File Open00.Bat To OpenFRAM.Bat
			Copy File Open00.Bat To OpenHFR.Bat
			Copy File Open00.Bat To OpenM2D.Bat
			Copy File Open00.Bat To OpenFRO.Bat
			Copy File Open00.Bat To OpenAM.Bat
			Copy File Open00.Bat To OpenDM.Bat
			Copy File Open00.Bat To Open01.Bat
			If File('Ho2Mach\Ho2Mach.Dbf')
				Copy File Open00.Bat To OpenMach.Bat
			Endif 
			Do Fox_Mess With 'แก้ไขแฟ้ม OpenHFR.Bat ตาม Open00.Bat'
		Endif 
	Endif 
	Do Case 
	Case cpHoToPrg='HFR' .and. File('OpenHFR.Bat')
		Run OpenHFR.Bat
	Case cpHoToPrg='M2D' .and. File('OpenM2D.Bat')
		Run OpenM2D.Bat
	Case cpHoToPrg='FRO' .and. File('OpenFRO.Bat')
		Run OpenFRO.Bat
	Case cpHoToPrg='AM' .and. File('OpenAM.Bat')
		Run OpenAM.Bat
	Case cpHoToPrg='DM' .and. File('OpenDM.Bat')
		Run OpenDM.Bat
	Case cpHoToPrg='FRAM' .and. File('OpenFRAM.Bat')
		Run OpenFRAM.Bat
	Otherwise 
		Run Open01.Bat
	EndCase 
EndCase
*******
Delete File txtact.Txt
If File('txtact2.Txt')
	Delete File txtact2.Txt
Endif 
If File('txtact3.Txt')
	Delete File txtact3.Txt
Endif 
Return 



Procedure Open4Kip && RmShow.FireForMat=2 
Do Am_Alert In AmPhan.prg
Create Cursor OpenClose (txtact C(6))
Select OpenClose		
Appen Blank 
Replace txtact With '$'+mKeyRmCode+RoomActive+'!'
Copy To Sc\Control.Txt Type Sdf  
Use 
Run Sc\Relay.Bat
Return 


Procedure Open4Halls && RmShow.FireForMat=3
** เปลี่ยนตัวแปร ได้ที่ halls.ini
Do Am_Alert In AmPhan.prg
OldmKey=mKeyRmCode
Do Txt4AmPhan In UtilHo3
txtHalls='Run /n Halls '+Alltrim(mKeyRmCode)+Alltrim(RoomActive)+Alltrim(RoomCode.Rmno)
mKeyRmCode=OldmKey
&txtHalls	
Return 



Procedure Open4Txt && RmShow.FireForMat=4 ใช้กับ Amphan 
Do Am_Alert In AmPhan.prg
OldmKey=mKeyRmCode
Do Txt4AmPhan In UtilHo3
txtFire='Run /n txt2com 1 com'+cComPortAT+' 2 :M'+Alltrim(mKeyRmCode)+Alltrim(RoomActive)
mKeyRmCode=OldmKey
&txtFire	
Return 


Procedure Open4TxtALL && RmShow.FireForMat=4 ใช้กับ Amphan เป็นการส่งแบบไฟล์  Pipop
Parameter Fld
Fld=Alltrim(Fld)
If !File(Fld)
	Do Fox_Mess With 'ไม่พบไฟล์ '+Fld
	Return 
Endif 
If !Used('RmShow')
	Use Dbfrun\RmShow In 0 Share Noupdate Alias RmShow
	Go Top In RmShow
Endif 
If RmShow.FireForMat<>4
	Do Fox_Mess With 'ระบบไฟไม่รองรับ'
	Return 
Endif 
cComPortAT=Iif(Empty(RmShow.ComPortAct),'1',Alltrim(RmShow.ComPortAct))
txtFire='Run /n txt2com 1 com'+cComPortAT+' 2 '+Alltrim(Fld)
&txtFire
Return 




Procedure Open4Kip2 && RmShow.FireForMat=5 
Do Am_Alert In AmPhan.prg
OldmKey=mKeyRmCode
Do Txt4AmPhan In UtilHo3
txtFire='Run /n txt2com 1 com'+cComPortAT+' 6 '+Alltrim(mKeyRmCode)+Alltrim(RoomActive)
mKeyRmCode=OldmKey
&txtFire	
Return 




***** ให้แยกเป็นไฟล์ต่างหาก ป้องกัน Save ไฟล์ทับตอนปรับปรุงโปรแกรม
Procedure OPENMROOM  && สั่งเปิดไฟหลายห้อง
Select OpenClose2
Do Case 
Case RoomActive='1' .and. RoomCode.Rmno='B01'
	Appen Blank 
	Replace TxtAcT With ':M0108'+RoomActive
Case RoomActive='1' .and. RoomCode.Rmno='B02'
	Appen Blank 
	Replace TxtAcT With ':M0109'+RoomActive
Case RoomActive='1' .and. RoomCode.Rmno='B03'
	Appen Blank 
	Replace TxtAcT With ':M0110'+RoomActive
Case RoomActive='1' .and. RoomCode.Rmno='B04'
	Appen Blank 
	Replace TxtAcT With ':M0111'+RoomActive
Case RoomActive='1' .and. RoomCode.Rmno='B08'
	Appen Blank 
	Replace TxtAcT With ':M0115'+RoomActive
Case RoomActive='1' .and. RoomCode.Rmno='B09'
	Appen Blank 
	Replace TxtAcT With ':M0116'+RoomActive
Case RoomActive='1' .and. RoomCode.Rmno='B10'
	Appen Blank 
	Replace TxtAcT With ':M0201'+RoomActive
Case RoomActive='1' .and. RoomCode.Rmno='B11'
	Appen Blank 
	Replace TxtAcT With ':M0202'+RoomActive
	Appen Blank 
	Replace TxtAcT With ':M0203'+RoomActive
Case RoomActive='1' .and. RoomCode.Rmno='B12'
	Appen Blank 
	Replace TxtAcT With ':M0203'+RoomActive
	Select OpenClose3
	Appen Blank 
	Replace TxtAcT With ':M0204'+RoomActive
	Appen Blank 
	Replace TxtAcT With ':M0205'+RoomActive
Case RoomActive='1' .and. RoomCode.Rmno='B13'
	Appen Blank 
	Replace TxtAcT With ':M0205'+RoomActive
Case RoomActive='0' .and. RoomCode.Rmno='B12'
	Appen Blank 
	Replace TxtAcT With ':M0203'+RoomActive
Case RoomActive='0' .and. RoomCode.Rmno='B13'
	Appen Blank 
	Replace TxtAcT With ':M0205'+RoomActive
EndCase
Return 




Procedure Cr2Mach
If .F. 
	Create Dbf ('M:\Ho2Mach\Txt2Mach') (Txt2Mach C(7),Txt2Room C(5),TxtStatus C(4);
	,ComPuName C(20),CLSendDt D,CLSendTM C(5),ServActDT D,ServActTM C(5),StatusFlag C(1))
	Index On Dtos(ServActDT)+ServActTM Tag Tag1
	Index On StatusFlag Tag StatusFlag
Endif 
Return 



Procedure OpenList
If File('History\txt2com.html')
	TxtProg='Run /n UtilPok3 6 '+Sys(5)+Sys(2003)+'\History\txt2com.html' 
	&TxtProg
	Do Fox_Mess With 'ตรวจสอบได้จากหน้าเวบ'
Else
	cFoxMessColor="RGB(255,0,0)" && แดง
	Do Fox_Mess With 'ไม่พบไฟล์ History\txt2com.html'
Endif 
Return 


Procedure OpenListOld  
Close Data
cBAmpan='BakData\F_'+ChgM_T2T(Date(),8)
If !File(cBAmpan+'.Dbf')
	Do Fox_Mess With 'ไม่พบไฟล์ควบคุมไฟ'
	Return 
Endif 
** Index On F_RoomNo+F_Date+F_Time Tag Tag1
** Index On F_Date+F_Time Tag Tag2 
Use (cBAmpan) In 0 Share Noupdate Alias F_BackUP 
Select F_BackUP
Set Order To Tag2 Descend
Go Top In F_BackUP
On Key Label F6 Do OpenListF6 
On Key Label F7 Do OpenListF7 
On Key Label F8 Do OpenListF8 
Brow Window MaxWindows Noedit Nodelete Noappend Title 'กด Escape=ออก,F6=พิมพ์,F7=เรียงตามเวลา,F8=เรียงตามห้อง'
On Key Label F6 
On Key Label F7 
On Key Label F8 
Close Data
Return 


Procedure OpenListF6
If File('AmphanR1.Frx')
	txt='Repo Form AmphanR1 To Printer Prompt NoConsole For !Empty(F_Roomno)'
	&txt
	Go Top 
Else
	cFoxMessColor="RGB(255,0,0)" && แดง
	Do Fox_Time With 'ไม่พบไฟล์ AmphanR1.Frx',2
Endif 
Return 



Procedure OpenListF7
Set Order To Tag2 Descend
Go Top 
Do Fox_Time With 'เรียงตามเวลา',0.5
Go Top 
Return 



Procedure OpenListF8
Set Order To Tag1
Go Top 
Do Fox_Time With 'เรียงตามห้อง',0.5
Go Top 
Return 



Procedure CrcBAmpan
Create Dbf (cBAmpan) (F_RoomNo C(6),F_Date C(7),F_Time C(7),F_Status C(5),F_Card C(5),F_Prog C(3),F_ConTrol C(40))
Index On F_RoomNo+F_Date+F_Time Tag Tag1
Index On F_Date+F_Time Tag Tag2 
Append Blank 
Use 
Return 



Procedure Am_Alert
Private  m.alrtbtn,m.oldescape,cAmfText1,cAmfText2,cAmfText3,nAmTime,cAmOK,nSeleScr
m.alrtbtn=1
m.oldescape=ON('KEY','ESCAPE')
If RoomActive='0' && พื้นดำ อักษรแดง
	cfTxtColor=" COLOR RGB(255,0,0,0,0,0)"
Else && พื้นเหลือง อักษรน้ำเงิน
	cfTxtColor=" COLOR RGB(0,0,255,255,255,0)"
Endif 
If Type('fAmpAction')='N' .and. fAmpAction=222
	cAmfText1='แม่บ้าน '
Else
	cAmfText1='ห้อง '
Endif 
If Used('LinkCtrl') && ส่งจาก LinkCtrl
	cAmfText1=cAmfText1+' '+LinkCtrl.Rmno     
	cAmfText3=Iif(Type('fAmpAction')='N' .and. fAmpAction=222,Alltrim(LinkCtrl.KeyRmMaid),Alltrim(LinkCtrl.KeyRmCode))      
	cAmfText3=cAmfText3+' '+Alltrim(RoomActive)
	nAmTime=2
	cAmOK='NEXT'
Else
	cAmfText1=cAmfText1+' '+RoomCode.Rmno
	cAmfText3=mKeyRmCode+' '+RoomActive
	nAmTime=0.5
	cAmOK='EXIT'
Endif 
cAmOK=cAmOK+' IN '+Str(nAmTime,4,2)+' S.'
cAmfText2=Iif(RoomActive='0','ปิดไฟ','เปิดไฟ')
nAmTime=Iif(Type('nTimeall')='N',nTimeall,nAmTime)
On Key Label Escape *
nSeleScr=0 && เลือก รูปแบบต่างๆ
nScrForm	=1  && สำหรับควบคุมแต่ละ FORM
Do Form Am_Alert Name Am_Alert
Return 



Procedure AddF_Prog
If Type('F_Prog')='U'
	Return 
Endif 
Do Case 
Case Type('cfchoice')='N' .and. (cfchoice=12 .or. cfchoice=1012 .or. cfchoice=13 .or. cfchoice=1013)
	Replace F_Prog With Space(1)+'M'
Case Type('m.nfCancOk')='N' .and. Type('cfCodeSerc')='C' .and. m.nfCancOk=1 .and. cfCodeSerc='I' && ยกเลิก 
	Replace F_Prog With Space(1)+'C'
Case Used('Room')  .and. Room.Roomno=RoomCode.Rmno
	Do Case 
	Case Room.Status='I' && เข้าพัก 
		If Type('chRoom')='C' .and. chRoom='OUT' && เช็คเอาท์	
			Replace F_Prog With Space(1)+'O'
		Else
			Replace F_Prog With Space(1)+'I'
		Endif 
	Case Room.Status='C' .and. !Empty(Room.DoorOpFlag) && สั่งเปิดไฟ
		Replace F_Prog With Space(1)+'F'
	EndCase
Case Type('chRoom')='C' .and. !Empty(chRoom) 
	Do Case 
	Case chRoom='OUT' && เช็คเอาท์
		Replace F_Prog With Space(1)+'O'
	Case chroom='CLEAR' && ปิดไฟแม่บ้าน
		Replace F_Prog With Space(1)+'M'
	EndCase 
EndCase
Return 



Procedure fAmOpenCom
fAmOpenCom=.T.
If !CfRepExpDT
	fAmOpenCom=.F.
	Do Fox_Mess With 'โปรแกรมยังไม่ลงทะเบียน กรุณาติดต่อผู้จำหน่าย'	
Endif
Return 



*** Selemenu.Dbf ,'AFTSMPAY'  ,F4PayMOnth In AmPhan 
Procedure F4PayMOnth  && สั่งเปิด-ปิดไฟตอนรับเงินสิ้นเดือน 
Do Case 
Case m.nfRm2Dup=1  && พักต่อ 
	Do Open4RM With '1' In AmPhan
Case m.nfRm2Dup=2  && คืนห้อง 
	Do Open4RM With '0' In AmPhan
EndCase
Return 





Procedure SoundOnRMD && เสียงเตือนรายวัน
*** Dttm4Guest,Dttm4Late เวลาหมด ของ รายวัน 
If !File('Temp\tmRoom4Day.Dbf')
	Return 
Endif 
If  Room.Room4Flag='D' .and. Room.Night='N' .and. Room.Status='I' .and. ;
 Left(Time(),5)=>SysPara.Dttm4Guest .and. Left(Time(),5)<='16:00'
	Private sOldAlias
	sOldAlias=Alias()
	If !Used('tmRoom4Day')
		Use Temp\tmRoom4Day In 0 Share Noupdate Alias tmRoom4Day Order Tag1 
	Endif 
	m.Rm4Flag4S='D'
	If !Seek(m.Rm4Flag4S+Dtos(SysPara.SysDate)+'1','tmRoom4Day')
		Use In tmRoom4Day
		Use Temp\tmRoom4Day In 0 Share Alias tmRoom4Day Order Tag1 
		Private m.DateAct,m.SoundFlag
		m.DateAct=SysPara.SysDate
		m.SoundFlag='1'
		Insert Into tmRoom4Day From Memvar 
		Use In tmRoom4Day
		cFoxMessColor="RGB(255,255,0)" && สำหรับ Fox_Time
		*** เสียง
		txt='Do OpenHSound In UtilHo3.Prg'
		&txt
		Do Fox_Time With 'หมดเวลา-รายวัน '+SysPara.Dttm4Guest+' น.',60
	Endif 
	If !Empty(sOldAlias) .and. !Used(sOldAlias)
		Select &sOldAlias
	Endif 
Endif 
Return 


Procedure EditTXTini
If  File('txt2com.ini') .and. InputPass('1342')
	txt='Run /n Notepad txt2com.ini'
	&txt
Endif
Return 



Procedure AmPhan4SetUP
if !Empty(Rat('sample',Lower(Sys(5)+Sys(2003))))
	lMySample=.T.
Else 
	lMySample=.F.
Endif 

Close Data
Use SysPara
Go Top 
Replace SysDate with Date(),Name With '.',Name2 With '.'

Use SeleMenu Exclu 
Replace All ForUse With 1 For !Empty(newProg)
Delete All For Empty(newProg)
Pack 

Use Sele_Prn Exclu 
If lMySample=.T.
	Delete All For Prinname<>'Print to PDF Annotator'
	Pack 
Else 
	Zap 
Endif 

Use Dbfrun\RmShow
Go Top 
Replace FireForMat With 4

Use Dbfrun\Repoway 
Go Top 
Scatter Memvar Blank 
Gather Memvar 

Use Dbfrun\Ho2Mach
Go Top 
Replace Ho2macflag With 1

Use Ho_Util 
Go Top 
Replace spec_mach With 1
Close Data


Delete File repoPok.txt
Delete File Environment.txt
Delete File repoway.txt
Delete File company.txt
txt='Run /n Del_Temp.Bat'

Return 



