первый
This commit is contained in:
1096
devices/Printers/Mebius/PrinterOPOS.cpp
Normal file
1096
devices/Printers/Mebius/PrinterOPOS.cpp
Normal file
File diff suppressed because it is too large
Load Diff
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
|
||||
927
devices/Printers/Mebius/PrinterOPOS.~cpp
Normal file
927
devices/Printers/Mebius/PrinterOPOS.~cpp
Normal file
@ -0,0 +1,927 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
#pragma hdrstop
|
||||
|
||||
#include "PrinterOPOS.h"
|
||||
#include "OposFiscalPrinter_1_7_Lib_OCX.h"
|
||||
#include "ud_Module.h"
|
||||
#include <Registry.hpp>
|
||||
#include <Math.h>
|
||||
#include <DateUtils.hpp>
|
||||
#include <Dialogs.hpp>
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#pragma package(smart_init)
|
||||
//---------------------------------------------------------------------------
|
||||
FiscalPrinter* g_printer;
|
||||
//---------------------------------------------------------------------------
|
||||
char * kkm_err_msg_ru[] = {
|
||||
"OK", //0
|
||||
"<22><> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //1 FM ID Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> ", //2 FM Rec Error
|
||||
"Flash Chip <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //3 Flash Chip cant clear
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //4 FM not empty
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //5 FM Data destroyed
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //6 Cmd ignor prn mode
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //7 Oper code is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //8 Doc type is absent
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //9 Ser num CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //10 Password error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>", //11 Data/Time error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>", //12 Factory registration has already pass
|
||||
"<22><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //13 Ser num CR destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //14 Fiscalize has already pass
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //15 Not fisc mode CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //16 Fiscalize Data destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //17 Rewrite is conclude
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //18 Rewrite is destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //19 Shift already open
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //20 Shift not opened
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>", //21 Many goods in receipt
|
||||
"<22><> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //22 EOD data in FM destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //23 Document format error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //24 Text rewrite
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD> <20><><EFBFBD>", //25 Many parameters in document
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //26 Document parameters error
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //27 Parameters value error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //28 Object non-existent
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //29 Document is not finished
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //30 goods/operation description not enough
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //31 Check sum packet
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //32 Prn not ready
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //33 Nested interrupts
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //34 Check Sum Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>", //35 Overflow if FM
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //36 Unknown command
|
||||
"CRC <20><><EFBFBD>", //37 CRC RAM
|
||||
"CRC <20><>", //38 CRC FM
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //39 Data port defective
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //40 Receipts parameters sequence
|
||||
"0xy <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //41 0xy for required properties
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //42 Length request
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //43 number capacity
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //44 Overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //45 Number is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //46 Not response
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //47 Transmission error
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //48 Math overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", //49 Paper out...
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!", //50 CR not ready!!!
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!", //51 Memory error!!
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //52 Printer off
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //53 Insufficient memory
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //54 Lenght number less
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //55 Zero lenght number
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //56 Password lenght less permissible
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //57 Zero lenght password
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //58 Impossible value
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD>", //59 Time-out overdraw
|
||||
"",
|
||||
"<22><>.<2E><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"","","","","","",//69
|
||||
"","","","","","","","","","",//79
|
||||
"","","","","","","","","","",//89
|
||||
"","","","","","","","","","",//99
|
||||
"","","","","","","","","","",//109
|
||||
"","","","","","","","","","",//119
|
||||
"","","","","","","","","","",//129
|
||||
"","","","","","","","","","",//139
|
||||
"","","","","","","","","","",//149
|
||||
"","","","","","","","","","",//159
|
||||
|
||||
"","","","","","","","","","",//169
|
||||
"","","","","","","","","","",//179
|
||||
"","","","","","","","","","",//189
|
||||
"","","","","","","","","","",//199
|
||||
"","","","","","","","","","",//209
|
||||
"","","","","","","","","","",//219
|
||||
"","","","","","","","","","",//229
|
||||
"","","","","","","","","","",//239
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>",//240 Cmd not init
|
||||
"<22><>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//241 Cmd write err
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(DSR=0)",//242 Prn not ready (DSR=0)
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//243 Cmd ok
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//244 Cmd resp timeout
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//245 Prn error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//246 Cmd resp large
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//247 Cmd resp small
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//248
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//249
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//250 Cmd break
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//251
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//252
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//253
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//254
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)!"//255 Previous cmd run
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
bool FiscalPrinter::getNextCheckId(int &id)
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
id=CheckId;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::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> (<28><><EFBFBD><EFBFBD><EFBFBD>)
|
||||
{
|
||||
if(dModule->UserType) //true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice());
|
||||
else
|
||||
dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice());
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::deleteCheck(int CheckId) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
dModule->UpdateChek(CheckId);
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getCOMPort()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Num");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::setBaudRate(int val)
|
||||
{
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Speed",val);
|
||||
}
|
||||
delete reg;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getBaudRate()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Speed");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::setCOMPort(int n)
|
||||
{
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Num",n);
|
||||
}
|
||||
delete reg;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::LoadSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// cPort->port=ini->ReadString("Printer","Port","");
|
||||
// cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0);
|
||||
CheckId=ini->ReadInteger("Printer","CheckCount",0);
|
||||
TestMode=ini->ReadBool("Printer","TestMode",true);
|
||||
HeadLine=ini->ReadString("Printer","HeadLine","");
|
||||
GoodsName=ini->ReadString("Printer","GoodsName","");
|
||||
CasireName=ini->ReadString("Printer","CasireName","");
|
||||
AutoOpenShift=ini->ReadBool("Printer","AutoOpenShift",false);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::SaveSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// ini->WriteString("Printer","Port",cPort->port);
|
||||
// ini->WriteInteger("Printer","BaudRate",cPort->BaudRate);
|
||||
ini->WriteInteger("Printer","CheckCount",CheckId);
|
||||
ini->WriteBool("Printer","TestMode",TestMode);
|
||||
ini->WriteString("Printer","GoodsName",GoodsName);
|
||||
ini->WriteString("Printer","CasireName",CasireName);
|
||||
ini->WriteBool("Printer","AutoOpenShift",AutoOpenShift);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getGoodsPrice()
|
||||
{
|
||||
int sum=0;
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
sum+=((Goods*)FListGoods->Items[i])->price;
|
||||
return sum;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::PrinterOPOS(TComponent* AOwner):FiscalPrinter()
|
||||
{
|
||||
Crashed=false;
|
||||
AutoOpenShift=false;
|
||||
fp=new TOPOSFiscalPrinter(AOwner);
|
||||
fp->DeviceEnabled = False;
|
||||
LoadSetup();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::~PrinterOPOS()
|
||||
{
|
||||
delete FListGoods;
|
||||
delete fp;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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 PrinterOPOS::Start()
|
||||
{
|
||||
if(fp->DeviceEnabled) return true;
|
||||
|
||||
FState = fp->Open(L"MbsFiscalPrinter");
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,IntToStr(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
FState = fp->ClaimDevice(1000);
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,IntToStr(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
fp->DeviceEnabled = True;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setHeader(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetHeaderLine(i+1,str,false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getHeader(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","HeadLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setTrailer(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetTrailerLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getTrailer(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","TailLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::PrintLine(WideString line)
|
||||
{
|
||||
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + line + L"\n");
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//TODO <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
Currency cur=0;
|
||||
Currency cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
if(check==0) //<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
check=CheckId;
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
if(fp->RecEmpty) throw Exception("<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(!DayOpened()) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//vat=11; sTmp=L"<22><><EFBFBD><EFBFBD><EFBFBD>";
|
||||
//err = fp->DirectIO(4, &vat, &sTmp);
|
||||
//if (err) goto ErrHandler;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TODO!!!
|
||||
if(headLine!=NULL && headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
|
||||
if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else fp->FiscalReceiptType=FPTR_RT_SERVICE; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//setTrainingMode(true);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>)
|
||||
err = fp->BeginFiscalReceipt(true);
|
||||
if (err) throw Exception(getLastError(&err)); //251
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (TODO <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
VarCyFromR8(goods->price*100,&Amount1);
|
||||
Amount2.int64=0;
|
||||
WideString tmp=goods->name1+L"-/--/-0";
|
||||
err=fp->PrintRecItem(tmp.c_bstr(), Amount1, goods->count, goods->VatInfo, Amount2, L"<22><>");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> PrintRecTotal)
|
||||
err = fp->DirectIO(3, &CheckId, &sTmp);
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//setNalog(1,12);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
Amount2.int64=0;
|
||||
VarCyFromR8(cAllPrice*100,&Amount1);
|
||||
err=fp->PrintRecTotal(Amount1, Amount1, L"na");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
|
||||
err = fp->EndFiscalReceipt(True); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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> (AdditionalTrailer) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+IntToStr(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(err,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+IntToStr(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+IntToStr(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+IntToStr(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->PrintRecVoid(L"");
|
||||
}
|
||||
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::Cut() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + "75P");
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
/*int PrinterOPOS::GetState()
|
||||
{
|
||||
if(!fp->DeviceEnabled)FState=245;
|
||||
//if(FState!=0) return FState;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
// fp->ResultCodeExtended
|
||||
return 0;
|
||||
} */
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::isOk()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(fp->RecEmpty) throw "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
AnsiString str;
|
||||
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool dOpen=DayOpened();
|
||||
if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true;
|
||||
if(!dOpen) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
if(DayOpened())
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime dt=getDateOpenShift();
|
||||
str=getLastError(&err);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
|
||||
dModule->getDate();
|
||||
if(HoursBetween(dt,dModule->date)>24) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> 24 <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
throw Exception("[1]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
} else throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
BSTR bstr=new OLECHAR[50];
|
||||
err=fp->GetDate(&bstr);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime PrinterOPOS::getDateOpenShift()
|
||||
{
|
||||
long err=0;
|
||||
TDateTime date=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
long iTmp;
|
||||
BSTR sTmp=new OLECHAR[50];
|
||||
err=fp->DirectIO(13, &iTmp, &sTmp);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
date=StrToDateTime(sTmp);
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return date;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::GetStatusDescription(long err)
|
||||
{
|
||||
AnsiString str;
|
||||
try
|
||||
{
|
||||
if(err<256)
|
||||
str=kkm_err_msg_ru[err];
|
||||
if(str=="") str="<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::GetStatusDescription) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::getLastError(long* err)
|
||||
{
|
||||
BSTR str=new OLECHAR[255];
|
||||
str=L"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
try
|
||||
{
|
||||
fp->DirectIO(1, err, &str);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getLastError) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if(str==L"") return GetStatusDescription(*err);
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
AnsiString PrinterOPOS::getLastError()
|
||||
{
|
||||
long err;
|
||||
return getLastError(&err);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::PrintZReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
int sum=getDaySum();
|
||||
err=fp->PrintZReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
dModule->addZReport(sum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dModule->addPaper(-142*2);//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
void PrinterOPOS::PrintXReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintXReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::OpenShift()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
if(CasireName==NULL) CasireName=L" ";
|
||||
BSTR str=CasireName;
|
||||
err=fp->DirectIO (6,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
err=fp->SetVatValue(1,L"120");
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::DayOpened()
|
||||
{
|
||||
return fp->DayOpened;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::setTrainingMode(bool val)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(getTrainingMode()==val) return true;
|
||||
if(val) err=fp->BeginTraining(); else err=fp->EndTraining();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::getTrainingMode()
|
||||
{
|
||||
return fp->TrainingModeActive;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::setNalog(long n,float stavka)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long s=stavka*10;
|
||||
WideString str=IntToStr(s);
|
||||
err = fp->DirectIO(2, &n, &str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
return true;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return true;
|
||||
}
|
||||
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getDaySum()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getAllSum()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=2;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine )
|
||||
{
|
||||
//bool err=0;
|
||||
double cur=0;
|
||||
double cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(sales) bOk = fp->OpenFiscalInv(1,"0000",1);
|
||||
else bOk = fp->OpenBackInv(1,"0000",1);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
|
||||
if(headLine!=NULL && headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"<22>",goods->price,goods->count,0,0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
float Change;
|
||||
bOk=fp->Total("","","P",cAllPrice,Change);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
bOk = fp->CloseFiscalInv();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+IntToStr(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+IntToStr(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+IntToStr(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+IntToStr(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->CancelFiscalInv();
|
||||
}
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::PrintZReport()
|
||||
{
|
||||
bool bOk;
|
||||
try
|
||||
{
|
||||
float Amount=0,CashSum=0,ServIn=0,ServOut=0;
|
||||
std::string ExitCode="";
|
||||
bOk=fp->ParishOrConsumption(Amount,ExitCode,CashSum,ServIn,ServOut);
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
bOk=fp->PrintZReport();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
dModule->addZReport(CashSum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
bOk=false;
|
||||
}
|
||||
|
||||
return bOk;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::isOk()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!fp->DiagnosticInfo()) throw Exception(getLastError());
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
188
devices/Printers/Mebius/PrinterOPOS.~h
Normal file
188
devices/Printers/Mebius/PrinterOPOS.~h
Normal file
@ -0,0 +1,188 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#ifndef PrinterOPOSH
|
||||
#define PrinterOPOSH
|
||||
//---------------------------------------------------------------------------
|
||||
#include "OposFiscalPrinter_1_7_Lib_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;
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Goods
|
||||
{
|
||||
private:
|
||||
public:
|
||||
WideString name1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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(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; //<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:
|
||||
AnsiString 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>"
|
||||
WideString GoodsName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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>
|
||||
|
||||
FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); };
|
||||
virtual AnsiString 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=(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; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
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; }; //<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; };
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//<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;
|
||||
public:
|
||||
|
||||
|
||||
bool setTrainingMode(bool val);
|
||||
bool getTrainingMode();
|
||||
|
||||
PrinterOPOS(TComponent* AOwner);
|
||||
virtual ~PrinterOPOS();
|
||||
AnsiString 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, WideString 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>
|
||||
AnsiString GetStatusDescription(long StatusCode); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString 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>
|
||||
AnsiString getLastError(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime getDateOpenShift(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void setHeader(TStrings* Text);
|
||||
void getHeader(TStrings* Text);
|
||||
void setTrailer(TStrings* Text);
|
||||
void getTrailer(TStrings* Text);
|
||||
int getCOMPort();
|
||||
void setCOMPort(int n);
|
||||
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(WideString 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>
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
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; }; //<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, WideString headLine ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
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
|
||||
645
devices/Printers/Mebius/_PrinterOPOS.cpp
Normal file
645
devices/Printers/Mebius/_PrinterOPOS.cpp
Normal file
@ -0,0 +1,645 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
#pragma hdrstop
|
||||
|
||||
#include "PrinterOPOS.h"
|
||||
#include "OposFiscalPrinter_1_7_Lib_OCX.h"
|
||||
#include "ud_Module.h"
|
||||
#include <Registry.hpp>
|
||||
#include <Math.h>
|
||||
#include <DateUtils.hpp>
|
||||
#include <Dialogs.hpp>
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#pragma package(smart_init)
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS* printerOPOS;
|
||||
//---------------------------------------------------------------------------
|
||||
char * kkm_err_msg_ru[] = {
|
||||
"OK", //0
|
||||
"<EFBFBD><EFBFBD> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //1 FM ID Error
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> ", //2 FM Rec Error
|
||||
"Flash Chip <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //3 Flash Chip cant clear
|
||||
"<EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //4 FM not empty
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //5 FM Data destroyed
|
||||
"<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //6 Cmd ignor prn mode
|
||||
"<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //7 Oper code is absent
|
||||
"<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //8 Doc type is absent
|
||||
"<EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //9 Ser num CR
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //10 Password error
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>", //11 Data/Time error
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>", //12 Factory registration has already pass
|
||||
"<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //13 Ser num CR destroyed
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //14 Fiscalize has already pass
|
||||
"<EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //15 Not fisc mode CR
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //16 Fiscalize Data destroyed
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //17 Rewrite is conclude
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //18 Rewrite is destroyed
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //19 Shift already open
|
||||
"<EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //20 Shift not opened
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>", //21 Many goods in receipt
|
||||
"<EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //22 EOD data in FM destroyed
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //23 Document format error
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //24 Text rewrite
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD> <20><><EFBFBD>", //25 Many parameters in document
|
||||
"<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //26 Document parameters error
|
||||
"<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //27 Parameters value error
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //28 Object non-existent
|
||||
"<EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //29 Document is not finished
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //30 goods/operation description not enough
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //31 Check sum packet
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //32 Prn not ready
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //33 Nested interrupts
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //34 Check Sum Error
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>", //35 Overflow if FM
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //36 Unknown command
|
||||
"CRC <20><><EFBFBD>", //37 CRC RAM
|
||||
"CRC <20><>", //38 CRC FM
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //39 Data port defective
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //40 Receipts parameters sequence
|
||||
"0xy <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //41 0xy for required properties
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //42 Length request
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //43 number capacity
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //44 Overflow
|
||||
"<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //45 Number is absent
|
||||
"<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //46 Not response
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //47 Transmission error
|
||||
"<EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //48 Math overflow
|
||||
"<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", //49 Paper out...
|
||||
"<EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!", //50 CR not ready!!!
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!", //51 Memory error!!
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //52 Printer off
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //53 Insufficient memory
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //54 Lenght number less
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //55 Zero lenght number
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //56 Password lenght less permissible
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //57 Zero lenght password
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //58 Impossible value
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD>", //59 Time-out overdraw
|
||||
"",
|
||||
"<EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"","","","","","",//69
|
||||
"","","","","","","","","","",//79
|
||||
"","","","","","","","","","",//89
|
||||
"","","","","","","","","","",//99
|
||||
"","","","","","","","","","",//109
|
||||
"","","","","","","","","","",//119
|
||||
"","","","","","","","","","",//129
|
||||
"","","","","","","","","","",//139
|
||||
"","","","","","","","","","",//149
|
||||
"","","","","","","","","","",//159
|
||||
|
||||
"","","","","","","","","","",//169
|
||||
"","","","","","","","","","",//179
|
||||
"","","","","","","","","","",//189
|
||||
"","","","","","","","","","",//199
|
||||
"","","","","","","","","","",//209
|
||||
"","","","","","","","","","",//219
|
||||
"","","","","","","","","","",//229
|
||||
"","","","","","","","","","",//239
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>",//240 Cmd not init
|
||||
"<EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//241 Cmd write err
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(DSR=0)",//242 Prn not ready (DSR=0)
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//243 Cmd ok
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//244 Cmd resp timeout
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//245 Prn error
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//246 Cmd resp large
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//247 Cmd resp small
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//248
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//249
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//250 Cmd break
|
||||
"<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//251
|
||||
"<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//252
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//253
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//254
|
||||
"<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)!"//255 Previous cmd run
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::PrinterOPOS(TComponent* AOwner)
|
||||
{
|
||||
Crashed=false;
|
||||
fp=new TOPOSFiscalPrinter(AOwner);
|
||||
fp->DeviceEnabled = False;
|
||||
FListGoods= new TList();
|
||||
LoadSetup();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::~PrinterOPOS()
|
||||
{
|
||||
delete FListGoods;
|
||||
delete fp;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::LoadSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// cPort->port=ini->ReadString("Printer","Port","");
|
||||
// cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0);
|
||||
CheckId=ini->ReadInteger("Printer","CheckCount",0);
|
||||
TestMode=ini->ReadBool("Printer","TestMode",true);
|
||||
HeadLine=ini->ReadString("Printer","HeadLine","");
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::SaveSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// ini->WriteString("Printer","Port",cPort->port);
|
||||
// ini->WriteInteger("Printer","BaudRate",cPort->BaudRate);
|
||||
ini->WriteInteger("Printer","CheckCount",CheckId);
|
||||
ini->WriteBool("Printer","TestMode",CheckId);
|
||||
ini->WriteString("Printer","HeadLine",HeadLine);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::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>
|
||||
{
|
||||
if(fp->DeviceEnabled) return true;
|
||||
|
||||
FState = fp->Open(L"MbsFiscalPrinter");
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(IntToStr(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
FState = fp->ClaimDevice(1000);
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(IntToStr(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
fp->DeviceEnabled = True;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setHeader(TStrings* Text)
|
||||
{
|
||||
//if(fp->DayOpened){FState=19; return;}
|
||||
|
||||
long err;
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetHeaderLine(i+1,str,false);
|
||||
if(err!=0)
|
||||
{
|
||||
saveLog(IntToStr(err)+"(PrinterOPOS::setHeader)"+GetStatusDescription(err));
|
||||
break;
|
||||
}
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err!=0) saveLog(IntToStr(err)+"(PrinterOPOS::setHeader)"+GetStatusDescription(err));
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getHeader(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","HeadLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setTrailer(TStrings* Text)
|
||||
{
|
||||
//if(fp->DayOpened){FState=19; return;}
|
||||
long err;
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetTrailerLine(i+1,str,false);
|
||||
if(err!=0)
|
||||
{ saveLog(IntToStr(err)+"(PrinterOPOS::setTrailer)"+GetStatusDescription(err));
|
||||
break;
|
||||
}
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err!=0) saveLog(IntToStr(err)+"(PrinterOPOS::setTrailer)"+GetStatusDescription(err));
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getTrailer(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","TailLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::addGoods(Goods* goods)
|
||||
{
|
||||
FListGoods->Add(goods);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::ClearGoods()
|
||||
{
|
||||
try
|
||||
{
|
||||
while(FListGoods->Count>0)
|
||||
{
|
||||
Goods* g=(Goods*)FListGoods->Items[0];
|
||||
delete g;
|
||||
FListGoods->Delete(0);
|
||||
}
|
||||
FListGoods->Clear();
|
||||
}catch(...)
|
||||
{
|
||||
Crashed=true;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int PrinterOPOS::getGoodsPrice()
|
||||
{
|
||||
int sum=0;
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
sum+=((Goods*)FListGoods->Items[i])->price;
|
||||
return sum;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
int PrinterOPOS::getNextCheckId()
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
return CheckId;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
bool PrinterOPOS::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> (<28><><EFBFBD><EFBFBD><EFBFBD>)
|
||||
{
|
||||
if(dModule->UserType) //true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice());
|
||||
else
|
||||
dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice());
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::deleteCheck(int CheckId) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
dModule->UpdateChek(CheckId);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::PrintLine(WideString line)
|
||||
{
|
||||
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
long err = fp->PrintNormal(2, WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + line + L"\n");
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//TODO <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool PrinterOPOS::PrintCheck(bool sales, int check) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
Currency cur=0;
|
||||
Currency cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
if(check==0) //<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
check=CheckId;
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
if(fp->RecEmpty) throw Exception("<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(!DayOpened())
|
||||
if(!OpenShift()) throw Exception("<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//vat=11; sTmp=L"<22><><EFBFBD><EFBFBD><EFBFBD>";
|
||||
//err = fp->DirectIO(4, &vat, &sTmp);
|
||||
//if (err) goto ErrHandler;
|
||||
|
||||
if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else fp->FiscalReceiptType=FPTR_RT_SERVICE; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>)
|
||||
err = fp->BeginFiscalReceipt(true);
|
||||
if (err) throw Exception(getLastError(&err)); //251
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
VarCyFromR8(goods->price*100,&Amount1);
|
||||
Amount2.int64=0;
|
||||
err=fp->PrintRecItem(goods->name+L"-/--/-0", Amount1, goods->count, goods->VatInfo, Amount2, L"<EFBFBD><EFBFBD>");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> PrintRecTotal)
|
||||
err = fp->DirectIO(3, &CheckId, &sTmp);
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//setNalog(1,12);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
Amount2.int64=0;
|
||||
VarCyFromR8(cAllPrice*100,&Amount1);
|
||||
err=fp->PrintRecTotal(Amount1, Amount1, L"na");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
|
||||
err = fp->EndFiscalReceipt(True); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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> (AdditionalTrailer) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
printerOPOS->ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+IntToStr(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(err,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+IntToStr(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
printerOPOS->ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog("<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+IntToStr(CheckId));
|
||||
dModule->SendError(1,"<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+IntToStr(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->PrintRecVoid(L"");
|
||||
}
|
||||
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::Cut() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
FState = fp->PrintNormal(2, WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + "75P"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(FState!=0) saveLog(IntToStr(FState)+"(PrinterOPOS::Cut)"+GetStatusDescription(FState));
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
int PrinterOPOS::GetState()
|
||||
{
|
||||
if(!fp->DeviceEnabled)FState=245;
|
||||
//if(FState!=0) return FState;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
// fp->ResultCodeExtended
|
||||
return 0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::isOk()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(fp->RecEmpty) throw "<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
|
||||
AnsiString str;
|
||||
if(!DayOpened())
|
||||
OpenShift();
|
||||
if(DayOpened())
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime dt=getDateOpenShift();
|
||||
str=getLastError(&err);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
|
||||
dModule->getDate();
|
||||
if(HoursBetween(dt,dModule->date)>24) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> 24 <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
throw Exception("[1]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
} else throw Exception("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
BSTR bstr=new OLECHAR[50];
|
||||
err=fp->GetDate(&bstr);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog("(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog("(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime PrinterOPOS::getDateOpenShift()
|
||||
{
|
||||
long iTmp,err;
|
||||
BSTR sTmp=new OLECHAR[50];
|
||||
err = fp->DirectIO(13, &iTmp, &sTmp);
|
||||
if(err!=0) return 0;
|
||||
return StrToDateTime(sTmp);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::GetStatusDescription(long err)
|
||||
{
|
||||
AnsiString str;
|
||||
try
|
||||
{
|
||||
if(err<256)
|
||||
str=kkm_err_msg_ru[err];
|
||||
if(str=="") str="<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}catch(...)
|
||||
{
|
||||
saveLog("(PrinterOPOS::GetStatusDescription) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return "<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::getLastError(long* err)
|
||||
{
|
||||
BSTR str=new OLECHAR[255];
|
||||
str=L"<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
try
|
||||
{
|
||||
fp->DirectIO(1, err, &str);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog("(PrinterOPOS::getLastError) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if(str==L"") return GetStatusDescription(*err);
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
AnsiString PrinterOPOS::getLastError()
|
||||
{
|
||||
long err;
|
||||
return getLastError(&err);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int PrinterOPOS::getCOMPort()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Num");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setCOMPort(int n)
|
||||
{
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Num",n);
|
||||
}
|
||||
delete reg;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int PrinterOPOS::getBaudRate()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Speed");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setBaudRate(int val)
|
||||
{
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Speed",val);
|
||||
}
|
||||
delete reg;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::PrintZReport()
|
||||
{
|
||||
int sum=getDaySum();
|
||||
long err=fp->PrintZReport();
|
||||
if(err==0)
|
||||
{
|
||||
dModule->addZReport(sum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dModule->addPaper(-142*2);//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}else
|
||||
{
|
||||
saveLog("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
void PrinterOPOS::PrintXReport()
|
||||
{
|
||||
fp->PrintXReport();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::OpenShift()
|
||||
{
|
||||
long n=1;
|
||||
BSTR str=L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1";
|
||||
long err=fp->DirectIO (6,&n,&str); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(err!=0) saveLog(IntToStr(err)+"(PrinterOPOS::OpenShift)"+GetStatusDescription(err));
|
||||
|
||||
err=fp->SetVatValue(1,L"120");
|
||||
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::DayOpened()
|
||||
{
|
||||
return fp->DayOpened;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::setTrainingMode(bool val)
|
||||
{
|
||||
if(getTrainingMode()==val) return true;
|
||||
long err;
|
||||
if(val) err=fp->BeginTraining(); else err=fp->EndTraining();
|
||||
|
||||
AnsiString str=getLastError(&err);
|
||||
if(err!=0) saveLog(IntToStr(err)+"(PrinterOPOS::setTrainingMode)"+str);
|
||||
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::getTrainingMode()
|
||||
{
|
||||
return fp->TrainingModeActive;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::setNalog(long n,float stavka)
|
||||
{
|
||||
// long s=stavka*100;
|
||||
// WideString str=IntToStr(s);
|
||||
BSTR s1=L"120";
|
||||
long err = fp->DirectIO(2, &n, &s1);
|
||||
if(err!=0) saveLog(IntToStr(err)+"(PrinterOPOS::OpenShift)"+GetStatusDescription(err));
|
||||
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getDaySum()
|
||||
{
|
||||
try
|
||||
{
|
||||
long n=1;
|
||||
BSTR str=new OLECHAR[20];
|
||||
long err=fp->DirectIO (300,&n,&str);
|
||||
if(err!=0)throw Exception("["+IntToStr(err)+"]"+GetStatusDescription(err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog("(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
89
devices/Printers/Mebius/_PrinterOPOS.h
Normal file
89
devices/Printers/Mebius/_PrinterOPOS.h
Normal file
@ -0,0 +1,89 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#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;
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Goods
|
||||
{
|
||||
private:
|
||||
public:
|
||||
WideString name; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <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(WideString name,double price, long count,long VatInfo){this->name=name; this->price=price; this->count=count; this->VatInfo=VatInfo; };
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//<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
|
||||
{
|
||||
private:
|
||||
bool Crashed;
|
||||
TOPOSFiscalPrinter *fp;
|
||||
long FState;
|
||||
TList* FListGoods;
|
||||
public:
|
||||
AnsiString 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>"
|
||||
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>
|
||||
bool TestMode;
|
||||
|
||||
bool setTrainingMode(bool val);
|
||||
bool getTrainingMode();
|
||||
|
||||
PrinterOPOS(TComponent* AOwner);
|
||||
virtual ~PrinterOPOS();
|
||||
void LoadSetup();
|
||||
void SaveSetup();
|
||||
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); //<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>
|
||||
int getNextCheckId();
|
||||
|
||||
bool PrintLine(WideString line);
|
||||
void addGoods(Goods* goods);
|
||||
void ClearGoods();
|
||||
int getGoodsPrice();
|
||||
void 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>
|
||||
AnsiString GetStatusDescription(long StatusCode); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString 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>
|
||||
AnsiString getLastError(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime getDateOpenShift(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
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();//<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
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 PrintCheck(TStringList* Text){}; //Print lines and cut
|
||||
void Push(){}; //<2F> OPOS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
extern PrinterOPOS* printerOPOS;
|
||||
//---------------------------------------------------------------------------
|
||||
#endif
|
||||
928
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~19~
Normal file
928
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~19~
Normal file
@ -0,0 +1,928 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
#pragma hdrstop
|
||||
|
||||
#include "PrinterOPOS.h"
|
||||
#include "OposFiscalPrinter_1_7_Lib_OCX.h"
|
||||
//#include "OposFiscalPrinter_CCO_OCX.h"
|
||||
#include "ud_Module.h"
|
||||
#include <Registry.hpp>
|
||||
#include <Math.h>
|
||||
#include <DateUtils.hpp>
|
||||
#include <Dialogs.hpp>
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#pragma package(smart_init)
|
||||
//---------------------------------------------------------------------------
|
||||
FiscalPrinter* g_printer;
|
||||
//---------------------------------------------------------------------------
|
||||
char * kkm_err_msg_ru[] = {
|
||||
"OK", //0
|
||||
"<22><> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //1 FM ID Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> ", //2 FM Rec Error
|
||||
"Flash Chip <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //3 Flash Chip cant clear
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //4 FM not empty
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //5 FM Data destroyed
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //6 Cmd ignor prn mode
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //7 Oper code is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //8 Doc type is absent
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //9 Ser num CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //10 Password error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>", //11 Data/Time error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>", //12 Factory registration has already pass
|
||||
"<22><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //13 Ser num CR destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //14 Fiscalize has already pass
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //15 Not fisc mode CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //16 Fiscalize Data destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //17 Rewrite is conclude
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //18 Rewrite is destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //19 Shift already open
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //20 Shift not opened
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>", //21 Many goods in receipt
|
||||
"<22><> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //22 EOD data in FM destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //23 Document format error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //24 Text rewrite
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD> <20><><EFBFBD>", //25 Many parameters in document
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //26 Document parameters error
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //27 Parameters value error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //28 Object non-existent
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //29 Document is not finished
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //30 goods/operation description not enough
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //31 Check sum packet
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //32 Prn not ready
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //33 Nested interrupts
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //34 Check Sum Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>", //35 Overflow if FM
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //36 Unknown command
|
||||
"CRC <20><><EFBFBD>", //37 CRC RAM
|
||||
"CRC <20><>", //38 CRC FM
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //39 Data port defective
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //40 Receipts parameters sequence
|
||||
"0xy <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //41 0xy for required properties
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //42 Length request
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //43 number capacity
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //44 Overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //45 Number is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //46 Not response
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //47 Transmission error
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //48 Math overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", //49 Paper out...
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!", //50 CR not ready!!!
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!", //51 Memory error!!
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //52 Printer off
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //53 Insufficient memory
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //54 Lenght number less
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //55 Zero lenght number
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //56 Password lenght less permissible
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //57 Zero lenght password
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //58 Impossible value
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD>", //59 Time-out overdraw
|
||||
"",
|
||||
"<22><>.<2E><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"","","","","","",//69
|
||||
"","","","","","","","","","",//79
|
||||
"","","","","","","","","","",//89
|
||||
"","","","","","","","","","",//99
|
||||
"","","","","","","","","","",//109
|
||||
"","","","","","","","","","",//119
|
||||
"","","","","","","","","","",//129
|
||||
"","","","","","","","","","",//139
|
||||
"","","","","","","","","","",//149
|
||||
"","","","","","","","","","",//159
|
||||
|
||||
"","","","","","","","","","",//169
|
||||
"","","","","","","","","","",//179
|
||||
"","","","","","","","","","",//189
|
||||
"","","","","","","","","","",//199
|
||||
"","","","","","","","","","",//209
|
||||
"","","","","","","","","","",//219
|
||||
"","","","","","","","","","",//229
|
||||
"","","","","","","","","","",//239
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>",//240 Cmd not init
|
||||
"<22><>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//241 Cmd write err
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(DSR=0)",//242 Prn not ready (DSR=0)
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//243 Cmd ok
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//244 Cmd resp timeout
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//245 Prn error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//246 Cmd resp large
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//247 Cmd resp small
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//248
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//249
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//250 Cmd break
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//251
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//252
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//253
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//254
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)!"//255 Previous cmd run
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
bool FiscalPrinter::getNextCheckId(int &id)
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
id=CheckId;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::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> (<28><><EFBFBD><EFBFBD><EFBFBD>)
|
||||
{
|
||||
if(dModule->UserType) //true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice());
|
||||
else
|
||||
dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice());
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::deleteCheck(int CheckId) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
dModule->UpdateChek(CheckId);
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getCOMPort()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Num");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::setBaudRate(int val)
|
||||
{
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Speed",val);
|
||||
}
|
||||
delete reg;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getBaudRate()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Speed");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::setCOMPort(int n)
|
||||
{
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Num",n);
|
||||
}
|
||||
delete reg;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::LoadSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// cPort->port=ini->ReadString("Printer","Port","");
|
||||
// cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0);
|
||||
CheckId=ini->ReadInteger("Printer","CheckCount",0);
|
||||
TestMode=ini->ReadBool("Printer","TestMode",true);
|
||||
HeadLine=ini->ReadString("Printer","HeadLine","");
|
||||
GoodsName=ini->ReadString("Printer","GoodsName","");
|
||||
CasireName=ini->ReadString("Printer","CasireName","");
|
||||
AutoOpenShift=ini->ReadBool("Printer","AutoOpenShift",false);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::SaveSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// ini->WriteString("Printer","Port",cPort->port);
|
||||
// ini->WriteInteger("Printer","BaudRate",cPort->BaudRate);
|
||||
ini->WriteInteger("Printer","CheckCount",CheckId);
|
||||
ini->WriteBool("Printer","TestMode",TestMode);
|
||||
ini->WriteString("Printer","GoodsName",GoodsName);
|
||||
ini->WriteString("Printer","CasireName",CasireName);
|
||||
ini->WriteBool("Printer","AutoOpenShift",AutoOpenShift);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getGoodsPrice()
|
||||
{
|
||||
int sum=0;
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
sum+=((Goods*)FListGoods->Items[i])->price;
|
||||
return sum;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::PrinterOPOS(TComponent* AOwner):FiscalPrinter()
|
||||
{
|
||||
Crashed=false;
|
||||
AutoOpenShift=false;
|
||||
fp=new TOPOSFiscalPrinter(AOwner);
|
||||
fp->DeviceEnabled = False;
|
||||
LoadSetup();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::~PrinterOPOS()
|
||||
{
|
||||
delete FListGoods;
|
||||
delete fp;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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 PrinterOPOS::Start()
|
||||
{
|
||||
if(fp->DeviceEnabled) return true;
|
||||
|
||||
FState = fp->Open(L"MbsFiscalPrinter");
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
FState = fp->ClaimDevice(1000);
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
fp->DeviceEnabled = True;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setHeader(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetHeaderLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getHeader(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","HeadLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setTrailer(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetTrailerLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getTrailer(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","TailLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::PrintLine(WideString line)
|
||||
{
|
||||
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + line + L"\n").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//TODO <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
Currency cur=0;
|
||||
Currency cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
if(check==0) //<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
check=CheckId;
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
if(fp->RecEmpty) throw Exception("<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(!DayOpened()) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//vat=11; sTmp=L"<22><><EFBFBD><EFBFBD><EFBFBD>";
|
||||
//err = fp->DirectIO(4, &vat, &sTmp);
|
||||
//if (err) goto ErrHandler;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TODO!!!
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
|
||||
if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else fp->FiscalReceiptType=FPTR_RT_SERVICE; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//setTrainingMode(true);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>)
|
||||
err = fp->BeginFiscalReceipt(true);
|
||||
if (err) throw Exception(getLastError(&err)); //251
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (TODO <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
VarCyFromR8(goods->price*100,&Amount1);
|
||||
Amount2.int64=0;
|
||||
WideString tmp=goods->name1+L"-/--/-0";
|
||||
err=fp->PrintRecItem(tmp.c_bstr(), Amount1, goods->count, goods->VatInfo, Amount2, L"<22><>");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> PrintRecTotal)
|
||||
err = fp->DirectIO(3, &CheckId, &sTmp);
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//setNalog(1,12);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
Amount2.int64=0;
|
||||
VarCyFromR8(cAllPrice*100,&Amount1);
|
||||
err=fp->PrintRecTotal(Amount1, Amount1, L"na");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
|
||||
err = fp->EndFiscalReceipt(True); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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> (AdditionalTrailer) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(err,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->PrintRecVoid(L"");
|
||||
}
|
||||
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::Cut() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + "75P").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
/*int PrinterOPOS::GetState()
|
||||
{
|
||||
if(!fp->DeviceEnabled)FState=245;
|
||||
//if(FState!=0) return FState;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
// fp->ResultCodeExtended
|
||||
return 0;
|
||||
} */
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::isOk()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(fp->RecEmpty) throw "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
AnsiString str;
|
||||
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool dOpen=DayOpened();
|
||||
if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true;
|
||||
if(!dOpen) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
if(DayOpened())
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime dt=getDateOpenShift();
|
||||
str=getLastError(&err);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
|
||||
dModule->getDate();
|
||||
if(HoursBetween(dt,dModule->date)>24) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> 24 <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
throw Exception("[1]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
} else throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
BSTR bstr=new OLECHAR[50];
|
||||
err=fp->GetDate(&bstr);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime PrinterOPOS::getDateOpenShift()
|
||||
{
|
||||
long err=0;
|
||||
TDateTime date=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
long iTmp;
|
||||
BSTR sTmp=new OLECHAR[50];
|
||||
err=fp->DirectIO(13, &iTmp, &sTmp);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
date=StrToDateTime(sTmp);
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return date;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::GetStatusDescription(long err)
|
||||
{
|
||||
AnsiString str;
|
||||
try
|
||||
{
|
||||
if(err<256)
|
||||
str=kkm_err_msg_ru[err];
|
||||
if(str=="") str="<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::GetStatusDescription) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::getLastError(long* err)
|
||||
{
|
||||
BSTR str=new OLECHAR[255];
|
||||
str=L"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
try
|
||||
{
|
||||
fp->DirectIO(1, err, &str);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getLastError) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if(str==L"") return GetStatusDescription(*err);
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
AnsiString PrinterOPOS::getLastError()
|
||||
{
|
||||
long err;
|
||||
return getLastError(&err);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::PrintZReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
int sum=getDaySum();
|
||||
err=fp->PrintZReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
dModule->addZReport(sum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dModule->addPaper(-142*2);//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
void PrinterOPOS::PrintXReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintXReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::OpenShift()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
//if(CasireName==NULL) CasireName=L" ";
|
||||
BSTR str=CasireName.c_bstr();
|
||||
err=fp->DirectIO (6,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
err=fp->SetVatValue(1,L"120");
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::DayOpened()
|
||||
{
|
||||
return fp->DayOpened;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::setTrainingMode(bool val)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(getTrainingMode()==val) return true;
|
||||
if(val) err=fp->BeginTraining(); else err=fp->EndTraining();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::getTrainingMode()
|
||||
{
|
||||
return fp->TrainingModeActive;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::setNalog(long n,float stavka)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long s=stavka*10;
|
||||
WideString str=AnsiString(s);
|
||||
err = fp->DirectIO(2, &n, &str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
return true;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return true;
|
||||
}
|
||||
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getDaySum()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getAllSum()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=2;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine )
|
||||
{
|
||||
//bool err=0;
|
||||
double cur=0;
|
||||
double cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(sales) bOk = fp->OpenFiscalInv(1,"0000",1);
|
||||
else bOk = fp->OpenBackInv(1,"0000",1);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"<22>",goods->price,goods->count,0,0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
double Change;
|
||||
bOk=fp->Total("","","P",cAllPrice,Change);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
bOk = fp->CloseFiscalInv();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->CancelFiscalInv();
|
||||
}
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::PrintZReport()
|
||||
{
|
||||
bool bOk;
|
||||
try
|
||||
{
|
||||
double Amount=0,CashSum=0,ServIn=0,ServOut=0;
|
||||
std::string ExitCode="";
|
||||
bOk=fp->ParishOrConsumption(Amount,ExitCode,CashSum,ServIn,ServOut);
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
bOk=fp->PrintZReport();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
dModule->addZReport(CashSum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
bOk=false;
|
||||
}
|
||||
|
||||
return bOk;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::isOk()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!fp->DiagnosticInfo()) throw Exception(getLastError());
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
928
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~20~
Normal file
928
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~20~
Normal file
@ -0,0 +1,928 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
#pragma hdrstop
|
||||
|
||||
#include "PrinterOPOS.h"
|
||||
#include "OposFiscalPrinter_1_7_Lib_OCX.h"
|
||||
//#include "OposFiscalPrinter_CCO_OCX.h"
|
||||
#include "ud_Module.h"
|
||||
#include <Registry.hpp>
|
||||
#include <Math.h>
|
||||
#include <DateUtils.hpp>
|
||||
#include <Dialogs.hpp>
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#pragma package(smart_init)
|
||||
//---------------------------------------------------------------------------
|
||||
FiscalPrinter* g_printer;
|
||||
//---------------------------------------------------------------------------
|
||||
char * kkm_err_msg_ru[] = {
|
||||
"OK", //0
|
||||
"<22><> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //1 FM ID Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> ", //2 FM Rec Error
|
||||
"Flash Chip <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //3 Flash Chip cant clear
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //4 FM not empty
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //5 FM Data destroyed
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //6 Cmd ignor prn mode
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //7 Oper code is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //8 Doc type is absent
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //9 Ser num CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //10 Password error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>", //11 Data/Time error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>", //12 Factory registration has already pass
|
||||
"<22><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //13 Ser num CR destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //14 Fiscalize has already pass
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //15 Not fisc mode CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //16 Fiscalize Data destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //17 Rewrite is conclude
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //18 Rewrite is destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //19 Shift already open
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //20 Shift not opened
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>", //21 Many goods in receipt
|
||||
"<22><> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //22 EOD data in FM destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //23 Document format error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //24 Text rewrite
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD> <20><><EFBFBD>", //25 Many parameters in document
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //26 Document parameters error
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //27 Parameters value error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //28 Object non-existent
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //29 Document is not finished
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //30 goods/operation description not enough
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //31 Check sum packet
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //32 Prn not ready
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //33 Nested interrupts
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //34 Check Sum Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>", //35 Overflow if FM
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //36 Unknown command
|
||||
"CRC <20><><EFBFBD>", //37 CRC RAM
|
||||
"CRC <20><>", //38 CRC FM
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //39 Data port defective
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //40 Receipts parameters sequence
|
||||
"0xy <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //41 0xy for required properties
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //42 Length request
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //43 number capacity
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //44 Overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //45 Number is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //46 Not response
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //47 Transmission error
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //48 Math overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", //49 Paper out...
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!", //50 CR not ready!!!
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!", //51 Memory error!!
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //52 Printer off
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //53 Insufficient memory
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //54 Lenght number less
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //55 Zero lenght number
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //56 Password lenght less permissible
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //57 Zero lenght password
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //58 Impossible value
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD>", //59 Time-out overdraw
|
||||
"",
|
||||
"<22><>.<2E><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"","","","","","",//69
|
||||
"","","","","","","","","","",//79
|
||||
"","","","","","","","","","",//89
|
||||
"","","","","","","","","","",//99
|
||||
"","","","","","","","","","",//109
|
||||
"","","","","","","","","","",//119
|
||||
"","","","","","","","","","",//129
|
||||
"","","","","","","","","","",//139
|
||||
"","","","","","","","","","",//149
|
||||
"","","","","","","","","","",//159
|
||||
|
||||
"","","","","","","","","","",//169
|
||||
"","","","","","","","","","",//179
|
||||
"","","","","","","","","","",//189
|
||||
"","","","","","","","","","",//199
|
||||
"","","","","","","","","","",//209
|
||||
"","","","","","","","","","",//219
|
||||
"","","","","","","","","","",//229
|
||||
"","","","","","","","","","",//239
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>",//240 Cmd not init
|
||||
"<22><>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//241 Cmd write err
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(DSR=0)",//242 Prn not ready (DSR=0)
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//243 Cmd ok
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//244 Cmd resp timeout
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//245 Prn error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//246 Cmd resp large
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//247 Cmd resp small
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//248
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//249
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//250 Cmd break
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//251
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//252
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//253
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//254
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)!"//255 Previous cmd run
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
bool FiscalPrinter::getNextCheckId(int &id)
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
id=CheckId;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::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> (<28><><EFBFBD><EFBFBD><EFBFBD>)
|
||||
{
|
||||
if(dModule->UserType) //true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice());
|
||||
else
|
||||
dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice());
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::deleteCheck(int CheckId) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
dModule->UpdateChek(CheckId);
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getCOMPort()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Num");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::setBaudRate(int val)
|
||||
{
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Speed",val);
|
||||
}
|
||||
delete reg;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getBaudRate()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Speed");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setCOMPort(int n)
|
||||
{
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Num",n);
|
||||
}
|
||||
delete reg;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::LoadSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// cPort->port=ini->ReadString("Printer","Port","");
|
||||
// cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0);
|
||||
CheckId=ini->ReadInteger("Printer","CheckCount",0);
|
||||
TestMode=ini->ReadBool("Printer","TestMode",true);
|
||||
HeadLine=ini->ReadString("Printer","HeadLine","");
|
||||
GoodsName=ini->ReadString("Printer","GoodsName","");
|
||||
CasireName=ini->ReadString("Printer","CasireName","");
|
||||
AutoOpenShift=ini->ReadBool("Printer","AutoOpenShift",false);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::SaveSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// ini->WriteString("Printer","Port",cPort->port);
|
||||
// ini->WriteInteger("Printer","BaudRate",cPort->BaudRate);
|
||||
ini->WriteInteger("Printer","CheckCount",CheckId);
|
||||
ini->WriteBool("Printer","TestMode",TestMode);
|
||||
ini->WriteString("Printer","GoodsName",GoodsName);
|
||||
ini->WriteString("Printer","CasireName",CasireName);
|
||||
ini->WriteBool("Printer","AutoOpenShift",AutoOpenShift);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getGoodsPrice()
|
||||
{
|
||||
int sum=0;
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
sum+=((Goods*)FListGoods->Items[i])->price;
|
||||
return sum;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::PrinterOPOS(TComponent* AOwner):FiscalPrinter()
|
||||
{
|
||||
Crashed=false;
|
||||
AutoOpenShift=false;
|
||||
fp=new TOPOSFiscalPrinter(AOwner);
|
||||
fp->DeviceEnabled = False;
|
||||
LoadSetup();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::~PrinterOPOS()
|
||||
{
|
||||
delete FListGoods;
|
||||
delete fp;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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 PrinterOPOS::Start()
|
||||
{
|
||||
if(fp->DeviceEnabled) return true;
|
||||
|
||||
FState = fp->Open(L"MbsFiscalPrinter");
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
FState = fp->ClaimDevice(1000);
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
fp->DeviceEnabled = True;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setHeader(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetHeaderLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getHeader(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","HeadLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setTrailer(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetTrailerLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getTrailer(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","TailLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::PrintLine(WideString line)
|
||||
{
|
||||
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + line + L"\n").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//TODO <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
Currency cur=0;
|
||||
Currency cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
if(check==0) //<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
check=CheckId;
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
if(fp->RecEmpty) throw Exception("<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(!DayOpened()) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//vat=11; sTmp=L"<22><><EFBFBD><EFBFBD><EFBFBD>";
|
||||
//err = fp->DirectIO(4, &vat, &sTmp);
|
||||
//if (err) goto ErrHandler;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TODO!!!
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
|
||||
if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else fp->FiscalReceiptType=FPTR_RT_SERVICE; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//setTrainingMode(true);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>)
|
||||
err = fp->BeginFiscalReceipt(true);
|
||||
if (err) throw Exception(getLastError(&err)); //251
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (TODO <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
VarCyFromR8(goods->price*100,&Amount1);
|
||||
Amount2.int64=0;
|
||||
WideString tmp=goods->name1+L"-/--/-0";
|
||||
err=fp->PrintRecItem(tmp.c_bstr(), Amount1, goods->count, goods->VatInfo, Amount2, L"<22><>");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> PrintRecTotal)
|
||||
err = fp->DirectIO(3, &CheckId, &sTmp);
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//setNalog(1,12);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
Amount2.int64=0;
|
||||
VarCyFromR8(cAllPrice*100,&Amount1);
|
||||
err=fp->PrintRecTotal(Amount1, Amount1, L"na");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
|
||||
err = fp->EndFiscalReceipt(True); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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> (AdditionalTrailer) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(err,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->PrintRecVoid(L"");
|
||||
}
|
||||
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::Cut() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + "75P").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
/*int PrinterOPOS::GetState()
|
||||
{
|
||||
if(!fp->DeviceEnabled)FState=245;
|
||||
//if(FState!=0) return FState;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
// fp->ResultCodeExtended
|
||||
return 0;
|
||||
} */
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::isOk()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(fp->RecEmpty) throw "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
AnsiString str;
|
||||
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool dOpen=DayOpened();
|
||||
if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true;
|
||||
if(!dOpen) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
if(DayOpened())
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime dt=getDateOpenShift();
|
||||
str=getLastError(&err);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
|
||||
dModule->getDate();
|
||||
if(HoursBetween(dt,dModule->date)>24) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> 24 <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
throw Exception("[1]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
} else throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
BSTR bstr=new OLECHAR[50];
|
||||
err=fp->GetDate(&bstr);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime PrinterOPOS::getDateOpenShift()
|
||||
{
|
||||
long err=0;
|
||||
TDateTime date=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
long iTmp;
|
||||
BSTR sTmp=new OLECHAR[50];
|
||||
err=fp->DirectIO(13, &iTmp, &sTmp);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
date=StrToDateTime(sTmp);
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return date;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::GetStatusDescription(long err)
|
||||
{
|
||||
AnsiString str;
|
||||
try
|
||||
{
|
||||
if(err<256)
|
||||
str=kkm_err_msg_ru[err];
|
||||
if(str=="") str="<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::GetStatusDescription) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::getLastError(long* err)
|
||||
{
|
||||
BSTR str=new OLECHAR[255];
|
||||
str=L"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
try
|
||||
{
|
||||
fp->DirectIO(1, err, &str);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getLastError) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if(str==L"") return GetStatusDescription(*err);
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
AnsiString PrinterOPOS::getLastError()
|
||||
{
|
||||
long err;
|
||||
return getLastError(&err);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::PrintZReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
int sum=getDaySum();
|
||||
err=fp->PrintZReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
dModule->addZReport(sum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dModule->addPaper(-142*2);//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
void PrinterOPOS::PrintXReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintXReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::OpenShift()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
//if(CasireName==NULL) CasireName=L" ";
|
||||
BSTR str=CasireName.c_bstr();
|
||||
err=fp->DirectIO (6,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
err=fp->SetVatValue(1,L"120");
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::DayOpened()
|
||||
{
|
||||
return fp->DayOpened;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::setTrainingMode(bool val)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(getTrainingMode()==val) return true;
|
||||
if(val) err=fp->BeginTraining(); else err=fp->EndTraining();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::getTrainingMode()
|
||||
{
|
||||
return fp->TrainingModeActive;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::setNalog(long n,float stavka)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long s=stavka*10;
|
||||
WideString str=AnsiString(s);
|
||||
err = fp->DirectIO(2, &n, &str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
return true;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return true;
|
||||
}
|
||||
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getDaySum()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getAllSum()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=2;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine )
|
||||
{
|
||||
//bool err=0;
|
||||
double cur=0;
|
||||
double cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(sales) bOk = fp->OpenFiscalInv(1,"0000",1);
|
||||
else bOk = fp->OpenBackInv(1,"0000",1);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"<22>",goods->price,goods->count,0,0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
double Change;
|
||||
bOk=fp->Total("","","P",cAllPrice,Change);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
bOk = fp->CloseFiscalInv();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->CancelFiscalInv();
|
||||
}
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::PrintZReport()
|
||||
{
|
||||
bool bOk;
|
||||
try
|
||||
{
|
||||
double Amount=0,CashSum=0,ServIn=0,ServOut=0;
|
||||
std::string ExitCode="";
|
||||
bOk=fp->ParishOrConsumption(Amount,ExitCode,CashSum,ServIn,ServOut);
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
bOk=fp->PrintZReport();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
dModule->addZReport(CashSum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
bOk=false;
|
||||
}
|
||||
|
||||
return bOk;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::isOk()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!fp->DiagnosticInfo()) throw Exception(getLastError());
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
934
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~21~
Normal file
934
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~21~
Normal file
@ -0,0 +1,934 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
#pragma hdrstop
|
||||
|
||||
#include "PrinterOPOS.h"
|
||||
#include "OposFiscalPrinter_1_7_Lib_OCX.h"
|
||||
//#include "OposFiscalPrinter_CCO_OCX.h"
|
||||
#include "ud_Module.h"
|
||||
#include <Registry.hpp>
|
||||
#include <Math.h>
|
||||
#include <DateUtils.hpp>
|
||||
#include <Dialogs.hpp>
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#pragma package(smart_init)
|
||||
//---------------------------------------------------------------------------
|
||||
FiscalPrinter* g_printer;
|
||||
//---------------------------------------------------------------------------
|
||||
char * kkm_err_msg_ru[] = {
|
||||
"OK", //0
|
||||
"<22><> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //1 FM ID Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> ", //2 FM Rec Error
|
||||
"Flash Chip <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //3 Flash Chip cant clear
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //4 FM not empty
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //5 FM Data destroyed
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //6 Cmd ignor prn mode
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //7 Oper code is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //8 Doc type is absent
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //9 Ser num CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //10 Password error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>", //11 Data/Time error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>", //12 Factory registration has already pass
|
||||
"<22><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //13 Ser num CR destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //14 Fiscalize has already pass
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //15 Not fisc mode CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //16 Fiscalize Data destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //17 Rewrite is conclude
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //18 Rewrite is destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //19 Shift already open
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //20 Shift not opened
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>", //21 Many goods in receipt
|
||||
"<22><> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //22 EOD data in FM destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //23 Document format error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //24 Text rewrite
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD> <20><><EFBFBD>", //25 Many parameters in document
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //26 Document parameters error
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //27 Parameters value error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //28 Object non-existent
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //29 Document is not finished
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //30 goods/operation description not enough
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //31 Check sum packet
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //32 Prn not ready
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //33 Nested interrupts
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //34 Check Sum Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>", //35 Overflow if FM
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //36 Unknown command
|
||||
"CRC <20><><EFBFBD>", //37 CRC RAM
|
||||
"CRC <20><>", //38 CRC FM
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //39 Data port defective
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //40 Receipts parameters sequence
|
||||
"0xy <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //41 0xy for required properties
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //42 Length request
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //43 number capacity
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //44 Overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //45 Number is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //46 Not response
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //47 Transmission error
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //48 Math overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", //49 Paper out...
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!", //50 CR not ready!!!
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!", //51 Memory error!!
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //52 Printer off
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //53 Insufficient memory
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //54 Lenght number less
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //55 Zero lenght number
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //56 Password lenght less permissible
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //57 Zero lenght password
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //58 Impossible value
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD>", //59 Time-out overdraw
|
||||
"",
|
||||
"<22><>.<2E><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"","","","","","",//69
|
||||
"","","","","","","","","","",//79
|
||||
"","","","","","","","","","",//89
|
||||
"","","","","","","","","","",//99
|
||||
"","","","","","","","","","",//109
|
||||
"","","","","","","","","","",//119
|
||||
"","","","","","","","","","",//129
|
||||
"","","","","","","","","","",//139
|
||||
"","","","","","","","","","",//149
|
||||
"","","","","","","","","","",//159
|
||||
|
||||
"","","","","","","","","","",//169
|
||||
"","","","","","","","","","",//179
|
||||
"","","","","","","","","","",//189
|
||||
"","","","","","","","","","",//199
|
||||
"","","","","","","","","","",//209
|
||||
"","","","","","","","","","",//219
|
||||
"","","","","","","","","","",//229
|
||||
"","","","","","","","","","",//239
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>",//240 Cmd not init
|
||||
"<22><>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//241 Cmd write err
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(DSR=0)",//242 Prn not ready (DSR=0)
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//243 Cmd ok
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//244 Cmd resp timeout
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//245 Prn error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//246 Cmd resp large
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//247 Cmd resp small
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//248
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//249
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//250 Cmd break
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//251
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//252
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//253
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//254
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)!"//255 Previous cmd run
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
bool FiscalPrinter::getNextCheckId(int &id)
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
id=CheckId;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::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> (<28><><EFBFBD><EFBFBD><EFBFBD>)
|
||||
{
|
||||
if(dModule->UserType) //true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice());
|
||||
else
|
||||
dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice());
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::deleteCheck(int CheckId) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
dModule->UpdateChek(CheckId);
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getCOMPort()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Num");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setBaudRate(int val)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Speed",val);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getBaudRate()
|
||||
{
|
||||
int n=-1;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Speed");
|
||||
result = true;
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setCOMPort(int n)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Num",n);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::LoadSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// cPort->port=ini->ReadString("Printer","Port","");
|
||||
// cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0);
|
||||
CheckId=ini->ReadInteger("Printer","CheckCount",0);
|
||||
TestMode=ini->ReadBool("Printer","TestMode",true);
|
||||
HeadLine=ini->ReadString("Printer","HeadLine","");
|
||||
GoodsName=ini->ReadString("Printer","GoodsName","");
|
||||
CasireName=ini->ReadString("Printer","CasireName","");
|
||||
AutoOpenShift=ini->ReadBool("Printer","AutoOpenShift",false);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::SaveSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// ini->WriteString("Printer","Port",cPort->port);
|
||||
// ini->WriteInteger("Printer","BaudRate",cPort->BaudRate);
|
||||
ini->WriteInteger("Printer","CheckCount",CheckId);
|
||||
ini->WriteBool("Printer","TestMode",TestMode);
|
||||
ini->WriteString("Printer","GoodsName",GoodsName);
|
||||
ini->WriteString("Printer","CasireName",CasireName);
|
||||
ini->WriteBool("Printer","AutoOpenShift",AutoOpenShift);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getGoodsPrice()
|
||||
{
|
||||
int sum=0;
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
sum+=((Goods*)FListGoods->Items[i])->price;
|
||||
return sum;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::PrinterOPOS(TComponent* AOwner):FiscalPrinter()
|
||||
{
|
||||
Crashed=false;
|
||||
AutoOpenShift=false;
|
||||
fp=new TOPOSFiscalPrinter(AOwner);
|
||||
fp->DeviceEnabled = False;
|
||||
LoadSetup();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::~PrinterOPOS()
|
||||
{
|
||||
delete FListGoods;
|
||||
delete fp;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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 PrinterOPOS::Start()
|
||||
{
|
||||
if(fp->DeviceEnabled) return true;
|
||||
|
||||
FState = fp->Open(L"MbsFiscalPrinter");
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
FState = fp->ClaimDevice(1000);
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
fp->DeviceEnabled = True;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setHeader(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetHeaderLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getHeader(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","HeadLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setTrailer(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetTrailerLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getTrailer(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","TailLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::PrintLine(WideString line)
|
||||
{
|
||||
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + line + L"\n").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//TODO <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
Currency cur=0;
|
||||
Currency cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
if(check==0) //<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
check=CheckId;
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
if(fp->RecEmpty) throw Exception("<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(!DayOpened()) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//vat=11; sTmp=L"<22><><EFBFBD><EFBFBD><EFBFBD>";
|
||||
//err = fp->DirectIO(4, &vat, &sTmp);
|
||||
//if (err) goto ErrHandler;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TODO!!!
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
|
||||
if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else fp->FiscalReceiptType=FPTR_RT_SERVICE; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//setTrainingMode(true);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>)
|
||||
err = fp->BeginFiscalReceipt(true);
|
||||
if (err) throw Exception(getLastError(&err)); //251
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (TODO <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
VarCyFromR8(goods->price*100,&Amount1);
|
||||
Amount2.int64=0;
|
||||
WideString tmp=goods->name1+L"-/--/-0";
|
||||
err=fp->PrintRecItem(tmp.c_bstr(), Amount1, goods->count, goods->VatInfo, Amount2, L"<22><>");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> PrintRecTotal)
|
||||
err = fp->DirectIO(3, &CheckId, &sTmp);
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//setNalog(1,12);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
Amount2.int64=0;
|
||||
VarCyFromR8(cAllPrice*100,&Amount1);
|
||||
err=fp->PrintRecTotal(Amount1, Amount1, L"na");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
|
||||
err = fp->EndFiscalReceipt(True); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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> (AdditionalTrailer) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(err,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->PrintRecVoid(L"");
|
||||
}
|
||||
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::Cut() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + "75P").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
/*int PrinterOPOS::GetState()
|
||||
{
|
||||
if(!fp->DeviceEnabled)FState=245;
|
||||
//if(FState!=0) return FState;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
// fp->ResultCodeExtended
|
||||
return 0;
|
||||
} */
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::isOk()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(fp->RecEmpty) throw "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
AnsiString str;
|
||||
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool dOpen=DayOpened();
|
||||
if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true;
|
||||
if(!dOpen) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
if(DayOpened())
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime dt=getDateOpenShift();
|
||||
str=getLastError(&err);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
|
||||
dModule->getDate();
|
||||
if(HoursBetween(dt,dModule->date)>24) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> 24 <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
throw Exception("[1]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
} else throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
BSTR bstr=new OLECHAR[50];
|
||||
err=fp->GetDate(&bstr);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime PrinterOPOS::getDateOpenShift()
|
||||
{
|
||||
long err=0;
|
||||
TDateTime date=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
long iTmp;
|
||||
BSTR sTmp=new OLECHAR[50];
|
||||
err=fp->DirectIO(13, &iTmp, &sTmp);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
date=StrToDateTime(sTmp);
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return date;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::GetStatusDescription(long err)
|
||||
{
|
||||
AnsiString str;
|
||||
try
|
||||
{
|
||||
if(err<256)
|
||||
str=kkm_err_msg_ru[err];
|
||||
if(str=="") str="<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::GetStatusDescription) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::getLastError(long* err)
|
||||
{
|
||||
BSTR str=new OLECHAR[255];
|
||||
str=L"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
try
|
||||
{
|
||||
fp->DirectIO(1, err, &str);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getLastError) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if(str==L"") return GetStatusDescription(*err);
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
AnsiString PrinterOPOS::getLastError()
|
||||
{
|
||||
long err;
|
||||
return getLastError(&err);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::PrintZReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
int sum=getDaySum();
|
||||
err=fp->PrintZReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
dModule->addZReport(sum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dModule->addPaper(-142*2);//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
void PrinterOPOS::PrintXReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintXReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::OpenShift()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
//if(CasireName==NULL) CasireName=L" ";
|
||||
BSTR str=CasireName.c_bstr();
|
||||
err=fp->DirectIO (6,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
err=fp->SetVatValue(1,L"120");
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::DayOpened()
|
||||
{
|
||||
return fp->DayOpened;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::setTrainingMode(bool val)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(getTrainingMode()==val) return true;
|
||||
if(val) err=fp->BeginTraining(); else err=fp->EndTraining();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::getTrainingMode()
|
||||
{
|
||||
return fp->TrainingModeActive;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::setNalog(long n,float stavka)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long s=stavka*10;
|
||||
WideString str=AnsiString(s);
|
||||
err = fp->DirectIO(2, &n, &str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
return true;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return true;
|
||||
}
|
||||
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getDaySum()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getAllSum()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=2;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine )
|
||||
{
|
||||
//bool err=0;
|
||||
double cur=0;
|
||||
double cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(sales) bOk = fp->OpenFiscalInv(1,"0000",1);
|
||||
else bOk = fp->OpenBackInv(1,"0000",1);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"<22>",goods->price,goods->count,0,0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
double Change;
|
||||
bOk=fp->Total("","","P",cAllPrice,Change);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
bOk = fp->CloseFiscalInv();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->CancelFiscalInv();
|
||||
}
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::PrintZReport()
|
||||
{
|
||||
bool bOk;
|
||||
try
|
||||
{
|
||||
double Amount=0,CashSum=0,ServIn=0,ServOut=0;
|
||||
std::string ExitCode="";
|
||||
bOk=fp->ParishOrConsumption(Amount,ExitCode,CashSum,ServIn,ServOut);
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
bOk=fp->PrintZReport();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
dModule->addZReport(CashSum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
bOk=false;
|
||||
}
|
||||
|
||||
return bOk;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::isOk()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!fp->DiagnosticInfo()) throw Exception(getLastError());
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
933
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~22~
Normal file
933
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~22~
Normal file
@ -0,0 +1,933 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
#pragma hdrstop
|
||||
|
||||
#include "PrinterOPOS.h"
|
||||
#include "OposFiscalPrinter_1_7_Lib_OCX.h"
|
||||
//#include "OposFiscalPrinter_CCO_OCX.h"
|
||||
#include "ud_Module.h"
|
||||
#include <Registry.hpp>
|
||||
#include <Math.h>
|
||||
#include <DateUtils.hpp>
|
||||
#include <Dialogs.hpp>
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#pragma package(smart_init)
|
||||
//---------------------------------------------------------------------------
|
||||
FiscalPrinter* g_printer;
|
||||
//---------------------------------------------------------------------------
|
||||
char * kkm_err_msg_ru[] = {
|
||||
"OK", //0
|
||||
"<22><> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //1 FM ID Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> ", //2 FM Rec Error
|
||||
"Flash Chip <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //3 Flash Chip cant clear
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //4 FM not empty
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //5 FM Data destroyed
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //6 Cmd ignor prn mode
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //7 Oper code is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //8 Doc type is absent
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //9 Ser num CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //10 Password error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>", //11 Data/Time error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>", //12 Factory registration has already pass
|
||||
"<22><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //13 Ser num CR destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //14 Fiscalize has already pass
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //15 Not fisc mode CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //16 Fiscalize Data destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //17 Rewrite is conclude
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //18 Rewrite is destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //19 Shift already open
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //20 Shift not opened
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>", //21 Many goods in receipt
|
||||
"<22><> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //22 EOD data in FM destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //23 Document format error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //24 Text rewrite
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD> <20><><EFBFBD>", //25 Many parameters in document
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //26 Document parameters error
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //27 Parameters value error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //28 Object non-existent
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //29 Document is not finished
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //30 goods/operation description not enough
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //31 Check sum packet
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //32 Prn not ready
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //33 Nested interrupts
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //34 Check Sum Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>", //35 Overflow if FM
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //36 Unknown command
|
||||
"CRC <20><><EFBFBD>", //37 CRC RAM
|
||||
"CRC <20><>", //38 CRC FM
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //39 Data port defective
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //40 Receipts parameters sequence
|
||||
"0xy <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //41 0xy for required properties
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //42 Length request
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //43 number capacity
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //44 Overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //45 Number is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //46 Not response
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //47 Transmission error
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //48 Math overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", //49 Paper out...
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!", //50 CR not ready!!!
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!", //51 Memory error!!
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //52 Printer off
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //53 Insufficient memory
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //54 Lenght number less
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //55 Zero lenght number
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //56 Password lenght less permissible
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //57 Zero lenght password
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //58 Impossible value
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD>", //59 Time-out overdraw
|
||||
"",
|
||||
"<22><>.<2E><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"","","","","","",//69
|
||||
"","","","","","","","","","",//79
|
||||
"","","","","","","","","","",//89
|
||||
"","","","","","","","","","",//99
|
||||
"","","","","","","","","","",//109
|
||||
"","","","","","","","","","",//119
|
||||
"","","","","","","","","","",//129
|
||||
"","","","","","","","","","",//139
|
||||
"","","","","","","","","","",//149
|
||||
"","","","","","","","","","",//159
|
||||
|
||||
"","","","","","","","","","",//169
|
||||
"","","","","","","","","","",//179
|
||||
"","","","","","","","","","",//189
|
||||
"","","","","","","","","","",//199
|
||||
"","","","","","","","","","",//209
|
||||
"","","","","","","","","","",//219
|
||||
"","","","","","","","","","",//229
|
||||
"","","","","","","","","","",//239
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>",//240 Cmd not init
|
||||
"<22><>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//241 Cmd write err
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(DSR=0)",//242 Prn not ready (DSR=0)
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//243 Cmd ok
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//244 Cmd resp timeout
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//245 Prn error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//246 Cmd resp large
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//247 Cmd resp small
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//248
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//249
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//250 Cmd break
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//251
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//252
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//253
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//254
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)!"//255 Previous cmd run
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
bool FiscalPrinter::getNextCheckId(int &id)
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
id=CheckId;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::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> (<28><><EFBFBD><EFBFBD><EFBFBD>)
|
||||
{
|
||||
if(dModule->UserType) //true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice());
|
||||
else
|
||||
dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice());
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::deleteCheck(int CheckId) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
dModule->UpdateChek(CheckId);
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getCOMPort()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Num");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setBaudRate(int val)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Speed",val);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getBaudRate()
|
||||
{
|
||||
int n=-1;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Speed");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setCOMPort(int n)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Num",n);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::LoadSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// cPort->port=ini->ReadString("Printer","Port","");
|
||||
// cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0);
|
||||
CheckId=ini->ReadInteger("Printer","CheckCount",0);
|
||||
TestMode=ini->ReadBool("Printer","TestMode",true);
|
||||
HeadLine=ini->ReadString("Printer","HeadLine","");
|
||||
GoodsName=ini->ReadString("Printer","GoodsName","");
|
||||
CasireName=ini->ReadString("Printer","CasireName","");
|
||||
AutoOpenShift=ini->ReadBool("Printer","AutoOpenShift",false);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::SaveSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// ini->WriteString("Printer","Port",cPort->port);
|
||||
// ini->WriteInteger("Printer","BaudRate",cPort->BaudRate);
|
||||
ini->WriteInteger("Printer","CheckCount",CheckId);
|
||||
ini->WriteBool("Printer","TestMode",TestMode);
|
||||
ini->WriteString("Printer","GoodsName",GoodsName);
|
||||
ini->WriteString("Printer","CasireName",CasireName);
|
||||
ini->WriteBool("Printer","AutoOpenShift",AutoOpenShift);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getGoodsPrice()
|
||||
{
|
||||
int sum=0;
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
sum+=((Goods*)FListGoods->Items[i])->price;
|
||||
return sum;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::PrinterOPOS(TComponent* AOwner):FiscalPrinter()
|
||||
{
|
||||
Crashed=false;
|
||||
AutoOpenShift=false;
|
||||
fp=new TOPOSFiscalPrinter(AOwner);
|
||||
fp->DeviceEnabled = False;
|
||||
LoadSetup();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::~PrinterOPOS()
|
||||
{
|
||||
delete FListGoods;
|
||||
delete fp;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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 PrinterOPOS::Start()
|
||||
{
|
||||
if(fp->DeviceEnabled) return true;
|
||||
|
||||
FState = fp->Open(L"MbsFiscalPrinter");
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
FState = fp->ClaimDevice(1000);
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
fp->DeviceEnabled = True;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setHeader(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetHeaderLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getHeader(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","HeadLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setTrailer(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetTrailerLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getTrailer(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","TailLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::PrintLine(WideString line)
|
||||
{
|
||||
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + line + L"\n").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//TODO <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
Currency cur=0;
|
||||
Currency cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
if(check==0) //<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
check=CheckId;
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
if(fp->RecEmpty) throw Exception("<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(!DayOpened()) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//vat=11; sTmp=L"<22><><EFBFBD><EFBFBD><EFBFBD>";
|
||||
//err = fp->DirectIO(4, &vat, &sTmp);
|
||||
//if (err) goto ErrHandler;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TODO!!!
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
|
||||
if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else fp->FiscalReceiptType=FPTR_RT_SERVICE; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//setTrainingMode(true);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>)
|
||||
err = fp->BeginFiscalReceipt(true);
|
||||
if (err) throw Exception(getLastError(&err)); //251
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (TODO <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
VarCyFromR8(goods->price*100,&Amount1);
|
||||
Amount2.int64=0;
|
||||
WideString tmp=goods->name1+L"-/--/-0";
|
||||
err=fp->PrintRecItem(tmp.c_bstr(), Amount1, goods->count, goods->VatInfo, Amount2, L"<22><>");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> PrintRecTotal)
|
||||
err = fp->DirectIO(3, &CheckId, &sTmp);
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//setNalog(1,12);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
Amount2.int64=0;
|
||||
VarCyFromR8(cAllPrice*100,&Amount1);
|
||||
err=fp->PrintRecTotal(Amount1, Amount1, L"na");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
|
||||
err = fp->EndFiscalReceipt(True); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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> (AdditionalTrailer) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(err,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->PrintRecVoid(L"");
|
||||
}
|
||||
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::Cut() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + "75P").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
/*int PrinterOPOS::GetState()
|
||||
{
|
||||
if(!fp->DeviceEnabled)FState=245;
|
||||
//if(FState!=0) return FState;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
// fp->ResultCodeExtended
|
||||
return 0;
|
||||
} */
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::isOk()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(fp->RecEmpty) throw "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
AnsiString str;
|
||||
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool dOpen=DayOpened();
|
||||
if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true;
|
||||
if(!dOpen) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
if(DayOpened())
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime dt=getDateOpenShift();
|
||||
str=getLastError(&err);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
|
||||
dModule->getDate();
|
||||
if(HoursBetween(dt,dModule->date)>24) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> 24 <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
throw Exception("[1]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
} else throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
BSTR bstr=new OLECHAR[50];
|
||||
err=fp->GetDate(&bstr);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime PrinterOPOS::getDateOpenShift()
|
||||
{
|
||||
long err=0;
|
||||
TDateTime date=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
long iTmp;
|
||||
BSTR sTmp=new OLECHAR[50];
|
||||
err=fp->DirectIO(13, &iTmp, &sTmp);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
date=StrToDateTime(sTmp);
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return date;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::GetStatusDescription(long err)
|
||||
{
|
||||
AnsiString str;
|
||||
try
|
||||
{
|
||||
if(err<256)
|
||||
str=kkm_err_msg_ru[err];
|
||||
if(str=="") str="<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::GetStatusDescription) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::getLastError(long* err)
|
||||
{
|
||||
BSTR str=new OLECHAR[255];
|
||||
str=L"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
try
|
||||
{
|
||||
fp->DirectIO(1, err, &str);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getLastError) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if(str==L"") return GetStatusDescription(*err);
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
AnsiString PrinterOPOS::getLastError()
|
||||
{
|
||||
long err;
|
||||
return getLastError(&err);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::PrintZReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
int sum=getDaySum();
|
||||
err=fp->PrintZReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
dModule->addZReport(sum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dModule->addPaper(-142*2);//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
void PrinterOPOS::PrintXReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintXReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::OpenShift()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
//if(CasireName==NULL) CasireName=L" ";
|
||||
BSTR str=CasireName.c_bstr();
|
||||
err=fp->DirectIO (6,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
err=fp->SetVatValue(1,L"120");
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::DayOpened()
|
||||
{
|
||||
return fp->DayOpened;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::setTrainingMode(bool val)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(getTrainingMode()==val) return true;
|
||||
if(val) err=fp->BeginTraining(); else err=fp->EndTraining();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::getTrainingMode()
|
||||
{
|
||||
return fp->TrainingModeActive;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::setNalog(long n,float stavka)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long s=stavka*10;
|
||||
WideString str=AnsiString(s);
|
||||
err = fp->DirectIO(2, &n, &str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
return true;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return true;
|
||||
}
|
||||
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getDaySum()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getAllSum()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=2;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine )
|
||||
{
|
||||
//bool err=0;
|
||||
double cur=0;
|
||||
double cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(sales) bOk = fp->OpenFiscalInv(1,"0000",1);
|
||||
else bOk = fp->OpenBackInv(1,"0000",1);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"<22>",goods->price,goods->count,0,0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
double Change;
|
||||
bOk=fp->Total("","","P",cAllPrice,Change);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
bOk = fp->CloseFiscalInv();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->CancelFiscalInv();
|
||||
}
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::PrintZReport()
|
||||
{
|
||||
bool bOk;
|
||||
try
|
||||
{
|
||||
double Amount=0,CashSum=0,ServIn=0,ServOut=0;
|
||||
std::string ExitCode="";
|
||||
bOk=fp->ParishOrConsumption(Amount,ExitCode,CashSum,ServIn,ServOut);
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
bOk=fp->PrintZReport();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
dModule->addZReport(CashSum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
bOk=false;
|
||||
}
|
||||
|
||||
return bOk;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::isOk()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!fp->DiagnosticInfo()) throw Exception(getLastError());
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
934
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~23~
Normal file
934
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~23~
Normal file
@ -0,0 +1,934 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
#pragma hdrstop
|
||||
|
||||
#include "PrinterOPOS.h"
|
||||
#include "OposFiscalPrinter_1_7_Lib_OCX.h"
|
||||
//#include "OposFiscalPrinter_CCO_OCX.h"
|
||||
#include "ud_Module.h"
|
||||
#include <Registry.hpp>
|
||||
#include <Math.h>
|
||||
#include <DateUtils.hpp>
|
||||
#include <Dialogs.hpp>
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#pragma package(smart_init)
|
||||
//---------------------------------------------------------------------------
|
||||
FiscalPrinter* g_printer;
|
||||
//---------------------------------------------------------------------------
|
||||
char * kkm_err_msg_ru[] = {
|
||||
"OK", //0
|
||||
"<22><> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //1 FM ID Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> ", //2 FM Rec Error
|
||||
"Flash Chip <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //3 Flash Chip cant clear
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //4 FM not empty
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //5 FM Data destroyed
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //6 Cmd ignor prn mode
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //7 Oper code is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //8 Doc type is absent
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //9 Ser num CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //10 Password error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>", //11 Data/Time error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>", //12 Factory registration has already pass
|
||||
"<22><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //13 Ser num CR destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //14 Fiscalize has already pass
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //15 Not fisc mode CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //16 Fiscalize Data destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //17 Rewrite is conclude
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //18 Rewrite is destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //19 Shift already open
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //20 Shift not opened
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>", //21 Many goods in receipt
|
||||
"<22><> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //22 EOD data in FM destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //23 Document format error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //24 Text rewrite
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD> <20><><EFBFBD>", //25 Many parameters in document
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //26 Document parameters error
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //27 Parameters value error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //28 Object non-existent
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //29 Document is not finished
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //30 goods/operation description not enough
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //31 Check sum packet
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //32 Prn not ready
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //33 Nested interrupts
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //34 Check Sum Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>", //35 Overflow if FM
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //36 Unknown command
|
||||
"CRC <20><><EFBFBD>", //37 CRC RAM
|
||||
"CRC <20><>", //38 CRC FM
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //39 Data port defective
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //40 Receipts parameters sequence
|
||||
"0xy <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //41 0xy for required properties
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //42 Length request
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //43 number capacity
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //44 Overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //45 Number is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //46 Not response
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //47 Transmission error
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //48 Math overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", //49 Paper out...
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!", //50 CR not ready!!!
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!", //51 Memory error!!
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //52 Printer off
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //53 Insufficient memory
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //54 Lenght number less
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //55 Zero lenght number
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //56 Password lenght less permissible
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //57 Zero lenght password
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //58 Impossible value
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD>", //59 Time-out overdraw
|
||||
"",
|
||||
"<22><>.<2E><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"","","","","","",//69
|
||||
"","","","","","","","","","",//79
|
||||
"","","","","","","","","","",//89
|
||||
"","","","","","","","","","",//99
|
||||
"","","","","","","","","","",//109
|
||||
"","","","","","","","","","",//119
|
||||
"","","","","","","","","","",//129
|
||||
"","","","","","","","","","",//139
|
||||
"","","","","","","","","","",//149
|
||||
"","","","","","","","","","",//159
|
||||
|
||||
"","","","","","","","","","",//169
|
||||
"","","","","","","","","","",//179
|
||||
"","","","","","","","","","",//189
|
||||
"","","","","","","","","","",//199
|
||||
"","","","","","","","","","",//209
|
||||
"","","","","","","","","","",//219
|
||||
"","","","","","","","","","",//229
|
||||
"","","","","","","","","","",//239
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>",//240 Cmd not init
|
||||
"<22><>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//241 Cmd write err
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(DSR=0)",//242 Prn not ready (DSR=0)
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//243 Cmd ok
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//244 Cmd resp timeout
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//245 Prn error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//246 Cmd resp large
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//247 Cmd resp small
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//248
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//249
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//250 Cmd break
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//251
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//252
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//253
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//254
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)!"//255 Previous cmd run
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
bool FiscalPrinter::getNextCheckId(int &id)
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
id=CheckId;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::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> (<28><><EFBFBD><EFBFBD><EFBFBD>)
|
||||
{
|
||||
if(dModule->UserType) //true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice());
|
||||
else
|
||||
dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice());
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::deleteCheck(int CheckId) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
dModule->UpdateChek(CheckId);
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getCOMPort()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Num");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setBaudRate(int val)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Speed",val);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getBaudRate()
|
||||
{
|
||||
int n=-1;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Speed");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setCOMPort(int n)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Num",n);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::LoadSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// cPort->port=ini->ReadString("Printer","Port","");
|
||||
// cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0);
|
||||
CheckId=ini->ReadInteger("Printer","CheckCount",0);
|
||||
TestMode=ini->ReadBool("Printer","TestMode",true);
|
||||
HeadLine=ini->ReadString("Printer","HeadLine","");
|
||||
GoodsName=ini->ReadString("Printer","GoodsName","");
|
||||
CasireName=ini->ReadString("Printer","CasireName","");
|
||||
AutoOpenShift=ini->ReadBool("Printer","AutoOpenShift",false);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::SaveSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// ini->WriteString("Printer","Port",cPort->port);
|
||||
// ini->WriteInteger("Printer","BaudRate",cPort->BaudRate);
|
||||
ini->WriteInteger("Printer","CheckCount",CheckId);
|
||||
ini->WriteBool("Printer","TestMode",TestMode);
|
||||
ini->WriteString("Printer","GoodsName",GoodsName);
|
||||
ini->WriteString("Printer","CasireName",CasireName);
|
||||
ini->WriteBool("Printer","AutoOpenShift",AutoOpenShift);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getGoodsPrice()
|
||||
{
|
||||
int sum=0;
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
sum+=((Goods*)FListGoods->Items[i])->price;
|
||||
return sum;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::PrinterOPOS(TComponent* AOwner):FiscalPrinter()
|
||||
{
|
||||
Crashed=false;
|
||||
AutoOpenShift=false;
|
||||
fp=new TOPOSFiscalPrinter(AOwner);
|
||||
fp->DeviceEnabled = False;
|
||||
LoadSetup();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::~PrinterOPOS()
|
||||
{
|
||||
delete FListGoods;
|
||||
delete fp;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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 PrinterOPOS::Start()
|
||||
{
|
||||
if(fp->DeviceEnabled) return true;
|
||||
|
||||
FState = fp->Open(L"MbsFiscalPrinter");
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
FState = fp->ClaimDevice(1000);
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
fp->DeviceEnabled = True;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setHeader(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetHeaderLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getHeader(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","HeadLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setTrailer(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetTrailerLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getTrailer(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","TailLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::PrintLine(WideString line)
|
||||
{
|
||||
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + line + L"\n").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//TODO <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
Currency cur=0;
|
||||
Currency cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
if(check==0) //<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
check=CheckId;
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
if(fp->RecEmpty) throw Exception("<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(!DayOpened()) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//vat=11; sTmp=L"<22><><EFBFBD><EFBFBD><EFBFBD>";
|
||||
//err = fp->DirectIO(4, &vat, &sTmp);
|
||||
//if (err) goto ErrHandler;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TODO!!!
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
|
||||
if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else fp->FiscalReceiptType=FPTR_RT_SERVICE; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//setTrainingMode(true);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>)
|
||||
err = fp->BeginFiscalReceipt(true);
|
||||
if (err) throw Exception(getLastError(&err)); //251
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (TODO <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
VarCyFromR8(goods->price*100,&Amount1);
|
||||
Amount2.int64=0;
|
||||
WideString tmp=goods->name1+L"-/--/-0";
|
||||
err=fp->PrintRecItem(tmp.c_bstr(), Amount1, goods->count, goods->VatInfo, Amount2, L"<22><>");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> PrintRecTotal)
|
||||
err = fp->DirectIO(3, &CheckId, &sTmp);
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//setNalog(1,12);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
Amount2.int64=0;
|
||||
VarCyFromR8(cAllPrice*100,&Amount1);
|
||||
err=fp->PrintRecTotal(Amount1, Amount1, L"na");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
|
||||
err = fp->EndFiscalReceipt(True); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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> (AdditionalTrailer) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(err,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->PrintRecVoid(L"");
|
||||
}
|
||||
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::Cut() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + "75P").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
/*int PrinterOPOS::GetState()
|
||||
{
|
||||
if(!fp->DeviceEnabled)FState=245;
|
||||
//if(FState!=0) return FState;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
// fp->ResultCodeExtended
|
||||
return 0;
|
||||
} */
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::isOk()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(fp->RecEmpty) throw "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
AnsiString str;
|
||||
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool dOpen=DayOpened();
|
||||
if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true;
|
||||
if(!dOpen) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
if(DayOpened())
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime dt=getDateOpenShift();
|
||||
str=getLastError(&err);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
|
||||
dModule->getDate();
|
||||
if(HoursBetween(dt,dModule->date)>24) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> 24 <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
throw Exception("[1]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
} else throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
BSTR bstr=new OLECHAR[50];
|
||||
err=fp->GetDate(&bstr);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime PrinterOPOS::getDateOpenShift()
|
||||
{
|
||||
long err=0;
|
||||
TDateTime date=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
long iTmp;
|
||||
BSTR sTmp=new OLECHAR[50];
|
||||
err=fp->DirectIO(13, &iTmp, &sTmp);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
date=StrToDateTime(sTmp);
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return date;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::GetStatusDescription(long err)
|
||||
{
|
||||
AnsiString str;
|
||||
try
|
||||
{
|
||||
if(err<256)
|
||||
str=kkm_err_msg_ru[err];
|
||||
if(str=="") str="<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::GetStatusDescription) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::getLastError(long* err)
|
||||
{
|
||||
BSTR str=new OLECHAR[255];
|
||||
str=L"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
try
|
||||
{
|
||||
fp->DirectIO(1, err, &str);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getLastError) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if(str==L"") return GetStatusDescription(*err);
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
AnsiString PrinterOPOS::getLastError()
|
||||
{
|
||||
long err;
|
||||
return getLastError(&err);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::PrintZReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
int sum=getDaySum();
|
||||
err=fp->PrintZReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
dModule->addZReport(sum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dModule->addPaper(-142*2);//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
void PrinterOPOS::PrintXReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintXReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::OpenShift()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
//if(CasireName==NULL) CasireName=L" ";
|
||||
BSTR str=CasireName.c_bstr();
|
||||
err=fp->DirectIO (6,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
err=fp->SetVatValue(1,L"120");
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::DayOpened()
|
||||
{
|
||||
return fp->DayOpened;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::setTrainingMode(bool val)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(getTrainingMode()==val) return true;
|
||||
if(val) err=fp->BeginTraining(); else err=fp->EndTraining();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::getTrainingMode()
|
||||
{
|
||||
return fp->TrainingModeActive;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::setNalog(long n,float stavka)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long s=stavka*10;
|
||||
WideString str=AnsiString(s);
|
||||
err = fp->DirectIO(2, &n, &str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
return true;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return true;
|
||||
}
|
||||
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getDaySum()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getAllSum()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=2;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine )
|
||||
{
|
||||
//bool err=0;
|
||||
double cur=0;
|
||||
double cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(sales) bOk = fp->OpenFiscalInv(1,"0000",1);
|
||||
else bOk = fp->OpenBackInv(1,"0000",1);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"<22>",goods->price,goods->count,0,0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
double Change;
|
||||
bOk=fp->Total("","","P",cAllPrice,Change);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
bOk = fp->CloseFiscalInv();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->CancelFiscalInv();
|
||||
}
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::PrintZReport()
|
||||
{
|
||||
bool bOk;
|
||||
try
|
||||
{
|
||||
double Amount=0,CashSum=0,ServIn=0,ServOut=0;
|
||||
std::string ExitCode="";
|
||||
bOk=fp->ParishOrConsumption(Amount,ExitCode,CashSum,ServIn,ServOut);
|
||||
//bool ParishOrConsumption(std::string Oper,std::string Password,double Amount,std::wstring strH,std::wstring strF,std::string& ExitCode,double& CashSum,double& ServIn,double& ServOut); ///<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
bOk=fp->PrintZReport();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
dModule->addZReport(CashSum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
bOk=false;
|
||||
}
|
||||
|
||||
return bOk;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::isOk()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!fp->DiagnosticInfo()) throw Exception(getLastError());
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
933
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~24~
Normal file
933
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~24~
Normal file
@ -0,0 +1,933 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
#pragma hdrstop
|
||||
|
||||
#include "PrinterOPOS.h"
|
||||
#include "OposFiscalPrinter_1_7_Lib_OCX.h"
|
||||
//#include "OposFiscalPrinter_CCO_OCX.h"
|
||||
#include "ud_Module.h"
|
||||
#include <Registry.hpp>
|
||||
#include <Math.h>
|
||||
#include <DateUtils.hpp>
|
||||
#include <Dialogs.hpp>
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#pragma package(smart_init)
|
||||
//---------------------------------------------------------------------------
|
||||
FiscalPrinter* g_printer;
|
||||
//---------------------------------------------------------------------------
|
||||
char * kkm_err_msg_ru[] = {
|
||||
"OK", //0
|
||||
"<22><> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //1 FM ID Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> ", //2 FM Rec Error
|
||||
"Flash Chip <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //3 Flash Chip cant clear
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //4 FM not empty
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //5 FM Data destroyed
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //6 Cmd ignor prn mode
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //7 Oper code is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //8 Doc type is absent
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //9 Ser num CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //10 Password error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>", //11 Data/Time error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>", //12 Factory registration has already pass
|
||||
"<22><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //13 Ser num CR destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //14 Fiscalize has already pass
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //15 Not fisc mode CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //16 Fiscalize Data destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //17 Rewrite is conclude
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //18 Rewrite is destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //19 Shift already open
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //20 Shift not opened
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>", //21 Many goods in receipt
|
||||
"<22><> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //22 EOD data in FM destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //23 Document format error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //24 Text rewrite
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD> <20><><EFBFBD>", //25 Many parameters in document
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //26 Document parameters error
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //27 Parameters value error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //28 Object non-existent
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //29 Document is not finished
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //30 goods/operation description not enough
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //31 Check sum packet
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //32 Prn not ready
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //33 Nested interrupts
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //34 Check Sum Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>", //35 Overflow if FM
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //36 Unknown command
|
||||
"CRC <20><><EFBFBD>", //37 CRC RAM
|
||||
"CRC <20><>", //38 CRC FM
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //39 Data port defective
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //40 Receipts parameters sequence
|
||||
"0xy <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //41 0xy for required properties
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //42 Length request
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //43 number capacity
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //44 Overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //45 Number is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //46 Not response
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //47 Transmission error
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //48 Math overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", //49 Paper out...
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!", //50 CR not ready!!!
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!", //51 Memory error!!
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //52 Printer off
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //53 Insufficient memory
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //54 Lenght number less
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //55 Zero lenght number
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //56 Password lenght less permissible
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //57 Zero lenght password
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //58 Impossible value
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD>", //59 Time-out overdraw
|
||||
"",
|
||||
"<22><>.<2E><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"","","","","","",//69
|
||||
"","","","","","","","","","",//79
|
||||
"","","","","","","","","","",//89
|
||||
"","","","","","","","","","",//99
|
||||
"","","","","","","","","","",//109
|
||||
"","","","","","","","","","",//119
|
||||
"","","","","","","","","","",//129
|
||||
"","","","","","","","","","",//139
|
||||
"","","","","","","","","","",//149
|
||||
"","","","","","","","","","",//159
|
||||
|
||||
"","","","","","","","","","",//169
|
||||
"","","","","","","","","","",//179
|
||||
"","","","","","","","","","",//189
|
||||
"","","","","","","","","","",//199
|
||||
"","","","","","","","","","",//209
|
||||
"","","","","","","","","","",//219
|
||||
"","","","","","","","","","",//229
|
||||
"","","","","","","","","","",//239
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>",//240 Cmd not init
|
||||
"<22><>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//241 Cmd write err
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(DSR=0)",//242 Prn not ready (DSR=0)
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//243 Cmd ok
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//244 Cmd resp timeout
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//245 Prn error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//246 Cmd resp large
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//247 Cmd resp small
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//248
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//249
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//250 Cmd break
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//251
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//252
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//253
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//254
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)!"//255 Previous cmd run
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
bool FiscalPrinter::getNextCheckId(int &id)
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
id=CheckId;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::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> (<28><><EFBFBD><EFBFBD><EFBFBD>)
|
||||
{
|
||||
if(dModule->UserType) //true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice());
|
||||
else
|
||||
dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice());
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::deleteCheck(int CheckId) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
dModule->UpdateChek(CheckId);
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getCOMPort()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Num");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setBaudRate(int val)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Speed",val);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getBaudRate()
|
||||
{
|
||||
int n=-1;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Speed");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setCOMPort(int n)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Num",n);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::LoadSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// cPort->port=ini->ReadString("Printer","Port","");
|
||||
// cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0);
|
||||
CheckId=ini->ReadInteger("Printer","CheckCount",0);
|
||||
TestMode=ini->ReadBool("Printer","TestMode",true);
|
||||
HeadLine=ini->ReadString("Printer","HeadLine","");
|
||||
GoodsName=ini->ReadString("Printer","GoodsName","");
|
||||
CasireName=ini->ReadString("Printer","CasireName","");
|
||||
AutoOpenShift=ini->ReadBool("Printer","AutoOpenShift",false);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::SaveSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// ini->WriteString("Printer","Port",cPort->port);
|
||||
// ini->WriteInteger("Printer","BaudRate",cPort->BaudRate);
|
||||
ini->WriteInteger("Printer","CheckCount",CheckId);
|
||||
ini->WriteBool("Printer","TestMode",TestMode);
|
||||
ini->WriteString("Printer","GoodsName",GoodsName);
|
||||
ini->WriteString("Printer","CasireName",CasireName);
|
||||
ini->WriteBool("Printer","AutoOpenShift",AutoOpenShift);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getGoodsPrice()
|
||||
{
|
||||
int sum=0;
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
sum+=((Goods*)FListGoods->Items[i])->price;
|
||||
return sum;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::PrinterOPOS(TComponent* AOwner):FiscalPrinter()
|
||||
{
|
||||
Crashed=false;
|
||||
AutoOpenShift=false;
|
||||
fp=new TOPOSFiscalPrinter(AOwner);
|
||||
fp->DeviceEnabled = False;
|
||||
LoadSetup();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::~PrinterOPOS()
|
||||
{
|
||||
delete FListGoods;
|
||||
delete fp;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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 PrinterOPOS::Start()
|
||||
{
|
||||
if(fp->DeviceEnabled) return true;
|
||||
|
||||
FState = fp->Open(L"MbsFiscalPrinter");
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
FState = fp->ClaimDevice(1000);
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
fp->DeviceEnabled = True;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setHeader(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetHeaderLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getHeader(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","HeadLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setTrailer(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetTrailerLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getTrailer(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","TailLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::PrintLine(WideString line)
|
||||
{
|
||||
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + line + L"\n").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//TODO <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
Currency cur=0;
|
||||
Currency cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
if(check==0) //<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
check=CheckId;
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
if(fp->RecEmpty) throw Exception("<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(!DayOpened()) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//vat=11; sTmp=L"<22><><EFBFBD><EFBFBD><EFBFBD>";
|
||||
//err = fp->DirectIO(4, &vat, &sTmp);
|
||||
//if (err) goto ErrHandler;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TODO!!!
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
|
||||
if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else fp->FiscalReceiptType=FPTR_RT_SERVICE; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//setTrainingMode(true);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>)
|
||||
err = fp->BeginFiscalReceipt(true);
|
||||
if (err) throw Exception(getLastError(&err)); //251
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (TODO <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
VarCyFromR8(goods->price*100,&Amount1);
|
||||
Amount2.int64=0;
|
||||
WideString tmp=goods->name1+L"-/--/-0";
|
||||
err=fp->PrintRecItem(tmp.c_bstr(), Amount1, goods->count, goods->VatInfo, Amount2, L"<22><>");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> PrintRecTotal)
|
||||
err = fp->DirectIO(3, &CheckId, &sTmp);
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//setNalog(1,12);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
Amount2.int64=0;
|
||||
VarCyFromR8(cAllPrice*100,&Amount1);
|
||||
err=fp->PrintRecTotal(Amount1, Amount1, L"na");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
|
||||
err = fp->EndFiscalReceipt(True); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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> (AdditionalTrailer) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(err,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->PrintRecVoid(L"");
|
||||
}
|
||||
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::Cut() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + "75P").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
/*int PrinterOPOS::GetState()
|
||||
{
|
||||
if(!fp->DeviceEnabled)FState=245;
|
||||
//if(FState!=0) return FState;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
// fp->ResultCodeExtended
|
||||
return 0;
|
||||
} */
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::isOk()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(fp->RecEmpty) throw "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
AnsiString str;
|
||||
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool dOpen=DayOpened();
|
||||
if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true;
|
||||
if(!dOpen) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
if(DayOpened())
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime dt=getDateOpenShift();
|
||||
str=getLastError(&err);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
|
||||
dModule->getDate();
|
||||
if(HoursBetween(dt,dModule->date)>24) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> 24 <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
throw Exception("[1]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
} else throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
BSTR bstr=new OLECHAR[50];
|
||||
err=fp->GetDate(&bstr);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime PrinterOPOS::getDateOpenShift()
|
||||
{
|
||||
long err=0;
|
||||
TDateTime date=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
long iTmp;
|
||||
BSTR sTmp=new OLECHAR[50];
|
||||
err=fp->DirectIO(13, &iTmp, &sTmp);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
date=StrToDateTime(sTmp);
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return date;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::GetStatusDescription(long err)
|
||||
{
|
||||
AnsiString str;
|
||||
try
|
||||
{
|
||||
if(err<256)
|
||||
str=kkm_err_msg_ru[err];
|
||||
if(str=="") str="<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::GetStatusDescription) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::getLastError(long* err)
|
||||
{
|
||||
BSTR str=new OLECHAR[255];
|
||||
str=L"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
try
|
||||
{
|
||||
fp->DirectIO(1, err, &str);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getLastError) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if(str==L"") return GetStatusDescription(*err);
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
AnsiString PrinterOPOS::getLastError()
|
||||
{
|
||||
long err;
|
||||
return getLastError(&err);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::PrintZReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
int sum=getDaySum();
|
||||
err=fp->PrintZReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
dModule->addZReport(sum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dModule->addPaper(-142*2);//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
void PrinterOPOS::PrintXReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintXReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::OpenShift()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
//if(CasireName==NULL) CasireName=L" ";
|
||||
BSTR str=CasireName.c_bstr();
|
||||
err=fp->DirectIO (6,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
err=fp->SetVatValue(1,L"120");
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::DayOpened()
|
||||
{
|
||||
return fp->DayOpened;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::setTrainingMode(bool val)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(getTrainingMode()==val) return true;
|
||||
if(val) err=fp->BeginTraining(); else err=fp->EndTraining();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::getTrainingMode()
|
||||
{
|
||||
return fp->TrainingModeActive;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::setNalog(long n,float stavka)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long s=stavka*10;
|
||||
WideString str=AnsiString(s);
|
||||
err = fp->DirectIO(2, &n, &str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
return true;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return true;
|
||||
}
|
||||
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getDaySum()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getAllSum()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=2;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine )
|
||||
{
|
||||
//bool err=0;
|
||||
double cur=0;
|
||||
double cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(sales) bOk = fp->OpenFiscalInv(1,"0000",1);
|
||||
else bOk = fp->OpenBackInv(1,"0000",1);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"<22>",goods->price,goods->count,0,0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
double Change;
|
||||
bOk=fp->Total("","","P",cAllPrice,Change);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
bOk = fp->CloseFiscalInv();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->CancelFiscalInv();
|
||||
}
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::PrintZReport()
|
||||
{
|
||||
bool bOk;
|
||||
try
|
||||
{
|
||||
double Amount=0,CashSum=0,ServIn=0,ServOut=0;
|
||||
std::string Oper,Password,ExitCode="";
|
||||
bOk=fp->ParishOrConsumption(Oper,Password,Amount,ExitCode,CashSum,ServIn,ServOut);
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
bOk=fp->PrintZReport();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
dModule->addZReport(CashSum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
bOk=false;
|
||||
}
|
||||
|
||||
return bOk;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::isOk()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!fp->DiagnosticInfo()) throw Exception(getLastError());
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
935
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~25~
Normal file
935
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~25~
Normal file
@ -0,0 +1,935 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
#pragma hdrstop
|
||||
|
||||
#include "PrinterOPOS.h"
|
||||
#include "OposFiscalPrinter_1_7_Lib_OCX.h"
|
||||
//#include "OposFiscalPrinter_CCO_OCX.h"
|
||||
#include "ud_Module.h"
|
||||
#include <Registry.hpp>
|
||||
#include <Math.h>
|
||||
#include <DateUtils.hpp>
|
||||
#include <Dialogs.hpp>
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#pragma package(smart_init)
|
||||
//---------------------------------------------------------------------------
|
||||
FiscalPrinter* g_printer;
|
||||
//---------------------------------------------------------------------------
|
||||
char * kkm_err_msg_ru[] = {
|
||||
"OK", //0
|
||||
"<22><> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //1 FM ID Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> ", //2 FM Rec Error
|
||||
"Flash Chip <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //3 Flash Chip cant clear
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //4 FM not empty
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //5 FM Data destroyed
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //6 Cmd ignor prn mode
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //7 Oper code is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //8 Doc type is absent
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //9 Ser num CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //10 Password error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>", //11 Data/Time error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>", //12 Factory registration has already pass
|
||||
"<22><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //13 Ser num CR destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //14 Fiscalize has already pass
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //15 Not fisc mode CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //16 Fiscalize Data destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //17 Rewrite is conclude
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //18 Rewrite is destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //19 Shift already open
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //20 Shift not opened
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>", //21 Many goods in receipt
|
||||
"<22><> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //22 EOD data in FM destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //23 Document format error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //24 Text rewrite
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD> <20><><EFBFBD>", //25 Many parameters in document
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //26 Document parameters error
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //27 Parameters value error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //28 Object non-existent
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //29 Document is not finished
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //30 goods/operation description not enough
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //31 Check sum packet
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //32 Prn not ready
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //33 Nested interrupts
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //34 Check Sum Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>", //35 Overflow if FM
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //36 Unknown command
|
||||
"CRC <20><><EFBFBD>", //37 CRC RAM
|
||||
"CRC <20><>", //38 CRC FM
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //39 Data port defective
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //40 Receipts parameters sequence
|
||||
"0xy <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //41 0xy for required properties
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //42 Length request
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //43 number capacity
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //44 Overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //45 Number is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //46 Not response
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //47 Transmission error
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //48 Math overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", //49 Paper out...
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!", //50 CR not ready!!!
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!", //51 Memory error!!
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //52 Printer off
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //53 Insufficient memory
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //54 Lenght number less
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //55 Zero lenght number
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //56 Password lenght less permissible
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //57 Zero lenght password
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //58 Impossible value
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD>", //59 Time-out overdraw
|
||||
"",
|
||||
"<22><>.<2E><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"","","","","","",//69
|
||||
"","","","","","","","","","",//79
|
||||
"","","","","","","","","","",//89
|
||||
"","","","","","","","","","",//99
|
||||
"","","","","","","","","","",//109
|
||||
"","","","","","","","","","",//119
|
||||
"","","","","","","","","","",//129
|
||||
"","","","","","","","","","",//139
|
||||
"","","","","","","","","","",//149
|
||||
"","","","","","","","","","",//159
|
||||
|
||||
"","","","","","","","","","",//169
|
||||
"","","","","","","","","","",//179
|
||||
"","","","","","","","","","",//189
|
||||
"","","","","","","","","","",//199
|
||||
"","","","","","","","","","",//209
|
||||
"","","","","","","","","","",//219
|
||||
"","","","","","","","","","",//229
|
||||
"","","","","","","","","","",//239
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>",//240 Cmd not init
|
||||
"<22><>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//241 Cmd write err
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(DSR=0)",//242 Prn not ready (DSR=0)
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//243 Cmd ok
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//244 Cmd resp timeout
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//245 Prn error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//246 Cmd resp large
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//247 Cmd resp small
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//248
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//249
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//250 Cmd break
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//251
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//252
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//253
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//254
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)!"//255 Previous cmd run
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
bool FiscalPrinter::getNextCheckId(int &id)
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
id=CheckId;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::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> (<28><><EFBFBD><EFBFBD><EFBFBD>)
|
||||
{
|
||||
if(dModule->UserType) //true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice());
|
||||
else
|
||||
dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice());
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::deleteCheck(int CheckId) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
dModule->UpdateChek(CheckId);
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getCOMPort()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Num");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setBaudRate(int val)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Speed",val);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getBaudRate()
|
||||
{
|
||||
int n=-1;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Speed");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setCOMPort(int n)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Num",n);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::LoadSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// cPort->port=ini->ReadString("Printer","Port","");
|
||||
// cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0);
|
||||
CheckId=ini->ReadInteger("Printer","CheckCount",0);
|
||||
TestMode=ini->ReadBool("Printer","TestMode",true);
|
||||
HeadLine=ini->ReadString("Printer","HeadLine","");
|
||||
GoodsName=ini->ReadString("Printer","GoodsName","");
|
||||
CasireName=ini->ReadString("Printer","CasireName","");
|
||||
AutoOpenShift=ini->ReadBool("Printer","AutoOpenShift",false);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::SaveSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// ini->WriteString("Printer","Port",cPort->port);
|
||||
// ini->WriteInteger("Printer","BaudRate",cPort->BaudRate);
|
||||
ini->WriteInteger("Printer","CheckCount",CheckId);
|
||||
ini->WriteBool("Printer","TestMode",TestMode);
|
||||
ini->WriteString("Printer","GoodsName",GoodsName);
|
||||
ini->WriteString("Printer","CasireName",CasireName);
|
||||
ini->WriteBool("Printer","AutoOpenShift",AutoOpenShift);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getGoodsPrice()
|
||||
{
|
||||
int sum=0;
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
sum+=((Goods*)FListGoods->Items[i])->price;
|
||||
return sum;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::PrinterOPOS(TComponent* AOwner):FiscalPrinter()
|
||||
{
|
||||
Crashed=false;
|
||||
AutoOpenShift=false;
|
||||
fp=new TOPOSFiscalPrinter(AOwner);
|
||||
fp->DeviceEnabled = False;
|
||||
LoadSetup();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::~PrinterOPOS()
|
||||
{
|
||||
delete FListGoods;
|
||||
delete fp;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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 PrinterOPOS::Start()
|
||||
{
|
||||
if(fp->DeviceEnabled) return true;
|
||||
|
||||
FState = fp->Open(L"MbsFiscalPrinter");
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
FState = fp->ClaimDevice(1000);
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
fp->DeviceEnabled = True;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setHeader(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetHeaderLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getHeader(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","HeadLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setTrailer(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetTrailerLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getTrailer(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","TailLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::PrintLine(WideString line)
|
||||
{
|
||||
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + line + L"\n").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//TODO <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
Currency cur=0;
|
||||
Currency cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
if(check==0) //<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
check=CheckId;
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
if(fp->RecEmpty) throw Exception("<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(!DayOpened()) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//vat=11; sTmp=L"<22><><EFBFBD><EFBFBD><EFBFBD>";
|
||||
//err = fp->DirectIO(4, &vat, &sTmp);
|
||||
//if (err) goto ErrHandler;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TODO!!!
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
|
||||
if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else fp->FiscalReceiptType=FPTR_RT_SERVICE; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//setTrainingMode(true);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>)
|
||||
err = fp->BeginFiscalReceipt(true);
|
||||
if (err) throw Exception(getLastError(&err)); //251
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (TODO <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
VarCyFromR8(goods->price*100,&Amount1);
|
||||
Amount2.int64=0;
|
||||
WideString tmp=goods->name1+L"-/--/-0";
|
||||
err=fp->PrintRecItem(tmp.c_bstr(), Amount1, goods->count, goods->VatInfo, Amount2, L"<22><>");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> PrintRecTotal)
|
||||
err = fp->DirectIO(3, &CheckId, &sTmp);
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//setNalog(1,12);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
Amount2.int64=0;
|
||||
VarCyFromR8(cAllPrice*100,&Amount1);
|
||||
err=fp->PrintRecTotal(Amount1, Amount1, L"na");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
|
||||
err = fp->EndFiscalReceipt(True); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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> (AdditionalTrailer) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(err,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->PrintRecVoid(L"");
|
||||
}
|
||||
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::Cut() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + "75P").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
/*int PrinterOPOS::GetState()
|
||||
{
|
||||
if(!fp->DeviceEnabled)FState=245;
|
||||
//if(FState!=0) return FState;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
// fp->ResultCodeExtended
|
||||
return 0;
|
||||
} */
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::isOk()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(fp->RecEmpty) throw "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
AnsiString str;
|
||||
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool dOpen=DayOpened();
|
||||
if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true;
|
||||
if(!dOpen) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
if(DayOpened())
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime dt=getDateOpenShift();
|
||||
str=getLastError(&err);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
|
||||
dModule->getDate();
|
||||
if(HoursBetween(dt,dModule->date)>24) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> 24 <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
throw Exception("[1]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
} else throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
BSTR bstr=new OLECHAR[50];
|
||||
err=fp->GetDate(&bstr);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime PrinterOPOS::getDateOpenShift()
|
||||
{
|
||||
long err=0;
|
||||
TDateTime date=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
long iTmp;
|
||||
BSTR sTmp=new OLECHAR[50];
|
||||
err=fp->DirectIO(13, &iTmp, &sTmp);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
date=StrToDateTime(sTmp);
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return date;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::GetStatusDescription(long err)
|
||||
{
|
||||
AnsiString str;
|
||||
try
|
||||
{
|
||||
if(err<256)
|
||||
str=kkm_err_msg_ru[err];
|
||||
if(str=="") str="<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::GetStatusDescription) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::getLastError(long* err)
|
||||
{
|
||||
BSTR str=new OLECHAR[255];
|
||||
str=L"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
try
|
||||
{
|
||||
fp->DirectIO(1, err, &str);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getLastError) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if(str==L"") return GetStatusDescription(*err);
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
AnsiString PrinterOPOS::getLastError()
|
||||
{
|
||||
long err;
|
||||
return getLastError(&err);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::PrintZReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
int sum=getDaySum();
|
||||
err=fp->PrintZReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
dModule->addZReport(sum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dModule->addPaper(-142*2);//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
void PrinterOPOS::PrintXReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintXReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::OpenShift()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
//if(CasireName==NULL) CasireName=L" ";
|
||||
BSTR str=CasireName.c_bstr();
|
||||
err=fp->DirectIO (6,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
err=fp->SetVatValue(1,L"120");
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::DayOpened()
|
||||
{
|
||||
return fp->DayOpened;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::setTrainingMode(bool val)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(getTrainingMode()==val) return true;
|
||||
if(val) err=fp->BeginTraining(); else err=fp->EndTraining();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::getTrainingMode()
|
||||
{
|
||||
return fp->TrainingModeActive;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::setNalog(long n,float stavka)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long s=stavka*10;
|
||||
WideString str=AnsiString(s);
|
||||
err = fp->DirectIO(2, &n, &str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
return true;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return true;
|
||||
}
|
||||
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getDaySum()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getAllSum()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=2;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine )
|
||||
{
|
||||
//bool err=0;
|
||||
double cur=0;
|
||||
double cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(sales) bOk = fp->OpenFiscalInv(1,"0000",1);
|
||||
else bOk = fp->OpenBackInv(1,"0000",1);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"<22>",goods->price,goods->count,0,0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
double Change;
|
||||
bOk=fp->Total("","","P",cAllPrice,Change);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
bOk = fp->CloseFiscalInv();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->CancelFiscalInv();
|
||||
}
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::PrintZReport()
|
||||
{
|
||||
bool bOk;
|
||||
try
|
||||
{
|
||||
double Amount=0,CashSum=0,ServIn=0,ServOut=0;
|
||||
std::string Oper,Password,ExitCode="";
|
||||
std::wstring strH,strF;
|
||||
bOk=fp->ParishOrConsumption(Oper,Password,Amount,strH,strF,ExitCode,CashSum,ServIn,ServOut);
|
||||
//bool ParishOrConsumption(std::string Oper,std::string Password,double Amount,std::wstring strH,std::wstring strF,std::string& ExitCode,double& CashSum,double& ServIn,double& ServOut); ///<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
bOk=fp->PrintZReport();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
dModule->addZReport(CashSum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
bOk=false;
|
||||
}
|
||||
|
||||
return bOk;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::isOk()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!fp->DiagnosticInfo()) throw Exception(getLastError());
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
934
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~26~
Normal file
934
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~26~
Normal file
@ -0,0 +1,934 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
#pragma hdrstop
|
||||
|
||||
#include "PrinterOPOS.h"
|
||||
#include "OposFiscalPrinter_1_7_Lib_OCX.h"
|
||||
//#include "OposFiscalPrinter_CCO_OCX.h"
|
||||
#include "ud_Module.h"
|
||||
#include <Registry.hpp>
|
||||
#include <Math.h>
|
||||
#include <DateUtils.hpp>
|
||||
#include <Dialogs.hpp>
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#pragma package(smart_init)
|
||||
//---------------------------------------------------------------------------
|
||||
FiscalPrinter* g_printer;
|
||||
//---------------------------------------------------------------------------
|
||||
char * kkm_err_msg_ru[] = {
|
||||
"OK", //0
|
||||
"<22><> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //1 FM ID Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> ", //2 FM Rec Error
|
||||
"Flash Chip <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //3 Flash Chip cant clear
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //4 FM not empty
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //5 FM Data destroyed
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //6 Cmd ignor prn mode
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //7 Oper code is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //8 Doc type is absent
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //9 Ser num CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //10 Password error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>", //11 Data/Time error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>", //12 Factory registration has already pass
|
||||
"<22><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //13 Ser num CR destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //14 Fiscalize has already pass
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //15 Not fisc mode CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //16 Fiscalize Data destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //17 Rewrite is conclude
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //18 Rewrite is destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //19 Shift already open
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //20 Shift not opened
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>", //21 Many goods in receipt
|
||||
"<22><> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //22 EOD data in FM destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //23 Document format error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //24 Text rewrite
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD> <20><><EFBFBD>", //25 Many parameters in document
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //26 Document parameters error
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //27 Parameters value error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //28 Object non-existent
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //29 Document is not finished
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //30 goods/operation description not enough
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //31 Check sum packet
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //32 Prn not ready
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //33 Nested interrupts
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //34 Check Sum Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>", //35 Overflow if FM
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //36 Unknown command
|
||||
"CRC <20><><EFBFBD>", //37 CRC RAM
|
||||
"CRC <20><>", //38 CRC FM
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //39 Data port defective
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //40 Receipts parameters sequence
|
||||
"0xy <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //41 0xy for required properties
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //42 Length request
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //43 number capacity
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //44 Overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //45 Number is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //46 Not response
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //47 Transmission error
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //48 Math overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", //49 Paper out...
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!", //50 CR not ready!!!
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!", //51 Memory error!!
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //52 Printer off
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //53 Insufficient memory
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //54 Lenght number less
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //55 Zero lenght number
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //56 Password lenght less permissible
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //57 Zero lenght password
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //58 Impossible value
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD>", //59 Time-out overdraw
|
||||
"",
|
||||
"<22><>.<2E><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"","","","","","",//69
|
||||
"","","","","","","","","","",//79
|
||||
"","","","","","","","","","",//89
|
||||
"","","","","","","","","","",//99
|
||||
"","","","","","","","","","",//109
|
||||
"","","","","","","","","","",//119
|
||||
"","","","","","","","","","",//129
|
||||
"","","","","","","","","","",//139
|
||||
"","","","","","","","","","",//149
|
||||
"","","","","","","","","","",//159
|
||||
|
||||
"","","","","","","","","","",//169
|
||||
"","","","","","","","","","",//179
|
||||
"","","","","","","","","","",//189
|
||||
"","","","","","","","","","",//199
|
||||
"","","","","","","","","","",//209
|
||||
"","","","","","","","","","",//219
|
||||
"","","","","","","","","","",//229
|
||||
"","","","","","","","","","",//239
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>",//240 Cmd not init
|
||||
"<22><>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//241 Cmd write err
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(DSR=0)",//242 Prn not ready (DSR=0)
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//243 Cmd ok
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//244 Cmd resp timeout
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//245 Prn error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//246 Cmd resp large
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//247 Cmd resp small
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//248
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//249
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//250 Cmd break
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//251
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//252
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//253
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//254
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)!"//255 Previous cmd run
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
bool FiscalPrinter::getNextCheckId(int &id)
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
id=CheckId;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::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> (<28><><EFBFBD><EFBFBD><EFBFBD>)
|
||||
{
|
||||
if(dModule->UserType) //true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice());
|
||||
else
|
||||
dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice());
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::deleteCheck(int CheckId) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
dModule->UpdateChek(CheckId);
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getCOMPort()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Num");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setBaudRate(int val)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Speed",val);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getBaudRate()
|
||||
{
|
||||
int n=-1;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Speed");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setCOMPort(int n)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Num",n);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::LoadSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// cPort->port=ini->ReadString("Printer","Port","");
|
||||
// cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0);
|
||||
CheckId=ini->ReadInteger("Printer","CheckCount",0);
|
||||
TestMode=ini->ReadBool("Printer","TestMode",true);
|
||||
HeadLine=ini->ReadString("Printer","HeadLine","");
|
||||
GoodsName=ini->ReadString("Printer","GoodsName","");
|
||||
CasireName=ini->ReadString("Printer","CasireName","");
|
||||
AutoOpenShift=ini->ReadBool("Printer","AutoOpenShift",false);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::SaveSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// ini->WriteString("Printer","Port",cPort->port);
|
||||
// ini->WriteInteger("Printer","BaudRate",cPort->BaudRate);
|
||||
ini->WriteInteger("Printer","CheckCount",CheckId);
|
||||
ini->WriteBool("Printer","TestMode",TestMode);
|
||||
ini->WriteString("Printer","GoodsName",GoodsName);
|
||||
ini->WriteString("Printer","CasireName",CasireName);
|
||||
ini->WriteBool("Printer","AutoOpenShift",AutoOpenShift);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getGoodsPrice()
|
||||
{
|
||||
int sum=0;
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
sum+=((Goods*)FListGoods->Items[i])->price;
|
||||
return sum;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::PrinterOPOS(TComponent* AOwner):FiscalPrinter()
|
||||
{
|
||||
Crashed=false;
|
||||
AutoOpenShift=false;
|
||||
fp=new TOPOSFiscalPrinter(AOwner);
|
||||
fp->DeviceEnabled = False;
|
||||
LoadSetup();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::~PrinterOPOS()
|
||||
{
|
||||
delete FListGoods;
|
||||
delete fp;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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 PrinterOPOS::Start()
|
||||
{
|
||||
if(fp->DeviceEnabled) return true;
|
||||
|
||||
FState = fp->Open(L"MbsFiscalPrinter");
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
FState = fp->ClaimDevice(1000);
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
fp->DeviceEnabled = True;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setHeader(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetHeaderLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getHeader(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","HeadLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setTrailer(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetTrailerLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getTrailer(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","TailLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::PrintLine(WideString line)
|
||||
{
|
||||
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + line + L"\n").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//TODO <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
Currency cur=0;
|
||||
Currency cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
if(check==0) //<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
check=CheckId;
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
if(fp->RecEmpty) throw Exception("<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(!DayOpened()) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//vat=11; sTmp=L"<22><><EFBFBD><EFBFBD><EFBFBD>";
|
||||
//err = fp->DirectIO(4, &vat, &sTmp);
|
||||
//if (err) goto ErrHandler;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TODO!!!
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
|
||||
if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else fp->FiscalReceiptType=FPTR_RT_SERVICE; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//setTrainingMode(true);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>)
|
||||
err = fp->BeginFiscalReceipt(true);
|
||||
if (err) throw Exception(getLastError(&err)); //251
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (TODO <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
VarCyFromR8(goods->price*100,&Amount1);
|
||||
Amount2.int64=0;
|
||||
WideString tmp=goods->name1+L"-/--/-0";
|
||||
err=fp->PrintRecItem(tmp.c_bstr(), Amount1, goods->count, goods->VatInfo, Amount2, L"<22><>");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> PrintRecTotal)
|
||||
err = fp->DirectIO(3, &CheckId, &sTmp);
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//setNalog(1,12);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
Amount2.int64=0;
|
||||
VarCyFromR8(cAllPrice*100,&Amount1);
|
||||
err=fp->PrintRecTotal(Amount1, Amount1, L"na");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
|
||||
err = fp->EndFiscalReceipt(True); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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> (AdditionalTrailer) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(err,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->PrintRecVoid(L"");
|
||||
}
|
||||
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::Cut() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + "75P").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
/*int PrinterOPOS::GetState()
|
||||
{
|
||||
if(!fp->DeviceEnabled)FState=245;
|
||||
//if(FState!=0) return FState;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
// fp->ResultCodeExtended
|
||||
return 0;
|
||||
} */
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::isOk()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(fp->RecEmpty) throw "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
AnsiString str;
|
||||
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool dOpen=DayOpened();
|
||||
if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true;
|
||||
if(!dOpen) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
if(DayOpened())
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime dt=getDateOpenShift();
|
||||
str=getLastError(&err);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
|
||||
dModule->getDate();
|
||||
if(HoursBetween(dt,dModule->date)>24) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> 24 <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
throw Exception("[1]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
} else throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
BSTR bstr=new OLECHAR[50];
|
||||
err=fp->GetDate(&bstr);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime PrinterOPOS::getDateOpenShift()
|
||||
{
|
||||
long err=0;
|
||||
TDateTime date=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
long iTmp;
|
||||
BSTR sTmp=new OLECHAR[50];
|
||||
err=fp->DirectIO(13, &iTmp, &sTmp);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
date=StrToDateTime(sTmp);
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return date;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::GetStatusDescription(long err)
|
||||
{
|
||||
AnsiString str;
|
||||
try
|
||||
{
|
||||
if(err<256)
|
||||
str=kkm_err_msg_ru[err];
|
||||
if(str=="") str="<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::GetStatusDescription) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::getLastError(long* err)
|
||||
{
|
||||
BSTR str=new OLECHAR[255];
|
||||
str=L"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
try
|
||||
{
|
||||
fp->DirectIO(1, err, &str);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getLastError) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if(str==L"") return GetStatusDescription(*err);
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
AnsiString PrinterOPOS::getLastError()
|
||||
{
|
||||
long err;
|
||||
return getLastError(&err);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::PrintZReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
int sum=getDaySum();
|
||||
err=fp->PrintZReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
dModule->addZReport(sum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dModule->addPaper(-142*2);//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
void PrinterOPOS::PrintXReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintXReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::OpenShift()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
//if(CasireName==NULL) CasireName=L" ";
|
||||
BSTR str=CasireName.c_bstr();
|
||||
err=fp->DirectIO (6,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
err=fp->SetVatValue(1,L"120");
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::DayOpened()
|
||||
{
|
||||
return fp->DayOpened;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::setTrainingMode(bool val)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(getTrainingMode()==val) return true;
|
||||
if(val) err=fp->BeginTraining(); else err=fp->EndTraining();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::getTrainingMode()
|
||||
{
|
||||
return fp->TrainingModeActive;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::setNalog(long n,float stavka)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long s=stavka*10;
|
||||
WideString str=AnsiString(s);
|
||||
err = fp->DirectIO(2, &n, &str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
return true;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return true;
|
||||
}
|
||||
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getDaySum()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getAllSum()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=2;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine )
|
||||
{
|
||||
//bool err=0;
|
||||
double cur=0;
|
||||
double cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(sales) bOk = fp->OpenFiscalInv(1,"0000",1);
|
||||
else bOk = fp->OpenBackInv(1,"0000",1);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"<22>",goods->price,goods->count,0,0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
double Change;
|
||||
bOk=fp->Total("","","P",cAllPrice,Change);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
bOk = fp->CloseFiscalInv();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->CancelFiscalInv();
|
||||
}
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::PrintZReport()
|
||||
{
|
||||
bool bOk;
|
||||
try
|
||||
{
|
||||
double Amount=0,CashSum=0,ServIn=0,ServOut=0;
|
||||
std::string Oper,Password,ExitCode="";
|
||||
std::wstring strH,strF;
|
||||
bOk=fp->ParishOrConsumption(Oper,Password,Amount,strH,strF,ExitCode,CashSum,ServIn,ServOut);
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
bOk=fp->PrintZReport();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
dModule->addZReport(CashSum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
bOk=false;
|
||||
}
|
||||
|
||||
return bOk;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::isOk()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!fp->DiagnosticInfo()) throw Exception(getLastError());
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
934
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~27~
Normal file
934
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~27~
Normal file
@ -0,0 +1,934 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
#pragma hdrstop
|
||||
|
||||
#include "PrinterOPOS.h"
|
||||
#include "OposFiscalPrinter_1_7_Lib_OCX.h"
|
||||
//#include "OposFiscalPrinter_CCO_OCX.h"
|
||||
#include "ud_Module.h"
|
||||
#include <Registry.hpp>
|
||||
#include <Math.h>
|
||||
#include <DateUtils.hpp>
|
||||
#include <Dialogs.hpp>
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#pragma package(smart_init)
|
||||
//---------------------------------------------------------------------------
|
||||
FiscalPrinter* g_printer;
|
||||
//---------------------------------------------------------------------------
|
||||
char * kkm_err_msg_ru[] = {
|
||||
"OK", //0
|
||||
"<22><> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //1 FM ID Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> ", //2 FM Rec Error
|
||||
"Flash Chip <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //3 Flash Chip cant clear
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //4 FM not empty
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //5 FM Data destroyed
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //6 Cmd ignor prn mode
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //7 Oper code is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //8 Doc type is absent
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //9 Ser num CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //10 Password error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>", //11 Data/Time error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>", //12 Factory registration has already pass
|
||||
"<22><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //13 Ser num CR destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //14 Fiscalize has already pass
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //15 Not fisc mode CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //16 Fiscalize Data destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //17 Rewrite is conclude
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //18 Rewrite is destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //19 Shift already open
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //20 Shift not opened
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>", //21 Many goods in receipt
|
||||
"<22><> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //22 EOD data in FM destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //23 Document format error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //24 Text rewrite
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD> <20><><EFBFBD>", //25 Many parameters in document
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //26 Document parameters error
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //27 Parameters value error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //28 Object non-existent
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //29 Document is not finished
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //30 goods/operation description not enough
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //31 Check sum packet
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //32 Prn not ready
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //33 Nested interrupts
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //34 Check Sum Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>", //35 Overflow if FM
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //36 Unknown command
|
||||
"CRC <20><><EFBFBD>", //37 CRC RAM
|
||||
"CRC <20><>", //38 CRC FM
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //39 Data port defective
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //40 Receipts parameters sequence
|
||||
"0xy <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //41 0xy for required properties
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //42 Length request
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //43 number capacity
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //44 Overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //45 Number is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //46 Not response
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //47 Transmission error
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //48 Math overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", //49 Paper out...
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!", //50 CR not ready!!!
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!", //51 Memory error!!
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //52 Printer off
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //53 Insufficient memory
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //54 Lenght number less
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //55 Zero lenght number
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //56 Password lenght less permissible
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //57 Zero lenght password
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //58 Impossible value
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD>", //59 Time-out overdraw
|
||||
"",
|
||||
"<22><>.<2E><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"","","","","","",//69
|
||||
"","","","","","","","","","",//79
|
||||
"","","","","","","","","","",//89
|
||||
"","","","","","","","","","",//99
|
||||
"","","","","","","","","","",//109
|
||||
"","","","","","","","","","",//119
|
||||
"","","","","","","","","","",//129
|
||||
"","","","","","","","","","",//139
|
||||
"","","","","","","","","","",//149
|
||||
"","","","","","","","","","",//159
|
||||
|
||||
"","","","","","","","","","",//169
|
||||
"","","","","","","","","","",//179
|
||||
"","","","","","","","","","",//189
|
||||
"","","","","","","","","","",//199
|
||||
"","","","","","","","","","",//209
|
||||
"","","","","","","","","","",//219
|
||||
"","","","","","","","","","",//229
|
||||
"","","","","","","","","","",//239
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>",//240 Cmd not init
|
||||
"<22><>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//241 Cmd write err
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(DSR=0)",//242 Prn not ready (DSR=0)
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//243 Cmd ok
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//244 Cmd resp timeout
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//245 Prn error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//246 Cmd resp large
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//247 Cmd resp small
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//248
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//249
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//250 Cmd break
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//251
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//252
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//253
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//254
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)!"//255 Previous cmd run
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
bool FiscalPrinter::getNextCheckId(int &id)
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
id=CheckId;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::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> (<28><><EFBFBD><EFBFBD><EFBFBD>)
|
||||
{
|
||||
if(dModule->UserType) //true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice());
|
||||
else
|
||||
dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice());
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::deleteCheck(int CheckId) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
dModule->UpdateChek(CheckId);
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getCOMPort()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Num");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setBaudRate(int val)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Speed",val);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getBaudRate()
|
||||
{
|
||||
int n=-1;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Speed");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setCOMPort(int n)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Num",n);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::LoadSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// cPort->port=ini->ReadString("Printer","Port","");
|
||||
// cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0);
|
||||
CheckId=ini->ReadInteger("Printer","CheckCount",0);
|
||||
TestMode=ini->ReadBool("Printer","TestMode",true);
|
||||
HeadLine=ini->ReadString("Printer","HeadLine","");
|
||||
GoodsName=ini->ReadString("Printer","GoodsName","");
|
||||
CasireName=ini->ReadString("Printer","CasireName","");
|
||||
AutoOpenShift=ini->ReadBool("Printer","AutoOpenShift",false);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::SaveSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
ini->WriteString("Printer","Port",cPort->port); //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
ini->WriteInteger("Printer","BaudRate",cPort->BaudRate); //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
ini->WriteInteger("Printer","CheckCount",CheckId);
|
||||
ini->WriteBool("Printer","TestMode",TestMode);
|
||||
ini->WriteString("Printer","GoodsName",GoodsName);
|
||||
ini->WriteString("Printer","CasireName",CasireName);
|
||||
ini->WriteBool("Printer","AutoOpenShift",AutoOpenShift);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getGoodsPrice()
|
||||
{
|
||||
int sum=0;
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
sum+=((Goods*)FListGoods->Items[i])->price;
|
||||
return sum;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::PrinterOPOS(TComponent* AOwner):FiscalPrinter()
|
||||
{
|
||||
Crashed=false;
|
||||
AutoOpenShift=false;
|
||||
fp=new TOPOSFiscalPrinter(AOwner);
|
||||
fp->DeviceEnabled = False;
|
||||
LoadSetup();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::~PrinterOPOS()
|
||||
{
|
||||
delete FListGoods;
|
||||
delete fp;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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 PrinterOPOS::Start()
|
||||
{
|
||||
if(fp->DeviceEnabled) return true;
|
||||
|
||||
FState = fp->Open(L"MbsFiscalPrinter");
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
FState = fp->ClaimDevice(1000);
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
fp->DeviceEnabled = True;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setHeader(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetHeaderLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getHeader(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","HeadLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setTrailer(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetTrailerLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getTrailer(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","TailLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::PrintLine(WideString line)
|
||||
{
|
||||
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + line + L"\n").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//TODO <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
Currency cur=0;
|
||||
Currency cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
if(check==0) //<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
check=CheckId;
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
if(fp->RecEmpty) throw Exception("<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(!DayOpened()) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//vat=11; sTmp=L"<22><><EFBFBD><EFBFBD><EFBFBD>";
|
||||
//err = fp->DirectIO(4, &vat, &sTmp);
|
||||
//if (err) goto ErrHandler;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TODO!!!
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
|
||||
if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else fp->FiscalReceiptType=FPTR_RT_SERVICE; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//setTrainingMode(true);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>)
|
||||
err = fp->BeginFiscalReceipt(true);
|
||||
if (err) throw Exception(getLastError(&err)); //251
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (TODO <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
VarCyFromR8(goods->price*100,&Amount1);
|
||||
Amount2.int64=0;
|
||||
WideString tmp=goods->name1+L"-/--/-0";
|
||||
err=fp->PrintRecItem(tmp.c_bstr(), Amount1, goods->count, goods->VatInfo, Amount2, L"<22><>");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> PrintRecTotal)
|
||||
err = fp->DirectIO(3, &CheckId, &sTmp);
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//setNalog(1,12);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
Amount2.int64=0;
|
||||
VarCyFromR8(cAllPrice*100,&Amount1);
|
||||
err=fp->PrintRecTotal(Amount1, Amount1, L"na");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
|
||||
err = fp->EndFiscalReceipt(True); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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> (AdditionalTrailer) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(err,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->PrintRecVoid(L"");
|
||||
}
|
||||
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::Cut() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + "75P").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
/*int PrinterOPOS::GetState()
|
||||
{
|
||||
if(!fp->DeviceEnabled)FState=245;
|
||||
//if(FState!=0) return FState;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
// fp->ResultCodeExtended
|
||||
return 0;
|
||||
} */
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::isOk()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(fp->RecEmpty) throw "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
AnsiString str;
|
||||
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool dOpen=DayOpened();
|
||||
if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true;
|
||||
if(!dOpen) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
if(DayOpened())
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime dt=getDateOpenShift();
|
||||
str=getLastError(&err);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
|
||||
dModule->getDate();
|
||||
if(HoursBetween(dt,dModule->date)>24) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> 24 <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
throw Exception("[1]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
} else throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
BSTR bstr=new OLECHAR[50];
|
||||
err=fp->GetDate(&bstr);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime PrinterOPOS::getDateOpenShift()
|
||||
{
|
||||
long err=0;
|
||||
TDateTime date=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
long iTmp;
|
||||
BSTR sTmp=new OLECHAR[50];
|
||||
err=fp->DirectIO(13, &iTmp, &sTmp);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
date=StrToDateTime(sTmp);
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return date;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::GetStatusDescription(long err)
|
||||
{
|
||||
AnsiString str;
|
||||
try
|
||||
{
|
||||
if(err<256)
|
||||
str=kkm_err_msg_ru[err];
|
||||
if(str=="") str="<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::GetStatusDescription) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::getLastError(long* err)
|
||||
{
|
||||
BSTR str=new OLECHAR[255];
|
||||
str=L"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
try
|
||||
{
|
||||
fp->DirectIO(1, err, &str);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getLastError) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if(str==L"") return GetStatusDescription(*err);
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
AnsiString PrinterOPOS::getLastError()
|
||||
{
|
||||
long err;
|
||||
return getLastError(&err);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::PrintZReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
int sum=getDaySum();
|
||||
err=fp->PrintZReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
dModule->addZReport(sum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dModule->addPaper(-142*2);//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
void PrinterOPOS::PrintXReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintXReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::OpenShift()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
//if(CasireName==NULL) CasireName=L" ";
|
||||
BSTR str=CasireName.c_bstr();
|
||||
err=fp->DirectIO (6,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
err=fp->SetVatValue(1,L"120");
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::DayOpened()
|
||||
{
|
||||
return fp->DayOpened;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::setTrainingMode(bool val)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(getTrainingMode()==val) return true;
|
||||
if(val) err=fp->BeginTraining(); else err=fp->EndTraining();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::getTrainingMode()
|
||||
{
|
||||
return fp->TrainingModeActive;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::setNalog(long n,float stavka)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long s=stavka*10;
|
||||
WideString str=AnsiString(s);
|
||||
err = fp->DirectIO(2, &n, &str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
return true;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return true;
|
||||
}
|
||||
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getDaySum()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getAllSum()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=2;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine )
|
||||
{
|
||||
//bool err=0;
|
||||
double cur=0;
|
||||
double cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(sales) bOk = fp->OpenFiscalInv(1,"0000",1);
|
||||
else bOk = fp->OpenBackInv(1,"0000",1);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"<22>",goods->price,goods->count,0,0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
double Change;
|
||||
bOk=fp->Total("","","P",cAllPrice,Change);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
bOk = fp->CloseFiscalInv();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->CancelFiscalInv();
|
||||
}
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::PrintZReport()
|
||||
{
|
||||
bool bOk;
|
||||
try
|
||||
{
|
||||
double Amount=0,CashSum=0,ServIn=0,ServOut=0;
|
||||
std::string Oper,Password,ExitCode="";
|
||||
std::wstring strH,strF;
|
||||
bOk=fp->ParishOrConsumption(Oper,Password,Amount,strH,strF,ExitCode,CashSum,ServIn,ServOut);
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
bOk=fp->PrintZReport();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
dModule->addZReport(CashSum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
bOk=false;
|
||||
}
|
||||
|
||||
return bOk;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::isOk()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!fp->DiagnosticInfo()) throw Exception(getLastError());
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
934
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~28~
Normal file
934
devices/Printers/Mebius/__history/PrinterOPOS.cpp.~28~
Normal file
@ -0,0 +1,934 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
#pragma hdrstop
|
||||
|
||||
#include "PrinterOPOS.h"
|
||||
#include "OposFiscalPrinter_1_7_Lib_OCX.h"
|
||||
//#include "OposFiscalPrinter_CCO_OCX.h"
|
||||
#include "ud_Module.h"
|
||||
#include <Registry.hpp>
|
||||
#include <Math.h>
|
||||
#include <DateUtils.hpp>
|
||||
#include <Dialogs.hpp>
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#pragma package(smart_init)
|
||||
//---------------------------------------------------------------------------
|
||||
FiscalPrinter* g_printer;
|
||||
//---------------------------------------------------------------------------
|
||||
char * kkm_err_msg_ru[] = {
|
||||
"OK", //0
|
||||
"<22><> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //1 FM ID Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> ", //2 FM Rec Error
|
||||
"Flash Chip <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //3 Flash Chip cant clear
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //4 FM not empty
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //5 FM Data destroyed
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //6 Cmd ignor prn mode
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //7 Oper code is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //8 Doc type is absent
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>", //9 Ser num CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //10 Password error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>", //11 Data/Time error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>", //12 Factory registration has already pass
|
||||
"<22><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //13 Ser num CR destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //14 Fiscalize has already pass
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //15 Not fisc mode CR
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //16 Fiscalize Data destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //17 Rewrite is conclude
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //18 Rewrite is destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //19 Shift already open
|
||||
"<22><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //20 Shift not opened
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>", //21 Many goods in receipt
|
||||
"<22><> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //22 EOD data in FM destroyed
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //23 Document format error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //24 Text rewrite
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD> <20><><EFBFBD>", //25 Many parameters in document
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //26 Document parameters error
|
||||
"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><>", //27 Parameters value error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //28 Object non-existent
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //29 Document is not finished
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //30 goods/operation description not enough
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //31 Check sum packet
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>", //32 Prn not ready
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //33 Nested interrupts
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //34 Check Sum Error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>", //35 Overflow if FM
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //36 Unknown command
|
||||
"CRC <20><><EFBFBD>", //37 CRC RAM
|
||||
"CRC <20><>", //38 CRC FM
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //39 Data port defective
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //40 Receipts parameters sequence
|
||||
"0xy <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", //41 0xy for required properties
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //42 Length request
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //43 number capacity
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //44 Overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>", //45 Number is absent
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //46 Not response
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //47 Transmission error
|
||||
"<22><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //48 Math overflow
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", //49 Paper out...
|
||||
"<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!", //50 CR not ready!!!
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!", //51 Memory error!!
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //52 Printer off
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //53 Insufficient memory
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //54 Lenght number less
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //55 Zero lenght number
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //56 Password lenght less permissible
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //57 Zero lenght password
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", //58 Impossible value
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD>", //59 Time-out overdraw
|
||||
"",
|
||||
"<22><>.<2E><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"","","","","","",//69
|
||||
"","","","","","","","","","",//79
|
||||
"","","","","","","","","","",//89
|
||||
"","","","","","","","","","",//99
|
||||
"","","","","","","","","","",//109
|
||||
"","","","","","","","","","",//119
|
||||
"","","","","","","","","","",//129
|
||||
"","","","","","","","","","",//139
|
||||
"","","","","","","","","","",//149
|
||||
"","","","","","","","","","",//159
|
||||
|
||||
"","","","","","","","","","",//169
|
||||
"","","","","","","","","","",//179
|
||||
"","","","","","","","","","",//189
|
||||
"","","","","","","","","","",//199
|
||||
"","","","","","","","","","",//209
|
||||
"","","","","","","","","","",//219
|
||||
"","","","","","","","","","",//229
|
||||
"","","","","","","","","","",//239
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>",//240 Cmd not init
|
||||
"<22><>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//241 Cmd write err
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(DSR=0)",//242 Prn not ready (DSR=0)
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//243 Cmd ok
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//244 Cmd resp timeout
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//245 Prn error
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//246 Cmd resp large
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//247 Cmd resp small
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//248
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//249
|
||||
"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//250 Cmd break
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//251
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//252
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//253
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",//254
|
||||
"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)!"//255 Previous cmd run
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
bool FiscalPrinter::getNextCheckId(int &id)
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
id=CheckId;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::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> (<28><><EFBFBD><EFBFBD><EFBFBD>)
|
||||
{
|
||||
if(dModule->UserType) //true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice());
|
||||
else
|
||||
dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice());
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::deleteCheck(int CheckId) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
dModule->UpdateChek(CheckId);
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getCOMPort()
|
||||
{
|
||||
int n=-1;
|
||||
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Num");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setBaudRate(int val)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Speed",val);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getBaudRate()
|
||||
{
|
||||
int n=-1;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKeyReadOnly("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter"))
|
||||
{
|
||||
n = reg->ReadInteger("COM Speed");
|
||||
}
|
||||
delete reg;
|
||||
return n;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinter::setCOMPort(int n)
|
||||
{
|
||||
bool result;
|
||||
TRegistry* reg=new TRegistry;
|
||||
reg->RootKey = HKEY_LOCAL_MACHINE;
|
||||
if(reg->OpenKey("\\SOFTWARE\\OLEforRetail\\ServiceOPOS\\FiscalPrinter\\MbsFiscalPrinter",true))
|
||||
{
|
||||
reg->WriteInteger("COM Num",n);
|
||||
result = true;
|
||||
} else result = false;
|
||||
delete reg;
|
||||
return result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::LoadSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// cPort->port=ini->ReadString("Printer","Port","");
|
||||
// cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0);
|
||||
CheckId=ini->ReadInteger("Printer","CheckCount",0);
|
||||
TestMode=ini->ReadBool("Printer","TestMode",true);
|
||||
HeadLine=ini->ReadString("Printer","HeadLine","");
|
||||
GoodsName=ini->ReadString("Printer","GoodsName","");
|
||||
CasireName=ini->ReadString("Printer","CasireName","");
|
||||
AutoOpenShift=ini->ReadBool("Printer","AutoOpenShift",false);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void FiscalPrinter::SaveSetup()
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
// ini->WriteString("Printer","Port",cPort->port); //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
// ini->WriteInteger("Printer","BaudRate",cPort->BaudRate); //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
ini->WriteInteger("Printer","CheckCount",CheckId);
|
||||
ini->WriteBool("Printer","TestMode",TestMode);
|
||||
ini->WriteString("Printer","GoodsName",GoodsName);
|
||||
ini->WriteString("Printer","CasireName",CasireName);
|
||||
ini->WriteBool("Printer","AutoOpenShift",AutoOpenShift);
|
||||
delete ini;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
int FiscalPrinter::getGoodsPrice()
|
||||
{
|
||||
int sum=0;
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
sum+=((Goods*)FListGoods->Items[i])->price;
|
||||
return sum;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::PrinterOPOS(TComponent* AOwner):FiscalPrinter()
|
||||
{
|
||||
Crashed=false;
|
||||
AutoOpenShift=false;
|
||||
fp=new TOPOSFiscalPrinter(AOwner);
|
||||
fp->DeviceEnabled = False;
|
||||
LoadSetup();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
PrinterOPOS::~PrinterOPOS()
|
||||
{
|
||||
delete FListGoods;
|
||||
delete fp;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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 PrinterOPOS::Start()
|
||||
{
|
||||
if(fp->DeviceEnabled) return true;
|
||||
|
||||
FState = fp->Open(L"MbsFiscalPrinter");
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
FState = fp->ClaimDevice(1000);
|
||||
if(FState!=0)
|
||||
{
|
||||
saveLog(1,AnsiString(FState)+"(PrinterOPOS::Start)"+GetStatusDescription(FState));
|
||||
return false;
|
||||
}
|
||||
fp->DeviceEnabled = True;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setHeader(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetHeaderLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setHeader) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getHeader(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","HeadLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","HeadLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::setTrailer(TStrings* Text)
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
for(int i=0;i<Text->Count;i++)
|
||||
{
|
||||
WideString str=Text->Strings[i];
|
||||
err=fp->SetTrailerLine(i+1,str.c_bstr(),false);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrailer) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void PrinterOPOS::getTrailer(TStrings* Text)
|
||||
{
|
||||
TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini");
|
||||
Text->Add(ini->ReadString("Printer","TailLine1",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine2",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine3",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine4",""));
|
||||
Text->Add(ini->ReadString("Printer","TailLine5",""));
|
||||
delete ini;
|
||||
|
||||
for(int i=Text->Count-1;i>=0;i--)
|
||||
if(Text->Strings[i]=="")Text->Delete(i); else break;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::PrintLine(WideString line)
|
||||
{
|
||||
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + line + L"\n").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintLine) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//TODO <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
Currency cur=0;
|
||||
Currency cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
if(check==0) //<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
CheckId++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
check=CheckId;
|
||||
SaveSetup(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
if(fp->RecEmpty) throw Exception("<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(!DayOpened()) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//vat=11; sTmp=L"<22><><EFBFBD><EFBFBD><EFBFBD>";
|
||||
//err = fp->DirectIO(4, &vat, &sTmp);
|
||||
//if (err) goto ErrHandler;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TODO!!!
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
|
||||
if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else fp->FiscalReceiptType=FPTR_RT_SERVICE; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//setTrainingMode(true);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>)
|
||||
err = fp->BeginFiscalReceipt(true);
|
||||
if (err) throw Exception(getLastError(&err)); //251
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (TODO <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
VarCyFromR8(goods->price*100,&Amount1);
|
||||
Amount2.int64=0;
|
||||
WideString tmp=goods->name1+L"-/--/-0";
|
||||
err=fp->PrintRecItem(tmp.c_bstr(), Amount1, goods->count, goods->VatInfo, Amount2, L"<22><>");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> PrintRecTotal)
|
||||
err = fp->DirectIO(3, &CheckId, &sTmp);
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//setNalog(1,12);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
Amount2.int64=0;
|
||||
VarCyFromR8(cAllPrice*100,&Amount1);
|
||||
err=fp->PrintRecTotal(Amount1, Amount1, L"na");
|
||||
if (err) throw Exception(getLastError(&err));
|
||||
|
||||
|
||||
err = fp->EndFiscalReceipt(True); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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> (AdditionalTrailer) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(err,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->PrintRecVoid(L"");
|
||||
}
|
||||
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::Cut() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintNormal(2, WideString(WideString(WCHAR(0x1B)) + WideString(WCHAR(0x7C)) + "75P").c_bstr());
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::Cut) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
/*int PrinterOPOS::GetState()
|
||||
{
|
||||
if(!fp->DeviceEnabled)FState=245;
|
||||
//if(FState!=0) return FState;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
// fp->ResultCodeExtended
|
||||
return 0;
|
||||
} */
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::isOk()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(fp->RecEmpty) throw "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
err=fp->ResetPrinter();
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
AnsiString str;
|
||||
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool dOpen=DayOpened();
|
||||
if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true;
|
||||
if(!dOpen) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
if(DayOpened())
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime dt=getDateOpenShift();
|
||||
str=getLastError(&err);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
|
||||
dModule->getDate();
|
||||
if(HoursBetween(dt,dModule->date)>24) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> 24 <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
throw Exception("[1]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
} else throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
BSTR bstr=new OLECHAR[50];
|
||||
err=fp->GetDate(&bstr);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime PrinterOPOS::getDateOpenShift()
|
||||
{
|
||||
long err=0;
|
||||
TDateTime date=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
long iTmp;
|
||||
BSTR sTmp=new OLECHAR[50];
|
||||
err=fp->DirectIO(13, &iTmp, &sTmp);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
date=StrToDateTime(sTmp);
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return date;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::GetStatusDescription(long err)
|
||||
{
|
||||
AnsiString str;
|
||||
try
|
||||
{
|
||||
if(err<256)
|
||||
str=kkm_err_msg_ru[err];
|
||||
if(str=="") str="<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::GetStatusDescription) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString PrinterOPOS::getLastError(long* err)
|
||||
{
|
||||
BSTR str=new OLECHAR[255];
|
||||
str=L"<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
|
||||
try
|
||||
{
|
||||
fp->DirectIO(1, err, &str);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getLastError) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if(str==L"") return GetStatusDescription(*err);
|
||||
return str;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
AnsiString PrinterOPOS::getLastError()
|
||||
{
|
||||
long err;
|
||||
return getLastError(&err);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::PrintZReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{
|
||||
if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
|
||||
int sum=getDaySum();
|
||||
err=fp->PrintZReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
dModule->addZReport(sum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dModule->addPaper(-142*2);//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintZReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
void PrinterOPOS::PrintXReport()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
err=fp->PrintXReport();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::PrintXReport) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool PrinterOPOS::OpenShift()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
//if(CasireName==NULL) CasireName=L" ";
|
||||
BSTR str=CasireName.c_bstr();
|
||||
err=fp->DirectIO (6,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
err=fp->SetVatValue(1,L"120");
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::OpenShift) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::DayOpened()
|
||||
{
|
||||
return fp->DayOpened;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::setTrainingMode(bool val)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
if(getTrainingMode()==val) return true;
|
||||
if(val) err=fp->BeginTraining(); else err=fp->EndTraining();
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message);
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setTrainingMode) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool PrinterOPOS::getTrainingMode()
|
||||
{
|
||||
return fp->TrainingModeActive;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<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>
|
||||
bool PrinterOPOS::setNalog(long n,float stavka)
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long s=stavka*10;
|
||||
WideString str=AnsiString(s);
|
||||
err = fp->DirectIO(2, &n, &str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message);
|
||||
return true;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::setNalog) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return true;
|
||||
}
|
||||
|
||||
return err==0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getDaySum()
|
||||
{
|
||||
long err;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=1;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err) throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getDaySum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
int PrinterOPOS::getAllSum()
|
||||
{
|
||||
long err=0;
|
||||
try
|
||||
{ if(Crashed) throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
long n=2;
|
||||
BSTR str=new OLECHAR[20];
|
||||
err=fp->DirectIO (300,&n,&str);
|
||||
if(err)throw Exception(getLastError(&err));
|
||||
return StrToInt(str)/100.0;
|
||||
}catch(Exception &exception)
|
||||
{
|
||||
if(err==251) Crashed=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message);
|
||||
return 0;
|
||||
}catch(...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::getAllSum) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//sales - true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//check - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> =0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine )
|
||||
{
|
||||
//bool err=0;
|
||||
double cur=0;
|
||||
double cAllPrice=0;
|
||||
bool bOk=true;
|
||||
|
||||
try
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
cAllPrice=getGoodsPrice();
|
||||
|
||||
Currency UnitPrice,AllPriceDrb,AllPrice;
|
||||
long Qnt,vat;
|
||||
BSTR* bstr;
|
||||
WideString sStr;
|
||||
BSTR sTmp=new OLECHAR[255];
|
||||
sTmp=L"";
|
||||
long MbsResponceCode;
|
||||
CURRENCY Amount1,Amount2;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(sales) bOk = fp->OpenFiscalInv(1,"0000",1);
|
||||
else bOk = fp->OpenBackInv(1,"0000",1);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
|
||||
if(headLine.Length()>0)
|
||||
PrintLine(headLine);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(int i=0;i<FListGoods->Count;i++)
|
||||
{
|
||||
Goods* goods=(Goods*)FListGoods->Items[i];
|
||||
bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"<22>",goods->price,goods->count,0,0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
}
|
||||
ClearGoods();
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
double Change;
|
||||
bOk=fp->Total("","","P",cAllPrice,Change);
|
||||
if (!bOk) throw Exception(getLastError());
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
bOk = fp->CloseFiscalInv();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+CurrToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId)+". "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: N: "+IntToStr(dModule->UserId)+" <20><><EFBFBD><EFBFBD><EFBFBD>: "+FloatToStr(cAllPrice)+" <20><><EFBFBD>: "+AnsiString(CheckId));
|
||||
bOk=false;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if(!bOk)
|
||||
{
|
||||
fp->CancelFiscalInv();
|
||||
}
|
||||
return bOk;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::PrintZReport()
|
||||
{
|
||||
bool bOk;
|
||||
try
|
||||
{
|
||||
double Amount=0,CashSum=0,ServIn=0,ServOut=0;
|
||||
std::string Oper,Password,ExitCode="";
|
||||
std::wstring strH,strF;
|
||||
bOk=fp->ParishOrConsumption(Oper,Password,Amount,strH,strF,ExitCode,CashSum,ServIn,ServOut);
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
bOk=fp->PrintZReport();
|
||||
if(!bOk) throw Exception(getLastError());
|
||||
dModule->addZReport(CashSum);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
dModule->SendError(bOk,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+exception.Message);
|
||||
bOk=false;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
ClearGoods();
|
||||
saveLog(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
dModule->SendError(1,"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
|
||||
bOk=false;
|
||||
}
|
||||
|
||||
return bOk;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
bool FiscalPrinterPort::isOk()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!fp->DiagnosticInfo()) throw Exception(getLastError());
|
||||
if(!dModule->getDayShift())throw Exception("<22><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
catch(Exception &exception)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message);
|
||||
return false;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
saveLog(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
dModule->SendError(1,"(PrinterOPOS::isOk)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
207
devices/Printers/Mebius/__history/PrinterOPOS.h.~10~
Normal file
207
devices/Printers/Mebius/__history/PrinterOPOS.h.~10~
Normal file
@ -0,0 +1,207 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#ifndef PrinterOPOSH
|
||||
#define PrinterOPOSH
|
||||
//---------------------------------------------------------------------------
|
||||
//#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;
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Goods
|
||||
{
|
||||
private:
|
||||
public:
|
||||
WideString name1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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(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; //<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:
|
||||
AnsiString 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>"
|
||||
WideString GoodsName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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>
|
||||
|
||||
FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); };
|
||||
virtual AnsiString 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=(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; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
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; }; //<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; };
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//<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;
|
||||
public:
|
||||
|
||||
|
||||
bool setTrainingMode(bool val);
|
||||
bool getTrainingMode();
|
||||
|
||||
PrinterOPOS(TComponent* AOwner);
|
||||
virtual ~PrinterOPOS();
|
||||
AnsiString 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, WideString 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>
|
||||
AnsiString GetStatusDescription(long StatusCode); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString 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>
|
||||
AnsiString getLastError(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime getDateOpenShift(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void setHeader(TStrings* Text);
|
||||
void getHeader(TStrings* Text);
|
||||
void setTrailer(TStrings* Text);
|
||||
void getTrailer(TStrings* Text);
|
||||
int getCOMPort();
|
||||
void setCOMPort(int n);
|
||||
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(WideString 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>
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
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; }; //<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, WideString headLine ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
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
|
||||
208
devices/Printers/Mebius/__history/PrinterOPOS.h.~11~
Normal file
208
devices/Printers/Mebius/__history/PrinterOPOS.h.~11~
Normal file
@ -0,0 +1,208 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#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;
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Goods
|
||||
{
|
||||
private:
|
||||
public:
|
||||
WideString name1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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(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; //<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:
|
||||
AnsiString 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>"
|
||||
WideString GoodsName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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>
|
||||
|
||||
FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); };
|
||||
virtual AnsiString 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=(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; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
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; }; //<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; };
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//<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;
|
||||
public:
|
||||
|
||||
|
||||
bool setTrainingMode(bool val);
|
||||
bool getTrainingMode();
|
||||
|
||||
PrinterOPOS(TComponent* AOwner);
|
||||
virtual ~PrinterOPOS();
|
||||
AnsiString 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, WideString 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>
|
||||
AnsiString GetStatusDescription(long StatusCode); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString 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>
|
||||
AnsiString getLastError(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime getDateOpenShift(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void setHeader(TStrings* Text);
|
||||
void getHeader(TStrings* Text);
|
||||
void setTrailer(TStrings* Text);
|
||||
void getTrailer(TStrings* Text);
|
||||
int getCOMPort();
|
||||
void setCOMPort(int n);
|
||||
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(WideString 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>
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
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; }; //<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, WideString headLine ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
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
|
||||
209
devices/Printers/Mebius/__history/PrinterOPOS.h.~12~
Normal file
209
devices/Printers/Mebius/__history/PrinterOPOS.h.~12~
Normal file
@ -0,0 +1,209 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#ifndef PrinterOPOSH
|
||||
#define PrinterOPOSH
|
||||
//---------------------------------------------------------------------------
|
||||
//#include <System.hpp>
|
||||
#include <vcl.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;
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Goods
|
||||
{
|
||||
private:
|
||||
public:
|
||||
WideString name1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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(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; //<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:
|
||||
AnsiString 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>"
|
||||
WideString GoodsName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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>
|
||||
|
||||
FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); };
|
||||
virtual AnsiString 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=(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; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
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; }; //<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; };
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//<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;
|
||||
public:
|
||||
|
||||
|
||||
bool setTrainingMode(bool val);
|
||||
bool getTrainingMode();
|
||||
|
||||
PrinterOPOS(TComponent* AOwner);
|
||||
virtual ~PrinterOPOS();
|
||||
AnsiString 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, WideString 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>
|
||||
AnsiString GetStatusDescription(long StatusCode); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString 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>
|
||||
AnsiString getLastError(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime getDateOpenShift(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void setHeader(TStrings* Text);
|
||||
void getHeader(TStrings* Text);
|
||||
void setTrailer(TStrings* Text);
|
||||
void getTrailer(TStrings* Text);
|
||||
int getCOMPort();
|
||||
void setCOMPort(int n);
|
||||
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(WideString 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>
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
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; }; //<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, WideString headLine ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
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
|
||||
209
devices/Printers/Mebius/__history/PrinterOPOS.h.~13~
Normal file
209
devices/Printers/Mebius/__history/PrinterOPOS.h.~13~
Normal file
@ -0,0 +1,209 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#ifndef PrinterOPOSH
|
||||
#define PrinterOPOSH
|
||||
//---------------------------------------------------------------------------
|
||||
//#include <System.hpp>
|
||||
#include <vcl.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;
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Goods
|
||||
{
|
||||
private:
|
||||
public:
|
||||
WideString name1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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(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; //<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:
|
||||
AnsiString 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>"
|
||||
WideString GoodsName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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>
|
||||
|
||||
FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); };
|
||||
virtual AnsiString 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=(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; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
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; }; //<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; };
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//<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_1_7 *fp;
|
||||
public:
|
||||
|
||||
|
||||
bool setTrainingMode(bool val);
|
||||
bool getTrainingMode();
|
||||
|
||||
PrinterOPOS(TComponent* AOwner);
|
||||
virtual ~PrinterOPOS();
|
||||
AnsiString 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, WideString 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>
|
||||
AnsiString GetStatusDescription(long StatusCode); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString 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>
|
||||
AnsiString getLastError(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime getDateOpenShift(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void setHeader(TStrings* Text);
|
||||
void getHeader(TStrings* Text);
|
||||
void setTrailer(TStrings* Text);
|
||||
void getTrailer(TStrings* Text);
|
||||
int getCOMPort();
|
||||
void setCOMPort(int n);
|
||||
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(WideString 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>
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
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; }; //<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, WideString headLine ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
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
|
||||
209
devices/Printers/Mebius/__history/PrinterOPOS.h.~14~
Normal file
209
devices/Printers/Mebius/__history/PrinterOPOS.h.~14~
Normal file
@ -0,0 +1,209 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#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;
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Goods
|
||||
{
|
||||
private:
|
||||
public:
|
||||
WideString name1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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(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; //<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:
|
||||
AnsiString 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>"
|
||||
WideString GoodsName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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>
|
||||
|
||||
FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); };
|
||||
virtual AnsiString 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=(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; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
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; }; //<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; };
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//<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_1_7 *fp;
|
||||
public:
|
||||
|
||||
|
||||
bool setTrainingMode(bool val);
|
||||
bool getTrainingMode();
|
||||
|
||||
PrinterOPOS(TComponent* AOwner);
|
||||
virtual ~PrinterOPOS();
|
||||
AnsiString 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, WideString 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>
|
||||
AnsiString GetStatusDescription(long StatusCode); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString 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>
|
||||
AnsiString getLastError(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime getDateOpenShift(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void setHeader(TStrings* Text);
|
||||
void getHeader(TStrings* Text);
|
||||
void setTrailer(TStrings* Text);
|
||||
void getTrailer(TStrings* Text);
|
||||
int getCOMPort();
|
||||
void setCOMPort(int n);
|
||||
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(WideString 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>
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
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; }; //<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, WideString headLine ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
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
|
||||
209
devices/Printers/Mebius/__history/PrinterOPOS.h.~15~
Normal file
209
devices/Printers/Mebius/__history/PrinterOPOS.h.~15~
Normal file
@ -0,0 +1,209 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#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;
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Goods
|
||||
{
|
||||
private:
|
||||
public:
|
||||
WideString name1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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(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; //<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:
|
||||
AnsiString 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>"
|
||||
WideString GoodsName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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>
|
||||
|
||||
FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); };
|
||||
virtual AnsiString 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=(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; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
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; }; //<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; };
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//<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;
|
||||
public:
|
||||
|
||||
|
||||
bool setTrainingMode(bool val);
|
||||
bool getTrainingMode();
|
||||
|
||||
PrinterOPOS(TComponent* AOwner);
|
||||
virtual ~PrinterOPOS();
|
||||
AnsiString 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, WideString 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>
|
||||
AnsiString GetStatusDescription(long StatusCode); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString 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>
|
||||
AnsiString getLastError(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime getDateOpenShift(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void setHeader(TStrings* Text);
|
||||
void getHeader(TStrings* Text);
|
||||
void setTrailer(TStrings* Text);
|
||||
void getTrailer(TStrings* Text);
|
||||
int getCOMPort();
|
||||
void setCOMPort(int n);
|
||||
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(WideString 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>
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
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; }; //<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, WideString headLine ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
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
|
||||
209
devices/Printers/Mebius/__history/PrinterOPOS.h.~16~
Normal file
209
devices/Printers/Mebius/__history/PrinterOPOS.h.~16~
Normal file
@ -0,0 +1,209 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#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;
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Goods
|
||||
{
|
||||
private:
|
||||
public:
|
||||
WideString name1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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(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; //<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:
|
||||
AnsiString 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>"
|
||||
WideString GoodsName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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>
|
||||
|
||||
FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); };
|
||||
virtual AnsiString 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=(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; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
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; }; //<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; };
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//<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;
|
||||
public:
|
||||
|
||||
|
||||
bool setTrainingMode(bool val);
|
||||
bool getTrainingMode();
|
||||
|
||||
PrinterOPOS(TComponent* AOwner);
|
||||
virtual ~PrinterOPOS();
|
||||
AnsiString 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, WideString 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>
|
||||
AnsiString GetStatusDescription(long StatusCode); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString 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>
|
||||
AnsiString getLastError(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime getDateOpenShift(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void setHeader(TStrings* Text);
|
||||
void getHeader(TStrings* Text);
|
||||
void setTrailer(TStrings* Text);
|
||||
void getTrailer(TStrings* Text);
|
||||
int getCOMPort();
|
||||
void setCOMPort(int n);
|
||||
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(WideString 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>
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
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; }; //<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, WideString headLine ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
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
|
||||
209
devices/Printers/Mebius/__history/PrinterOPOS.h.~17~
Normal file
209
devices/Printers/Mebius/__history/PrinterOPOS.h.~17~
Normal file
@ -0,0 +1,209 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#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;
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Goods
|
||||
{
|
||||
private:
|
||||
public:
|
||||
WideString name1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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(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; //<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:
|
||||
AnsiString 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>"
|
||||
WideString GoodsName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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>
|
||||
|
||||
FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); };
|
||||
virtual AnsiString 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=(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; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
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; }; //<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; };
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//<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;
|
||||
public:
|
||||
|
||||
|
||||
bool setTrainingMode(bool val);
|
||||
bool getTrainingMode();
|
||||
|
||||
PrinterOPOS(TComponent* AOwner);
|
||||
virtual ~PrinterOPOS();
|
||||
AnsiString 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, WideString 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>
|
||||
AnsiString GetStatusDescription(long StatusCode); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString 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>
|
||||
AnsiString getLastError(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime getDateOpenShift(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void setHeader(TStrings* Text);
|
||||
void getHeader(TStrings* Text);
|
||||
void setTrailer(TStrings* Text);
|
||||
void getTrailer(TStrings* Text);
|
||||
int getCOMPort();
|
||||
void setCOMPort(int n);
|
||||
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(WideString 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>
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
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; }; //<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, WideString headLine ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
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
|
||||
209
devices/Printers/Mebius/__history/PrinterOPOS.h.~18~
Normal file
209
devices/Printers/Mebius/__history/PrinterOPOS.h.~18~
Normal file
@ -0,0 +1,209 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#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;
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Goods
|
||||
{
|
||||
private:
|
||||
public:
|
||||
WideString name1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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(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; //<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:
|
||||
AnsiString 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>"
|
||||
WideString GoodsName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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>
|
||||
|
||||
FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); };
|
||||
virtual AnsiString 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=(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; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
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; }; //<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; };
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//<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;
|
||||
public:
|
||||
|
||||
|
||||
bool setTrainingMode(bool val);
|
||||
bool getTrainingMode();
|
||||
|
||||
PrinterOPOS(TComponent* AOwner);
|
||||
virtual ~PrinterOPOS();
|
||||
AnsiString 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, WideString 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>
|
||||
AnsiString GetStatusDescription(long StatusCode); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString 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>
|
||||
AnsiString getLastError(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime getDateOpenShift(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void setHeader(TStrings* Text);
|
||||
void getHeader(TStrings* Text);
|
||||
void setTrailer(TStrings* Text);
|
||||
void getTrailer(TStrings* Text);
|
||||
int getCOMPort();
|
||||
void setCOMPort(int n);
|
||||
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(WideString 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>
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
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; }; //<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, WideString headLine ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
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
|
||||
207
devices/Printers/Mebius/__history/PrinterOPOS.h.~9~
Normal file
207
devices/Printers/Mebius/__history/PrinterOPOS.h.~9~
Normal file
@ -0,0 +1,207 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#ifndef PrinterOPOSH
|
||||
#define PrinterOPOSH
|
||||
//---------------------------------------------------------------------------
|
||||
//#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;
|
||||
//---------------------------------------------------------------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Goods
|
||||
{
|
||||
private:
|
||||
public:
|
||||
WideString name1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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(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; //<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:
|
||||
AnsiString 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>"
|
||||
WideString GoodsName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WideString 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>
|
||||
|
||||
FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); };
|
||||
virtual AnsiString 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=(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; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
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; }; //<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; };
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//<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;
|
||||
public:
|
||||
|
||||
|
||||
bool setTrainingMode(bool val);
|
||||
bool getTrainingMode();
|
||||
|
||||
PrinterOPOS(TComponent* AOwner);
|
||||
virtual ~PrinterOPOS();
|
||||
AnsiString 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, WideString 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>
|
||||
AnsiString GetStatusDescription(long StatusCode); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
AnsiString 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>
|
||||
AnsiString getLastError(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TDateTime getDateOpenShift(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void setHeader(TStrings* Text);
|
||||
void getHeader(TStrings* Text);
|
||||
void setTrailer(TStrings* Text);
|
||||
void getTrailer(TStrings* Text);
|
||||
int getCOMPort();
|
||||
void setCOMPort(int n);
|
||||
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(WideString 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>
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
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; }; //<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, WideString headLine ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user