209 lines
6.5 KiB
Plaintext
209 lines
6.5 KiB
Plaintext
//---------------------------------------------------------------------------
|
|
#ifndef PrinterOPOSH
|
|
#define PrinterOPOSH
|
|
//---------------------------------------------------------------------------
|
|
#include <wstring.h>
|
|
//#include "OposFiscalPrinter_1_7_Lib_OCX.h"
|
|
#include "OposFiscalPrinter_CCO_TLB.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
|