//---------------------------------------------------------------------------
#ifndef CPrinterH
#define CPrinterH
//---------------------------------------------------------------------------
#include <string>
//---------------------------------------------------------------------------
//Контрольно кассавая машина ККМ
//Абстрактный класс
//---------------------------------------------------------------------------
struct MyError
{
	int ErrorCode;
	std::string ErrorMessage;
};
//---------------------------------------------------------------------------
class CPrinter
{
	private:
	protected:
	public:
		unsigned char m_Dots; //Количество десятичных знаков после зяпятой
		//std::string m_DevNumber; ///<Идентификатор оборудования
		int m_LastErrorCode; ///<Код ошибки 0 без ошибок
		std::string m_LastErrorDescription; ///<Описание последней ошибки

		CPrinter();
		virtual ~CPrinter();

		double M(); ///<Получить множитель для перевода в целые. если 0 точек после запятой то вернёт 1 иначе кол-во * 10

		virtual bool isOk() = 0; ///<Готов ли к работе принтер (должна быстро выполнятся)
		virtual bool OpenSerial(std::string ComNumber, int BaudRate) = 0; ///<Соедениться по COM порту
		virtual MyError PrinterInit() = 0; ///<Инициализация принтера.
		virtual bool CashInOut(bool test, double sum) = 0; ///<Внесение +, выемка - (test - проверка можно ли выплонить данную функцию)
		virtual bool GetCashSum(double& sum) = 0;  ///<Получить сумму наличности в кассе.
		//virtual int Beep(int Hz,int mSec) = 0; ///<Звуковой сигнал
		virtual MyError PrintZReport() = 0; ///<Печатать дневной отчёт с гашением
		virtual MyError PrintXReport() = 0; ///<Печатать дневной отчёт без гашения
		virtual MyError PrintLine(std::wstring line) = 0; ///<Печатает строку текста (на служебном и на фискальном)
		virtual int GetLineLength() = 0; //Получить ширину строки чека в символах.
		virtual MyError PrintDiagnostic() = 0; //Печать диагностической информации

		//virtual void OnExit( wxCommandEvent& event ){ event.Skip(); }
};
//---------------------------------------------------------------------------
#endif
