1378 lines
42 KiB
C++
1378 lines
42 KiB
C++
//! AYRA01FRKZ
|
||
/*!
|
||
Êëàññ ïðèíòåðà AYRA01FRKZ
|
||
\author Èâàíîâ Èãîðü Ì.
|
||
\file FP300KZ.cpp
|
||
*/
|
||
//---------------------------------------------------------------------------
|
||
#pragma hdrstop
|
||
|
||
#include "stdafx.h"
|
||
|
||
#include "AYRA01FRKZ.h"
|
||
#include <stdTools.h>
|
||
#include <mathTools.h>
|
||
#include <sstream>
|
||
|
||
#include <iostream>
|
||
#include <fstream>
|
||
#include <locale>
|
||
//#include <string>
|
||
#include <vector>
|
||
#include <math.h>
|
||
|
||
//#include <unistd.h>
|
||
//#include <pthread.h>
|
||
//#include <stdlib.h>
|
||
|
||
#if defined( __WXMSW__ ) //Åñëè êðîññïëàòôîðìêíííîå ïðèëîæåíèå
|
||
#include <wx/wx.h>
|
||
#include <wx/textfile.h>
|
||
#include <wxTools.h>
|
||
#endif // __WXMSW__
|
||
//---------------------------------------------------------------------------
|
||
//#pragma package(smart_init)
|
||
//---------------------------------------------------------------------------
|
||
//Ñîõðàíèòü ëîã â òåêñòîâûé ôàéë
|
||
bool saveLog(std::string FileName, std::string Text)
|
||
{
|
||
|
||
try
|
||
{
|
||
for(uint4 i=1;i<=Text.length();i++) if(Text[i]=='\n') Text[i]=' '; //×òîá â 1 ñòðîêó áûëî
|
||
Text="["+getDateTime()+"] "+Text; //Äîáàâëÿåì äàòó
|
||
std::string path=getAppPathA()+std::string("logs\\"); //Ïóòü ê ôàéëó
|
||
//#if defined( _VC )
|
||
// CreateDirectoryA(path.c_str(), NULL); //Ïðîáóåì ñîçäàòü ïàïêó
|
||
//#endif
|
||
path+=FileName+"_"+getStrDate()+".log";
|
||
#if defined( _BORLAND )
|
||
std::ofstream file(path.c_str(),std::ios::app);
|
||
file << Text.c_str() << std::endl;
|
||
file.close();
|
||
#endif
|
||
#if defined( _VC )
|
||
FILE* pfile = fopen ( path.c_str(), "a" ); //Äëÿ þíèêîäà _wfopen
|
||
fputs( Text.c_str() , pfile );
|
||
fputs( "\n" , pfile );
|
||
fclose( pfile );
|
||
#endif
|
||
}catch(...)
|
||
{ return false;
|
||
}
|
||
return true;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
AYRA01FRKZ::AYRA01FRKZ()
|
||
{
|
||
cPort=new ComPort();
|
||
m_Password="0000";
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
AYRA01FRKZ::~AYRA01FRKZ()
|
||
{
|
||
delete cPort;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ñîåäåíèòüñÿ ïî COM ïîðòó
|
||
bool AYRA01FRKZ::OpenCOMPort(int ComNumber,int BaudRate)
|
||
{
|
||
if(ComNumber>0) cPort->ComNumber=ComNumber;
|
||
if(BaudRate>0) cPort->BaudRate=BaudRate;
|
||
|
||
cPort->Close();
|
||
if(cPort->Open(cPort->ComNumber))
|
||
{
|
||
if(!cPort->Setup(1))
|
||
return false;
|
||
}else return false;
|
||
return true;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
/*
|
||
//Çàïèñûâàåì â ôàéë
|
||
wxTextFile* TextFile = new wxTextFile();
|
||
if(!wxFileExists(L"o:\\WriteReqwest.txt")) TextFile->Create(L"o:\\WriteReqwest.txt");
|
||
TextFile->Open(L"o:\\WriteReqwest.txt");
|
||
if(TextFile->IsOpened())
|
||
{
|
||
TextFile->AddLine(L"0) "+IntToStr(ch));
|
||
TextFile->Write();
|
||
TextFile->Close();
|
||
}
|
||
delete TextFile;
|
||
*/
|
||
//---------------------------------------------------------------------------
|
||
//Çàïèñûâàòü çàïðîñ
|
||
//request - Çàïðîñ äàííûõ îáû÷íî 1é áàéò íîìåð êîìàíäû à îñòàëüíûå äàííûå
|
||
bool AYRA01FRKZ::WriteReqwest(std::string request)
|
||
{
|
||
/*
|
||
unsigned char ENQ = 0x05; //Çàïðîñ
|
||
unsigned char ACK = 0x06; //Ïîäòâåðæäåíèå
|
||
unsigned char STX = 0x02; //Íà÷àëî òåêñòà
|
||
unsigned char ETX = 0x03; //Êîíåö òåêñòà
|
||
unsigned char EOT = 0x04; //Êîíåö ïåðåäà÷è
|
||
unsigned char NAK = 0x15; //Îòðèöàíèå
|
||
unsigned char DLE = 0x10; //Ýêðàíèðîâàíèå óïðàâëÿþùèõ ñèìâîëîâ
|
||
//Â âèäå ñòðîîêè
|
||
std::string sSTX; sSTX+=STX;
|
||
std::string sDLE; sDLE+=DLE;
|
||
std::string sETX; sETX+=ETX;
|
||
//Äëÿ ìàñêèðîâêè äàííûõ
|
||
std::string sDLEDLE; sDLEDLE+=DLE; sDLEDLE+=DLE;
|
||
std::string sDLEETX; sDLEETX+=DLE; sDLEETX+=ETX;
|
||
|
||
//Ìàñêèðóåì áàéòû, ðàâíûå DLE è ETX
|
||
request=replaceStrings(request,sDLE,sDLEDLE);
|
||
request=replaceStrings(request,sETX,sDLEETX);
|
||
//Äîáàâëÿåì â êîíåö ETX
|
||
request+=ETX;
|
||
//Ïîäñ÷èòûâàåì CRC
|
||
unsigned char crc=0;
|
||
for(size_t i=0;i<request.length();i++)
|
||
crc=crc ^ request[i];
|
||
//Äîáàâëÿåì â íà÷àëî STX
|
||
request=sSTX+request;
|
||
//Äîáàâëÿåì â êîíåö CRC
|
||
request+=crc;
|
||
|
||
unsigned char ch;
|
||
if(!cPort->SetTimeout(500)) //Îæèäàíèå ãîòîâíîñòè T1 è T3 0,5 ñåê îò ïðè¸ìíèêà (îäèíàêîâî ïîýòîìó â 1 ìåñòå)
|
||
return false;
|
||
cPort->Write(&ENQ,1); //Çàïðîñ ñåàíñà ñâÿçè
|
||
cPort->Read(&ch,1);
|
||
if(ch==ACK) //Ïîäòâåðæäåíèå ãîòîâíîñòè
|
||
{
|
||
for(int i=0;i<10;i++)
|
||
{
|
||
cPort->Write(request.c_str(),request.length()); //Ïåðåäà÷à êàäðà äàííûõ
|
||
cPort->Read(&ch,1); //Ïîäòâåðæäåíèå ïðèåìà êàäðà
|
||
if(ch==ACK)
|
||
{ cPort->Write(&EOT,1); //Çàâåðøåíèå ñåàíñà ñâÿçè
|
||
return true;
|
||
}else
|
||
if(ch==NAK) //Îòðèöàíèå (Îøèáêà)
|
||
{
|
||
//Ïîâòîð ñîîáùåíèÿ íå áîëüøå 10 ðàç
|
||
}
|
||
|
||
}
|
||
}
|
||
return false;
|
||
*/
|
||
//unsigned char t=0x95;
|
||
//cPort->Write(&t,1);
|
||
|
||
unsigned char ENQ = 0x05; //Çàïðîñ
|
||
unsigned char ACK = 0x06; //Ïîäòâåðæäåíèå
|
||
unsigned char STX = 0x02; //Íà÷àëî òåêñòà
|
||
unsigned char ETX = 0x03; //Êîíåö òåêñòà
|
||
unsigned char EOT = 0x04; //Êîíåö ïåðåäà÷è
|
||
unsigned char NAK = 0x15; //Îòðèöàíèå
|
||
unsigned char DLE = 0x10; //Ýêðàíèðîâàíèå óïðàâëÿþùèõ ñèìâîëîâ
|
||
//Â âèäå ñòðîîêè
|
||
std::string sSTX; sSTX+=STX;
|
||
std::string sDLE; sDLE+=DLE;
|
||
std::string sETX; sETX+=ETX;
|
||
//Äëÿ ìàñêèðîâêè äàííûõ
|
||
std::string sDLEDLE; sDLEDLE+=DLE; sDLEDLE+=DLE;
|
||
std::string sDLEETX; sDLEETX+=DLE; sDLEETX+=ETX;
|
||
|
||
//Ìàñêèðóåì áàéòû, ðàâíûå DLE è ETX
|
||
request=replaceStrings(request,sDLE,sDLEDLE);
|
||
request=replaceStrings(request,sETX,sDLEETX);
|
||
|
||
//Ïîäñ÷èòûâàåì CRC
|
||
unsigned char CRC=0;
|
||
CRC=CRC ^ ETX;
|
||
for(size_t i=0;i<request.length();i++)
|
||
CRC=CRC ^ request[i];
|
||
|
||
//Äîáàâëÿåì â íà÷àëî STX â êîíåö ETX è CRC
|
||
request=sSTX+request+sETX;
|
||
request+=CRC;
|
||
|
||
unsigned char ch;
|
||
if(!cPort->SetTimeout(500)) //Îæèäàíèå ãîòîâíîñòè T1 è T3 0,5 ñåê îò ïðè¸ìíèêà (îäèíàêîâî ïîýòîìó â 1 ìåñòå)
|
||
return false;
|
||
|
||
//Ïî áëîê ñõåìå
|
||
for(int frc=0;frc<100;frc++)
|
||
{
|
||
for(int rc=0;rc<5;rc++) //Ïðè íåïðàâèëüíîì îòâåòå íå áîëüøå 5 ðàç
|
||
{
|
||
cPort->Write(&ENQ,1); //Çàïðîñ ñåàíñà ñâÿçè
|
||
if(cPort->Read(&ch,1)>0)
|
||
{
|
||
if(ch==NAK)
|
||
{ Sleep(500); //Îæèäàåì âðåìÿ T1 0,5 ñåê
|
||
continue;
|
||
}else
|
||
//Åñëè êîíôëèêòíàÿ ñèòóàöèÿ îòâåòèë ENQ
|
||
if(ch==ENQ)
|
||
{
|
||
Sleep(500); //Îæèäàåì âðåìÿ T7 0,5 ñåê
|
||
break;
|
||
}else
|
||
if(ch==ACK) //Ïîäòâåðæäåíèå ãîòîâíîñòè
|
||
{
|
||
for(int rc2=0;rc2<10;rc2++)
|
||
{
|
||
cPort->Write(request.c_str(),request.length()); //Ïåðåäà÷à êàäðà äàííûõ
|
||
if(cPort->Read(&ch,1)>0) //Ïîäòâåðæäåíèå ïðèåìà êàäðà
|
||
{
|
||
if(ch==ACK)
|
||
{ cPort->Write(&EOT,1); //Çàâåðøåíèå ñåàíñà ñâÿçè
|
||
return true;
|
||
}else
|
||
if(ch==ENQ && rc2>1)
|
||
{
|
||
ch=0;
|
||
//??? ïåðåõîä â îïð ïîçèöèþ ïðè¸ìà äàííûõ (óðîäöû)
|
||
}else
|
||
if(ch==NAK) //Îòðèöàíèå (Îøèáêà)
|
||
{
|
||
//Ïîâòîð ñîîáùåíèÿ íå áîëüøå 10 ðàç
|
||
}
|
||
}
|
||
}
|
||
cPort->Write(&EOT,1);
|
||
return false;
|
||
|
||
}else
|
||
break;
|
||
}
|
||
}
|
||
cPort->Write(&EOT,1); //Íåò îòâåòà èëè íåïðàâèëüíûé îòâåò íà çàïðîñ óñòàíîâêè ñâÿçè
|
||
}
|
||
return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//×èòàòü îòâåò ïðèíòåðà
|
||
bool AYRA01FRKZ::ReadAnswer(std::string &answer)
|
||
{
|
||
unsigned char ENQ = 0x05; //Çàïðîñ
|
||
unsigned char ACK = 0x06; //Ïîäòâåðæäåíèå
|
||
unsigned char STX = 0x02; //Íà÷àëî òåêñòà
|
||
unsigned char ETX = 0x03; //Êîíåö òåêñòà
|
||
unsigned char EOT = 0x04; //Êîíåö ïåðåäà÷è
|
||
unsigned char NAK = 0x15; //Îòðèöàíèå
|
||
unsigned char DLE = 0x10; //Ýêðàíèðîâàíèå óïðàâëÿþùèõ ñèìâîëîâ
|
||
|
||
unsigned char ch=0;
|
||
if(!cPort->SetTimeout(500)) //Îæèäàíèå ãîòîâíîñòè T1 è T3 0,5 ñåê îò ïðè¸ìíèêà (îäèíàêîâî ïîýòîìó â 1 ìåñòå)
|
||
return false;
|
||
|
||
//Ïîëó÷àåì îòâåò
|
||
answer="";
|
||
|
||
for(int rc=0; rc<100; rc++)
|
||
{
|
||
if(cPort->Read(&ch,1)>0)
|
||
{
|
||
if(ch==ENQ)
|
||
{
|
||
for(int frc=0;frc<10;frc++)
|
||
{
|
||
cPort->Write(&ACK,1); //Ïîäòâåðæäåíèå ãîòîâíîñòè
|
||
L_RC:
|
||
int rc2;
|
||
for(rc2=0;rc2<10;rc2++) //Ïîâòîð êàäðà äàííûõ ìîæåò ïðîèñõîäèòü äî 10 ðàç
|
||
{
|
||
if(!cPort->SetTimeout(2000)) return false; //Îæèäàíèå ãîòîâíîñòè T2 2 ñåê.
|
||
|
||
if(cPort->Read(&ch,1)>0)
|
||
{
|
||
if(ch==STX) //Ïðèíèìàåì ñàì îòâåò
|
||
{
|
||
answer=""; //Î÷èùÿåì áóôåð îòâåòà
|
||
unsigned char crc=0; //Äëÿ ïîäñ÷¸òà CRC
|
||
while(true)
|
||
{
|
||
if(cPort->Read(&ch,1)==0)
|
||
{
|
||
frc++; if(frc<=10) goto L_RC; else return false; //Íà ìåòêó L_RC ëèáî âûéòè
|
||
}
|
||
crc=crc ^ ch;
|
||
|
||
if(ch==DLE) //Åñëè ìàñêèðîâêà ñèìâîëîâ DLE è ETX
|
||
{
|
||
if(cPort->Read(&ch,1)==0)
|
||
{
|
||
frc++; if(frc<=10) goto L_RC; else return false; //Íà ìåòêó L_RC ëèáî âûéòè
|
||
}
|
||
crc=crc ^ ch;
|
||
answer+=ch;
|
||
}else
|
||
if(ch==ETX)
|
||
{
|
||
answer+=ch;
|
||
break;
|
||
}else answer+=ch;
|
||
|
||
if(answer.length()>2048) //Çàùèòà îò ïåðåïîëíåíèÿ áóôåðà
|
||
{ frc++; if(frc<=10) goto L_RC; else return false; //Íà ìåòêó L_RC ëèáî âûéòè
|
||
}
|
||
}
|
||
|
||
if(cPort->Read(&ch,1)==0) //×èòàåì CRC
|
||
{
|
||
frc++; if(frc<=10) goto L_RC; else return false; //Íà ìåòêó L_RC ëèáî âûéòè
|
||
}
|
||
|
||
|
||
if(ch==crc)
|
||
{ cPort->Write(&ACK,1); //Îòâå÷àåì ÷òî ñ CRC âñ¸ â ïîðÿäêå
|
||
|
||
if(!cPort->SetTimeout(500)) //Îæèäàíèå ãîòîâíîñòè Ò4 0,5 ñåê.
|
||
return false;
|
||
if(cPort->Read(&ch,1)>0)
|
||
{
|
||
if(ch==STX)
|
||
{
|
||
frc++; if(frc<=10) goto L_RC; else return false; //Íà ìåòêó L_RC ëèáî âûéòè
|
||
}else
|
||
if(ch==EOT) //Ïîëó÷èëè ïðèçíàê êîíöà ïàêåòà
|
||
{ return true;
|
||
}else
|
||
{
|
||
if(cPort->Read(&ch,1)>0)
|
||
{ frc++; if(frc<=10) goto L_RC; else return false; //Íà ìåòêó L_RC ëèáî âûéòè
|
||
}else return true;
|
||
}
|
||
|
||
}else return true; //Õîòü è íåäîæäàëèñü ïîñëåäíåãî áàéòà âñ¸ðàâíî true
|
||
|
||
break;
|
||
}
|
||
else
|
||
{
|
||
cPort->Write(&NAK,1); //Îòðèöàíèå íåïðàâèëüíûå äàííûå
|
||
|
||
frc++; if(frc<=10) goto L_RC; else return false; //Íà ìåòêó L_RC ëèáî âûéòè
|
||
}
|
||
}else
|
||
if(ch==ENQ)
|
||
{
|
||
break;
|
||
}
|
||
}else return false; //Âåðíóòü "Íåò îòâåòà"
|
||
}
|
||
if(rc2==10) return false; //Âåðíóòü "Íåò îòâåòà"
|
||
}
|
||
}
|
||
|
||
}else return false; //Âåðíóòü "Íåò îòâåòà"
|
||
}
|
||
return false; //Âåðíóòü "Íåò îòâåòà"
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Çâóêîâîé ñèãíàë
|
||
bool AYRA01FRKZ::Beep(int Hz,int mSec)
|
||
{
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fcBeep;
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req))
|
||
return false;
|
||
m_ErrorCode=0;//Îòâåòà íà êîìàíäó ãóäîê íåò
|
||
|
||
return true;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Îòðåçàòü áóìàãó
|
||
bool AYRA01FRKZ::CutPaper(bool full)
|
||
{
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc75;
|
||
if(full) req+="0"; else req+="1";
|
||
|
||
if(!WriteReqwest(req)) return false;
|
||
std::string ans;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
return true;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ïðîòÿíóòü áóìàãó
|
||
//lines - êîëè÷åñòâî ñðîê
|
||
bool AYRA01FRKZ::FeedPaper(int lines)
|
||
{
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc75;
|
||
|
||
if(!WriteReqwest(req)) return false;
|
||
std::string ans;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
return true;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Îòêðûòèå äåíåæíîãî ÿùèêà
|
||
bool AYRA01FRKZ::OpenCashDrawer(int mSec)
|
||
{
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=(char)fcOpenCashDrawer;
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
std::string ans;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ïå÷àòàòü äíåâíîé îò÷¸ò ñ ãàøåíèåì
|
||
bool AYRA01FRKZ::PrintZReport()
|
||
{
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fcDailyFinancialReport;
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
std::string ans;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ïå÷àòàòü äíåâíîé îò÷¸ò áåç ãàøåíèÿ
|
||
bool AYRA01FRKZ::PrintXReport()
|
||
{
|
||
return PrintReport(1);
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Íà÷àëî ñíÿòèÿ îò÷åòà áåç ãàøåíèÿ
|
||
///\param type - Òèï îò÷¸òà 1 - Ñóòî÷íûé îò÷åò (X-îò÷åò) 2 - Îò÷åò ïî ñåêöèÿì 3 - Îò÷åò ïî êàññèðàì 4 - Îò÷åò ïî òîâàðàì 5 - Ïî÷àñîâîé îò÷åò 7 - Îò÷åò êîëè÷åñòâ
|
||
bool AYRA01FRKZ::PrintReport(unsigned char type)
|
||
{
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc67;
|
||
req+=type; //Ñóòî÷íûé îò÷¸ò áåç ãàøåíÿ
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
std::string ans;
|
||
if(!ReadAnswer(ans)) return false;
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ïå÷àòàåò ñòðîêó òåêñòà
|
||
bool AYRA01FRKZ::PrintLine(std::wstring line)
|
||
{
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc4C;
|
||
//req+=WStringToString(line, std::locale("rus_rus.866"),'?'); //Êàç ñèìâîëû íå ïðåîáðàçóåò
|
||
req+=UnicodeToDOS886(line); //Ñàìîäåëüíîå ïðåîáðàçîâàíèå â DOS
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
std::string ans;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ãîòîâ ëè ê ðàáîòå ïðèíòåð (äîëæíà áûñòðî âûïîëíÿòñÿ)
|
||
bool AYRA01FRKZ::isOk()
|
||
{
|
||
return true;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Èíèöèàëèçàöèÿ ïðèíòåðà.
|
||
bool AYRA01FRKZ::PrinterInit()
|
||
{
|
||
//Ïîëó÷èòü êîë-âî òî÷åê ïîñëå çàïÿòîé
|
||
std::string state;
|
||
return GetStateKKM(state);
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ïîëó÷èòü òèï óñòðîéñòâà
|
||
bool AYRA01FRKZ::GetDeviseType()
|
||
{
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fcA5;
|
||
|
||
m_ErrorCode=200; //200 C8h Íåò óñòðîéñòâà, îáðàáàòûâàþùåãî äàííóþ êîìàíäó
|
||
if(!WriteReqwest(req)) return false;
|
||
std::string ans;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[0]; //Êîä_îøèáêè (1)
|
||
unsigned char v=(unsigned char)ans[0]; //Âåðñèÿ_ïðîòîêîëà (1)
|
||
unsigned char t=(unsigned char)ans[0]; //Òèï (1)
|
||
unsigned char m=(unsigned char)ans[0]; //Ìîäåëü (1)
|
||
//<Ðåæèì (2)>, <Âåðñèÿ_óñòðîéñòâà (5)>, <Íàçâàíèå (N)>.
|
||
}
|
||
return true;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Âíåñåíèå +, âûåìêà -
|
||
bool AYRA01FRKZ::CashInOut(bool test, double sum)
|
||
{
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
if(sum>0) req+=fc49; //Âííåñåíèå
|
||
else req+=fc4F; //Âûïëàòà
|
||
|
||
|
||
req+=(char)test; //Òåñòîâûé ëèáî ðåàëüíû âçíîñ
|
||
req+=CodeBSD(ceil(fabs(sum)*M()),5); //Ñóììà öåëàÿ
|
||
|
||
m_ErrorCode=200; //200 C8h Íåò óñòðîéñòâà, îáðàáàòûâàþùåãî äàííóþ êîìàíäó
|
||
if(!WriteReqwest(req)) return false;
|
||
std::string ans;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
//Êîä îøèáêè
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
|
||
return true;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ïîëó÷èòü ñóììó íàëè÷íîñòè â êàññå.
|
||
bool AYRA01FRKZ::GetCashSum(double& sum)
|
||
{
|
||
return true;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Çàïðîñ ñîñòîÿíèÿ ÊÊÌ îòâåò â âèäå ñòðîêè (Ôîðìàò íå ïðèäóìàë íàâåðíî êàê â ini ôàéëå ñäåëàòü...)
|
||
bool AYRA01FRKZ::GetStateKKM(std::string& state)
|
||
{
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc3F;
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
std::string ans;
|
||
if(!ReadAnswer(ans)) return false;
|
||
m_ErrorCode=0;
|
||
|
||
state=ans;
|
||
|
||
if(ans[0]='D')
|
||
{
|
||
//Ôîðìàò îòâåòà:
|
||
//"D"<Êàññèð(1)> <Íîìåð_â_çàëå(1)> <Äàòà_YMD(3)><Âðåìÿ_HMS(3)> <Ôëàãè(1)> <Çàâîäñêîé_íîìåð(4)> <Ìîäåëü(1)>
|
||
//<Âåðñèÿ_ÊÊÌ(2)> <Ðåæèì_ðàáîòû(1)> <Íîìåð_÷åêà(2)> <Íîìåð_ñìåíû(2)><Ñîñòîÿíèå_÷åêà(1)> <Ñóììà_÷åêà(5)>
|
||
//<Äåñÿòè÷íàÿ_òî÷êà(1)> <Ïîðò(1)>
|
||
|
||
unsigned char cs1 = BSDToInt(ans[1]); //Êàññèð(1) 00..30 (áûëî 0)
|
||
unsigned char cs2 = BSDToInt(ans[2]); //Íîìåð_â_çàëå(1) 01..99 (áûëî 1)
|
||
|
||
unsigned char year = BSDToInt(ans[3]); //Ãîä 00..99
|
||
unsigned char month = BSDToInt(ans[4]); //Ìåñÿö 01..12
|
||
unsigned char day = BSDToInt(ans[5]); //Äåíü 01..31
|
||
|
||
unsigned char hours = BSDToInt(ans[6]); //×àñû 00..23
|
||
unsigned char min = BSDToInt(ans[7]); //Ìèíóòû 00..59
|
||
unsigned char sec = BSDToInt(ans[8]); //Ñåêóíäû 00..59
|
||
|
||
unsigned char st = ans[9]; //ñîñòîÿíèå ÊÊÌ (áûëî 26)
|
||
bool f1=getBitVal(st,0); //ÊÊÌ ôèñêàëèçèðîâàíà (0 - íåò, 1 - äà)
|
||
bool f2=getBitVal(st,1); //Ñìåíà îòêðûòà (0 - íåò, 1 - äà)
|
||
bool f3=getBitVal(st,2); //Äåíåæíûé ÿùèê îòêðûò (0 - äà, 1 - íåò)
|
||
bool f4=getBitVal(st,3); //Âåñîâîé äàò÷èê ×Ë (0-íåò áóìàãè, 1-åñòü áóìàãà)
|
||
bool f5=getBitVal(st,4); //Áèò íå èñïîëüçóåòñÿ
|
||
bool f6=getBitVal(st,5); //Cîñòîÿíèå äàò÷èêà êðûøêè (0 – êðûøêà çàêðûòà, 1 – êðûøêà îòêðûòà)
|
||
bool f7=getBitVal(st,6); //Áèò íå èñïîëüçóåòñÿ è äîëæåí ñîäåðæàòü 0
|
||
bool f8=getBitVal(st,7); //Ðàâåí 1, åñëè íàïðÿæåíèå íà áàòàðåéêè ìåíüøå äîïóñòèìîãî
|
||
|
||
unsigned int num=StdStrToInt(DecodeBSD(ans, 10, 4)); //Çàâîäñêîé_íîìåð(4) (00000000 .. 99999999)
|
||
|
||
unsigned char model = ans[14]; //Ìîäåëü óñòðîéñòâà 42 Àóðà-01ÔÐ-KZ 43 PayVKP-80KZ
|
||
//Âåðñèÿ ÏÎ ÊÊÌ 2 ASCI ñèìâîëà (Ó àóðû áûëà: "30")
|
||
|
||
unsigned char mod = ans[17]; //Ðåæèì ðàáîòû
|
||
bool r0=getBitVal(mod,0); //0-é (ìëàäøèé) áèò: 0 – áóìàãà åñòü, 1 – íåò áóìàãè (â ïðèíòåðå ÷åêîâ).
|
||
bool r1=getBitVal(mod,1); //1-é áèò: 0 – ñâÿçü ñ ïðèíòåðîì ÷åêîâ åñòü, 1 – ñâÿçè íåò.
|
||
bool r2=getBitVal(mod,2); //2-é áèò: 0 – íåò îøèáîê, 1 – ìåõàíè÷åñêàÿ îøèáêà ïå÷àòàþùåãî óñòðîéñòâà.
|
||
bool r3=getBitVal(mod,3); //3-é áèò: 0 – íåò îøèáîê îòðåç÷èêà, 1 – îøèáêà îòðåç÷èêà.
|
||
bool r4=getBitVal(mod,4); //4-é áèò: 0 – íåò îøèáîê ïðèíòåðà, 1 – âîññòàíîâèìàÿ îøèáêà ïðèíòåðà (ïåðåãðåâ).
|
||
bool r5=getBitVal(mod,5); //5-é áèò: 0 – áóôåð ïðèíòåðà ÏÄ èñïîëüçóåòñÿ, 1 – áóôåð ïðèíòåðà ÏÄ ïóñòîé.
|
||
bool r6=getBitVal(mod,6); //6-é áèò: 0 – áóôåð ïðèíòåðà ÏÄ íå ïåðåïîëíåí, 1 – áóôåð ïðèíòåðà ÏÄ ïåðåïîëíåí.
|
||
|
||
unsigned int ns=StdStrToInt(DecodeBSD(ans, 18, 2)); //Íîìåð ÷åêà 0000..9999 (áûëî 38)
|
||
unsigned int nc=StdStrToInt(DecodeBSD(ans, 20, 2)); //Íîìåð ñìåíû 0000..9999 (áûëî 0)
|
||
|
||
unsigned char stn = ans[22]; //Ñîñòîÿíèå ÷åêà
|
||
//0-1 áèò: 0 – ÷åê çàêðûò, 1 – îòêðûò ÷åê ðåãèñòðàöèè, 2- îòêðûò ÷åê âîçâðàòà, 3 – îòêðûò ÷åê àííóëèðîâàíèÿ.
|
||
//2 áèò: 0 – ÷åê ïðîäàæè, 1 – ÷åê ïîêóïêè (òèï ÷åêà – áèòû 0-1).
|
||
//3 áèò: 0 – ÷åê ôîðìèðóåòñÿ ñðàçó, 1 – ôîðìèðóåòñÿ îòëîæåííûé äîêóìåíò.
|
||
|
||
unsigned int sum=StdStrToInt(DecodeBSD(ans, 23, 5)); //Ñóììà ÷åêà 0000000000 .. 9999999999 ãäå. - ñóììà òåêóùåãî ÷åêà (èìååò ñìûñë òîëüêî â ðåæèìå ðåãèñòðàöèè), ôîðìàò BCD.
|
||
//unsigned int dot=ans[28]; //Äåñÿòè÷íàÿ òî÷êà 0 .. 3 - ïîëîæåíèå äåñÿòè÷íîé òî÷êè âî âñåõ äåíåæíûõ âåëè÷èíàõ (êîë-âî ðàçðÿäîâ ñïðàâà îò äåñÿòè÷íîé òî÷êè)
|
||
m_Dots=ans[28]; //Äåñÿòè÷íàÿ òî÷êà 0 .. 3 - ïîëîæåíèå äåñÿòè÷íîé òî÷êè âî âñåõ äåíåæíûõ âåëè÷èíàõ (êîë-âî ðàçðÿäîâ ñïðàâà îò äåñÿòè÷íîé òî÷êè)
|
||
unsigned int port=ans[29]; //Ïîðò Íîìåð ïîðòà ÊÊÌ, ê êîòîðîìó ïîäêëþ÷åí ÏÊ. Ôîðìàò – äâîè÷íî-äåñÿòè÷íîå ÷èñëî èç äèàïàçîíà: 1, 2, 3. Î ïîðòàõ áîëåå ïîäðîáíî ãîâîðèòñÿ íà ñòðàíèöå 84.
|
||
}
|
||
return true;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Îòêðûòèå ôèñêàëüíîãî (êëèåíòñêîãî) ÷åêà
|
||
/*Òèï ÷åêà
|
||
1 – ÷åê ïðîäàæè
|
||
2 – ÷åê âîçâðàòà ïðîäàæè
|
||
3 – ÷åê àííóëèðîâàíèÿ ïðîäàæè
|
||
4 – ÷åê ïîêóïêè
|
||
5 – ÷åê âîçâðàòà ïîêóïêè
|
||
6 – ÷åê àííóëèðîâàíèÿ ïîêóïêè.
|
||
*/
|
||
bool AYRA01FRKZ::OpenFiscalInv(unsigned char type)
|
||
{
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=(char)fc92;
|
||
req+=(char)0x00;
|
||
req+=(char)type;
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
std::string ans;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Óñòàíîâèòü äàòó è âðåìÿ
|
||
bool AYRA01FRKZ::SetDateTime(unsigned char ye,unsigned char mo,unsigned char de,unsigned char ho,unsigned char mi,unsigned char se)
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc4B;
|
||
req+=CodeBSD(ye); //Ãîä
|
||
req+=CodeBSD(mo); //Ìåñÿö
|
||
req+=CodeBSD(de); //Äåíü
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode!=0) return false;
|
||
|
||
|
||
req=CodeBSD(m_Password);
|
||
req+=fc64;
|
||
req+=CodeBSD(ho); //×àñû
|
||
req+=CodeBSD(mi); //Ìèíóòû
|
||
req+=CodeBSD(se); //Ñåêóíäû
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode!=0) return false;
|
||
|
||
return true;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Íàëè÷íûõ â äåíþæíîì ÿùèêå
|
||
bool AYRA01FRKZ::GetCashSum(double* sum)
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc4D;
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
*sum=0;
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}else
|
||
if(ans[0]==fc4D)
|
||
{
|
||
*sum=BSDToInt(ans, 1, 7)/M();
|
||
m_ErrorCode=0;
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Çàïðîñ ñîñòîÿíèÿ ÊÊÌ
|
||
///state1 - Ñîñòîÿíèå èç 8 áèòîâ ñìîòðè äîêóèåíòàöèþ
|
||
bool AYRA01FRKZ::GetStateKKM(unsigned char &state1,unsigned char &state2,unsigned char &flags)
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc45;
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
state1=ans[1] & 15;
|
||
state2=(ans[1] >> 4) & 15;
|
||
|
||
flags=ans[2];
|
||
m_ErrorCode=0;
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Îòêðûòèå ñìåíû
|
||
//test - òåñò îïåðàöèè
|
||
//text - òåêñò äëÿ ïå÷àòè
|
||
bool AYRA01FRKZ::OpenGang(bool test, std::wstring text)
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=(char)fc9A;
|
||
req+=(char)test;
|
||
req+=UnicodeToDOS886(text); //Ñàìîäåëüíîå ïðåîáðàçîâàíèå â DOS
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Àíóëèðîâàíèå âñåãî ÷åêà
|
||
bool AYRA01FRKZ::Storno()
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fcCancelFiscalInv; //fc59;
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ïå÷àòü îêîí÷àíèå ÷åêà
|
||
bool AYRA01FRKZ::PrintTail()
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc73;
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ïå÷àòü êîíòðîëüíîé ëåíòû
|
||
bool AYRA01FRKZ::PrintEJ(bool full,bool clear)
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=(char)fcB7;
|
||
if(full) req+=CodeBSD("01"); else req+=CodeBSD("02");
|
||
if(clear) req+=CodeBSD("01"); else req+=CodeBSD("00");
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Âõîä â ðåæèì
|
||
//state - ðåæèì 1 - Ðåæèì ðåãèñòðàöèè 2 - Ðåæèì îò÷åòîâ áåç ãàøåíèÿ 3 - Ðåæèì îò÷åòîâ ñ ãàøåíèåì 4 - Ðåæèì ïðîãðàììèðîâàíèÿ 5 - Ðåæèì äîñòóïà ê ÔÏ
|
||
//password - Ïàðîëü äëÿ âõîäà âðåæèì
|
||
bool AYRA01FRKZ::EnterInState(int state,int password)
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc56;
|
||
req+=CodeBSD(state,1);
|
||
req+=CodeBSD(password,4);
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Âûõîä èç ðåæèìà
|
||
bool AYRA01FRKZ::ExitFromState()
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc48;
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ðåãèñòðàöèÿ ïðîäàæè (êîìàíäà ðåæèìà ðåãèñòðàöèè)
|
||
///\param price - Öåíà
|
||
///\param count - Êîëè÷åñòâî
|
||
///\param section - Ñåêöèÿ â êîòîðóþ îñóùåñòâëÿåòñÿ ðåãèñòðàöèÿ 0..30
|
||
bool AYRA01FRKZ::RegisterSale(double price, double count, unsigned char section)
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc52;
|
||
|
||
req+=(char)0x00; //Äëÿ Àóðû-01ÔÐ-KZ âñåãäà 0
|
||
req+=CodeBSD(price*100.0f,5); //Öåíà(5) (Â äîêóìåíòàöèè ñêçàííî 2 çíàêà ïîñëå çàïÿòîé)
|
||
req+=CodeBSD(count*1000.0f,5); //Êîëè÷åñòâî(5) ( äîêóìåíòàöèè ñêçàííî 3 çíàêà ïîñëå çàïÿòîé)
|
||
req+=CodeBSD(section,1); //Ñåêöèÿ(1)
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ñòîðíèðîâàíèå ïðîäàæè
|
||
bool AYRA01FRKZ::StornoSale(bool test, double price, double count, unsigned char section)
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc4E;
|
||
req+=(char)test;
|
||
req+=CodeBSD(price*100.0f,5); //Öåíà(5)
|
||
req+=CodeBSD(count*1000.0f,5); //Êîëè÷åñòâî(5)
|
||
req+=CodeBSD(section,1); //Ñåêöèÿ(1) 0..30
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
bool AYRA01FRKZ::Abort(bool test, bool nal, double price, double count)
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc41;
|
||
unsigned char ch=0;
|
||
setBit(&ch,7,test); //Òåñò
|
||
setBit(&ch,6,nal); //Ïðîâåðÿòü ëè íàëè÷íîñòü
|
||
req+=(char)ch;
|
||
req+=CodeBSD(price*M(),5);
|
||
req+=CodeBSD(count*1000,5);
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
bool AYRA01FRKZ::Return(bool test, bool nal, double price, double count)
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc57;
|
||
|
||
unsigned char ch=0;
|
||
setBit(&ch,7,test); //Òåñò
|
||
setBit(&ch,6,nal); //Ïðîâåðÿòü ëè íàëè÷íîñòü
|
||
req+=(char)ch;
|
||
|
||
//req+=(char)test;
|
||
req+=CodeBSD(price*M(),5);
|
||
req+=CodeBSD(count*1000,5);
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Îòìåíà ïîñëåäíåé ñêèäêè/íàäáàâêè
|
||
bool AYRA01FRKZ::ReturnDiscount()
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc78;
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ðàñ÷¸ò ïî ÷åêó
|
||
//test - Ïðîâåðêà ìîæíî ëè âûïîëíèòü äàííóþ îïåðàöèþ
|
||
//type - Òèï îïëàòû 1 - íàëè÷íûìè 2,3,4 - îñòàëüíûå òèïû îïëàòû
|
||
//price - Ñóììà äëÿ ðàñ÷¸òà
|
||
bool AYRA01FRKZ::Settle(bool test,int type,double price)
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=(char)fc99;
|
||
req+=(char)test;
|
||
req+=CodeBSD(type,1); //Òèï îïëàòû (1)
|
||
req+=CodeBSD(price*M(),5); //Ñóììà (5)
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ñòîðíî ðàñ÷¸òà ïî ÷åêó
|
||
//test - Ïðîâåðêà ìîæíî ëè âûïîëíèòü äàííóþ îïåðàöèþ
|
||
//type - Òèï îïëàòû (0,1,2,3 - 0 íàëè÷íûìè)
|
||
//price - Ñóììà äëÿ ðàñ÷¸òà
|
||
//remainder - Îñòàòîê
|
||
//deal - Ñäà÷à
|
||
bool AYRA01FRKZ::ReturnSettle(bool test,int type,double price, double* remainder, double* deal)
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=(char)fc9B;
|
||
req+=(char)test;
|
||
req+=CodeBSD(type,1); //Òèï îïëàòû (1)
|
||
req+=CodeBSD(price,5); //Ñóììà (5)
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
if(m_ErrorCode==0) //Åñëè íåò îøèáêè âûáèðàåì "Îñòàòîê" è "Ñäà÷ó"
|
||
{
|
||
*remainder=BSDToInt(ans, 2, 5);
|
||
*deal=BSDToInt(ans, 7, 5);
|
||
}else { *remainder=0; *deal=0; }
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Çàêðûòü ÷åê ñî çäà÷åé
|
||
//<Ôëàãè(1)><Òèï îïëàòû(1)><Âíåñåííàÿ ñóììà(5)>.
|
||
bool AYRA01FRKZ::CloseFiscalInv(bool test, int type, double price)
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc4A;
|
||
req+=(char)test;
|
||
req+=CodeBSD(type,1); //Òèï îïëàòû (1)
|
||
req+=CodeBSD(price*M(),5); //Ñóììà (5)
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//Ñêèäêà - ëèáî íàäáàâêà +
|
||
//area - Íà ïîîñëåäíþþ îïåðàöèþ 0 ëèáî íà âåñü ÷åê 1
|
||
//abs - Ïðîöåíòîì 0 ñóììîé 1
|
||
//price - Çíà÷åíèå +- â ïðîöåíòàõ ëèáî ñóììîé
|
||
bool AYRA01FRKZ::Discount(bool test, bool area, bool abs, double price)
|
||
{
|
||
std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc43;
|
||
req+=(char)test;
|
||
req+=(char)area;
|
||
req+=(char)abs;
|
||
if(price<0) req+=(char)0x00; else req+=(char)0x01;
|
||
if(abs)
|
||
req+=CodeBSD(price*M(),5); //ñóììîé
|
||
else
|
||
req+=CodeBSD(price*M(),3); //Ïðîöåíòîì
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
//×òåíèå ïîëÿ èç òàáëèöû
|
||
bool AYRA01FRKZ::ReadTable(unsigned char table,unsigned short row,unsigned char field, std::string& ans)
|
||
{
|
||
//std::string ans;
|
||
std::string req;
|
||
req=CodeBSD(m_Password);
|
||
req+=fc46;
|
||
req+=table;
|
||
req+=((unsigned char *)&row)[1]; //Ñ íà÷àëà ñòàðøèé ïîòîì ìëàäøèé áàéò
|
||
req+=((unsigned char *)&row)[0]; //Ñ íà÷àëà ñòàðøèé ïîòîì ìëàäøèé áàéò
|
||
req+=field;
|
||
|
||
m_ErrorCode=200;
|
||
if(!WriteReqwest(req)) return false;
|
||
if(!ReadAnswer(ans)) return false;
|
||
if(ans.length()>3)
|
||
{
|
||
if(ans[0]==0x55) //Ïðèø¸ë êîä îøèáêè
|
||
{
|
||
m_ErrorCode=(unsigned char)ans[1];
|
||
}
|
||
}
|
||
if(m_ErrorCode==0) return true; else return false;
|
||
}
|
||
//---------------------------------------------------------------------------
|
||
/*Ïðîãðàììèðîâàíèå äàòû
|
||
Êîìàíäà: "d" <Äåíü(1)><Ìåñÿö(1)><Ãîä(1)>
|
||
Îòâåò: "U" <Êîä Îøèáêè(1)><0>.
|
||
Êîä êîìàíäû ("d", 64h, 100).
|
||
Äîïóñòèìûå çíà÷åíèÿ (ôîðìàò BCD) – ñì. êîìàíäó Çàïðîñ ñîñòîÿíèÿ
|
||
ÊÊÌ íà ñòð. 29.
|
||
Ïðèìå÷àíèå 1: Åñëè ââîäèìàÿ äàòà ìåíüøå äàòû ïîñëåäíåé çàïèñè ÔÏ, òî ÊÊÌ
|
||
áëîêèðóåòñÿ äî ââîäà ïðàâèëüíîé äàòû.
|
||
Ïðèìå÷àíèå 2: Åñëè ââîäèìàÿ äàòà ïðåâûøàåò òåêóùóþ äàòó ÊÊÌ õîòÿ áû íà îäèí
|
||
äåíü, òî ÊÊÌ îæèäàåò ïîäòâåðæäåíèÿ ââîäà äàòû. Äëÿ ïîäòâåðæäåíèÿ ââîäà äàòû
|
||
íåîáõîäèìî ïîâòîðèòü êîìàíäó «Ïðîãðàììèðîâàíèå äàòû».
|
||
Âíèìàíèå! Êîìàíäà ìîæåò áûòü âûïîëíåíà òîëüêî ïðè çàêðûòîé ñìåíå.
|
||
Âíèìàíèå! Íå âûïîëíÿòü äàííóþ êîìàíäó, åñëè ÊÊÌ çàáëîêèðîâàíà â ðåçóëüòàòå
|
||
ïîÿâëåíèÿ îøèáêè ÝÆ, ò.ê. ýòî ìîæåò âûçâàòü ñáîé â ïàìÿòè ÊÊÌ.
|
||
|
||
Ïðîãðàììèðîâàíèå âðåìåíè
|
||
Êîìàíäà: "K" <×àñ(1)><Ìèíóòà(1)><Ñåêóíäà(1)>
|
||
Îòâåò: "U" <Êîä Îøèáêè(1)><0>.
|
||
Êîä êîìàíäû ("K", 4Bh, 75).
|
||
Äîïóñòèìûå çíà÷åíèÿ (ôîðìàò BCD) – ñì. êîìàíäó Çàïðîñ ñîñòîÿíèÿ
|
||
ÊÊÌ íà ñòð. 29.
|
||
Ïðèìå÷àíèå: Êîìàíäà ìîæåò áûòü âûïîëíåíà òîëüêî â òîì ñëó÷àå, åñëè òåêóùàÿ äàòà
|
||
ÊÊÌ ìåíüøå 01.01.2090 è áîëüøå 31.12.1999.
|
||
Âíèìàíèå! Êîìàíäà ìîæåò áûòü âûïîëíåíà òîëüêî ïðè çàêðûòîé ñìåíå.
|
||
Âíèìàíèå! Íå âûïîëíÿòü äàííóþ êîìàíäó, åñëè ÊÊÌ çàáëîêèðîâàíà â ðåçóëüòàòå
|
||
ïîÿâëåíèÿ îøèáêè ÝÆ, ò.ê. ýòî ìîæåò âûçâàòü ñáîé â ïàìÿòè ÊÊÌ.
|
||
*/
|
||
//---------------------------------------------------------------------------
|
||
std::wstring AYRA01FRKZ::GetErrorDesc(int ResultCode)
|
||
{
|
||
std::wstring result;
|
||
switch( ResultCode )
|
||
{
|
||
case 0: result=L"Îøèáîê íåò"; break;
|
||
case 1: result=L"Êîíòðîëüíàÿ ëåíòà îáðàáîòàíà áåç îøèáîê"; break;
|
||
case 8: result=L"Íåâåðíàÿ öåíà (ñóììà)"; break;
|
||
case 10: result=L"Íåâåðíîå êîëè÷åñòâî"; break;
|
||
case 11: result=L"Ïåðåïîëíåíèå ñ÷åò÷èêà íàëè÷íîñòè"; break;
|
||
case 12: result=L"Íåâîçìîæíî ñòîðíî ïîñëåäíåé îïåðàöèè"; break;
|
||
case 13: result=L"Ñòîðíî ïî êîäó íåâîçìîæíî (â ÷åêå çàðåãèñòðèðîâàíî ìåíüøåå êîëè÷åñòâî òîâàðîâ ñ óêàçàííûì êîäîì)"; break;
|
||
case 14: result=L"Íåâîçìîæåí ïîâòîð ïîñëåäíåé îïåðàöèè"; break;
|
||
case 15: result=L"Ïîâòîðíàÿ ñêèäêà íà îïåðàöèþ íåâîçìîæíà"; break;
|
||
case 16: result=L"Ñêèäêà/íàäáàâêà íà ïðåäûäóùóþ îïåðàöèþ íåâîçìîæíà"; break;
|
||
case 17: result=L"Íåâåðíûé êîä òîâàðà"; break;
|
||
case 18: result=L"Íåâåðíûé øòðèõ-êîä òîâàðà"; break;
|
||
case 19: result=L"Íåâåðíûé ôîðìàò"; break;
|
||
case 20: result=L"Íåâåðíàÿ äëèíà"; break;
|
||
case 21: result=L"ÊÊÌ çàáëîêèðîâàíà â ðåæèìå ââîäà äàòû"; break;
|
||
case 22: result=L"Òðåáóåòñÿ ïîäòâåðæäåíèå ââîäà äàòû"; break;
|
||
case 24: result=L"Íåò áîëüøå äàííûõ äëÿ ïåðåäà÷è ÏÎ ÊÊÌ"; break;
|
||
case 25: result=L"Íåò ïîäòâåðæäåíèÿ èëè îòìåíû ïðîäàæè"; break;
|
||
case 26: result=L"Îò÷åò ñ ãàøåíèåì ïðåðâàí. Âõîä â ðåæèì íåâîçìîæåí."; break;
|
||
case 27: result=L"Îòêëþ÷åíèå êîíòðîëÿ íàëè÷íîñòè íåâîçìîæíî (íå íàñòðîåíû íåîáõîäèìûå òèïû îïëàòû)."; break;
|
||
case 30: result=L"Âõîä â ðåæèì çàáëîêèðîâàí"; break;
|
||
case 31: result=L"Ïðîâåðüòå äàòó è âðåìÿ"; break;
|
||
case 32: result=L"Çàðåçåðâèðîâàíî"; break;
|
||
case 33: result=L"Íåâîçìîæíî çàêðûòü àðõèâ"; break;
|
||
case 61: result=L"Òîâàð íå íàéäåí"; break;
|
||
case 62: result=L"Âåñîâîé øòðèõ-êîä ñ êîëè÷åñòâîì <>1.000"; break;
|
||
case 63: result=L"Ïåðåïîëíåíèå áóôåðà ÷åêà"; break;
|
||
case 64: result=L"Íåäîñòàòî÷íîå êîëè÷åñòâî òîâàðà"; break;
|
||
case 65: result=L"Ñòîðíèðóåìîå êîëè÷åñòâî áîëüøå ïðîäàííîãî"; break;
|
||
case 66: result=L"Çàáëîêèðîâàííûé òîâàð íå íàéäåí â áóôåðå ÷åêà"; break;
|
||
case 67: result=L"Äàííûé òîâàð íå ïðîäàâàëñÿ â ÷åêå, ñòîðíî íåâîçìîæíî"; break;
|
||
case 68: result=L"Memo PlusTM 3TM çàáëîêèðîâàíî ñ ÏÊ"; break;
|
||
case 69: result=L"Îøèáêà êîíòðîëüíîé ñóììû òàáëèöû íàñòðîåê Memo PlusTM 3TM"; break;
|
||
case 70: result=L"Íåâåðíàÿ êîìàíäà îò ÊÊÌ"; break;
|
||
case 102: result=L"Êîìàíäà íå ðåàëèçóåòñÿ â äàííîì ðåæèìå ÊÊÌ"; break;
|
||
case 103: result=L"Íåò áóìàãè"; break;
|
||
case 104: result=L"Íåò ñâÿçè ñ ïðèíòåðîì ÷åêîâ"; break;
|
||
case 105: result=L"Ìåõàíè÷åñêàÿ îøèáêà ïå÷àòàþùåãî óñòðîéñòâà"; break;
|
||
case 106: result=L"Íåâåðíûé òèï ÷åêà"; break;
|
||
case 107: result=L"Íåò áîëüøå ñòðîê êàðòèíêè"; break;
|
||
case 108: result=L"Íåâåðíûé íîìåð ðåãèñòðà"; break;
|
||
case 109: result=L"Íåäîïóñòèìîå öåëåâîå óñòðîéñòâî"; break;
|
||
case 110: result=L"Íåò ìåñòà â ìàññèâå êàðòèíîê"; break;
|
||
case 111: result=L"Íåâåðíûé íîìåð êàðòèíêè / êàðòèíêà îòñóòñòâóåò"; break;
|
||
case 112: result=L"Ñóììà ñòîðíî áîëüøå, ÷åì áûëî ïîëó÷åíî äàííûì òèïîì îïëàòû"; break;
|
||
case 113: result=L"Ñóììà íå íàëè÷íûõ ïëàòåæåé ïðåâûøàåò ñóììó ÷åêà"; break;
|
||
case 114: result=L"Ñóììà ïëàòåæåé ìåíüøå ñóììû ÷åêà"; break;
|
||
case 115: result=L"Íàêîïëåíèå ìåíüøå ñóììû âîçâðàòà èëè àííóëèðîâàíèÿ"; break;
|
||
case 117: result=L"Ïåðåïîëíåíèå ñóììû ïëàòåæåé"; break;
|
||
case 118: result=L"(çàðåçåðâèðîâàíî)"; break;
|
||
case 122: result=L"Äàííàÿ ìîäåëü ÊÊÌ íå ìîæåò âûïîëíèòü êîìàíäó"; break;
|
||
case 123: result=L"Íåâåðíàÿ âåëè÷èíà ñêèäêè / íàäáàâêè"; break;
|
||
case 124: result=L"Îïåðàöèÿ ïîñëå ñêèäêè / íàäáàâêè íåâîçìîæíà"; break;
|
||
case 125: result=L"Íåâåðíàÿ ñåêöèÿ"; break;
|
||
case 126: result=L"Íåâåðíûé âèä îïëàòû"; break;
|
||
case 127: result=L"Ïåðåïîëíåíèå ïðè óìíîæåíèè"; break;
|
||
case 128: result=L"Îïåðàöèÿ çàïðåùåíà â òàáëèöå íàñòðîåê"; break;
|
||
case 129: result=L"Ïåðåïîëíåíèå èòîãà ÷åêà"; break;
|
||
case 130: result=L"Îòêðûò ÷åê àííóëèðîâàíèÿ – îïåðàöèÿ íåâîçìîæíà"; break;
|
||
case 132: result=L"Ïåðåïîëíåíèå áóôåðà êîíòðîëüíîé ëåíòû"; break;
|
||
case 134: result=L"Âíîñèìàÿ êëèåíòîì ñóììà ìåíüøå ñóììû ÷åêà"; break;
|
||
case 135: result=L"Îòêðûò ÷åê âîçâðàòà – îïåðàöèÿ íåâîçìîæíà"; break;
|
||
case 136: result=L"Ñìåíà ïðåâûñèëà 24 ÷àñà"; break;
|
||
case 137: result=L"Îòêðûò ÷åê ïðîäàæè – îïåðàöèÿ íåâîçìîæíà"; break;
|
||
case 138: result=L"Ïåðåïîëíåíèå ÔÏ"; break;
|
||
case 140: result=L"Íåâåðíûé ïàðîëü"; break;
|
||
case 141: result=L"Áóôåð êîíòðîëüíîé ëåíòû íå ïåðåïîëíåí"; break;
|
||
case 142: result=L"Èäåò îáðàáîòêà êîíòðîëüíîé ëåíòû"; break;
|
||
case 143: result=L"Îáíóëåííàÿ êàññà (ïîâòîðíîå ãàøåíèå íåâîçìîæíî)"; break;
|
||
case 145: result=L"Íåâåðíûé íîìåð òàáëèöû"; break;
|
||
case 146: result=L"Íåâåðíûé íîìåð ðÿäà"; break;
|
||
case 147: result=L"Íåâåðíûé íîìåð ïîëÿ"; break;
|
||
case 148: result=L"Íåâåðíàÿ äàòà"; break;
|
||
case 149: result=L"Íåâåðíîå âðåìÿ"; break;
|
||
case 150: result=L"Ñóììà ÷åêà ïî ñåêöèè ìåíüøå ñóììû ñòîðíî"; break;
|
||
case 151: result=L"Ïîäñ÷åò ñóììû ñäà÷è íåâîçìîæåí"; break;
|
||
case 152: result=L"Â ÊÊÌ íåò äåíåã äëÿ âûïëàòû"; break;
|
||
case 154: result=L"×åê çàêðûò – îïåðàöèÿ íåâîçìîæíà"; break;
|
||
case 155: result=L"×åê îòêðûò – îïåðàöèÿ íåâîçìîæíà"; break;
|
||
case 156: result=L"Ñìåíà îòêðûòà, îïåðàöèÿ íåâîçìîæíà"; break;
|
||
case 157: result=L"ÊÊÌ çàáëîêèðîâàíà, æäåò ââîäà ïàðîëÿ äîñòóïà ê ÔÏ"; break;
|
||
case 158: result=L"Çàâîäñêîé íîìåð óæå çàäàí"; break;
|
||
case 159: result=L"Êîëè÷åñòâî ïåðåðåãèñòðàöèé íå ìîæåò áûòü áîëåå 4"; break;
|
||
case 160: result=L"Îøèáêà Ô.Ï."; break;
|
||
case 162: result=L"Íåâåðíàÿ ñìåíà"; break;
|
||
case 163: result=L"Íåâåðíûé òèï îò÷åòà"; break;
|
||
case 164: result=L"Íåäîïóñòèìûé ïàðîëü"; break;
|
||
case 165: result=L"Íåäîïóñòèìûé çàâîäñêîé íîìåð ÊÊÌ"; break;
|
||
case 166: result=L"Íåäîïóñòèìûé ÐÍÌ"; break;
|
||
case 167: result=L"Íåäîïóñòèìûé ÈÍÍ"; break;
|
||
case 168: result=L"ÊÊÌ íå ôèñêàëèçèðîâàíà"; break;
|
||
case 169: result=L"Íå çàäàí çàâîäñêîé íîìåð"; break;
|
||
case 170: result=L"Íåò îò÷åòîâ"; break;
|
||
case 171: result=L"Ðåæèì íå àêòèâèçèðîâàí"; break;
|
||
case 172: result=L"Íåò óêàçàííîãî ÷åêà â ÊË"; break;
|
||
case 173: result=L"Íåò áîëüøå çàïèñåé ÊË"; break;
|
||
case 174: result=L"Íåêîððåêòíûé êîä èëè íîìåð êîäà çàùèòû ÊÊÌ"; break;
|
||
case 176: result=L"Òðåáóåòñÿ âûïîëíåíèå îáùåãî ãàøåíèÿ"; break;
|
||
case 177: result=L"Êîìàíäà íå ðàçðåøåíà ââåäåííûìè êîäàìè çàùèòû ÊÊÌ"; break;
|
||
case 178: result=L"Íåâîçìîæíà îòìåíà ñêèäêè/íàäáàâêè"; break;
|
||
case 179: result=L"Íåâîçìîæíî çàêðûòü ÷åê äàííûì òèïîì îïëàòû (â ÷åêå ïðèñóòñòâóþò îïåðàöèè áåç êîíòðîëÿ íàëè÷íûõ)"; break;
|
||
case 186: result=L"Îøèáêà îáìåíà ñ ôèñêàëüíûì ìîäóëåì"; break;
|
||
case 190: result=L"Íåîáõîäèìî ïðîâåñòè ïðîôèëàêòè÷åñêèå ðàáîòû"; break;
|
||
case 200: result=L"Íåò óñòðîéñòâà, îáðàáàòûâàþùåãî äàííóþ êîìàíäó"; break;
|
||
case 201: result=L"Íåò ñâÿçè ñ âíåøíèì óñòðîéñòâîì"; break;
|
||
case 202: result=L"Îøèáî÷íîå ñîñòîÿíèå ÒÐÊ"; break;
|
||
case 203: result=L"Áîëüøå îäíîé ðåãèñòðàöèè â ÷åêå"; break;
|
||
case 204: result=L"Îøèáî÷íûé íîìåð ÒÐÊ"; break;
|
||
case 205: result=L"Íåâåðíûé äåëèòåëü"; break;
|
||
case 207: result=L"Â ÊÊÌ ïðîèçâåäåíî 20 àêòèâèçàöèé"; break;
|
||
case 208: result=L"Çàðåçåðâèðîâàíî"; break;
|
||
case 209: result=L"Ïåðåãðåâ ãîëîâêè ïðèíòåðà"; break;
|
||
case 210: result=L"Çàðåçåðâèðîâàíî"; break;
|
||
case 211: result=L"Çàðåçåðâèðîâàíî"; break;
|
||
case 212: result=L"Çàðåçåðâèðîâàíî"; break;
|
||
case 213: result=L"Çàðåçåðâèðîâàíî"; break;
|
||
case 214: result=L"Çàðåçåðâèðîâàíî"; break;
|
||
case 215: result=L"Çàðåçåðâèðîâàíî"; break;
|
||
case 216: result=L"Çàðåçåðâèðîâàíî"; break;
|
||
case 217: result=L"Çàðåçåðâèðîâàíî"; break;
|
||
case 218: result=L"Çàðåçåðâèðîâàíî"; break;
|
||
case 219: result=L"Çàðåçåðâèðîâàíî"; break;
|
||
case 220: result=L"Áóôåð ïåðåïîëíåí"; break;
|
||
case 221: result=L"Íåâîçìîæíî íàïå÷àòàòü âòîðóþ ôèñêàëüíóþ êîïèþ"; break;
|
||
case 222: result=L"Òðåáóåòñÿ ãàøåíèå ÝÆ"; break;
|
||
default:
|
||
result=L"Íåò îïèñàíèÿ îøèáêè!";
|
||
}
|
||
return result;
|
||
}
|
||
//---------------------------------------------------------------------------
|