первый
This commit is contained in:
253
devices/Printers/Mebius/PrinterOPOS.h
Normal file
253
devices/Printers/Mebius/PrinterOPOS.h
Normal file
@ -0,0 +1,253 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#ifndef PrinterOPOSH
|
||||
#define PrinterOPOSH
|
||||
//---------------------------------------------------------------------------
|
||||
//#include <vcl.h>
|
||||
//#include "OposFiscalPrinter_1_7_Lib_OCX.h"
|
||||
#import "file:O:\MyDocuments\projects\Workspace_C++Builder\PayTerminal_XE\dist\OPOSFiscalPrinter.ocx"
|
||||
#include "../FP300KZ/FP300KZ.h"
|
||||
#include "structs.h"
|
||||
#include <list>
|
||||
//---------------------------------------------------------------------------
|
||||
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;
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Goods
|
||||
{
|
||||
private:
|
||||
public:
|
||||
std::wstring name1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::wstring name2; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
double price; //<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
long count; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
long VatInfo; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Goods(std::wstring name1, std::wstring name2, double price, long count,long VatInfo)
|
||||
{ //if(name1==NULL)
|
||||
// this->name1=L"";
|
||||
//else
|
||||
this->name1=name1;
|
||||
//if(name2==NULL)
|
||||
// this->name2=L"";
|
||||
//else
|
||||
this->name2=name2;
|
||||
this->price=price;
|
||||
this->count=count;
|
||||
this->VatInfo=VatInfo;
|
||||
};
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
class FiscalPrinter
|
||||
{
|
||||
protected:
|
||||
bool Crashed;
|
||||
long FState;
|
||||
TSimpleList<Goods*>* FListGoods;
|
||||
long CheckId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
public:
|
||||
std::wstring HeadLine; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
std::wstring GoodsName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::wstring CasireName; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool TestMode;
|
||||
bool AutoOpenShift; //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::string m_LogFilePath;
|
||||
|
||||
FiscalPrinter(){ FListGoods= new TSimpleList<Goods*>(); CheckId=0; LoadSetup(); };
|
||||
virtual std::string getPrinterName()=0;
|
||||
virtual bool Start()=0;
|
||||
virtual bool isOk()=0;
|
||||
virtual long getCheckId(){ return CheckId; }; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void ClearGoods()
|
||||
{
|
||||
try
|
||||
{
|
||||
while(FListGoods->count()>0)
|
||||
{
|
||||
Goods* g=FListGoods->get(0);
|
||||
delete g;
|
||||
FListGoods->del((unsigned int)0);
|
||||
}
|
||||
FListGoods->clear();
|
||||
}catch(...)
|
||||
{
|
||||
Crashed=true;
|
||||
}
|
||||
};
|
||||
int getGoodsPrice();
|
||||
virtual bool PrintLine(std::wstring line)=0;
|
||||
void addGoods(Goods* goods)
|
||||
{
|
||||
FListGoods->add(goods);
|
||||
};
|
||||
virtual bool getNextCheckId(int &id);
|
||||
|
||||
bool SaveCheck(int CheckId);
|
||||
virtual bool PrintCheck(bool sales, int check, std::wstring headLine ) { return false; };
|
||||
bool deleteCheck(int CheckId);
|
||||
virtual std::wstring getLastError(){ return L""; };
|
||||
virtual bool DayOpened(){ return false; };
|
||||
virtual void setHeader(TSimpleList2<std::wstring>* Text){};
|
||||
virtual void getHeader(TSimpleList2<std::wstring>* Text){};
|
||||
virtual void setTrailer(TSimpleList2<std::wstring>* Text){};
|
||||
virtual void getTrailer(TSimpleList2<std::wstring>* Text){};
|
||||
virtual bool OpenShift(){ return true; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
int getCOMPort();
|
||||
int getBaudRate();
|
||||
virtual bool setBaudRate(std::wstring data) = 0;
|
||||
virtual bool setCOMPort(std::wstring data) = 0;
|
||||
virtual bool PrintZReport()=0;
|
||||
virtual void PrintXReport()=0;
|
||||
|
||||
void LoadSetup();
|
||||
void SaveSetup();
|
||||
virtual bool setTrainingMode(bool val){ return false; };
|
||||
virtual bool Cut(){ return false; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
virtual bool setNalog(long n,float stavka){ return false; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
virtual int getAllSum(){ return 0; };
|
||||
virtual int PrintDiagnostic() = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
virtual int FeedPaper(int cnt) = 0;
|
||||
virtual int Beep() = 0;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> OPOS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
class PrinterOPOS : public FiscalPrinter
|
||||
{
|
||||
private:
|
||||
//TOPOSFiscalPrinter *fp;
|
||||
OposFiscalPrinter_1_7_Lib::IOPOSFiscalPrinterPtr fp;
|
||||
public:
|
||||
std::string m_LogFilePath; ///<<3C><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
std::wstring m_LogFileWPath; ///<<3C><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool setTrainingMode(bool val);
|
||||
bool getTrainingMode();
|
||||
|
||||
PrinterOPOS();
|
||||
virtual ~PrinterOPOS();
|
||||
std::string getPrinterName(){ return "Moebius";};
|
||||
bool Start(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> COM <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrintCheck(bool sales, int check, std::wstring headLine ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool SaveCheck(int CheckId); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool deleteCheck(int CheckId); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool Cut(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//int GetState(); //0 - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
bool isOk(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::wstring GetStatusDescription(long StatusCode); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::wstring getLastError(long* err); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::wstring getLastError(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::wstring getDateOpenShift(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void setHeader(TSimpleList2<std::wstring>* Text);
|
||||
void getHeader(TSimpleList2<std::wstring>* Text);
|
||||
void setTrailer(TSimpleList2<std::wstring>* Text);
|
||||
void getTrailer(TSimpleList2<std::wstring>* Text);
|
||||
int getCOMPort();
|
||||
bool setCOMPort(std::wstring data);
|
||||
int getDaySum(); //<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int getAllSum(); //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
bool PrintLine(std::wstring line);
|
||||
bool PrintZReport(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
void PrintXReport(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool OpenShift(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool DayOpened(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
bool setNalog(long n,float stavka); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void Push(){}; //<2F> OPOS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int PrintDiagnostic() { return 0; };
|
||||
int FeedPaper(int cnt)
|
||||
{
|
||||
return 0;
|
||||
};
|
||||
int Beep()
|
||||
{
|
||||
return 0;
|
||||
};
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
class FiscalPrinterPort : public FiscalPrinter
|
||||
{
|
||||
private:
|
||||
FP300KZ* fp;
|
||||
public:
|
||||
FiscalPrinterPort():FiscalPrinter()
|
||||
{ fp = new FP300KZ();
|
||||
};
|
||||
virtual ~FiscalPrinterPort(){ delete fp; };
|
||||
std::string getPrinterName(){ return "Port";};
|
||||
bool getNextCheckId(int &res)
|
||||
{
|
||||
int num;
|
||||
bool b=fp->GetLastPrintedDocNumber(num).ErrorCode==0;
|
||||
res=num+1;
|
||||
if (!b)
|
||||
{
|
||||
std::wstring estr = getLastError();
|
||||
throw std::runtime_error(Utility::WStringToString(estr, std::locale("")));
|
||||
}
|
||||
return b;
|
||||
};
|
||||
|
||||
bool Start()
|
||||
{
|
||||
//fp->OpenCOMPort(getCOMPort(),getBaudRate());
|
||||
//fp->OpenCOMPort(); //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
return fp->PrinterInit().ErrorCode==0;
|
||||
};
|
||||
long getCheckId(){ int num; fp->GetLastPrintedDocNumber(num); return num; }; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
bool PrintCheck(bool sales, int check, std::wstring headLine ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool isOk();
|
||||
bool PrintLine(std::wstring line)
|
||||
{
|
||||
//if(line!=NULL)
|
||||
return fp->PrintLine(line).ErrorCode==0;
|
||||
//else
|
||||
// return fp->PrintLine(L"");
|
||||
};
|
||||
std::wstring getLastError()
|
||||
{
|
||||
std::string str = fp->getLastErrorDest();
|
||||
std::wstring result = Utility::StringToWString(str, std::locale(""));
|
||||
return result;
|
||||
};
|
||||
bool DayOpened(){ return true; };
|
||||
bool PrintZReport();
|
||||
void PrintXReport() { fp->PrintXReport(); };
|
||||
bool Cut(){ return fp->CutPaper().ErrorCode==0; };
|
||||
int PrintDiagnostic() { return fp->PrintDiagnostic().ErrorCode==0; };
|
||||
bool setBaudRate(std::wstring data)
|
||||
{
|
||||
//fp->cPort->BaudRate = StdWStrToInt(data);
|
||||
return false;
|
||||
};
|
||||
bool setCOMPort(std::wstring data)
|
||||
{
|
||||
//fp->cPort->ComNumber = StdWStrToInt(data);
|
||||
return false;
|
||||
};
|
||||
int FeedPaper(int cnt)
|
||||
{
|
||||
return fp->FeedPaper(cnt).ErrorCode==0;
|
||||
};
|
||||
int Beep()
|
||||
{
|
||||
MyError err = fp->Beep();
|
||||
return err.ErrorCode;
|
||||
};
|
||||
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//extern FiscalPrinter* g_printer;
|
||||
//---------------------------------------------------------------------------
|
||||
#endif
|
||||
Reference in New Issue
Block a user