ПРРО

n/n Послідовність встановлення для локальної конфігурації
1 На робочому місці (компьютері) провести підготовку для роботи з ключами:
-Скопіювати servertest\d\Vovan\RRO\*.* → ..\SF\RRO\*.* ;
-Зайти в TotalCommander з правами адміністратора;
-Скопіювати servertest\d\Vovan\DIBD\EUInstall.exe та servertest\d\Vovan\DIBD\windowsdesktop-runtime-6.0.20-win-x86.exe на локальний компютер;
-Запустити EUInstall.exe (без []Крістал-1, остальні параметри по замовчанню);
-Запустити windowsdesktop-runtime-6.0.20-win-x86.exe;
-Запустити ..\SF\RRO\Reg.bat;
2 В приложенії “Центр сертифікації ключів” ІІТ Користувач ЦСК (EU.exe - на робочому столі після запуску EUInstall.exe ) підтягуемо сертифікати для ключів користувачів ПРРО (дивись RRO\paramEU.txt).
3 В довіднику ПРРО - регіструємо ПРРО шляхом підтягування ключа в полі Фіскальний номер.
4 Впевнетисть в наявності в базовій конфігурації (наразі налаштовано в LIGHT08 та LIGHT21; за відсутності імпортувати з конфігурації LIGHT08) :
- модуля _PRRO - ПРРО ;
- меню _PRRO - ПРРО ;
- довідників _PRRO - ПРРО та _PRROTax - ПРРО Податки ;
- документу _PRROChk - ПРРО Чек ;
- константи _PRRO - Торг: Фіскальний № ПРРО (посилання на довідник ПРРО) та _TorgPrnCheck - Торг: Найменування принтера чеків (як в Win);
- коду в процедурі Application.OnAfterStart() :
*---Підтримка ПРРО
If !Empty(Const._PRRO.Value)
	Local lcMenuPrroGUI
	lcMenuPrroGUI = Sys.MD.GetGuiByFPName('_PRRO', 'M', 'MENUPAD')
	If GetGrant(lcMenuPrroGUI,'Z')
		BProc.Mod._PRRO.InitRRO(InOut(Const._PRRO.Value,'_FN'))
		If Vartype(Sys.aPRRO[1,3])='O'
			MW.DoMenu(lcMenuPrroGUI)
		EndIf		
	EndIf	
EndIf
5 В документі (в нашому прикладі Realiz), який потребує фіскалізації повинно бути поле FCheck N(1) додаємо метод MenuFiscalize() :
If MessageBox('Фіскалізувати накладну?',32+4,'Фіскальний чек')#6
	Return 
EndIf 
Local loDoc
loDoc	= CreateObject('tDoc','Realiz')
loDoc.Scatter(The.MD.HF.ID)
loDoc.GetTP()
LProc.Doc.Realiz.Fiscalize(loDoc)
Doc.Open.Realiz.Post(The.MD.HF.ID,1)

та підключаємо створений метод до меню UsePopup як п/м “Фіскальний чек” - за допомогою якого буде проводитись фіскалізація та друк чеку.

SkipWhen => VarType(Sys.aPRRO[1,3])#'O' Or Sys.aPRRO[1,3].ShiftDaySost#1 Or The.MD.HF.FCheck=1 Or Sys.aPRRO[1,3].ShiftDay#The.MD.HF.Date
6 В документі, який потребує фіскалізації (в нашому прикладі Realiz) додаємо метод Fiscalize з оріентовним кодом :
Lparameters toDoc
Local llErr, loPRRO, loTmc
llErr	= .F.
loPRRO= Sys.aPRRO[1,3]
If !BProc.Mod._PRRO.OpenCheck(loPRRO,toDoc.Header.ID.Value)
	llErr	= .T.
EndIf 
If llErr
	MessageBox('Помилка фіскалізації!',32,'Фіскальний чек')
	Return 
EndIf 
Select D.Tmc, T.Kod As Kod, T.Descr As Descr, D.Kol, D.Cena, D.Suma, D.SumaZ From (toDoc.CrsTP) D, _Tmc T Where T.ID=D.Tmc Into Cursor crsTP
Scan
	lnStavka	= 1
	BProc.Mod._PRRO.RegSale(loPRRO,Tmc,Kod, Descr, lnStavka,Cena,Kol,Suma,,SumaZ,)
EndScan 
If !llErr
	If Empty(BProc.Mod._PRRO.CloseCheck(loPRRO,Iif(toDoc.Header.TypeOpl.Value=1,1,0)))
		llErr	= .T.
	EndIf
EndIf
If Seek(toDoc.Header.ID.Value,'_TRelate','IDP') And Seek(_TRelate._IDC,'_PRROChk','ID') 
	WriteAttrSpr(toDoc.Header.ID.Value,'FCheck',1)
	If MessageBox('Друкувати фіскальний чек?',32+4)=6
		BProc.Doc._PRROChk.Print(_PRROChk.ID)
	EndIf 
EndIf
CloseIn('CrsTP')