Files
Tools_CPP/devices/Printers/Mebius/__history/PrinterOPOS.h.~16~
2024-11-01 12:23:13 +05:00

210 lines
6.4 KiB
Plaintext

//---------------------------------------------------------------------------
#ifndef PrinterOPOSH
#define PrinterOPOSH
//---------------------------------------------------------------------------
//#include <System.hpp>
#include <vcl.h>
#include "OposFiscalPrinter_1_7_Lib_OCX.h"
//#include "OposFiscalPrinter_CCO_OCX.h"
#include "FP300KZ.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 name1; //Íàçâàíèå òîâàðà 1 ñòðîêà
WideString name2; //Íàçâàíèå òîâàðà 2 ñòðîêà
double price; //Öåíà çà åäåíèöó
long count; //Êîëè÷åñòâî
long VatInfo; //Íîìåð íàëîãîâîé ñòàâêè èç ñïðàâî÷íèêà
Goods(WideString name1, WideString 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;
TList* FListGoods;
long CheckId; //Ñêîëüêî ðàñïå÷àòàëè ÷åêîâ íà äàííîì òåðìèíàëå
public:
AnsiString HeadLine; //Ïåðâàÿ ñòðîêà â ÷åêå "Îïëàòà çà óñëóãè âîäîñíàáæåíèÿ"
WideString GoodsName; //Íàçâàíèå òîâàðà
WideString CasireName; //Èìÿ êàññèðà
bool TestMode;
bool AutoOpenShift; //Àâòî îòêðûòèå ñìåíû
FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); };
virtual AnsiString getPrinterName()=0;
virtual bool Start()=0;
virtual bool isOk()=0;
virtual long getCheckId(){ return CheckId; }; //Íîìåð ïîñëåäíåãî îòïå÷àòîíîãî äîêóìåíòà
void ClearGoods()
{
try
{
while(FListGoods->Count>0)
{
Goods* g=(Goods*)FListGoods->Items[0];
delete g;
FListGoods->Delete(0);
}
FListGoods->Clear();
}catch(...)
{
Crashed=true;
}
};
int getGoodsPrice();
virtual bool PrintLine(WideString 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, WideString headLine ) { return false; };
bool deleteCheck(int CheckId);
virtual AnsiString getLastError(){ return ""; };
virtual bool DayOpened(){ return false; };
virtual void setHeader(TStrings* Text){};
virtual void getHeader(TStrings* Text){};
virtual void setTrailer(TStrings* Text){};
virtual void getTrailer(TStrings* Text){};
virtual bool OpenShift(){ return true; }; //Îòêðûòèå ñìåíû
int getCOMPort();
int getBaudRate();
void setBaudRate(int val);
void setCOMPort(int n);
virtual bool PrintZReport()=0;
virtual void PrintXReport()=0;
void LoadSetup();
void SaveSetup();
virtual bool setTrainingMode(bool val){ return false; };
virtual bool Cut(){ return false; }; //Îòðåçàòü áóìàãó
virtual bool setNalog(long n,float stavka){ return false; }; //Çàïîëíåíèå ìàññèâà ñ ñóììàìè ïî íàëîãîâûì ñòàâêàì
virtual int getAllSum(){ return 0; };
};
//---------------------------------------------------------------------------
//Îáâ¸ðòêà äëÿ OPOS ôèñêàëüíîãî ïðèíòåðà
class PrinterOPOS : public FiscalPrinter
{
private:
TOPOSFiscalPrinter *fp;
public:
bool setTrainingMode(bool val);
bool getTrainingMode();
PrinterOPOS(TComponent* AOwner);
virtual ~PrinterOPOS();
AnsiString getPrinterName(){ return "Moebius";};
bool Start(); //Ñîåäåíèòüñÿ ïî COM ïîðòó è ïðîèíèöèàëèçèðîâàòü ïðèíòåð
bool PrintCheck(bool sales, int check, WideString headLine ); //Ïå÷àòü ÷åêà
bool SaveCheck(int CheckId); //Ñîõðàíåíèå ÷åêà äëÿ ïîñëåäóþùåé ðàñïå÷àòêè
bool deleteCheck(int CheckId); //Óäàëåíèå ÷åêà èç áàçû
bool 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 getDaySum(); //Ñóììà â êàññà ñ ïðîøëîãî Z îò÷¸òà
int getAllSum(); //Îáùèé èòîã ïðîäàæ
bool PrintLine(WideString line);
bool PrintZReport(); //Ïå÷àòü îò÷¸òà è çàêðûòèå ñìåíû
void PrintXReport(); //Ïå÷àòü ñóòî÷íîãî îò÷¸òà áåç çàêðûòèÿ ñìåíû
bool OpenShift(); //Îòêðûòèå ñìåíû
bool DayOpened(); //Îòðûòà ëè ñìåíà
bool setNalog(long n,float stavka); //Çàïîëíåíèå ìàññèâà ñ ñóììàìè ïî íàëîãîâûì ñòàâêàì
void Push(){}; //Â OPOS äðàéâåðå íåò òàêîé ôóíêöèè
};
//---------------------------------------------------------------------------
class FiscalPrinterPort : public FiscalPrinter
{
private:
FP300KZ* fp;
public:
FiscalPrinterPort():FiscalPrinter()
{ fp = new FP300KZ();
};
virtual ~FiscalPrinterPort(){ delete fp; };
AnsiString getPrinterName(){ return "Port";};
bool getNextCheckId(int &res)
{
int num;
bool b=fp->GetLastPrintedDocNumber(num);
res=num+1;
if(!b)throw Exception(getLastError());
return b;
};
bool Start()
{
fp->OpenCOMPort(getCOMPort(),getBaudRate());
return fp->PrinterInit();
};
long getCheckId(){ int num; fp->GetLastPrintedDocNumber(num); return num; }; //Íîìåð ïîñëåäíåãî îòïå÷àòîíîãî äîêóìåíòà
bool PrintCheck(bool sales, int check, WideString headLine ); //Ïå÷àòü ÷åêà
bool isOk();
bool PrintLine(WideString line)
{
//if(line!=NULL)
return fp->PrintLine(line.c_bstr());
//else
// return fp->PrintLine(L"");
};
AnsiString getLastError()
{
return fp->getLastErrorDest().c_str();
};
bool DayOpened(){ return true; };
bool PrintZReport();
void PrintXReport() { fp->PrintXReport(); };
bool Cut(){ return fp->CutPaper(); };
};
//---------------------------------------------------------------------------
extern FiscalPrinter* g_printer;
//---------------------------------------------------------------------------
#endif