//--------------------------------------------------------------------------- #ifndef PrinterOPOSH #define PrinterOPOSH //--------------------------------------------------------------------------- #include "OposFiscalPrinter_1_7_Lib_OCX.h" //--------------------------------------------------------------------------- const LONG FPTR_RT_CASH_IN = 1; const LONG FPTR_RT_CASH_OUT = 2; const LONG FPTR_RT_GENERIC = 3; const LONG FPTR_RT_SALES = 4; const LONG FPTR_RT_SERVICE = 5; const LONG FPTR_RT_SIMPLE_INVOICE = 6; //--------------------------------------------------------------------------- //Продаваемый товар class Goods { private: public: WideString name; //Название товара double price; //Цена за еденицу long count; //Количество long VatInfo; //Номер налоговой ставки из справочника Goods(WideString name,double price, long count,long VatInfo){this->name=name; this->price=price; this->count=count; this->VatInfo=VatInfo; }; }; //--------------------------------------------------------------------------- //Обвёртка для OPOS фискального принтера class PrinterOPOS { private: bool Crashed; TOPOSFiscalPrinter *fp; long FState; TList* FListGoods; public: AnsiString HeadLine; //Первая строка в чеке "Оплата за услуги водоснабжения" long CheckId; //Сколько распечатали чеков на данном терминале bool TestMode; bool setTrainingMode(bool val); bool getTrainingMode(); PrinterOPOS(TComponent* AOwner); virtual ~PrinterOPOS(); void LoadSetup(); void SaveSetup(); bool Start(); //Соедениться по COM порту и проинициализировать принтер bool PrintCheck(bool sales, int check); //Печать чека bool SaveCheck(int CheckId); //Сохранение чека для последующей распечатки bool deleteCheck(int CheckId); //Удаление чека из базы int getNextCheckId(); bool PrintLine(WideString line); void addGoods(Goods* goods); void ClearGoods(); int getGoodsPrice(); void Cut(); //Отрезать бумагу int GetState(); //0 - Нет ошибок готов к печати чека bool isOk(); //Проверка работоспособности принтера AnsiString GetStatusDescription(long StatusCode); //Описание статуса AnsiString getLastError(long* err); //Получить код последней ошибки AnsiString getLastError(); //Получить код последней ошибки TDateTime getDateOpenShift(); //Получить дату открытия смены void setHeader(TStrings* Text); void getHeader(TStrings* Text); void setTrailer(TStrings* Text); void getTrailer(TStrings* Text); int getCOMPort(); void setCOMPort(int n); int getBaudRate(); void setBaudRate(int val); int getDaySum();//Сумма в касса с прошлого Z отчёта bool PrintZReport(); //Печать отчёта и закрытие смены void PrintXReport(); //Печать суточного отчёта без закрытия смены bool OpenShift(); //Открытие смены bool DayOpened(); //Отрыта ли смена bool setNalog(long n,float stavka); //Заполнение массива с суммами по налоговым ставкам void PrintCheck(TStringList* Text){}; //Print lines and cut void Push(){}; //В OPOS драйвере нет такой функции }; //--------------------------------------------------------------------------- extern PrinterOPOS* printerOPOS; //--------------------------------------------------------------------------- #endif