

** HO,PRNVIEWSET,,Up2PrnShow In _UtilHO,เข้ารายงานที่มีการพิมพ์,1,0
Procedure Up2PrnShow
If Type('m.PrnShow')='N'
	Show Get m.PrnShow,1 Prompt '.                   .'
	Show Get m.PrnShow,1 Disable
	If Between(m.PrnShow,0,1)
		m.PrnShow=2
	Endif 
	If Type('m.nCPrnShow')='N'
		m.nCPrnShow=1
		Show Get m.nCPrnShow Enable 
	Endif 
	Show Gets
Endif 
Return 



** HO,PRNPREVIEW,,St2PrnShow In _UtilHO,เลือกพิมพ์ ทางหน้าจอ,1,0
Procedure ST2PrnShow
If m.PrnShow=1 
	cfDevice = ' To Printer Prompt NoConsole '
	ffSeleCho=.T.
Endif 
Return 


** HO,USERCHGDOC,,pUserChgDc In _UtilHO,เปลี่ยนเลขที่หลังจากปิดสิ้นวัน,1,0
Procedure pUserChgDc
cTemp=Padl(Alltrim(Transform(Day(SysPara.SysDate),'99')),2,'0')
cTemp2=Padl(Alltrim(Transform(Month(SysPara.SysDate),'99')),2,'0')
cTemp3=Transform(Year(SysPara.SysDate),'9999')  && +543
** m.prebill,m.billno บิลเงินสด
** m.PreDr,m.Drno ใบลดหนี้ 
** m.Pretax,m.tax_no ใบกำกับภาษี
** m.Pretax2,m.tax_no2 ใบกำกับภาษี-2
Return 




** HO,PRNTAXRCI,,pPRNTAXRCI In _UtilHO,พิมพ์ทั้ง ใบกำกับและใบเสร็จ,1,0
Procedure pPRNTAXRCI && พิมพ์ทั้ง ใบกำกับและใบเสร็จ
If HoTrantype='PAY' .and. m.nfPrint=1 .and. !Empty(RoomHead.RmCnVat) .and. !Empty(RoomHead.RmChVat)
	ffSeleCho=.T.
Endif 
Return 



**** กรณีที่ เช็คเอาท์ไปแล้ว ให้ ห้องว่างเลย 
** HO,OUT2MAID,OUT2MAID In _UtilHO,คืนห้องแล้วเป็น MAID,1,0          
Procedure OUT2MAID
Select Room 
If Room.Status='C' .and. !Empty(Room.FolioDocno)
	Delete 
Endif 
Return 



*** คำนวนมูลค่ากลุ่มใน RoomHead
** HO,CALSUMGHD0,,CALSUMGHD0 In _UtilHO,คำนวนมูลค่ากลุ่มใน RoomHead,1,0
Procedure CalSumGHD0
** m.G_Amt0,m.G_Amt1,m.G_Amt2,m.G_Amt3,m.G_Amt4,m.G_AmtOther
Do Case
Case !Empty(HoCode)
	m.G_Amt0=m.G_Amt0+RoomTran.RmTNet
Case .F.
Otherwise 
	m.G_AmtOther=m.G_AmtOther+RoomTran.RmTNet
EndCase 
Return 



*** คำนวนมูลค่ากลุ่มใน RoomHead
** HO,CALSUMGHD1,,CALSUMGHD1 In _UtilHO,คำนวนมูลค่ากลุ่มใน RoomHead,1,0
Procedure CalSumGHD1
Private OldAlias
OldAlias = Alias()
If !Used('RoomTran')
	Return 
Endif 
If Order('RoomTran')<>'RMCODE'
	Return 
Endif 
If Seek(RoomHEAD.RmCode,'RoomTran')
	Select RoomHEAD
	Scatter Memvar Field G_Amt0,G_Amt1,G_Amt2,G_Amt3,G_Amt4,G_AmtOther Blank 
	Select RoomTran	
	Scan While RoomTran.RmCode=RoomHEAD.RmCode For !Empty(RoomTran.RmTNet)
		Do CalSumGHD0
	EndScan 
	Select RoomHEAD
	Gather Memvar Field G_Amt0,G_Amt1,G_Amt2,G_Amt3,G_Amt4,G_AmtOther 
Endif 
If !Empty(OldAlias) .And.  Used(OldAlias)
	Select &OldAlias
Endif 
Return 




** HO,NEXTHOPASS,,NEXTHOPASS In _UtilHO,หลังจาก Login รหัสผู้ใช้,1,0
Procedure NEXTHOPASS
**** ตั้งเครื่องพิมพ์
If Type('PrnToBILL')='U' &&  Print.txt
	Public PrnToBILL,PrnToDEFA,PrnToAct
	PrnToAct='???'
Endif 
PrnToBILL='Print to PDF Annotator'
PrnToDEFA='Do PDF'
If File('Sele_Prn.Dbf')
	If Used('Sele_Prn')	
		Set Order To PrinName In Sele_Prn
	Else
		Use Sele_Prn In 0 Share Alias Sele_Prn Order PrinName
	Endif 
	Select Sele_Prn
	Go Top 
	If !Empty(PrnToBILL) .and. !Seek(PrnToBILL,'Sele_Prn') 
		Do Fox_Show With 0,'ไม่พบ เครื่องพิมพ์ '+PrnToBILL,'แจ้งผู้ดูแลระบบด้วย';
		,'แก้ไขใน _UtilHo.Prg',''
		PrnToBILL=Space(0)
	Endif 
	Go Top 
	If !Empty(PrnToDEFA) .and. !Seek(PrnToDEFA,'Sele_Prn') 
		Do Fox_Show With 0,'ไม่พบ เครื่องพิมพ์ '+PrnToDEFA,'แจ้งผู้ดูแลระบบด้วย';
		,'แก้ไขใน _UtilHo.Prg',''
		PrnToDEFA=Space(0)
	Endif 
Endif 
Do Case
Case npLogHoRun=1
	Do Prn2Sele With 1
OtherWise 
	Do Prn2Sele With 2
EndCase
Return 



Procedure Prn2Sele
Parameter nPrn2Sele
Do Case 
Case nPrn2Sele=1 && หน้าร้าน 
	If !Empty(PrnToBILL) .and. PrnToBILL<>PrnToAct
		PrnToAct=PrnToBILL
		cfRunPrin='Run /n Prn4Defa '+PrnToBILL
		&cfRunPrin
		Do Fox_Time2 With 'เปลี่ยนพิมพ์ทาง -> '+PrnToBILL,1,2,1
	Endif 
Case nPrn2Sele=2 && หลังร้าน 
	If !Empty(PrnToDEFA).and. PrnToDEFA<>PrnToAct
		PrnToAct=PrnToDEFA
		cfRunPrin='Run /n Prn4Defa '+PrnToDEFA
		&cfRunPrin
		Do Fox_Time2 With 'เปลี่ยนพิมพ์ทาง -> '+PrnToDEFA,1,2,1
	Endif 
EndCase 
PrnToAct=Iif(Empty(PrnToAct),'???',PrnToAct)    
Return 


*** เปลี่ยนทางสำหรับรายเดือนและโรงแรม
*** เครื่อง FRONT Do Prn2Sele With 1
*WHOPRNDUP           ,พิมพ์ใบเสร็จซ้ำ               
*PRNPAYRM            ,เปลี่ยนก่อน พิมพ์ใบเสร็จ      
*BEFPRODNEW          ,ก่อนสั่ง ค่าบริการ            
*RPAYVAR             ,ก่อนพิมพ์ใบแจ้งหนี้           
*** เครื่อง BAC Do Prn2Sele With 2
*DHOPRNDUP           ,หลัง-พิมพ์ใบเสร็จซ้ำ          
*WHOEOD              ,รายงาน ก่อนปิดกะ              
*ENDPRODNEW          ,หลังสั่ง ค่าบริการ            
*WRMPAY              ,รายงาน ใบแจ้งหนี้             
*** เปลี่ยนทางสำหรับรายเดือน 



*** เปลี่ยนทางสำหรับ ทัชสกรีน
*** เครื่อง FRONT Do Prn2Sele With 1
**BOTTRUN262,รายงานหลังปิดกะทัชสกรีน
*** เครื่อง BAC Do Prn2Sele With 2
** BOTTRUN261,รายงานก่อนปิดกะทัชสกรีน
*** เปลี่ยนทางสำหรับ ทัชสกรีน


Procedure CRepoBDPOS2ALL  && ปรับโครงสร้าง Report ทั้งหมด
SET SYSMENU ON 
SET SYSMENU TO Defa
Do CRepoBDPOS2VFP With Space(0)
Do CRepoBDPOS2VFP With 'Paper_HO\P_8X5\' 
Do CRepoBDPOS2VFP With 'Paper_HO\P_8X5X2\'
Do CRepoBDPOS2VFP With 'Paper_HO\P_8X11\HalfBill\'
Do CRepoBDPOS2VFP With 'Paper_HO\P_TM220\'
Do CRepoBDPOS2VFP With 'Paper_HO\Tax2\'
Return 




Procedure CRepoBDPOS2VFP && ปรับโครงสร้าง Report 
Parameter SourceDRV
Clear
SourceDRV=Alltrim(SourceDRV)
Close Data
Local Array MyFiles[1,5]
nFilesFound = ADIR(MyFiles, SourceDRV+"*.Frx" )
For i = 1 to nFilesFound
	FleSource='MODIFY REPORT '+SourceDRV+Substr(Alltrim(MyFiles[ i,1]),1,Len(Alltrim(MyFiles[ i,1]))-4) && +Alltrim(MyFiles[ i,1])
	Wait FleSource TIMEOUT 0.2 
	&FleSource
	** INSERT INTO Temp FROM memvar 
EndFor 
Close Data
Return 



*** Copy ข้อมูลจากเวอร์ชั่นเดิมมาที่เวอร์ชั่นใหม่ 
Procedure CopyBDPOS2ALL
Set Path To 
Set SysMenu On 
Set Sysmenu To Defa 
Set Safety Off
On Error 
Do CopyBDPOS2VFP With 'D:\BdPos','D:\BdPosVFP'
Do CopyBDPOS2VFP With 'D:\BdPos\Dbfrun','D:\BdPosVFP\Dbfrun'
Do CopyBDPOS2VFP With 'D:\BdPos\Data2Sc','D:\BdPosVFP\Data2Sc'
Do CopyBDPOS2VFP With 'D:\BdPos\Data','D:\BdPosVFP\Data'
Do CopyBDPOS2VFP With 'D:\BdPos\Transac','D:\BdPosVFP\Transac'
Return 



Procedure CopyBDPOS2VFP
Parameter SourceDRV,TranGetDRV
SourceDRV=Alltrim(SourceDRV)
TranGetDRV=Alltrim(TranGetDRV)
If !Directory(SourceDRV)
	MessageBox("ไม่พบโพลเดอร์ "+SourceDRV+Chr(13)+"กรุณาตรวจสอบ", 16, "เตือน")
	Return 
Endif 
If !Directory(TranGetDRV)
	MessageBox("ไม่พบโพลเดอร์ "+TranGetDRV+Chr(13)+"กรุณาตรวจสอบ", 16, "เตือน")
	Return 
Endif 
If SourceDRV=TranGetDRV
	MessageBox("โพลเดอร์ต้องไม่ซ้ำกัน", 16, "เตือน")
	Return 
Endif 
BackupDrv=TranGetDRV+'\'+Dtos(Date())+'_'+Substr(Time(),1,2)+Substr(Time(),4,2)+Substr(Time(),7,2)
If !Directory(BackupDrv)
	Do CreateFolder  With BackupDrv In \Pos\Security\Prog\UtilAll2
Endif 
Local Array MyFiles[1,5]
nFilesFound = ADIR(MyFiles, SourceDRV+"\*.dbf" )
Clear 

On Error Do CopyAllError With Error(),Alltrim(message()),FleSource
For i = 1 to nFilesFound
	 ?  "Name Of File: ", Alltrim(MyFiles[ i,1])
	 ?? " ,Size: ", Alltrim(Str(MyFiles[ i,2]))
	 ?? " ,Date: ", Alltrim(Dtoc(MyFiles[ i,3]))
	 ?? " ,Time: ", Alltrim(MyFiles[ i,4])
	 ?? " ,Attributes: ", Alltrim(MyFiles[ i,5])	
	FleSource=SourceDRV+'\'+Alltrim(MyFiles[ i,1])
	FleTarget=TranGetDRV+'\'+Alltrim(MyFiles[ i,1])
	Flebackup=BackupDrv+'\'+Alltrim(MyFiles[ i,1])	
	*** ตรวจสอบว่าเจอข้อมูล
	Close Data
	If File(FleTarget)
		Use (FleTarget) In 0 Share Noupdate Alias FleTarget
		Select FleTarget
		Copy To  (Flebackup)  With Cdx
	Endif 
	Close Data
	nChkError=0
	Use (FleSource) In 0 Share Noupdate Alias FleSource
	If nChkError=0	
		Select FleSource
		Copy To  (FleTarget)  With Cdx
	Endif 
	Close Data
	Wait "   " TimeOut 0.2
Endfor
On Error
MessageBox("Copy ข้อมูลสำเร็จ"+Chr(13)+"ข้อมูลเดิม สำรองไว้ที่ "+BackupDrv;
+Chr(13)+"ข้อมูลเดิม อยู่ที่ "+TranGetDRV, 16, "เตือน")
Clear 
Return 


Procedure CopyAllError 
Parameter nError,cError,cDbf
Wait Window Str(nError)+' = '+Alltrim(cError)+Chr(13)+Alltrim(cDbf) TimeOut 1
nChkError=1
Return 


**** Procedure เฉพาะใน Form 
**** Lower(Alltrim(This.Name)+'_add.prg'
Procedure Acti_Add  && ThisForm.Activate
Parameter MyForm
****
Return 
Procedure GotF_Add && ThisForm.GotFocus
Parameter MyForm
****
Return 
Procedure Init_Add  && ThisForm.Init
Parameter MyForm
****
Return 
Procedure RefR_Add && ThisForm.Refresh 
Parameter MyForm
****
Return 




