Для подключения расширений объекта
CashMaticTerminal компонент расширения должен поддерживать интерфейс ICashMaticTerminalExtender.
(Дополнительные возможности даёт поддержка интерфейса ICashMaticTerminalExtender2.)
В синтаксисе C++ интерфейс
ICashMaticTerminalExtender определяется так:
class ICashMaticTerminalExtender : public IDispatch
{
public:
virtual void CALLBACK
OnGuiStartup(ICashMaticTerminal* pTerminal) = 0;
virtual void CALLBACK
OnGuiExit(ICashMaticTerminal* pTerminal) = 0;
virtual void CALLBACK OnEvent(
ICashMaticTerminal* pTerminal,
BSTR EventName
) = 0;
virtual void CALLBACK OnFailure(
ICashMaticTerminal* pTerminal,
BSTR FailName,
BOOL FailState
) = 0;
virtual void CALLBACK
PreCashCollect(ICashMaticTerminal* pTerminal) = 0;
virtual void CALLBACK
PostCashCollect(ICashMaticTerminal* pTerminal) = 0;
virtual void CALLBACK
PreZReport(ICashMaticTerminal* pTerminal) = 0;
virtual void CALLBACK
PostZReport(ICashMaticTerminal* pTerminal) = 0;
};
// {00735A83-6101-49ae-B2E5-77BA59B3D6A9}
static const IID IID_ICashMaticTerminalExtender = { 0x735a83, 0x6101,
0x49ae, { 0xb2, 0xe5, 0x77, 0xba, 0x59, 0xb3, 0xd6, 0xa9 } };
Метод
ICashMaticTerminalExtender::OnGuiStartup(ICashMaticTerminal* pTerminal) вызывается при запуске
NDemia CashMatic KioskBrowser. Вызов этого метода свидетельствует о нормальной установке и инициализации компонента расширения.
Метод
ICashMaticTerminalExtender::OnGuiExit(ICashMaticTerminal* pTerminal) вызывается при завершении работы
NDemia CashMatic KioskBrowser. Гарантируется, что это последний вызов компонента расширения перед завершением работы (точнее: гарантируется, что после завершения
OnGuiExit всех установленных компонентов расширения работа приложения будет завершена без каких-либо дополнительных вызовов прикладного кода).
Метод
ICashMaticTerminalExtender::OnEvent(ICashMaticTerminal* pTerminal, BSTR EventName) вызывается в результате вызова метода
Event объекта
CashMaticTerminal, что доступно скриптам HTML-документа, например:
CashMatic.Terminal.Event("MyEventName");
(таким образом можно связать скрипт с компонентом расширения, который существует в контексте хост-приложения, и, соответственно, вне HTML-документа)
Метод
ICashMaticTerminalExtender::OnFailure(ICashMaticTerminal* pTerminal, BSTR FailName, BOOL FailState) вызывается в результате возникновения (
FailState - истина) или устранения (
FailState - ложь) именованного отказа
FailName (см.
Модель обработки отказов). Обработка отказа или восстановления в данной точке не должна зависеть от режима серьёзности отказа и от режима отложенного отказа.
Метод
ICashMaticTerminalExtender::PreCashCollect(ICashMaticTerminal* pTerminal) вызывается при снятии (удалении) стекера (кассы) купюроприёмника. Здесь компонент расширения может сделать переход на страницу инкассации (через
CashMatic.Terminal.Navigate), которая должна быть зарегистрирована как специальный URL с именем
collect (см.
Специальные URL). Любые другие адреса переходов навигации блокируются до восстановления купюроприёмника.
Метод
ICashMaticTerminalExtender::PostCashCollect(ICashMaticTerminal* pTerminal) вызывается при восстановлении стекера (кассы) купюроприёмника после снятия. Здесь компонент расширения может сделать переход на любой URL-адрес (через
CashMatic.Terminal.Navigate)
Метод
ICashMaticTerminalExtender::PreZReport(ICashMaticTerminal* pTerminal) вызывается перед печатью отчёта с гашением на фискальном регистраторе. Кассовая смена ещё не закрыта.
Метод
ICashMaticTerminalExtender::PostZReport(ICashMaticTerminal* pTerminal) вызывается после печати отчёта с гашением на фискальном регистраторе. Кассовая смена уже закрыта.