diff --git a/devices/Printers/DP25/DP25.cpp b/devices/Printers/DP25/DP25.cpp index d3ccb74..001142c 100644 --- a/devices/Printers/DP25/DP25.cpp +++ b/devices/Printers/DP25/DP25.cpp @@ -1,6 +1,6 @@ /* * Для каз. фискальников с функцией передачи на сервер: - * + * --- * FPG-1000 = ПОРТ FPG-1000 ФKZ (Бумага с боку) * FPG-350 = ПОРТ FPG-350 ФKZ (Переносной) * FPG-60 = ПОРТ FPG-60 ФKZ @@ -969,7 +969,19 @@ MyError DP25::SetFiscalInvParam(int Type, std::string Data) Data = ""; }else if (Type == 3){ // '3' INN/BIN number up to 12 digits; msg.append(Data, 0, 12); - }else { + }else if (Type == 4) { // Parent ticket number up to 16 digits; + msg.append(Data, 0, 16); + }else if (Type == 5) { // Parent ticket date time in format: "DD-MM-YY hh:mm:ss"; + msg.append(Data, 0, 17); + }else if (Type == 6) { // Parent ticket KgdKkmId up to 12 digits; + msg.append(Data, 0, 12); + }else if (Type == 7) { // Parent ticket total (0.00...999,999,999,999.99); + msg.append(Data, 0, 15); + }else if (Type == 8) { // Parent ticket is off line (0..1); + msg.append(Data, 0, 1); + } + else { + Data = ""; } msg += '\t'; @@ -1140,7 +1152,7 @@ MyError DP25::DiagnosticInfo(std::string& Name,std::string& FwRev,std::string& F if(m_SaveLog) { std::stringstream ss; - ss << "DiagnosticInfo(Name="+Name+",FwRev="+FwRev+",FwDate="+FwDate+",FwTime"+FwTime+",Checksum"+Checksum+",Sw="+Sw+",DevNumber="+DevNumber+"); v3.13.0.14"; + ss << "DiagnosticInfo(Name="+Name+",FwRev="+FwRev+",FwDate="+FwDate+",FwTime"+FwTime+",Checksum"+Checksum+",Sw="+Sw+",DevNumber="+DevNumber+"); v3.15.0.2"; if(m_LastErrorCode!=0) ss << " ErrorCode: " << m_LastErrorCode << " ErrorDescription: " << m_LastErrorDescription; Utility::logrotate(m_LogFilePath+sp3()+"log.txt","main","info",ss.str()); } @@ -1439,9 +1451,27 @@ MyError DP25::OpenFiscalInv(int OpCode,std::string OpPwd,int TillNmb,char Receip ///MarkStamp - Mark stamp read with a 2D - code scanner(up to 168 symbols).The sale of a marked item must contain{ MarkStamp }; Note The control of the item being marked or not marked, must be performed by the computer program; ///Sum - Sum printed instead of{ Price } *{Quantity} in the receipt(0.00...999, 999, 999, 999.99); ///UnitCode - Code of the unit, which will be printed in sales after the sold quantity(1...999).Default: The code of first programmed unit; +/// NTIN - До 16 символов NTIN(национальный торговый номер товара) продукта согласно протоколу 203. /// SlipNumber – Текущий номер чека продажи или чека возврата (1...99999999); -///DocNumber - Global number of all documents ( 1...99999999 ); -MyError DP25::RegisterSale(std::string PluName, char TaxCode, double Price, double Quantity, char DiscountType, double DiscountValue, int Department, std::string MarkStamp, double RoundPrice, int UnitCode, std::string ProductID, std::string BarCode, int& SlipNumber, int& DocNumber) +/// DocNumber - Global number of all documents ( 1...99999999 ); +MyError DP25::RegisterSale( + std::string PluName, + char TaxCode, + double Price, + double Quantity, + char DiscountType, + double DiscountValue, + int Department, + std::string MarkStamp, + double RoundPrice, + int UnitCode, + std::string ProductID, + std::string BarCode, + int MarkType, + std::string NTIN, + int& SlipNumber, + int& DocNumber +) { if (DiscountType == 0) DiscountType = '0'; if (DiscountType == 1) DiscountType = '1'; @@ -1516,6 +1546,11 @@ MyError DP25::RegisterSale(std::string PluName, char TaxCode, double Price, doub msg += ProductID + "\t"; msg += BarCode + "\t"; + if (NTIN.length() > 0){ + if(MarkType==5) msg += "5\t"; else msg += "\t"; + msg += NTIN + "\t"; + } + std::string str=""; std::string answer; @@ -1555,7 +1590,7 @@ MyError DP25::RegisterSale(std::string PluName, char TaxCode, double Price, doub if(m_SaveLog) { std::stringstream ss; - ss << "RegisterSale(PluName=\""+PluName+"\", TaxCd='"+ TaxCode +"', Price="+Utility::FloatToStdStr(Price,2,'.')+", Quantity="+Utility::FloatToStdStr(Quantity,3,'.')<<", DiscountType="<< DiscountType << ", DiscountValue=" << Utility::FloatToStdStr(DiscountValue, 2, '.') <<", Department="+Utility::IntToStdStr(Department)+", MarkStamp='"+ MarkStamp +"', RoundPrice="+Utility::FloatToStdStr(RoundPrice,2,'.')+", UnitCode="<< UnitCode << ", ProductID=" << ProductID << ", BarCode=" << BarCode << ", SlipNumber=" << SlipNumber << ", DocNumber=" << DocNumber << ");"; + ss << "RegisterSale(PluName=\""+PluName+"\", TaxCd='"+ TaxCode +"', Price="+Utility::FloatToStdStr(Price,2,'.')+", Quantity="+Utility::FloatToStdStr(Quantity,3,'.')<<", DiscountType="<< DiscountType << ", DiscountValue=" << Utility::FloatToStdStr(DiscountValue, 2, '.') <<", Department="+Utility::IntToStdStr(Department)+", MarkStamp='"+ MarkStamp +"', RoundPrice="+Utility::FloatToStdStr(RoundPrice,2,'.')+", UnitCode="<< UnitCode << ", ProductID=" << ProductID << ", BarCode=" << BarCode << ", MarkType = "<< MarkType <<", NTIN = "<< NTIN <<", SlipNumber=" << SlipNumber << ", DocNumber=" << DocNumber << ");"; if(m_LastErrorCode!=0) ss << " ErrorCode: " << m_LastErrorCode << " ErrorDescription: " << m_LastErrorDescription; Utility::logrotate(m_LogFilePath+sp3()+"log.txt","main","info",ss.str()); } @@ -3326,7 +3361,7 @@ MyError DP25::PrintBarCode(char Type,std::string Data,int QRcodeSize) return result; } //--------------------------------------------------------------------------- -//Дата последней фискальной записи +//Дата последней фискальной записи format "DD-MM-YY hh:mm:ss" MyError DP25::DateOfLastEntryByFiscalMemory(std::string& DateTime) { if(m_SaveLog) Utility::logrotate(m_LogFilePath+sp3()+"log.txt","main","info","Start DateOfLastEntryByFiscalMemory();"); diff --git a/devices/Printers/DP25/DP25.h b/devices/Printers/DP25/DP25.h index 9f8ba3e..63da721 100644 --- a/devices/Printers/DP25/DP25.h +++ b/devices/Printers/DP25/DP25.h @@ -172,7 +172,7 @@ public: MyError CutPaper(); ///<Отрезать бумагу MyError DisplayUpper(std::string Text); ///<Вывод текста в верхнюю строку дисплея MyError OpenFiscalInv(int OpCode, std::string OpPwd, int TillNmb, char ReceiptType, int& ShiftNumber, int& SlipNumber, int& DocNumber); ///<Открытие фискального (клиентского) чека - MyError RegisterSale(std::string PluName, char TaxCode,double Price,double Quantity,char DiscountType,double DiscountValue,int Department, std::string MarkStamp,double RoundPrice,int UnitCode, std::string ProductID, std::string BarCode, int& SlipNumber, int& DocNumber); + MyError RegisterSale(std::string PluName, char TaxCode,double Price,double Quantity,char DiscountType,double DiscountValue,int Department, std::string MarkStamp,double RoundPrice,int UnitCode, std::string ProductID, std::string BarCode,int MarkType, std::string NTIN, int& SlipNumber, int& DocNumber); MyError ReportOnTaxRates(int& NZreport,double& TaxA,double& TaxB,double& TaxC,std::string& EntryDate); ///<Отчет по налоговым ставкам и положению десятичной точки за период int ReadingError(int Code, int& ECode, std::string& ErrorMessage); MyError Subtotal(char Print,char Display,char DiscountType,double DiscountValue,int& SlipNumber,double& Subtotal,double& TaxA,double& TaxB,double& TaxC); ///<Подитог diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~19~ b/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~19~ deleted file mode 100644 index 444879c..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~19~ +++ /dev/null @@ -1,2202 +0,0 @@ -//! FP300KZ -/*! - FP300KZ -\author . -\file FP300KZ.cpp -*/ -//--------------------------------------------------------------------------- -#pragma hdrstop - -#include "stdafx.h" - - -#include "FP300KZ.h" -#include -#include -#include - -#include -#include -#include -//#include -#include -#include - -#include //mkdir - -//#include -//#include -//#include - -#if defined( __WXMSW__ ) // - #include -#endif // __WXMSW__ -//--------------------------------------------------------------------------- -//#pragma package(smart_init) -//--------------------------------------------------------------------------- -// -//typedef unsigned long DWORD; -//--------------------------------------------------------------------------- -// -bool saveLog(std::string FileName, std::string Text) -{ - try - { - for(uint4 i=0;is[0][0]) return 4; //0x04 -/*5 5 -6 6 -7 7 -8 8 -9 9 -0A 10 BCD -0B 11 -11 17 -12 18 -13 19 -14 20 -15 21 -16 22 -17 23 -18 24 -19 25 -1A 26 -1B 27 -1C 28 -1D 29 -1F 31 -20 32 -21 33 -22 34 -23 35 -24 36 -25 37 -33 51 -35 53 -36 54 -37 55 -38 56 + -39 57 -3A 58 -3C 60 : -3E 62 -3F 63 -40 64 -41 65 -42 66 2 -43 67 3 -44 68 4 -45 69 C -46 70 -47 71 -48 72 -4A 74 - -4B 75 -4C 76 -4D 77 -4E 78 24 -*/ - //if(CommandName==fcOpenFiscalInv && Password=="") return 79; //4F 79 - -/*50 80 -51 81 -52 82 2 -53 83 3 -54 84 4 -56 86 -57 87 : -58 88 -59 89 -5B 91 -5C 92 24 -5D 93 -5E 94 -5F 95 -60 96 -61 97 -62 98 -63 99 -64 100 + -65 101 -66 102 */ - if(!cPort->bOpen) return 103; //0x67 + -/*68 104 -69 105 -6A 106 I2C -6B 107 -6C 108 -6D 109 -6E 110 -6F 111 -70 112 -71 113 + -72 114 -73 115 -74 116 -75 117 + -76 118 : + -77 119 : + -78 120 -79 121 -7A 122 -7B 123 -7C 124 -7D 125 -7E 126 -7F 127 -80 128 + -81 129 + -82 130 + -83 131 + -84 132 -85 133 -86 134 -87 135 -88 136 -89 137 -8A 138 -8B 139 -8C 140 -8D 141 -8E 142 -8F 143 -90 144 , -91 145 -92 146 -93 147 -94 148 -A0 160 + -A1 161 + -A2 162 : -A3 163 -A4 164 -A5 165 -A6 166 -A7 167 -A8 168 : -A9 169 : -AA 170 ( ) -B0 176 : -B1 177 : -B2 178 : */ - if(Status->s[0][2]) return 192; //0xC0 ( ) -/*C1 193 : -C2 194 -C3 195 -C4 196 -5 197 -C6 198 -C7 199 */ - - // - if(Status->s[0][4]) return 500; // . - if(Status->s[0][1]) return 501; // . - if(Status->s[1][4]) return 502; // . - if(Status->s[1][3]) return 503; // ( RESET). - if(Status->s[1][2]) return 504; // . - if(Status->s[1][1]) - { - if(CommandName==fcOpenFiscalInv && Status->s[2][3]) return 509; else // . - if(CommandName==fcCloseFiscalInv) - { - bool Open; int Items; double Amount=0,Tender=0; - FiscalTransactionsStatus(Open,Items,Amount,Tender); - CommandName=fcCloseFiscalInv; // - Status->s[1][1]=true; // - if(Open && Amount-(Tender+0.002)>0) return 511; //" !" - }else - if(CommandName==fcOpenFiscalInv) - { - // - m_SaveLog=false; - int sec; - if(SessionSec(sec) && sec>24*60*60) - { - Status->s[1][1]=true; - CommandName=fcOpenFiscalInv; // - return 78; - } - m_SaveLog=true; - } - return 505; // . - } - if(Status->s[4][0]) return 506; // . - if(Status->s[4][4]) return 507; // . - if(Status->s[2][0]) return 508; // . - //509 " ." - if(Status->s[1][5]) return 510; // ! - //511 " !" - //512 - //513 . - //514 () (). - //515 . - //516 . - //517 Z-. Z-. - //518 . - //519 . - //520 " ". - - - return m_ErrorCode; -} -//--------------------------------------------------------------------------- -FP300KZ::FP300KZ() -{ - cPort=new ComPort(); - Status=new MyStatus(); - CheckCount=0; - for(int i=0;ibOpen) { m_ErrorCode=103; return false; } - - CommandName=msg[3]; // - for(int i=0;ibOpen) - { - for(int i=0;i<5;i++) // 5 ... - { - // - msg[1]=0x20+size-1; // - msg[2]=FrameSeqNumber; - unsigned int crc=MakeCRC(msg,1,size); - cPort->Write(msg,size); // - cPort->Write(&crc,4); // - cPort->WriteChar(0x03); // - - // - bool isOk=true; - int j=0; - while(j<9) //9*60=540 500ms - { - uint1 start=0; - unsigned long BytesRead=cPort->Read(&start,sizeof(start)); // ( 60 ms 500 ms) - if(BytesRead==0) // - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - m_ErrorCode=103; // - break; - }else - if(start==0x15) //NACK - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - break; - }else - if(start==0x16) //SYN 60ms - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - j=0; // ( ) - }else - if(start==0x01) // - { - ReadAr[0]=start; // CRC - uint1 size=0; - cPort->Read(&size,1); // - ReadAr[1]=size; - size=ReadAr[1]-0x20 + 6; // (+5 1 CRC 4 1 ) - - BytesRead=2; // - for(int j=0;j<100;j++) - { - BytesRead+=cPort->Read(&ReadAr[BytesRead],size-BytesRead); - if(BytesRead>=size) - break; - } - - // CRC - unsigned int crc0=MakeCRC(ReadAr,1,size-5); - unsigned int crc1=*((unsigned int*)&ReadAr[size-5]); - if(crc0!=crc1) isOk=false; // - else - { - Status->SetStatus(&ReadAr[size-12]); // - answer.assign((char*)&ReadAr[4],size-17); // - result=true; - } - if(result) break; - } - j++; - } - if(!isOk) continue; // - break; // - } - } - - if(!result) m_ErrorCode=5; - return result; -} -//--------------------------------------------------------------------------- -bool FP300KZ::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(0)) - return false; - }else return false; - return true; -} -//--------------------------------------------------------------------------- -void FP300KZ::LoadSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - cPort->port=ini->ReadString("Printer","Port",""); - cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0); - CheckCount=ini->ReadInteger("Printer","CheckCount",0); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -void FP300KZ::SaveSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - 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",CheckCount); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -bool FP300KZ::Print() -{ - return false; -} -//--------------------------------------------------------------------------- -void FP300KZ::NewLine() -{ - -} -//--------------------------------------------------------------------------- -/*public byte[] ReturnBCC(byte[] bytePacketData) - { - // (0000H-FFFFH) - // : 4 - // : 30H - 3FH - // <01> <05> . - // 30H. - // 1AE3H 31H,3AH,3EH,33H. - - // IN HEX - // 01 25 50 4C 54 05 30 - - // In decimal - // 1 37 80 76 84 5 48 - - Int64 triset_HEX = 0x30; - - byte[] bRes = new byte[4]; - int i = 48; - int iRes = 0; - // int i = 0; - int iCountB = 0; - string hexval1 = String.Empty; - string hexval2 = String.Empty; - StringBuilder sb = new StringBuilder(); - foreach (byte n in bytePacketData) - { - if (n != (byte)01) - { - if (iCountB == 0) - { - sb.Append(n.ToString("X2")); - string hexString = sb.ToString(); - triset_HEX = triset_HEX + Convert.ToInt64(hexString, 16); - } - iCountB++; - if (iCountB > 1) - iCountB = 0; - } - if (n == (byte)05) - break; - } - return this.ConvertHexToByteArr(Convert.ToString( triset_HEX )); - } -*/ -//--------------------------------------------------------------------------- -/// CRC -//BufStart - -//BufEnd - ( ) -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufEnd) -{ - unsigned int cs=0; - for(unsigned int i=BufStart;i> 0x0C) & 0x0F) + 0x30; - mas[1]=((cs >> 0x08) & 0x0F) + 0x30; - mas[2]=((cs >> 0x04) & 0x0F) + 0x30; - mas[3]=((cs >> 0x00) & 0x0F) + 0x30; - return result; -} -//--------------------------------------------------------------------------- -// PrinterName PrinterVersion PrinterNumber PrinterDecimal -// ... -bool FP300KZ::PrinterInit() -{ - bool b=DiagnosticInfo(); - if(b) - { - bool bA,bB,bC,bD; - std::string Decimal,r,TaxA,TaxB,TaxC,TaxD; - b=b && GetTaxRates(Decimal,r,bA,bB,bC,bD,TaxA,TaxB,TaxC,TaxD); -// if(b) b=b && fp->GetStatusFP(); - } - return b; -} -//--------------------------------------------------------------------------- -/// 4A -bool FP300KZ::GetStatusFP() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcGetStatusFP,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetStatusFP(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -bool FP300KZ::CancelFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcCancelFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CancelFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -///OpCode - 1..16 -///OpPwd - 4 - 6 -///TillNmb - 1..99999 -bool FP300KZ::OpenFiscalInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x00; msg+=(char)0x00; msg+=(char)fcOpenFiscalInv; - msg+=IntToStdStr(OpCode)+","+OpPwd+","+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - //if(b) - //{ Password=OpPwd; // - //} - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenFiscalInv(OpCode="+IntToStdStr(OpCode)+",OpPwd=****,TillNmb="+IntToStdStr(TillNmb)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CloseFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcCloseFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenServiceInv() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcOpenServiceInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///TODO : ( ) /4 /. -bool FP300KZ::CloseServiceInv(int& count) -{ - count=0; - unsigned char msg[5] = {0x01,0x24,0x00,fcCloseServiceInv,0x05}; - std::string str; - bool b=SendPMessage(msg,sizeof(msg),str); - b=b && !Status->s[0][5]; // - - if(b) count=fromString(str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/**OpCode - 1..16 -* OpPwd - 4 - 6 -* TillNmb - / 1..99999/ -*/ -bool FP300KZ::OpenBackInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenBackInv; - msg+=IntToStdStr(OpCode)+','+OpPwd+','+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenBackInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDuplicateInv() -{ - unsigned char msg[6] = {0x01,0x25,0x00,fcPrintDuplicateInv,0x31,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDuplicateInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/** -Option - 1..4 -Name - ( name = '' ) -*/ -bool FP300KZ::SetAddTypesOfPayment(char Option, std::wstring& Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetAddTypesOfPayment; - switch(Option) - { - case 1: - msg+='I'; - break; - case 2: - msg+='J'; - break; - case 3: - msg+='K'; - break; - case 4: - msg+='L'; - break; - } - if(Text.length()!=0) - { - msg+=','; - msg.append(ws2s(Text),0,31); // 31 - } - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b && Text.length()!=0 && answer!="P") b=b && false; - if(b && Text.length()==0) Text=s2ws(answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetAddTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintZReport() -{ - bool b=PrintEJ(); // - if(b) b=b && EJ("E"); // - if(b) b=b && DailyFinancialReport('1'); // Z - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintXReport() -{ - return DailyFinancialReport('3'); -} -//--------------------------------------------------------------------------- -// ( ) -bool FP300KZ::PrintLine(std::wstring line) -{ - bool b=PrintFreeTextInFiscalInv(ws2s(line)); //TODO ru-ru.1251 - if(!b) b=PrintFreeTextInServiceInv(ws2s(line)); // - return b; - -// bool b=PrintFreeTextInFiscalInv(WStringToString(line, std::locale(""),'?')); //TODO ru-ru.1251 -// if(!b) b=PrintFreeTextInServiceInv(WStringToString(line, std::locale(""),'?')); // -// return b; -} -//--------------------------------------------------------------------------- -/// -///'0' - Z -///'1' - Z -///'2' - X -///'3' - X -bool FP300KZ::DailyFinancialReport(uint1 Option) -{ - //N - unsigned char msg[6] = {0x01,0x25,0x00,fcDailyFinancialReport,Option,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyFinancialReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Start - DDMMYY /6 / -///End - DDMMYY /6 / -bool FP300KZ::ReportOnTaxRates(std::string Start,std::string End) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportOnTaxRates; - msg+=Start+','+End; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(answer=="f") b=false; // . - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportOnTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::FullFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::ReduceFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::FullFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::ReduceFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::DailyReportByTypesOfPayment(std::string& Cash,std::string& Credit,std::string& Debit,std::string& Cheque,std::string& Pay1,std::string& Pay2,std::string& Pay3,std::string& Pay4,std::string& Closure,std::string& Receipt) -{ -// - unsigned char msg[5] = {0x01,0x24,0x00,fcDailyReportByTypesOfPayment,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Cash=CutBeforeFirst(answer,','); - Credit=CutBeforeFirst(answer,','); - Debit=CutBeforeFirst(answer,','); - Cheque=CutBeforeFirst(answer,','); - Pay1=CutBeforeFirst(answer,','); - Pay2=CutBeforeFirst(answer,','); - Pay3=CutBeforeFirst(answer,','); - Pay4=CutBeforeFirst(answer,','); - Closure=CutBeforeFirst(answer,','); - Receipt=CutBeforeFirst(answer,','); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyReportByTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///'S' - . -///'P' - . -bool FP300KZ::ReportByArticle(std::string Option) //#define fcReportByArticle 0x6F //(111) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportByArticle; msg+=Option; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportByArticle(Option="+Option+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OperatorReport() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcOperatorReport,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OperatorReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param cnt -bool FP300KZ::FeedPaper(int cnt) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFeedPaper; - msg+=IntToStdStr(cnt); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FeedPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenCashDrawer(int mSec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenCashDrawer; - if(mSec>0) msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenCashDrawer(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -//,[] -/// () -bool FP300KZ::SetDepartmentName(int dept,std::wstring line1,std::wstring line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDepartmentName; - msg+=IntToStdStr(dept); - msg+=','; - msg.append(ws2s(line1),0,36); // 36 - if(line2.length()>0) - { - msg+=(char)10; - msg.append(ws2s(line2),0,46); // 46 - } - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDepartmentName(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetDepartmentInfo(int dept,int &RecSales,float &RecSum,int &TotSales,float &TotSum,std::wstring &Line1,std::wstring &Line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDepartmentInfo; - msg+=IntToStdStr(dept); - msg+=(char)0x05; - - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - if(CutBeforeFirst(str,',')=="P") // - { - std::string nstr; - nstr=CutBeforeFirst(str,','); - RecSales=StdStrToInt(nstr); - RecSum=fromString(CutBeforeFirst(str,',')); // 2 - nstr=CutBeforeFirst(str,','); - TotSales=StdStrToInt(nstr); - TotSum=fromString(CutBeforeFirst(str,',')); // 2 - Line1=s2ws(CutBeforeFirst(str,(char)10)); - Line2=s2ws(str); - }else - { - RecSales=0; - RecSum=0; - TotSales=0; - TotSum=0; - Line1=L' '; - Line2=L' '; - } - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDepartmentInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CutPaper() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcCutPaper; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CutPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDiagnostic() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcPrintDiagnostic,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDiagnostic(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::SetManufacturersSerialNumber(std::string Serial) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetManufacturersSerialNumber; - msg+=Serial; - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - b=b && BeforeFirst(answer,',')=="P"; - // "KAZAKHSTAN" - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetManufacturersSerialNumber(Serial="+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -std::string FP300KZ::GetStatusDescription(BYTE StatusCode) -{ - if (StatusCode == 0x00) - { - return "OK"; - } - if (StatusCode == 0xFF) - { - return " !"; - } - BYTE code = (BYTE)StatusCode & (BYTE)0x04; - if (code > 0) - { - return " "; - } - code = (BYTE)StatusCode & (BYTE)0x01; - if (code > 0) - { - return " "; - } - return ""; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetRNNAndRNM(std::string &RNN,std::string &RNM) -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcGetRNNAndRNM,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - RNN=BeforeFirst(answer,','); - RNM=AfterFirst(answer,','); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetRNNAndRNM("+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SetRNNAndRNM(std::string RNN,std::string RNM) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetRNNAndRNM; - msg+=RNN+','+RNM; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetRNNAndRNM(RNN="+RNN+",RNM="+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode -///\param OldPwd -///\param NewPwd -///\return -bool FP300KZ::SetOperatorPassword(std::string OpCode,std::string OldPwd,std::string NewPwd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorPassword; - msg+=OpCode+','+OldPwd+','+NewPwd; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorPassword(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode . 1 16 . -///\param Pwd (4 8 ). -///\param OpName ( 30 ). -///\return -bool FP300KZ::SetOperatorName(std::string OpCode,std::string Pwd,std::string OpName) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorName; - msg+=OpCode+','+Pwd+','+OpName; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorName(OpCode="+OpCode+",OpName="+OpName+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM[:SS]" -bool FP300KZ::SetDateTime(std::string date, std::string time) //#define fcSetDateTime 0x3D //(61) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDateTime; - msg+=trim(date)+' '+trim(time); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDateTime(\"")+date+std::string("\", \"")+time+std::string("\"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM:SS" -bool FP300KZ::GetDateTime(unsigned short& De,unsigned short& Me,unsigned short& Ye,unsigned short& Ho,unsigned short& Mi,unsigned short& Se) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDateTime; msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - De=fromString(CutBeforeFirst(str,'-')); - Me=fromString(CutBeforeFirst(str,'-')); - Ye=fromString(CutBeforeFirst(str,' '));//+2000; - - Ho=fromString(CutBeforeFirst(str,':')); - Mi=fromString(CutBeforeFirst(str,':')); - Se=fromString(str); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDateTime(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// HEADER FOOTER -bool FP300KZ::PrintSetup(std::string Item, std::string Text, std::string& Answer) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintSetup; - msg+=Item+Text; - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),Answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintSetup(Item="+Item+",Text="+Text+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::PrintFreeTextInServiceInv(std::string Text) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInServiceInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintFreeTextInFiscalInv(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInFiscalInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///[][]<[Sign]Price>[*][,Perc|;Abs] -///L1 - , 36 -///L2 - , 36 -///dep - (1..10) -///TaxCd - (, , , , ). -///Price - ( 8 ). -///Qwan - ( 8 3- ). -///Abs - Perc -///Perc - ( ) -bool FP300KZ::RegisterSale(std::wstring L1,std::wstring L2,int dep, std::string TaxCd,double Price,double Qwan,bool Abs,double Perc) -{ - L1=replaceStrings(L1,L"\n",L" "); // - L2=replaceStrings(L2,L"\n",L" "); // - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSale; - msg.append(ws2s(L1),0,36); // 36 - if(L2.length()>0) - { - msg+=(char)0x0A; - msg.append(ws2s(L2),0,36); // 36 - } - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=FloatToStdStr(Price,m_Dots); // - msg+='*'+FloatToStdStr(Qwan,3); - if(Perc!=0) - if(Abs) msg+=';'+FloatToStdStr(Perc,m_Dots); // - else msg+=','+FloatToStdStr(Perc,2); // - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSale(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// [Line]]<[Sign]Price>[*Qwan][,Perc|;Abs] -///Line - 20 . -///TaxCd - (, , , , ). -///Price - ( 8 ). -bool FP300KZ::RegisterSaleDisp(std::string L1,int dep,std::string TaxCd,std::string Price) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSaleDisp; - - msg+=L1; - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=Price; - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSaleDisp(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Print - 1 . -//Display - 1 . -//Abs - false Perc -//Perc - (+-99.9) -//Sum - / 10 / -bool FP300KZ::Subtotal(std::string Print,std::string Display, bool Abs, double Perc,double& Sum) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSubtotal; - - msg+=Print+Display; - if(Perc!=0) // - { - if(Abs) msg+=';'+FloatToStdStr(Perc,2); - else msg+=','+FloatToStdStr(Perc,2); - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - Sum=fromString(CutBeforeFirst(str,','))/M(); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("Subtotal(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -//Line1 - 36 -//Line2 - 36 -//PaidMode - : 'P' ; 'N' ; 'C' ; 'D' 'I' - 1 'J' - 2 'K' - 3 'L' - 4 -// +, Amount ( ). -//Amount - / 10 /. -//Change - -bool FP300KZ::Total(std::string Line1,std::string Line2,std::string PaidMode,double Amount, double& Change) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcTotal; - msg+=Line1; - msg+=(char)0x0A; - msg+=Line2; - msg+=(char)0x09; // - msg+=PaidMode; // - if(Amount>0) msg+='+'; - msg+=FloatToStdStr(Amount,m_Dots); - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - if(str[0]=='F') b=false; - std::string s=""; - s.append(str,1,str.length()-1); - Change=fromString(s)/M(); - if(str[0]=='D') Change=-fabs(Change); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Total(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Amount ( 10 ). . -//strH - strF - -//ExitCode P . , . F : . . -//CashSum . . -//ServIn . -//ServOut . -bool FP300KZ::ParishOrConsumption(std::string Oper,std::string Password,double Amount,std::wstring strH,std::wstring strF,std::string& ExitCode,double& CashSum,double& ServIn,double& ServOut) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcParishOrConsumption; -/* -46h (70) . - : [,,] - -: ExitCode,CashSum,ServIn,ServOut -Oper . 1 24. -Password 4 8 -Amount ( 11 ). . -ExitCode P - . , . -F - : - . - . -CashSum . . -ServIn . -ServOut . - -*/ - if(PrinterName.find("FP600")!=std::string::npos) - { - if(Amount!=0) - { msg+=Oper+","; // - msg+=Password+","; // - msg+=FloatToStdStr(Amount,2); - } - }else - { - if(Amount!=0) - { - msg+=FloatToStdStr(Amount,2); - while(strH.length()>0) - { - std::wstring str = CutBeforeWFirst(strH,L'\n'); - msg+='\t'; msg+='h'; msg.append(ws2s(str),0,48); - } - while(strF.length()>0) - { - std::wstring str = CutBeforeWFirst(strF,L'\n'); - msg+='\t'; msg+='f'; msg.append(ws2s(str),0,48); - } - } - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - ExitCode=CutBeforeFirst(str,','); - CashSum=fromString(CutBeforeFirst(str,','))/M(); - ServIn=fromString(CutBeforeFirst(str,','))/M(); - ServOut=fromString(str)/M(); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ParishOrConsumption(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// - -///Type - 1 5 (1-EAN8, 2-EAN13, 3-Code 128, 4-ITF, 5-ITF) -bool FP300KZ::PrintBarCode(int Type,std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintBarCode; - msg+=IntToStdStr(Type); - msg+=','; - msg+=Data; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintBarCode(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Hz -///\param mSec -bool FP300KZ::Beep(int Hz,int mSec) -{ - if(Hz==0) Hz=294; - if(mSec==0) mSec=1000/8; - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcBeep; - msg+=IntToStdStr(Hz); - msg+=','; - msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Beep(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\Logical -bool FP300KZ::FreeFieldsByFiscalMemory(long& Logical) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFreeFieldsByFiscalMemory; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - {// Logical=fromString(CutBeforeFirst(str,',')); - Logical=fromString(CutBeforeFirst(str,',')); // - } - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FreeFieldsByFiscalMemory(Logical); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// update=false - , -, . -. -///\param update false , - -bool FP300KZ::SwitchPrg(bool update) -{ - std::string msg,key=""; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSwitchPrg; - if(update) - { - if(Sw8) key+='1'; else key+='0'; // - if(Sw7) key+='1'; else key+='0'; // - if(Sw6) key+='1'; else key+='0'; // - if(Sw5) key+='1'; else key+='0'; // - if(Sw4) key+='1'; else key+='0'; // Windows 1251 - if(Sw3) key+='1'; else key+='0'; // - if(Sw2) key+='1'; else key+='0'; // - if(Sw1) key+='1'; else key+='0'; // (: ) - msg+=key; - } - msg+=(char)0x05; - std::string str=""; - - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - saveLog(PrinterName+"_"+PrinterNumber,std::string("SwitchPrg("+key+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getSmallEJ(bool& val) -{ //val=Sw1; - val=Sw2; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setSmallEJ(bool val) -{ //Sw1=val; - Sw2=val; - return SwitchPrg(true); // -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getDisplayTransparent(bool& val) -{ val=Sw3; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setDisplayTransparent(bool val) -{ Sw3=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::getDisplayWin1251(bool& val) -{ - val=Sw4; - return true;// true . -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::setDisplayWin1251(bool val) -{ Sw4=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -// "bps" -int FP300KZ::getComSpeed() -{ - int speed=0; - if(!Sw6 && !Sw7 && !Sw8) speed=1200; - if(!Sw6 && !Sw7 && Sw8) speed=2400; - if(!Sw6 && Sw7 && !Sw8) speed=4800; - if(!Sw6 && Sw7 && Sw8) speed=9600; - if( Sw6 && !Sw7 && !Sw8) speed=19200; - if( Sw6 && !Sw7 && Sw8) speed=38400; - if( Sw6 && Sw7 && !Sw8) speed=57600; - if( Sw6 && Sw7 && Sw8) speed=115200; - return speed; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setComSpeed(int Speed) -{ - bool b=false; - if(Speed==1200) {Sw6=0; Sw7=0; Sw8=0; b=true;} - if(Speed==2400) {Sw6=0; Sw7=0; Sw8=1; b=true;} - if(Speed==4800) {Sw6=0; Sw7=1; Sw8=0; b=true;} - if(Speed==9600) {Sw6=0; Sw7=1; Sw8=1; b=true;} - if(Speed==19200) {Sw6=1; Sw7=0; Sw8=0; b=true;} - if(Speed==38400) {Sw6=1; Sw7=0; Sw8=1; b=true;} - if(Speed==57600) {Sw6=1; Sw7=1; Sw8=0; b=true;} - if(Speed==115200) {Sw6=1; Sw7=1; Sw8=1; b=true;} - - if(b) b=SwitchPrg(true); // - return b; -} -//--------------------------------------------------------------------------- -/// . -/// Sw3 OFF, . -bool FP300KZ::DisplayClear() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcDisplayClear,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DisplayClear(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Text - 20 -bool FP300KZ::DispalyLower(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyLower; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyLower(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Text - 20 -bool FP300KZ::DispalyUpper(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyUpper; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyUpper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// ( 40 ), . ASCII 20h ( ) 40h 10h. -bool FP300KZ::DispalyFree(std::string Text) -{ -//Text=TransformCode(Text); - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyFree; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyFree(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param Decimals 0,1 2 -///\param bA,bB,bC,bD -///\param TaxA -///\param TaxB -///\param TaxC -///\param TaxD -bool FP300KZ::GetTaxRates(std::string &Decimals,std::string &Rounding,bool& bA,bool& bB,bool& bC,bool& bD, std::string &TaxA, std::string &TaxB, std::string &TaxC, std::string &TaxD) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - Decimals=CutBeforeFirst(str,','); - m_Dots=fromString(Decimals); // - - if(PrinterName.find("FP600")!=std::string::npos) - { - Rounding=CutBeforeFirst(str,','); // - } - bA=str[0]=='1'; bB=str[1]=='1'; bC=str[2]=='1'; bD=str[3]=='1'; - CutBeforeFirst(str,','); - TaxA=CutBeforeFirst(str,','); - TaxB=CutBeforeFirst(str,','); - TaxC=CutBeforeFirst(str,','); - TaxD=str; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Decimal 0,1 2 -bool FP300KZ::SetTaxRates(int Decimal,std::string Rounding,std::string TaxA, std::string TaxB, std::string TaxC, std::string TaxD) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - str+=IntToStdStr(Decimal)+","; //0,1,2 - str+=Rounding+','; - if(TaxA!="") str+='1'; else str+='0'; // - if(TaxB!="") str+='1'; else str+='0'; // - if(TaxC!="") str+='1'; else str+='0'; // - if(TaxD!="") str+='1'; else str+='0'; // - str+=","; - str+=TaxA+','; - str+=TaxB+','; - str+=TaxC+','; - str+=TaxD; - msg+=str; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetTaxRates("+answer+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Open -///\param Items . -///\param Amount -///\param Tender . -bool FP300KZ::FiscalTransactionsStatus(bool& Open,int& Items,double& Amount,double& Tender) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalTransactionsStatus; - msg+='T'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - Open=CutBeforeFirst(answer,',')=="1"; - Items=fromString(CutBeforeFirst(answer,',')); - - Amount=fromString(CutBeforeFirst(answer,','))/M(); - Tender=fromString(answer)/M(); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FiscalTransactionsStatus(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SessionSec(int& sec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)93; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - sec=fromString(answer); - if(m_SaveLog) - saveLog(PrinterName+"_"+PrinterNumber,std::string("SessionSec(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::DiagnosticInfo() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcDiagnosticInfo,0x05}; - std::string answer=""; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - //,,, - PrinterName=CutBeforeFirst(answer,','); - PrinterVersion=CutBeforeFirst(answer,','); // - CutBeforeFirst(answer,','); // - std::string Sw18 = CutBeforeFirst(answer,',');// Sw1 Sw8. 4 0 1 - Sw8=Sw18[0]=='1'; - Sw7=Sw18[1]=='1'; - Sw6=Sw18[2]=='1'; - Sw5=Sw18[3]=='1'; - Sw4=Sw18[4]=='1'; - Sw3=Sw18[5]=='1'; - Sw2=Sw18[6]=='1'; - Sw1=Sw18[7]=='1'; - PrinterNumber=answer; // - 12 . - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DiagnosticInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::EJ(std::string Cmd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcEJ; - msg+=Cmd; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("EJ("+Cmd+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// ( ) . , -. Data . -bool FP300KZ::PrintEJ() -{ - return EJ("PL"); -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearEJ() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearEJ; - msg+='F'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - { - if(answer!="P") b=false; //'P' () 'F' () - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearEJ(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearRAM() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearRAM; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearRAM(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::getPrintLogo(bool& Enable,int& Height) -{ - std::string str; - if(PrintSetup("I","L",str)) - { - Enable = CutBeforeFirst(str,',')=="1"; - Height =fromString(str); - return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::setPrintLogo(bool Enable,int Height) -{ - std::string str=""; - if(Enable) str+="1,"; else str+="0,"; - str+=IntToStdStr(Height); - - std::string Answer=""; - return PrintSetup("L",str,Answer); -} -//--------------------------------------------------------------------------- -// 576x96 -//RowNum - -//Data - -bool FP300KZ::PrgGraphicLogo(int RowNum, std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - - msg+=IntToStdStr(RowNum); - msg+=','; - msg+=Data; - - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrgGraphicLogo("+IntToStdStr(RowNum)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param RowNum - -///\param Data - "01010101110" -bool FP300KZ::getGraphicLogo(int RowNum, std::string &Data) -{ - std::string msg,res; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - msg+='R'+IntToStdStr(RowNum); - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),res); - if(b) - { - Data=""; - for(uint4 i=0;i, -bool FP300KZ::Fiscalization(std::string Password,std::string Serial,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+Serial; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; // - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Fiscalization("+Password+","+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//,,, -bool FP300KZ::reFiscalization(std::string OldPwd,std::string Password,std::string RNN,std::string RNM,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+OldPwd+","+RNN+","+RNM; // ( ) - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("reFiscalization("+OldPwd+","+Password+","+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::AmountOfSavingsPerDay(double& TaxA,double& TaxB,double& TaxC,double& TaxD,double& TaxE) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcAmountOfSavingsPerDay; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - TaxA=fromString(CutBeforeFirst(answer,','))/M();//TaxA - TaxB=fromString(CutBeforeFirst(answer,','))/M();//TaxB - TaxC=fromString(CutBeforeFirst(answer,','))/M();//TaxC - TaxD=fromString(CutBeforeFirst(answer,','))/M();//TaxD - TaxE=fromString(CutBeforeFirst(answer,','))/M();//TaxE - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("AmountOfSavingsPerDay(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::DepartmentReport() -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDepartmentReport; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - saveLog(PrinterName+"_"+PrinterNumber,std::string("DepartmentReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::GetLastPrintedDocNumber(int& num) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetLastPrintedDocNumber; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - num=fromString(answer); - }else num=0; - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Clos - 4 . -///\param Rec - 4 . -///\param Total - 12 . -///\param VAT - 12 . -///\param Date - 6 /DDMMYY/. -bool FP300KZ::LatestFiscalRecord(std::string& Clos,int& Rec, float& Total,float& VAT,std::string& Date) -{ -/* - : -: Clos,Rec,Total,VAT,Date -Clos - 4 . -Rec - 4 . -Total - 14 . -VAT - 14 . -Date - 6 /DDMMYY/. - . - -*/ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcLatestFiscalRecord; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Clos=CutBeforeFirst(answer,','); - Rec=fromString(CutBeforeFirst(answer,',')); - Total=fromString(CutBeforeFirst(answer,',')); - VAT=fromString(CutBeforeFirst(answer,',')); - Date=answer; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~20~ b/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~20~ deleted file mode 100644 index bf02ae5..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~20~ +++ /dev/null @@ -1,2180 +0,0 @@ -//! FP300KZ -/*! - FP300KZ -\author . -\file FP300KZ.cpp -*/ -//--------------------------------------------------------------------------- -#pragma hdrstop - -#include "stdafx.h" - - -#include "FP300KZ.h" -#include -#include -#include - -#include -#include -#include -//#include -#include -#include - -#include //mkdir - -//#include -//#include -//#include - -#if defined( __WXMSW__ ) // - #include -#endif // __WXMSW__ -//--------------------------------------------------------------------------- -//#pragma package(smart_init) -//--------------------------------------------------------------------------- -// -//typedef unsigned long DWORD; -//--------------------------------------------------------------------------- -// -bool saveLog(std::string FileName, std::string Text) -{ - try - { - for(uint4 i=0;is[0][0]) return 4; //0x04 -/*5 5 -6 6 -7 7 -8 8 -9 9 -0A 10 BCD -0B 11 -11 17 -12 18 -13 19 -14 20 -15 21 -16 22 -17 23 -18 24 -19 25 -1A 26 -1B 27 -1C 28 -1D 29 -1F 31 -20 32 -21 33 -22 34 -23 35 -24 36 -25 37 -33 51 -35 53 -36 54 -37 55 -38 56 + -39 57 -3A 58 -3C 60 : -3E 62 -3F 63 -40 64 -41 65 -42 66 2 -43 67 3 -44 68 4 -45 69 C -46 70 -47 71 -48 72 -4A 74 - -4B 75 -4C 76 -4D 77 -4E 78 24 -*/ - //if(CommandName==fcOpenFiscalInv && Password=="") return 79; //4F 79 - -/*50 80 -51 81 -52 82 2 -53 83 3 -54 84 4 -56 86 -57 87 : -58 88 -59 89 -5B 91 -5C 92 24 -5D 93 -5E 94 -5F 95 -60 96 -61 97 -62 98 -63 99 -64 100 + -65 101 -66 102 */ - if(!cPort->bOpen) return 103; //0x67 + -/*68 104 -69 105 -6A 106 I2C -6B 107 -6C 108 -6D 109 -6E 110 -6F 111 -70 112 -71 113 + -72 114 -73 115 -74 116 -75 117 + -76 118 : + -77 119 : + -78 120 -79 121 -7A 122 -7B 123 -7C 124 -7D 125 -7E 126 -7F 127 -80 128 + -81 129 + -82 130 + -83 131 + -84 132 -85 133 -86 134 -87 135 -88 136 -89 137 -8A 138 -8B 139 -8C 140 -8D 141 -8E 142 -8F 143 -90 144 , -91 145 -92 146 -93 147 -94 148 -A0 160 + -A1 161 + -A2 162 : -A3 163 -A4 164 -A5 165 -A6 166 -A7 167 -A8 168 : -A9 169 : -AA 170 ( ) -B0 176 : -B1 177 : -B2 178 : */ - if(Status->s[0][2]) return 192; //0xC0 ( ) -/*C1 193 : -C2 194 -C3 195 -C4 196 -5 197 -C6 198 -C7 199 */ - - // - if(Status->s[0][4]) return 500; // . - if(Status->s[0][1]) return 501; // . - if(Status->s[1][4]) return 502; // . - if(Status->s[1][3]) return 503; // ( RESET). - if(Status->s[1][2]) return 504; // . - if(Status->s[1][1]) - { - if(CommandName==fcOpenFiscalInv && Status->s[2][3]) return 509; else // . - if(CommandName==fcCloseFiscalInv) - { - bool Open; int Items; double Amount=0,Tender=0; - FiscalTransactionsStatus(Open,Items,Amount,Tender); - CommandName=fcCloseFiscalInv; // - Status->s[1][1]=true; // - if(Open && Amount-(Tender+0.002)>0) return 511; //" !" - }else - if(CommandName==fcOpenFiscalInv) - { - // - m_SaveLog=false; - int sec; - if(SessionSec(sec) && sec>24*60*60) - { - Status->s[1][1]=true; - CommandName=fcOpenFiscalInv; // - return 78; - } - m_SaveLog=true; - } - return 505; // . - } - if(Status->s[4][0]) return 506; // . - if(Status->s[4][4]) return 507; // . - if(Status->s[2][0]) return 508; // . - //509 " ." - if(Status->s[1][5]) return 510; // ! - //511 " !" - //512 - //513 . - //514 () (). - //515 . - //516 . - //517 Z-. Z-. - //518 . - //519 . - //520 " ". - - - return m_ErrorCode; -} -//--------------------------------------------------------------------------- -FP300KZ::FP300KZ() -{ - cPort=new ComPort(); - Status=new MyStatus(); - CheckCount=0; - for(int i=0;ibOpen) { m_ErrorCode=103; return false; } - - CommandName=msg[3]; // - for(int i=0;ibOpen) - { - for(int i=0;i<5;i++) // 5 ... - { - // - msg[1]=0x20+size-1; // - msg[2]=FrameSeqNumber; - unsigned int crc=MakeCRC(msg,1,size); - cPort->Write(msg,size); // - cPort->Write(&crc,4); // - cPort->WriteChar(0x03); // - - // - bool isOk=true; - int j=0; - while(j<9) //9*60=540 500ms - { - uint1 start=0; - unsigned long BytesRead=cPort->Read(&start,sizeof(start)); // ( 60 ms 500 ms) - if(BytesRead==0) // - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - m_ErrorCode=103; // - break; - }else - if(start==0x15) //NACK - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - break; - }else - if(start==0x16) //SYN 60ms - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - j=0; // ( ) - }else - if(start==0x01) // - { - ReadAr[0]=start; // CRC - uint1 size=0; - cPort->Read(&size,1); // - ReadAr[1]=size; - size=ReadAr[1]-0x20 + 6; // (+5 1 CRC 4 1 ) - - BytesRead=2; // - for(int j=0;j<100;j++) - { - BytesRead+=cPort->Read(&ReadAr[BytesRead],size-BytesRead); - if(BytesRead>=size) - break; - } - - // CRC - unsigned int crc0=MakeCRC(ReadAr,1,size-5); - unsigned int crc1=*((unsigned int*)&ReadAr[size-5]); - if(crc0!=crc1) isOk=false; // - else - { - Status->SetStatus(&ReadAr[size-12]); // - answer.assign((char*)&ReadAr[4],size-17); // - result=true; - } - if(result) break; - } - j++; - } - if(!isOk) continue; // - break; // - } - } - - if(!result) m_ErrorCode=5; - return result; -} -//--------------------------------------------------------------------------- -bool FP300KZ::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(0)) - return false; - }else return false; - return true; -} -//--------------------------------------------------------------------------- -void FP300KZ::LoadSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - cPort->port=ini->ReadString("Printer","Port",""); - cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0); - CheckCount=ini->ReadInteger("Printer","CheckCount",0); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -void FP300KZ::SaveSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - 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",CheckCount); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -bool FP300KZ::Print() -{ - return false; -} -//--------------------------------------------------------------------------- -void FP300KZ::NewLine() -{ - -} -//--------------------------------------------------------------------------- -/*public byte[] ReturnBCC(byte[] bytePacketData) - { - // (0000H-FFFFH) - // : 4 - // : 30H - 3FH - // <01> <05> . - // 30H. - // 1AE3H 31H,3AH,3EH,33H. - - // IN HEX - // 01 25 50 4C 54 05 30 - - // In decimal - // 1 37 80 76 84 5 48 - - Int64 triset_HEX = 0x30; - - byte[] bRes = new byte[4]; - int i = 48; - int iRes = 0; - // int i = 0; - int iCountB = 0; - string hexval1 = String.Empty; - string hexval2 = String.Empty; - StringBuilder sb = new StringBuilder(); - foreach (byte n in bytePacketData) - { - if (n != (byte)01) - { - if (iCountB == 0) - { - sb.Append(n.ToString("X2")); - string hexString = sb.ToString(); - triset_HEX = triset_HEX + Convert.ToInt64(hexString, 16); - } - iCountB++; - if (iCountB > 1) - iCountB = 0; - } - if (n == (byte)05) - break; - } - return this.ConvertHexToByteArr(Convert.ToString( triset_HEX )); - } -*/ -//--------------------------------------------------------------------------- -/// CRC -//BufStart - -//BufEnd - ( ) -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufEnd) -{ - unsigned int cs=0; - for(unsigned int i=BufStart;i> 0x0C) & 0x0F) + 0x30; - mas[1]=((cs >> 0x08) & 0x0F) + 0x30; - mas[2]=((cs >> 0x04) & 0x0F) + 0x30; - mas[3]=((cs >> 0x00) & 0x0F) + 0x30; - return result; -} -//--------------------------------------------------------------------------- -// PrinterName PrinterVersion PrinterNumber PrinterDecimal -// ... -bool FP300KZ::PrinterInit() -{ - bool b=DiagnosticInfo(); - if(b) - { - bool bA,bB,bC,bD; - std::string Decimal,r,TaxA,TaxB,TaxC,TaxD; - b=b && GetTaxRates(Decimal,r,bA,bB,bC,bD,TaxA,TaxB,TaxC,TaxD); -// if(b) b=b && fp->GetStatusFP(); - } - return b; -} -//--------------------------------------------------------------------------- -/// 4A -bool FP300KZ::GetStatusFP() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcGetStatusFP,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetStatusFP(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -bool FP300KZ::CancelFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcCancelFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CancelFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -///OpCode - 1..16 -///OpPwd - 4 - 6 -///TillNmb - 1..99999 -bool FP300KZ::OpenFiscalInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x00; msg+=(char)0x00; msg+=(char)fcOpenFiscalInv; - msg+=IntToStdStr(OpCode)+","+OpPwd+","+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - //if(b) - //{ Password=OpPwd; // - //} - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenFiscalInv(OpCode="+IntToStdStr(OpCode)+",OpPwd=****,TillNmb="+IntToStdStr(TillNmb)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CloseFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcCloseFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenServiceInv() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcOpenServiceInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///TODO : ( ) /4 /. -bool FP300KZ::CloseServiceInv(int& count) -{ - count=0; - unsigned char msg[5] = {0x01,0x24,0x00,fcCloseServiceInv,0x05}; - std::string str; - bool b=SendPMessage(msg,sizeof(msg),str); - b=b && !Status->s[0][5]; // - - if(b) count=fromString(str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/**OpCode - 1..16 -* OpPwd - 4 - 6 -* TillNmb - / 1..99999/ -*/ -bool FP300KZ::OpenBackInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenBackInv; - msg+=IntToStdStr(OpCode)+','+OpPwd+','+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenBackInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDuplicateInv() -{ - unsigned char msg[6] = {0x01,0x25,0x00,fcPrintDuplicateInv,0x31,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDuplicateInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/** -Option - 1..4 -Name - ( name = '' ) -*/ -bool FP300KZ::SetAddTypesOfPayment(char Option, std::wstring& Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetAddTypesOfPayment; - switch(Option) - { - case 1: - msg+='I'; - break; - case 2: - msg+='J'; - break; - case 3: - msg+='K'; - break; - case 4: - msg+='L'; - break; - } - if(Text.length()!=0) - { - msg+=','; - msg.append(ws2s(Text),0,31); // 31 - } - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b && Text.length()!=0 && answer!="P") b=b && false; - if(b && Text.length()==0) Text=s2ws(answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetAddTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintZReport() -{ - bool b=PrintEJ(); // - if(b) b=b && EJ("E"); // - if(b) b=b && DailyFinancialReport('1'); // Z - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintXReport() -{ - return DailyFinancialReport('3'); -} -//--------------------------------------------------------------------------- -// ( ) -bool FP300KZ::PrintLine(std::wstring line) -{ - bool b=PrintFreeTextInFiscalInv(ws2s(line)); //TODO ru-ru.1251 - if(!b) b=PrintFreeTextInServiceInv(ws2s(line)); // - return b; - -// bool b=PrintFreeTextInFiscalInv(WStringToString(line, std::locale(""),'?')); //TODO ru-ru.1251 -// if(!b) b=PrintFreeTextInServiceInv(WStringToString(line, std::locale(""),'?')); // -// return b; -} -//--------------------------------------------------------------------------- -/// -///'0' - Z -///'1' - Z -///'2' - X -///'3' - X -bool FP300KZ::DailyFinancialReport(uint1 Option) -{ - //N - unsigned char msg[6] = {0x01,0x25,0x00,fcDailyFinancialReport,Option,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyFinancialReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Start - DDMMYY /6 / -///End - DDMMYY /6 / -bool FP300KZ::ReportOnTaxRates(std::string Start,std::string End) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportOnTaxRates; - msg+=Start+','+End; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(answer=="f") b=false; // . - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportOnTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::FullFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::ReduceFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::FullFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::ReduceFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::DailyReportByTypesOfPayment(std::string& Cash,std::string& Credit,std::string& Debit,std::string& Cheque,std::string& Pay1,std::string& Pay2,std::string& Pay3,std::string& Pay4,std::string& Closure,std::string& Receipt) -{ -// - unsigned char msg[5] = {0x01,0x24,0x00,fcDailyReportByTypesOfPayment,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Cash=CutBeforeFirst(answer,','); - Credit=CutBeforeFirst(answer,','); - Debit=CutBeforeFirst(answer,','); - Cheque=CutBeforeFirst(answer,','); - Pay1=CutBeforeFirst(answer,','); - Pay2=CutBeforeFirst(answer,','); - Pay3=CutBeforeFirst(answer,','); - Pay4=CutBeforeFirst(answer,','); - Closure=CutBeforeFirst(answer,','); - Receipt=CutBeforeFirst(answer,','); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyReportByTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///'S' - . -///'P' - . -bool FP300KZ::ReportByArticle(std::string Option) //#define fcReportByArticle 0x6F //(111) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportByArticle; msg+=Option; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportByArticle(Option="+Option+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OperatorReport() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcOperatorReport,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OperatorReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param cnt -bool FP300KZ::FeedPaper(int cnt) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFeedPaper; - msg+=IntToStdStr(cnt); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FeedPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenCashDrawer(int mSec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenCashDrawer; - if(mSec>0) msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenCashDrawer(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -//,[] -/// () -bool FP300KZ::SetDepartmentName(int dept,std::wstring line1,std::wstring line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDepartmentName; - msg+=IntToStdStr(dept); - msg+=','; - msg.append(ws2s(line1),0,36); // 36 - if(line2.length()>0) - { - msg+=(char)10; - msg.append(ws2s(line2),0,46); // 46 - } - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDepartmentName(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetDepartmentInfo(int dept,int &RecSales,float &RecSum,int &TotSales,float &TotSum,std::wstring &Line1,std::wstring &Line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDepartmentInfo; - msg+=IntToStdStr(dept); - msg+=(char)0x05; - - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - if(CutBeforeFirst(str,',')=="P") // - { - std::string nstr; - nstr=CutBeforeFirst(str,','); - RecSales=StdStrToInt(nstr); - RecSum=fromString(CutBeforeFirst(str,',')); // 2 - nstr=CutBeforeFirst(str,','); - TotSales=StdStrToInt(nstr); - TotSum=fromString(CutBeforeFirst(str,',')); // 2 - Line1=s2ws(CutBeforeFirst(str,(char)10)); - Line2=s2ws(str); - }else - { - RecSales=0; - RecSum=0; - TotSales=0; - TotSum=0; - Line1=L' '; - Line2=L' '; - } - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDepartmentInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CutPaper() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcCutPaper; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CutPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDiagnostic() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcPrintDiagnostic,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDiagnostic(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::SetManufacturersSerialNumber(std::string Serial) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetManufacturersSerialNumber; - msg+=Serial; - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - b=b && BeforeFirst(answer,',')=="P"; - // "KAZAKHSTAN" - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetManufacturersSerialNumber(Serial="+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -std::string FP300KZ::GetStatusDescription(BYTE StatusCode) -{ - if (StatusCode == 0x00) - { - return "OK"; - } - if (StatusCode == 0xFF) - { - return " !"; - } - BYTE code = (BYTE)StatusCode & (BYTE)0x04; - if (code > 0) - { - return " "; - } - code = (BYTE)StatusCode & (BYTE)0x01; - if (code > 0) - { - return " "; - } - return ""; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetRNNAndRNM(std::string &RNN,std::string &RNM) -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcGetRNNAndRNM,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - RNN=BeforeFirst(answer,','); - RNM=AfterFirst(answer,','); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetRNNAndRNM("+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SetRNNAndRNM(std::string RNN,std::string RNM) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetRNNAndRNM; - msg+=RNN+','+RNM; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetRNNAndRNM(RNN="+RNN+",RNM="+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode -///\param OldPwd -///\param NewPwd -///\return -bool FP300KZ::SetOperatorPassword(std::string OpCode,std::string OldPwd,std::string NewPwd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorPassword; - msg+=OpCode+','+OldPwd+','+NewPwd; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorPassword(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode . 1 16 . -///\param Pwd (4 8 ). -///\param OpName ( 30 ). -///\return -bool FP300KZ::SetOperatorName(std::string OpCode,std::string Pwd,std::string OpName) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorName; - msg+=OpCode+','+Pwd+','+OpName; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorName(OpCode="+OpCode+",OpName="+OpName+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM[:SS]" -bool FP300KZ::SetDateTime(std::string date, std::string time) //#define fcSetDateTime 0x3D //(61) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDateTime; - msg+=trim(date)+' '+trim(time); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDateTime(\"")+date+std::string("\", \"")+time+std::string("\"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM:SS" -bool FP300KZ::GetDateTime(unsigned short& De,unsigned short& Me,unsigned short& Ye,unsigned short& Ho,unsigned short& Mi,unsigned short& Se) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDateTime; msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - De=fromString(CutBeforeFirst(str,'-')); - Me=fromString(CutBeforeFirst(str,'-')); - Ye=fromString(CutBeforeFirst(str,' '));//+2000; - - Ho=fromString(CutBeforeFirst(str,':')); - Mi=fromString(CutBeforeFirst(str,':')); - Se=fromString(str); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDateTime(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// HEADER FOOTER -bool FP300KZ::PrintSetup(std::string Item, std::string Text, std::string& Answer) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintSetup; - msg+=Item+Text; - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),Answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintSetup(Item="+Item+",Text="+Text+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::PrintFreeTextInServiceInv(std::string Text) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInServiceInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintFreeTextInFiscalInv(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInFiscalInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///[][]<[Sign]Price>[*][,Perc|;Abs] -///L1 - , 36 -///L2 - , 36 -///dep - (1..10) -///TaxCd - (, , , , ). -///Price - ( 8 ). -///Qwan - ( 8 3- ). -///Abs - Perc -///Perc - ( ) -bool FP300KZ::RegisterSale(std::wstring L1,std::wstring L2,int dep, std::string TaxCd,double Price,double Qwan,bool Abs,double Perc) -{ - L1=replaceStrings(L1,L"\n",L" "); // - L2=replaceStrings(L2,L"\n",L" "); // - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSale; - msg.append(ws2s(L1),0,36); // 36 - if(L2.length()>0) - { - msg+=(char)0x0A; - msg.append(ws2s(L2),0,36); // 36 - } - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=FloatToStdStr(Price,m_Dots); // - msg+='*'+FloatToStdStr(Qwan,3); - if(Perc!=0) - if(Abs) msg+=';'+FloatToStdStr(Perc,m_Dots); // - else msg+=','+FloatToStdStr(Perc,2); // - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSale(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// [Line]]<[Sign]Price>[*Qwan][,Perc|;Abs] -///Line - 20 . -///TaxCd - (, , , , ). -///Price - ( 8 ). -bool FP300KZ::RegisterSaleDisp(std::string L1,int dep,std::string TaxCd,std::string Price) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSaleDisp; - - msg+=L1; - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=Price; - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSaleDisp(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Print - 1 . -//Display - 1 . -//Abs - false Perc -//Perc - (+-99.9) -//Sum - / 10 / -bool FP300KZ::Subtotal(std::string Print,std::string Display, bool Abs, double Perc,double& Sum) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSubtotal; - - msg+=Print+Display; - if(Perc!=0) // - { - if(Abs) msg+=';'+FloatToStdStr(Perc,2); - else msg+=','+FloatToStdStr(Perc,2); - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - Sum=fromString(CutBeforeFirst(str,','))/M(); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("Subtotal(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -//Line1 - 36 -//Line2 - 36 -//PaidMode - : 'P' ; 'N' ; 'C' ; 'D' 'I' - 1 'J' - 2 'K' - 3 'L' - 4 -// +, Amount ( ). -//Amount - / 10 /. -//Change - -bool FP300KZ::Total(std::string Line1,std::string Line2,std::string PaidMode,double Amount, double& Change) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcTotal; - msg+=Line1; - msg+=(char)0x0A; - msg+=Line2; - msg+=(char)0x09; // - msg+=PaidMode; // - if(Amount>0) msg+='+'; - msg+=FloatToStdStr(Amount,m_Dots); - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - if(str[0]=='F') b=false; - std::string s=""; - s.append(str,1,str.length()-1); - Change=fromString(s)/M(); - if(str[0]=='D') Change=-fabs(Change); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Total(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Amount ( 10 ). . -//strH - strF - -//ExitCode P . , . F : . . -//CashSum . . -//ServIn . -//ServOut . -bool FP300KZ::ParishOrConsumption(std::string Oper,std::string Password,double Amount,std::wstring strH,std::wstring strF,std::string& ExitCode,double& CashSum,double& ServIn,double& ServOut) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcParishOrConsumption; - - if(PrinterName.find("FP600")!=std::string::npos) - { - if(Amount!=0) - { msg+=Oper+","; // - msg+=Password+","; // - msg+=FloatToStdStr(Amount,2); - } - }else - { - if(Amount!=0) - { - msg+=FloatToStdStr(Amount,2); - while(strH.length()>0) - { - std::wstring str = CutBeforeWFirst(strH,L'\n'); - msg+='\t'; msg+='h'; msg.append(ws2s(str),0,48); - } - while(strF.length()>0) - { - std::wstring str = CutBeforeWFirst(strF,L'\n'); - msg+='\t'; msg+='f'; msg.append(ws2s(str),0,48); - } - } - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - ExitCode=CutBeforeFirst(str,','); - CashSum=fromString(CutBeforeFirst(str,','))/M(); - ServIn=fromString(CutBeforeFirst(str,','))/M(); - ServOut=fromString(str)/M(); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ParishOrConsumption(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// - -///Type - 1 5 (1-EAN8, 2-EAN13, 3-Code 128, 4-ITF, 5-ITF) -bool FP300KZ::PrintBarCode(int Type,std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintBarCode; - msg+=IntToStdStr(Type); - msg+=','; - msg+=Data; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintBarCode(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Hz -///\param mSec -bool FP300KZ::Beep(int Hz,int mSec) -{ - if(Hz==0) Hz=294; - if(mSec==0) mSec=1000/8; - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcBeep; - msg+=IntToStdStr(Hz); - msg+=','; - msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Beep(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\Logical -bool FP300KZ::FreeFieldsByFiscalMemory(long& Logical) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFreeFieldsByFiscalMemory; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - {// Logical=fromString(CutBeforeFirst(str,',')); - Logical=fromString(CutBeforeFirst(str,',')); // - } - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FreeFieldsByFiscalMemory(Logical); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// update=false - , -, . -. -///\param update false , - -bool FP300KZ::SwitchPrg(bool update) -{ - std::string msg,key=""; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSwitchPrg; - if(update) - { - if(Sw8) key+='1'; else key+='0'; // - if(Sw7) key+='1'; else key+='0'; // - if(Sw6) key+='1'; else key+='0'; // - if(Sw5) key+='1'; else key+='0'; // - if(Sw4) key+='1'; else key+='0'; // Windows 1251 - if(Sw3) key+='1'; else key+='0'; // - if(Sw2) key+='1'; else key+='0'; // - if(Sw1) key+='1'; else key+='0'; // (: ) - msg+=key; - } - msg+=(char)0x05; - std::string str=""; - - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - saveLog(PrinterName+"_"+PrinterNumber,std::string("SwitchPrg("+key+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getSmallEJ(bool& val) -{ //val=Sw1; - val=Sw2; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setSmallEJ(bool val) -{ //Sw1=val; - Sw2=val; - return SwitchPrg(true); // -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getDisplayTransparent(bool& val) -{ val=Sw3; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setDisplayTransparent(bool val) -{ Sw3=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::getDisplayWin1251(bool& val) -{ - val=Sw4; - return true;// true . -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::setDisplayWin1251(bool val) -{ Sw4=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -// "bps" -int FP300KZ::getComSpeed() -{ - int speed=0; - if(!Sw6 && !Sw7 && !Sw8) speed=1200; - if(!Sw6 && !Sw7 && Sw8) speed=2400; - if(!Sw6 && Sw7 && !Sw8) speed=4800; - if(!Sw6 && Sw7 && Sw8) speed=9600; - if( Sw6 && !Sw7 && !Sw8) speed=19200; - if( Sw6 && !Sw7 && Sw8) speed=38400; - if( Sw6 && Sw7 && !Sw8) speed=57600; - if( Sw6 && Sw7 && Sw8) speed=115200; - return speed; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setComSpeed(int Speed) -{ - bool b=false; - if(Speed==1200) {Sw6=0; Sw7=0; Sw8=0; b=true;} - if(Speed==2400) {Sw6=0; Sw7=0; Sw8=1; b=true;} - if(Speed==4800) {Sw6=0; Sw7=1; Sw8=0; b=true;} - if(Speed==9600) {Sw6=0; Sw7=1; Sw8=1; b=true;} - if(Speed==19200) {Sw6=1; Sw7=0; Sw8=0; b=true;} - if(Speed==38400) {Sw6=1; Sw7=0; Sw8=1; b=true;} - if(Speed==57600) {Sw6=1; Sw7=1; Sw8=0; b=true;} - if(Speed==115200) {Sw6=1; Sw7=1; Sw8=1; b=true;} - - if(b) b=SwitchPrg(true); // - return b; -} -//--------------------------------------------------------------------------- -/// . -/// Sw3 OFF, . -bool FP300KZ::DisplayClear() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcDisplayClear,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DisplayClear(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Text - 20 -bool FP300KZ::DispalyLower(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyLower; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyLower(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Text - 20 -bool FP300KZ::DispalyUpper(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyUpper; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyUpper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// ( 40 ), . ASCII 20h ( ) 40h 10h. -bool FP300KZ::DispalyFree(std::string Text) -{ -//Text=TransformCode(Text); - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyFree; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyFree(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param Decimals 0,1 2 -///\param bA,bB,bC,bD -///\param TaxA -///\param TaxB -///\param TaxC -///\param TaxD -bool FP300KZ::GetTaxRates(std::string &Decimals,std::string &Rounding,bool& bA,bool& bB,bool& bC,bool& bD, std::string &TaxA, std::string &TaxB, std::string &TaxC, std::string &TaxD) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - Decimals=CutBeforeFirst(str,','); - m_Dots=fromString(Decimals); // - if(PrinterName.find("FP600")!=std::string::npos) - { - Rounding=CutBeforeFirst(str,','); // - } - bA=str[0]=='1'; bB=str[1]=='1'; bC=str[2]=='1'; bD=str[3]=='1'; - CutBeforeFirst(str,','); - TaxA=CutBeforeFirst(str,','); - TaxB=CutBeforeFirst(str,','); - TaxC=CutBeforeFirst(str,','); - TaxD=str; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Decimal 0,1 2 -bool FP300KZ::SetTaxRates(int Decimal,std::string Rounding,std::string TaxA, std::string TaxB, std::string TaxC, std::string TaxD) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - str+=IntToStdStr(Decimal)+","; //0,1,2 - if(PrinterName.find("FP600")!=std::string::npos) // - { - str+=Rounding+','; - } - if(TaxA!="") str+='1'; else str+='0'; // - if(TaxB!="") str+='1'; else str+='0'; // - if(TaxC!="") str+='1'; else str+='0'; // - if(TaxD!="") str+='1'; else str+='0'; // - str+=","; - str+=TaxA+','; - str+=TaxB+','; - str+=TaxC+','; - str+=TaxD; - msg+=str; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetTaxRates("+answer+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Open -///\param Items . -///\param Amount -///\param Tender . -bool FP300KZ::FiscalTransactionsStatus(bool& Open,int& Items,double& Amount,double& Tender) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalTransactionsStatus; - msg+='T'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - Open=CutBeforeFirst(answer,',')=="1"; - Items=fromString(CutBeforeFirst(answer,',')); - - Amount=fromString(CutBeforeFirst(answer,','))/M(); - Tender=fromString(answer)/M(); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FiscalTransactionsStatus(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SessionSec(int& sec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)93; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - sec=fromString(answer); - if(m_SaveLog) - saveLog(PrinterName+"_"+PrinterNumber,std::string("SessionSec(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::DiagnosticInfo() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcDiagnosticInfo,0x05}; - std::string answer=""; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - //,,, - PrinterName=CutBeforeFirst(answer,','); - PrinterVersion=CutBeforeFirst(answer,','); // - CutBeforeFirst(answer,','); // - std::string Sw18 = CutBeforeFirst(answer,',');// Sw1 Sw8. 4 0 1 - Sw8=Sw18[0]=='1'; - Sw7=Sw18[1]=='1'; - Sw6=Sw18[2]=='1'; - Sw5=Sw18[3]=='1'; - Sw4=Sw18[4]=='1'; - Sw3=Sw18[5]=='1'; - Sw2=Sw18[6]=='1'; - Sw1=Sw18[7]=='1'; - PrinterNumber=answer; // - 12 . - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DiagnosticInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::EJ(std::string Cmd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcEJ; - msg+=Cmd; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("EJ("+Cmd+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// ( ) . , -. Data . -bool FP300KZ::PrintEJ() -{ - return EJ("PL"); -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearEJ() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearEJ; - msg+='F'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - { - if(answer!="P") b=false; //'P' () 'F' () - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearEJ(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearRAM() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearRAM; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearRAM(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::getPrintLogo(bool& Enable,int& Height) -{ - std::string str; - if(PrintSetup("I","L",str)) - { - Enable = CutBeforeFirst(str,',')=="1"; - Height =fromString(str); - return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::setPrintLogo(bool Enable,int Height) -{ - std::string str=""; - if(Enable) str+="1,"; else str+="0,"; - str+=IntToStdStr(Height); - - std::string Answer=""; - return PrintSetup("L",str,Answer); -} -//--------------------------------------------------------------------------- -// 576x96 -//RowNum - -//Data - -bool FP300KZ::PrgGraphicLogo(int RowNum, std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - - msg+=IntToStdStr(RowNum); - msg+=','; - msg+=Data; - - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrgGraphicLogo("+IntToStdStr(RowNum)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param RowNum - -///\param Data - "01010101110" -bool FP300KZ::getGraphicLogo(int RowNum, std::string &Data) -{ - std::string msg,res; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - msg+='R'+IntToStdStr(RowNum); - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),res); - if(b) - { - Data=""; - for(uint4 i=0;i, -bool FP300KZ::Fiscalization(std::string Password,std::string Serial,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+Serial; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; // - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Fiscalization("+Password+","+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//,,, -bool FP300KZ::reFiscalization(std::string OldPwd,std::string Password,std::string RNN,std::string RNM,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+OldPwd+","+RNN+","+RNM; // ( ) - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("reFiscalization("+OldPwd+","+Password+","+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::AmountOfSavingsPerDay(double& TaxA,double& TaxB,double& TaxC,double& TaxD,double& TaxE) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcAmountOfSavingsPerDay; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - TaxA=fromString(CutBeforeFirst(answer,','))/M();//TaxA - TaxB=fromString(CutBeforeFirst(answer,','))/M();//TaxB - TaxC=fromString(CutBeforeFirst(answer,','))/M();//TaxC - TaxD=fromString(CutBeforeFirst(answer,','))/M();//TaxD - TaxE=fromString(CutBeforeFirst(answer,','))/M();//TaxE - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("AmountOfSavingsPerDay(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::DepartmentReport() -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDepartmentReport; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - saveLog(PrinterName+"_"+PrinterNumber,std::string("DepartmentReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::GetLastPrintedDocNumber(int& num) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetLastPrintedDocNumber; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - num=fromString(answer); - }else num=0; - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Clos - 4 . -///\param Rec - 4 . -///\param Total - 12 . -///\param VAT - 12 . -///\param Date - 6 /DDMMYY/. -bool FP300KZ::LatestFiscalRecord(std::string& Clos,int& Rec, float& Total,float& VAT,std::string& Date) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcLatestFiscalRecord; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Clos=CutBeforeFirst(answer,','); - if(PrinterName.find("FP600")==std::string::npos) - Rec=fromString(CutBeforeFirst(answer,',')); - else - Rec=-1; - Total=fromString(CutBeforeFirst(answer,',')); - VAT=fromString(CutBeforeFirst(answer,',')); - Date=answer; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~21~ b/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~21~ deleted file mode 100644 index bf02ae5..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~21~ +++ /dev/null @@ -1,2180 +0,0 @@ -//! FP300KZ -/*! - FP300KZ -\author . -\file FP300KZ.cpp -*/ -//--------------------------------------------------------------------------- -#pragma hdrstop - -#include "stdafx.h" - - -#include "FP300KZ.h" -#include -#include -#include - -#include -#include -#include -//#include -#include -#include - -#include //mkdir - -//#include -//#include -//#include - -#if defined( __WXMSW__ ) // - #include -#endif // __WXMSW__ -//--------------------------------------------------------------------------- -//#pragma package(smart_init) -//--------------------------------------------------------------------------- -// -//typedef unsigned long DWORD; -//--------------------------------------------------------------------------- -// -bool saveLog(std::string FileName, std::string Text) -{ - try - { - for(uint4 i=0;is[0][0]) return 4; //0x04 -/*5 5 -6 6 -7 7 -8 8 -9 9 -0A 10 BCD -0B 11 -11 17 -12 18 -13 19 -14 20 -15 21 -16 22 -17 23 -18 24 -19 25 -1A 26 -1B 27 -1C 28 -1D 29 -1F 31 -20 32 -21 33 -22 34 -23 35 -24 36 -25 37 -33 51 -35 53 -36 54 -37 55 -38 56 + -39 57 -3A 58 -3C 60 : -3E 62 -3F 63 -40 64 -41 65 -42 66 2 -43 67 3 -44 68 4 -45 69 C -46 70 -47 71 -48 72 -4A 74 - -4B 75 -4C 76 -4D 77 -4E 78 24 -*/ - //if(CommandName==fcOpenFiscalInv && Password=="") return 79; //4F 79 - -/*50 80 -51 81 -52 82 2 -53 83 3 -54 84 4 -56 86 -57 87 : -58 88 -59 89 -5B 91 -5C 92 24 -5D 93 -5E 94 -5F 95 -60 96 -61 97 -62 98 -63 99 -64 100 + -65 101 -66 102 */ - if(!cPort->bOpen) return 103; //0x67 + -/*68 104 -69 105 -6A 106 I2C -6B 107 -6C 108 -6D 109 -6E 110 -6F 111 -70 112 -71 113 + -72 114 -73 115 -74 116 -75 117 + -76 118 : + -77 119 : + -78 120 -79 121 -7A 122 -7B 123 -7C 124 -7D 125 -7E 126 -7F 127 -80 128 + -81 129 + -82 130 + -83 131 + -84 132 -85 133 -86 134 -87 135 -88 136 -89 137 -8A 138 -8B 139 -8C 140 -8D 141 -8E 142 -8F 143 -90 144 , -91 145 -92 146 -93 147 -94 148 -A0 160 + -A1 161 + -A2 162 : -A3 163 -A4 164 -A5 165 -A6 166 -A7 167 -A8 168 : -A9 169 : -AA 170 ( ) -B0 176 : -B1 177 : -B2 178 : */ - if(Status->s[0][2]) return 192; //0xC0 ( ) -/*C1 193 : -C2 194 -C3 195 -C4 196 -5 197 -C6 198 -C7 199 */ - - // - if(Status->s[0][4]) return 500; // . - if(Status->s[0][1]) return 501; // . - if(Status->s[1][4]) return 502; // . - if(Status->s[1][3]) return 503; // ( RESET). - if(Status->s[1][2]) return 504; // . - if(Status->s[1][1]) - { - if(CommandName==fcOpenFiscalInv && Status->s[2][3]) return 509; else // . - if(CommandName==fcCloseFiscalInv) - { - bool Open; int Items; double Amount=0,Tender=0; - FiscalTransactionsStatus(Open,Items,Amount,Tender); - CommandName=fcCloseFiscalInv; // - Status->s[1][1]=true; // - if(Open && Amount-(Tender+0.002)>0) return 511; //" !" - }else - if(CommandName==fcOpenFiscalInv) - { - // - m_SaveLog=false; - int sec; - if(SessionSec(sec) && sec>24*60*60) - { - Status->s[1][1]=true; - CommandName=fcOpenFiscalInv; // - return 78; - } - m_SaveLog=true; - } - return 505; // . - } - if(Status->s[4][0]) return 506; // . - if(Status->s[4][4]) return 507; // . - if(Status->s[2][0]) return 508; // . - //509 " ." - if(Status->s[1][5]) return 510; // ! - //511 " !" - //512 - //513 . - //514 () (). - //515 . - //516 . - //517 Z-. Z-. - //518 . - //519 . - //520 " ". - - - return m_ErrorCode; -} -//--------------------------------------------------------------------------- -FP300KZ::FP300KZ() -{ - cPort=new ComPort(); - Status=new MyStatus(); - CheckCount=0; - for(int i=0;ibOpen) { m_ErrorCode=103; return false; } - - CommandName=msg[3]; // - for(int i=0;ibOpen) - { - for(int i=0;i<5;i++) // 5 ... - { - // - msg[1]=0x20+size-1; // - msg[2]=FrameSeqNumber; - unsigned int crc=MakeCRC(msg,1,size); - cPort->Write(msg,size); // - cPort->Write(&crc,4); // - cPort->WriteChar(0x03); // - - // - bool isOk=true; - int j=0; - while(j<9) //9*60=540 500ms - { - uint1 start=0; - unsigned long BytesRead=cPort->Read(&start,sizeof(start)); // ( 60 ms 500 ms) - if(BytesRead==0) // - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - m_ErrorCode=103; // - break; - }else - if(start==0x15) //NACK - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - break; - }else - if(start==0x16) //SYN 60ms - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - j=0; // ( ) - }else - if(start==0x01) // - { - ReadAr[0]=start; // CRC - uint1 size=0; - cPort->Read(&size,1); // - ReadAr[1]=size; - size=ReadAr[1]-0x20 + 6; // (+5 1 CRC 4 1 ) - - BytesRead=2; // - for(int j=0;j<100;j++) - { - BytesRead+=cPort->Read(&ReadAr[BytesRead],size-BytesRead); - if(BytesRead>=size) - break; - } - - // CRC - unsigned int crc0=MakeCRC(ReadAr,1,size-5); - unsigned int crc1=*((unsigned int*)&ReadAr[size-5]); - if(crc0!=crc1) isOk=false; // - else - { - Status->SetStatus(&ReadAr[size-12]); // - answer.assign((char*)&ReadAr[4],size-17); // - result=true; - } - if(result) break; - } - j++; - } - if(!isOk) continue; // - break; // - } - } - - if(!result) m_ErrorCode=5; - return result; -} -//--------------------------------------------------------------------------- -bool FP300KZ::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(0)) - return false; - }else return false; - return true; -} -//--------------------------------------------------------------------------- -void FP300KZ::LoadSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - cPort->port=ini->ReadString("Printer","Port",""); - cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0); - CheckCount=ini->ReadInteger("Printer","CheckCount",0); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -void FP300KZ::SaveSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - 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",CheckCount); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -bool FP300KZ::Print() -{ - return false; -} -//--------------------------------------------------------------------------- -void FP300KZ::NewLine() -{ - -} -//--------------------------------------------------------------------------- -/*public byte[] ReturnBCC(byte[] bytePacketData) - { - // (0000H-FFFFH) - // : 4 - // : 30H - 3FH - // <01> <05> . - // 30H. - // 1AE3H 31H,3AH,3EH,33H. - - // IN HEX - // 01 25 50 4C 54 05 30 - - // In decimal - // 1 37 80 76 84 5 48 - - Int64 triset_HEX = 0x30; - - byte[] bRes = new byte[4]; - int i = 48; - int iRes = 0; - // int i = 0; - int iCountB = 0; - string hexval1 = String.Empty; - string hexval2 = String.Empty; - StringBuilder sb = new StringBuilder(); - foreach (byte n in bytePacketData) - { - if (n != (byte)01) - { - if (iCountB == 0) - { - sb.Append(n.ToString("X2")); - string hexString = sb.ToString(); - triset_HEX = triset_HEX + Convert.ToInt64(hexString, 16); - } - iCountB++; - if (iCountB > 1) - iCountB = 0; - } - if (n == (byte)05) - break; - } - return this.ConvertHexToByteArr(Convert.ToString( triset_HEX )); - } -*/ -//--------------------------------------------------------------------------- -/// CRC -//BufStart - -//BufEnd - ( ) -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufEnd) -{ - unsigned int cs=0; - for(unsigned int i=BufStart;i> 0x0C) & 0x0F) + 0x30; - mas[1]=((cs >> 0x08) & 0x0F) + 0x30; - mas[2]=((cs >> 0x04) & 0x0F) + 0x30; - mas[3]=((cs >> 0x00) & 0x0F) + 0x30; - return result; -} -//--------------------------------------------------------------------------- -// PrinterName PrinterVersion PrinterNumber PrinterDecimal -// ... -bool FP300KZ::PrinterInit() -{ - bool b=DiagnosticInfo(); - if(b) - { - bool bA,bB,bC,bD; - std::string Decimal,r,TaxA,TaxB,TaxC,TaxD; - b=b && GetTaxRates(Decimal,r,bA,bB,bC,bD,TaxA,TaxB,TaxC,TaxD); -// if(b) b=b && fp->GetStatusFP(); - } - return b; -} -//--------------------------------------------------------------------------- -/// 4A -bool FP300KZ::GetStatusFP() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcGetStatusFP,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetStatusFP(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -bool FP300KZ::CancelFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcCancelFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CancelFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -///OpCode - 1..16 -///OpPwd - 4 - 6 -///TillNmb - 1..99999 -bool FP300KZ::OpenFiscalInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x00; msg+=(char)0x00; msg+=(char)fcOpenFiscalInv; - msg+=IntToStdStr(OpCode)+","+OpPwd+","+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - //if(b) - //{ Password=OpPwd; // - //} - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenFiscalInv(OpCode="+IntToStdStr(OpCode)+",OpPwd=****,TillNmb="+IntToStdStr(TillNmb)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CloseFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcCloseFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenServiceInv() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcOpenServiceInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///TODO : ( ) /4 /. -bool FP300KZ::CloseServiceInv(int& count) -{ - count=0; - unsigned char msg[5] = {0x01,0x24,0x00,fcCloseServiceInv,0x05}; - std::string str; - bool b=SendPMessage(msg,sizeof(msg),str); - b=b && !Status->s[0][5]; // - - if(b) count=fromString(str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/**OpCode - 1..16 -* OpPwd - 4 - 6 -* TillNmb - / 1..99999/ -*/ -bool FP300KZ::OpenBackInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenBackInv; - msg+=IntToStdStr(OpCode)+','+OpPwd+','+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenBackInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDuplicateInv() -{ - unsigned char msg[6] = {0x01,0x25,0x00,fcPrintDuplicateInv,0x31,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDuplicateInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/** -Option - 1..4 -Name - ( name = '' ) -*/ -bool FP300KZ::SetAddTypesOfPayment(char Option, std::wstring& Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetAddTypesOfPayment; - switch(Option) - { - case 1: - msg+='I'; - break; - case 2: - msg+='J'; - break; - case 3: - msg+='K'; - break; - case 4: - msg+='L'; - break; - } - if(Text.length()!=0) - { - msg+=','; - msg.append(ws2s(Text),0,31); // 31 - } - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b && Text.length()!=0 && answer!="P") b=b && false; - if(b && Text.length()==0) Text=s2ws(answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetAddTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintZReport() -{ - bool b=PrintEJ(); // - if(b) b=b && EJ("E"); // - if(b) b=b && DailyFinancialReport('1'); // Z - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintXReport() -{ - return DailyFinancialReport('3'); -} -//--------------------------------------------------------------------------- -// ( ) -bool FP300KZ::PrintLine(std::wstring line) -{ - bool b=PrintFreeTextInFiscalInv(ws2s(line)); //TODO ru-ru.1251 - if(!b) b=PrintFreeTextInServiceInv(ws2s(line)); // - return b; - -// bool b=PrintFreeTextInFiscalInv(WStringToString(line, std::locale(""),'?')); //TODO ru-ru.1251 -// if(!b) b=PrintFreeTextInServiceInv(WStringToString(line, std::locale(""),'?')); // -// return b; -} -//--------------------------------------------------------------------------- -/// -///'0' - Z -///'1' - Z -///'2' - X -///'3' - X -bool FP300KZ::DailyFinancialReport(uint1 Option) -{ - //N - unsigned char msg[6] = {0x01,0x25,0x00,fcDailyFinancialReport,Option,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyFinancialReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Start - DDMMYY /6 / -///End - DDMMYY /6 / -bool FP300KZ::ReportOnTaxRates(std::string Start,std::string End) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportOnTaxRates; - msg+=Start+','+End; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(answer=="f") b=false; // . - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportOnTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::FullFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::ReduceFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::FullFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::ReduceFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::DailyReportByTypesOfPayment(std::string& Cash,std::string& Credit,std::string& Debit,std::string& Cheque,std::string& Pay1,std::string& Pay2,std::string& Pay3,std::string& Pay4,std::string& Closure,std::string& Receipt) -{ -// - unsigned char msg[5] = {0x01,0x24,0x00,fcDailyReportByTypesOfPayment,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Cash=CutBeforeFirst(answer,','); - Credit=CutBeforeFirst(answer,','); - Debit=CutBeforeFirst(answer,','); - Cheque=CutBeforeFirst(answer,','); - Pay1=CutBeforeFirst(answer,','); - Pay2=CutBeforeFirst(answer,','); - Pay3=CutBeforeFirst(answer,','); - Pay4=CutBeforeFirst(answer,','); - Closure=CutBeforeFirst(answer,','); - Receipt=CutBeforeFirst(answer,','); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyReportByTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///'S' - . -///'P' - . -bool FP300KZ::ReportByArticle(std::string Option) //#define fcReportByArticle 0x6F //(111) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportByArticle; msg+=Option; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportByArticle(Option="+Option+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OperatorReport() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcOperatorReport,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OperatorReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param cnt -bool FP300KZ::FeedPaper(int cnt) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFeedPaper; - msg+=IntToStdStr(cnt); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FeedPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenCashDrawer(int mSec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenCashDrawer; - if(mSec>0) msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenCashDrawer(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -//,[] -/// () -bool FP300KZ::SetDepartmentName(int dept,std::wstring line1,std::wstring line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDepartmentName; - msg+=IntToStdStr(dept); - msg+=','; - msg.append(ws2s(line1),0,36); // 36 - if(line2.length()>0) - { - msg+=(char)10; - msg.append(ws2s(line2),0,46); // 46 - } - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDepartmentName(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetDepartmentInfo(int dept,int &RecSales,float &RecSum,int &TotSales,float &TotSum,std::wstring &Line1,std::wstring &Line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDepartmentInfo; - msg+=IntToStdStr(dept); - msg+=(char)0x05; - - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - if(CutBeforeFirst(str,',')=="P") // - { - std::string nstr; - nstr=CutBeforeFirst(str,','); - RecSales=StdStrToInt(nstr); - RecSum=fromString(CutBeforeFirst(str,',')); // 2 - nstr=CutBeforeFirst(str,','); - TotSales=StdStrToInt(nstr); - TotSum=fromString(CutBeforeFirst(str,',')); // 2 - Line1=s2ws(CutBeforeFirst(str,(char)10)); - Line2=s2ws(str); - }else - { - RecSales=0; - RecSum=0; - TotSales=0; - TotSum=0; - Line1=L' '; - Line2=L' '; - } - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDepartmentInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CutPaper() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcCutPaper; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CutPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDiagnostic() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcPrintDiagnostic,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDiagnostic(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::SetManufacturersSerialNumber(std::string Serial) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetManufacturersSerialNumber; - msg+=Serial; - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - b=b && BeforeFirst(answer,',')=="P"; - // "KAZAKHSTAN" - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetManufacturersSerialNumber(Serial="+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -std::string FP300KZ::GetStatusDescription(BYTE StatusCode) -{ - if (StatusCode == 0x00) - { - return "OK"; - } - if (StatusCode == 0xFF) - { - return " !"; - } - BYTE code = (BYTE)StatusCode & (BYTE)0x04; - if (code > 0) - { - return " "; - } - code = (BYTE)StatusCode & (BYTE)0x01; - if (code > 0) - { - return " "; - } - return ""; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetRNNAndRNM(std::string &RNN,std::string &RNM) -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcGetRNNAndRNM,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - RNN=BeforeFirst(answer,','); - RNM=AfterFirst(answer,','); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetRNNAndRNM("+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SetRNNAndRNM(std::string RNN,std::string RNM) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetRNNAndRNM; - msg+=RNN+','+RNM; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetRNNAndRNM(RNN="+RNN+",RNM="+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode -///\param OldPwd -///\param NewPwd -///\return -bool FP300KZ::SetOperatorPassword(std::string OpCode,std::string OldPwd,std::string NewPwd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorPassword; - msg+=OpCode+','+OldPwd+','+NewPwd; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorPassword(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode . 1 16 . -///\param Pwd (4 8 ). -///\param OpName ( 30 ). -///\return -bool FP300KZ::SetOperatorName(std::string OpCode,std::string Pwd,std::string OpName) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorName; - msg+=OpCode+','+Pwd+','+OpName; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorName(OpCode="+OpCode+",OpName="+OpName+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM[:SS]" -bool FP300KZ::SetDateTime(std::string date, std::string time) //#define fcSetDateTime 0x3D //(61) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDateTime; - msg+=trim(date)+' '+trim(time); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDateTime(\"")+date+std::string("\", \"")+time+std::string("\"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM:SS" -bool FP300KZ::GetDateTime(unsigned short& De,unsigned short& Me,unsigned short& Ye,unsigned short& Ho,unsigned short& Mi,unsigned short& Se) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDateTime; msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - De=fromString(CutBeforeFirst(str,'-')); - Me=fromString(CutBeforeFirst(str,'-')); - Ye=fromString(CutBeforeFirst(str,' '));//+2000; - - Ho=fromString(CutBeforeFirst(str,':')); - Mi=fromString(CutBeforeFirst(str,':')); - Se=fromString(str); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDateTime(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// HEADER FOOTER -bool FP300KZ::PrintSetup(std::string Item, std::string Text, std::string& Answer) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintSetup; - msg+=Item+Text; - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),Answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintSetup(Item="+Item+",Text="+Text+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::PrintFreeTextInServiceInv(std::string Text) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInServiceInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintFreeTextInFiscalInv(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInFiscalInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///[][]<[Sign]Price>[*][,Perc|;Abs] -///L1 - , 36 -///L2 - , 36 -///dep - (1..10) -///TaxCd - (, , , , ). -///Price - ( 8 ). -///Qwan - ( 8 3- ). -///Abs - Perc -///Perc - ( ) -bool FP300KZ::RegisterSale(std::wstring L1,std::wstring L2,int dep, std::string TaxCd,double Price,double Qwan,bool Abs,double Perc) -{ - L1=replaceStrings(L1,L"\n",L" "); // - L2=replaceStrings(L2,L"\n",L" "); // - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSale; - msg.append(ws2s(L1),0,36); // 36 - if(L2.length()>0) - { - msg+=(char)0x0A; - msg.append(ws2s(L2),0,36); // 36 - } - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=FloatToStdStr(Price,m_Dots); // - msg+='*'+FloatToStdStr(Qwan,3); - if(Perc!=0) - if(Abs) msg+=';'+FloatToStdStr(Perc,m_Dots); // - else msg+=','+FloatToStdStr(Perc,2); // - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSale(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// [Line]]<[Sign]Price>[*Qwan][,Perc|;Abs] -///Line - 20 . -///TaxCd - (, , , , ). -///Price - ( 8 ). -bool FP300KZ::RegisterSaleDisp(std::string L1,int dep,std::string TaxCd,std::string Price) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSaleDisp; - - msg+=L1; - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=Price; - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSaleDisp(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Print - 1 . -//Display - 1 . -//Abs - false Perc -//Perc - (+-99.9) -//Sum - / 10 / -bool FP300KZ::Subtotal(std::string Print,std::string Display, bool Abs, double Perc,double& Sum) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSubtotal; - - msg+=Print+Display; - if(Perc!=0) // - { - if(Abs) msg+=';'+FloatToStdStr(Perc,2); - else msg+=','+FloatToStdStr(Perc,2); - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - Sum=fromString(CutBeforeFirst(str,','))/M(); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("Subtotal(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -//Line1 - 36 -//Line2 - 36 -//PaidMode - : 'P' ; 'N' ; 'C' ; 'D' 'I' - 1 'J' - 2 'K' - 3 'L' - 4 -// +, Amount ( ). -//Amount - / 10 /. -//Change - -bool FP300KZ::Total(std::string Line1,std::string Line2,std::string PaidMode,double Amount, double& Change) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcTotal; - msg+=Line1; - msg+=(char)0x0A; - msg+=Line2; - msg+=(char)0x09; // - msg+=PaidMode; // - if(Amount>0) msg+='+'; - msg+=FloatToStdStr(Amount,m_Dots); - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - if(str[0]=='F') b=false; - std::string s=""; - s.append(str,1,str.length()-1); - Change=fromString(s)/M(); - if(str[0]=='D') Change=-fabs(Change); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Total(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Amount ( 10 ). . -//strH - strF - -//ExitCode P . , . F : . . -//CashSum . . -//ServIn . -//ServOut . -bool FP300KZ::ParishOrConsumption(std::string Oper,std::string Password,double Amount,std::wstring strH,std::wstring strF,std::string& ExitCode,double& CashSum,double& ServIn,double& ServOut) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcParishOrConsumption; - - if(PrinterName.find("FP600")!=std::string::npos) - { - if(Amount!=0) - { msg+=Oper+","; // - msg+=Password+","; // - msg+=FloatToStdStr(Amount,2); - } - }else - { - if(Amount!=0) - { - msg+=FloatToStdStr(Amount,2); - while(strH.length()>0) - { - std::wstring str = CutBeforeWFirst(strH,L'\n'); - msg+='\t'; msg+='h'; msg.append(ws2s(str),0,48); - } - while(strF.length()>0) - { - std::wstring str = CutBeforeWFirst(strF,L'\n'); - msg+='\t'; msg+='f'; msg.append(ws2s(str),0,48); - } - } - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - ExitCode=CutBeforeFirst(str,','); - CashSum=fromString(CutBeforeFirst(str,','))/M(); - ServIn=fromString(CutBeforeFirst(str,','))/M(); - ServOut=fromString(str)/M(); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ParishOrConsumption(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// - -///Type - 1 5 (1-EAN8, 2-EAN13, 3-Code 128, 4-ITF, 5-ITF) -bool FP300KZ::PrintBarCode(int Type,std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintBarCode; - msg+=IntToStdStr(Type); - msg+=','; - msg+=Data; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintBarCode(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Hz -///\param mSec -bool FP300KZ::Beep(int Hz,int mSec) -{ - if(Hz==0) Hz=294; - if(mSec==0) mSec=1000/8; - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcBeep; - msg+=IntToStdStr(Hz); - msg+=','; - msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Beep(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\Logical -bool FP300KZ::FreeFieldsByFiscalMemory(long& Logical) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFreeFieldsByFiscalMemory; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - {// Logical=fromString(CutBeforeFirst(str,',')); - Logical=fromString(CutBeforeFirst(str,',')); // - } - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FreeFieldsByFiscalMemory(Logical); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// update=false - , -, . -. -///\param update false , - -bool FP300KZ::SwitchPrg(bool update) -{ - std::string msg,key=""; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSwitchPrg; - if(update) - { - if(Sw8) key+='1'; else key+='0'; // - if(Sw7) key+='1'; else key+='0'; // - if(Sw6) key+='1'; else key+='0'; // - if(Sw5) key+='1'; else key+='0'; // - if(Sw4) key+='1'; else key+='0'; // Windows 1251 - if(Sw3) key+='1'; else key+='0'; // - if(Sw2) key+='1'; else key+='0'; // - if(Sw1) key+='1'; else key+='0'; // (: ) - msg+=key; - } - msg+=(char)0x05; - std::string str=""; - - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - saveLog(PrinterName+"_"+PrinterNumber,std::string("SwitchPrg("+key+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getSmallEJ(bool& val) -{ //val=Sw1; - val=Sw2; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setSmallEJ(bool val) -{ //Sw1=val; - Sw2=val; - return SwitchPrg(true); // -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getDisplayTransparent(bool& val) -{ val=Sw3; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setDisplayTransparent(bool val) -{ Sw3=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::getDisplayWin1251(bool& val) -{ - val=Sw4; - return true;// true . -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::setDisplayWin1251(bool val) -{ Sw4=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -// "bps" -int FP300KZ::getComSpeed() -{ - int speed=0; - if(!Sw6 && !Sw7 && !Sw8) speed=1200; - if(!Sw6 && !Sw7 && Sw8) speed=2400; - if(!Sw6 && Sw7 && !Sw8) speed=4800; - if(!Sw6 && Sw7 && Sw8) speed=9600; - if( Sw6 && !Sw7 && !Sw8) speed=19200; - if( Sw6 && !Sw7 && Sw8) speed=38400; - if( Sw6 && Sw7 && !Sw8) speed=57600; - if( Sw6 && Sw7 && Sw8) speed=115200; - return speed; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setComSpeed(int Speed) -{ - bool b=false; - if(Speed==1200) {Sw6=0; Sw7=0; Sw8=0; b=true;} - if(Speed==2400) {Sw6=0; Sw7=0; Sw8=1; b=true;} - if(Speed==4800) {Sw6=0; Sw7=1; Sw8=0; b=true;} - if(Speed==9600) {Sw6=0; Sw7=1; Sw8=1; b=true;} - if(Speed==19200) {Sw6=1; Sw7=0; Sw8=0; b=true;} - if(Speed==38400) {Sw6=1; Sw7=0; Sw8=1; b=true;} - if(Speed==57600) {Sw6=1; Sw7=1; Sw8=0; b=true;} - if(Speed==115200) {Sw6=1; Sw7=1; Sw8=1; b=true;} - - if(b) b=SwitchPrg(true); // - return b; -} -//--------------------------------------------------------------------------- -/// . -/// Sw3 OFF, . -bool FP300KZ::DisplayClear() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcDisplayClear,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DisplayClear(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Text - 20 -bool FP300KZ::DispalyLower(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyLower; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyLower(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Text - 20 -bool FP300KZ::DispalyUpper(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyUpper; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyUpper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// ( 40 ), . ASCII 20h ( ) 40h 10h. -bool FP300KZ::DispalyFree(std::string Text) -{ -//Text=TransformCode(Text); - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyFree; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyFree(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param Decimals 0,1 2 -///\param bA,bB,bC,bD -///\param TaxA -///\param TaxB -///\param TaxC -///\param TaxD -bool FP300KZ::GetTaxRates(std::string &Decimals,std::string &Rounding,bool& bA,bool& bB,bool& bC,bool& bD, std::string &TaxA, std::string &TaxB, std::string &TaxC, std::string &TaxD) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - Decimals=CutBeforeFirst(str,','); - m_Dots=fromString(Decimals); // - if(PrinterName.find("FP600")!=std::string::npos) - { - Rounding=CutBeforeFirst(str,','); // - } - bA=str[0]=='1'; bB=str[1]=='1'; bC=str[2]=='1'; bD=str[3]=='1'; - CutBeforeFirst(str,','); - TaxA=CutBeforeFirst(str,','); - TaxB=CutBeforeFirst(str,','); - TaxC=CutBeforeFirst(str,','); - TaxD=str; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Decimal 0,1 2 -bool FP300KZ::SetTaxRates(int Decimal,std::string Rounding,std::string TaxA, std::string TaxB, std::string TaxC, std::string TaxD) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - str+=IntToStdStr(Decimal)+","; //0,1,2 - if(PrinterName.find("FP600")!=std::string::npos) // - { - str+=Rounding+','; - } - if(TaxA!="") str+='1'; else str+='0'; // - if(TaxB!="") str+='1'; else str+='0'; // - if(TaxC!="") str+='1'; else str+='0'; // - if(TaxD!="") str+='1'; else str+='0'; // - str+=","; - str+=TaxA+','; - str+=TaxB+','; - str+=TaxC+','; - str+=TaxD; - msg+=str; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetTaxRates("+answer+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Open -///\param Items . -///\param Amount -///\param Tender . -bool FP300KZ::FiscalTransactionsStatus(bool& Open,int& Items,double& Amount,double& Tender) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalTransactionsStatus; - msg+='T'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - Open=CutBeforeFirst(answer,',')=="1"; - Items=fromString(CutBeforeFirst(answer,',')); - - Amount=fromString(CutBeforeFirst(answer,','))/M(); - Tender=fromString(answer)/M(); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FiscalTransactionsStatus(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SessionSec(int& sec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)93; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - sec=fromString(answer); - if(m_SaveLog) - saveLog(PrinterName+"_"+PrinterNumber,std::string("SessionSec(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::DiagnosticInfo() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcDiagnosticInfo,0x05}; - std::string answer=""; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - //,,, - PrinterName=CutBeforeFirst(answer,','); - PrinterVersion=CutBeforeFirst(answer,','); // - CutBeforeFirst(answer,','); // - std::string Sw18 = CutBeforeFirst(answer,',');// Sw1 Sw8. 4 0 1 - Sw8=Sw18[0]=='1'; - Sw7=Sw18[1]=='1'; - Sw6=Sw18[2]=='1'; - Sw5=Sw18[3]=='1'; - Sw4=Sw18[4]=='1'; - Sw3=Sw18[5]=='1'; - Sw2=Sw18[6]=='1'; - Sw1=Sw18[7]=='1'; - PrinterNumber=answer; // - 12 . - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DiagnosticInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::EJ(std::string Cmd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcEJ; - msg+=Cmd; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("EJ("+Cmd+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// ( ) . , -. Data . -bool FP300KZ::PrintEJ() -{ - return EJ("PL"); -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearEJ() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearEJ; - msg+='F'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - { - if(answer!="P") b=false; //'P' () 'F' () - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearEJ(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearRAM() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearRAM; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearRAM(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::getPrintLogo(bool& Enable,int& Height) -{ - std::string str; - if(PrintSetup("I","L",str)) - { - Enable = CutBeforeFirst(str,',')=="1"; - Height =fromString(str); - return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::setPrintLogo(bool Enable,int Height) -{ - std::string str=""; - if(Enable) str+="1,"; else str+="0,"; - str+=IntToStdStr(Height); - - std::string Answer=""; - return PrintSetup("L",str,Answer); -} -//--------------------------------------------------------------------------- -// 576x96 -//RowNum - -//Data - -bool FP300KZ::PrgGraphicLogo(int RowNum, std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - - msg+=IntToStdStr(RowNum); - msg+=','; - msg+=Data; - - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrgGraphicLogo("+IntToStdStr(RowNum)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param RowNum - -///\param Data - "01010101110" -bool FP300KZ::getGraphicLogo(int RowNum, std::string &Data) -{ - std::string msg,res; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - msg+='R'+IntToStdStr(RowNum); - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),res); - if(b) - { - Data=""; - for(uint4 i=0;i, -bool FP300KZ::Fiscalization(std::string Password,std::string Serial,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+Serial; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; // - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Fiscalization("+Password+","+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//,,, -bool FP300KZ::reFiscalization(std::string OldPwd,std::string Password,std::string RNN,std::string RNM,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+OldPwd+","+RNN+","+RNM; // ( ) - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("reFiscalization("+OldPwd+","+Password+","+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::AmountOfSavingsPerDay(double& TaxA,double& TaxB,double& TaxC,double& TaxD,double& TaxE) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcAmountOfSavingsPerDay; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - TaxA=fromString(CutBeforeFirst(answer,','))/M();//TaxA - TaxB=fromString(CutBeforeFirst(answer,','))/M();//TaxB - TaxC=fromString(CutBeforeFirst(answer,','))/M();//TaxC - TaxD=fromString(CutBeforeFirst(answer,','))/M();//TaxD - TaxE=fromString(CutBeforeFirst(answer,','))/M();//TaxE - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("AmountOfSavingsPerDay(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::DepartmentReport() -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDepartmentReport; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - saveLog(PrinterName+"_"+PrinterNumber,std::string("DepartmentReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::GetLastPrintedDocNumber(int& num) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetLastPrintedDocNumber; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - num=fromString(answer); - }else num=0; - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Clos - 4 . -///\param Rec - 4 . -///\param Total - 12 . -///\param VAT - 12 . -///\param Date - 6 /DDMMYY/. -bool FP300KZ::LatestFiscalRecord(std::string& Clos,int& Rec, float& Total,float& VAT,std::string& Date) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcLatestFiscalRecord; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Clos=CutBeforeFirst(answer,','); - if(PrinterName.find("FP600")==std::string::npos) - Rec=fromString(CutBeforeFirst(answer,',')); - else - Rec=-1; - Total=fromString(CutBeforeFirst(answer,',')); - VAT=fromString(CutBeforeFirst(answer,',')); - Date=answer; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~22~ b/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~22~ deleted file mode 100644 index 401b7cc..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~22~ +++ /dev/null @@ -1,2181 +0,0 @@ -//! FP300KZ -/*! - FP300KZ -\author . -\file FP300KZ.cpp -*/ -//--------------------------------------------------------------------------- -#pragma hdrstop - -#include "stdafx.h" - - -#include "FP300KZ.h" -#include -#include -#include - -#include -#include -#include -//#include -#include -#include - -#include //mkdir - -//#include -//#include -//#include - -#if defined( __WXMSW__ ) // - #include -#endif // __WXMSW__ -//--------------------------------------------------------------------------- -//#pragma package(smart_init) -//--------------------------------------------------------------------------- -// -//typedef unsigned long DWORD; -//--------------------------------------------------------------------------- -// -bool saveLog(std::string FileName, std::string Text) -{ - try - { - for(uint4 i=0;is[0][0]) return 4; //0x04 -/*5 5 -6 6 -7 7 -8 8 -9 9 -0A 10 BCD -0B 11 -11 17 -12 18 -13 19 -14 20 -15 21 -16 22 -17 23 -18 24 -19 25 -1A 26 -1B 27 -1C 28 -1D 29 -1F 31 -20 32 -21 33 -22 34 -23 35 -24 36 -25 37 -33 51 -35 53 -36 54 -37 55 -38 56 + -39 57 -3A 58 -3C 60 : -3E 62 -3F 63 -40 64 -41 65 -42 66 2 -43 67 3 -44 68 4 -45 69 C -46 70 -47 71 -48 72 -4A 74 - -4B 75 -4C 76 -4D 77 -4E 78 24 -*/ - //if(CommandName==fcOpenFiscalInv && Password=="") return 79; //4F 79 - -/*50 80 -51 81 -52 82 2 -53 83 3 -54 84 4 -56 86 -57 87 : -58 88 -59 89 -5B 91 -5C 92 24 -5D 93 -5E 94 -5F 95 -60 96 -61 97 -62 98 -63 99 -64 100 + -65 101 -66 102 */ - if(!cPort->bOpen) return 103; //0x67 + -/*68 104 -69 105 -6A 106 I2C -6B 107 -6C 108 -6D 109 -6E 110 -6F 111 -70 112 -71 113 + -72 114 -73 115 -74 116 -75 117 + -76 118 : + -77 119 : + -78 120 -79 121 -7A 122 -7B 123 -7C 124 -7D 125 -7E 126 -7F 127 -80 128 + -81 129 + -82 130 + -83 131 + -84 132 -85 133 -86 134 -87 135 -88 136 -89 137 -8A 138 -8B 139 -8C 140 -8D 141 -8E 142 -8F 143 -90 144 , -91 145 -92 146 -93 147 -94 148 -A0 160 + -A1 161 + -A2 162 : -A3 163 -A4 164 -A5 165 -A6 166 -A7 167 -A8 168 : -A9 169 : -AA 170 ( ) -B0 176 : -B1 177 : -B2 178 : */ - if(Status->s[0][2]) return 192; //0xC0 ( ) -/*C1 193 : -C2 194 -C3 195 -C4 196 -5 197 -C6 198 -C7 199 */ - - // - if(Status->s[0][4]) return 500; // . - if(Status->s[0][1]) return 501; // . - if(Status->s[1][4]) return 502; // . - if(Status->s[1][3]) return 503; // ( RESET). - if(Status->s[1][2]) return 504; // . - if(Status->s[1][1]) - { - if(CommandName==fcOpenFiscalInv && Status->s[2][3]) return 509; else // . - if(CommandName==fcCloseFiscalInv) - { - bool Open; int Items; double Amount=0,Tender=0; - FiscalTransactionsStatus(Open,Items,Amount,Tender); - CommandName=fcCloseFiscalInv; // - Status->s[1][1]=true; // - if(Open && Amount-(Tender+0.002)>0) return 511; //" !" - }else - if(CommandName==fcOpenFiscalInv) - { - // - m_SaveLog=false; - int sec; - if(SessionSec(sec) && sec>24*60*60) - { - Status->s[1][1]=true; - CommandName=fcOpenFiscalInv; // - return 78; - } - m_SaveLog=true; - } - return 505; // . - } - if(Status->s[4][0]) return 506; // . - if(Status->s[4][4]) return 507; // . - if(Status->s[2][0]) return 508; // . - //509 " ." - if(Status->s[1][5]) return 510; // ! - //511 " !" - //512 - //513 . - //514 () (). - //515 . - //516 . - //517 Z-. Z-. - //518 . - //519 . - //520 " ". - - - return m_ErrorCode; -} -//--------------------------------------------------------------------------- -FP300KZ::FP300KZ() -{ - cPort=new ComPort(); - Status=new MyStatus(); - CheckCount=0; - for(int i=0;ibOpen) { m_ErrorCode=103; return false; } - - CommandName=msg[3]; // - for(int i=0;ibOpen) - { - for(int i=0;i<5;i++) // 5 ... - { - // - msg[1]=0x20+size-1; // - msg[2]=FrameSeqNumber; - unsigned int crc=MakeCRC(msg,1,size); - cPort->Write(msg,size); // - cPort->Write(&crc,4); // - cPort->WriteChar(0x03); // - - // - bool isOk=true; - int j=0; - while(j<9) //9*60=540 500ms - { - uint1 start=0; - unsigned long BytesRead=cPort->Read(&start,sizeof(start)); // ( 60 ms 500 ms) - if(BytesRead==0) // - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - m_ErrorCode=103; // - break; - }else - if(start==0x15) //NACK - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - break; - }else - if(start==0x16) //SYN 60ms - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - j=0; // ( ) - }else - if(start==0x01) // - { - ReadAr[0]=start; // CRC - uint1 size=0; - cPort->Read(&size,1); // - ReadAr[1]=size; - size=ReadAr[1]-0x20 + 6; // (+5 1 CRC 4 1 ) - - BytesRead=2; // - for(int j=0;j<100;j++) - { - BytesRead+=cPort->Read(&ReadAr[BytesRead],size-BytesRead); - if(BytesRead>=size) - break; - } - - // CRC - unsigned int crc0=MakeCRC(ReadAr,1,size-5); - unsigned int crc1=*((unsigned int*)&ReadAr[size-5]); - if(crc0!=crc1) isOk=false; // - else - { - Status->SetStatus(&ReadAr[size-12]); // - answer.assign((char*)&ReadAr[4],size-17); // - result=true; - } - if(result) break; - } - j++; - } - if(!isOk) continue; // - break; // - } - } - - if(!result) m_ErrorCode=5; - return result; -} -//--------------------------------------------------------------------------- -bool FP300KZ::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(0)) - return false; - }else return false; - return true; -} -//--------------------------------------------------------------------------- -void FP300KZ::LoadSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - cPort->port=ini->ReadString("Printer","Port",""); - cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0); - CheckCount=ini->ReadInteger("Printer","CheckCount",0); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -void FP300KZ::SaveSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - 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",CheckCount); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -bool FP300KZ::Print() -{ - return false; -} -//--------------------------------------------------------------------------- -void FP300KZ::NewLine() -{ - -} -//--------------------------------------------------------------------------- -/*public byte[] ReturnBCC(byte[] bytePacketData) - { - // (0000H-FFFFH) - // : 4 - // : 30H - 3FH - // <01> <05> . - // 30H. - // 1AE3H 31H,3AH,3EH,33H. - - // IN HEX - // 01 25 50 4C 54 05 30 - - // In decimal - // 1 37 80 76 84 5 48 - - Int64 triset_HEX = 0x30; - - byte[] bRes = new byte[4]; - int i = 48; - int iRes = 0; - // int i = 0; - int iCountB = 0; - string hexval1 = String.Empty; - string hexval2 = String.Empty; - StringBuilder sb = new StringBuilder(); - foreach (byte n in bytePacketData) - { - if (n != (byte)01) - { - if (iCountB == 0) - { - sb.Append(n.ToString("X2")); - string hexString = sb.ToString(); - triset_HEX = triset_HEX + Convert.ToInt64(hexString, 16); - } - iCountB++; - if (iCountB > 1) - iCountB = 0; - } - if (n == (byte)05) - break; - } - return this.ConvertHexToByteArr(Convert.ToString( triset_HEX )); - } -*/ -//--------------------------------------------------------------------------- -/// CRC -//BufStart - -//BufEnd - ( ) -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufEnd) -{ - unsigned int cs=0; - for(unsigned int i=BufStart;i> 0x0C) & 0x0F) + 0x30; - mas[1]=((cs >> 0x08) & 0x0F) + 0x30; - mas[2]=((cs >> 0x04) & 0x0F) + 0x30; - mas[3]=((cs >> 0x00) & 0x0F) + 0x30; - return result; -} -//--------------------------------------------------------------------------- -// PrinterName PrinterVersion PrinterNumber PrinterDecimal -// ... -bool FP300KZ::PrinterInit() -{ - bool b=DiagnosticInfo(); - if(b) - { - bool bA,bB,bC,bD; - std::string Decimal,r,TaxA,TaxB,TaxC,TaxD; - b=b && GetTaxRates(Decimal,r,bA,bB,bC,bD,TaxA,TaxB,TaxC,TaxD); -// if(b) b=b && fp->GetStatusFP(); - } - return b; -} -//--------------------------------------------------------------------------- -/// 4A -bool FP300KZ::GetStatusFP() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcGetStatusFP,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetStatusFP(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -bool FP300KZ::CancelFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcCancelFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CancelFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -///OpCode - 1..16 -///OpPwd - 4 - 6 -///TillNmb - 1..99999 -bool FP300KZ::OpenFiscalInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x00; msg+=(char)0x00; msg+=(char)fcOpenFiscalInv; - msg+=IntToStdStr(OpCode)+","+OpPwd+","+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - //if(b) - //{ Password=OpPwd; // - //} - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenFiscalInv(OpCode="+IntToStdStr(OpCode)+",OpPwd=****,TillNmb="+IntToStdStr(TillNmb)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CloseFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcCloseFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenServiceInv() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcOpenServiceInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///TODO : ( ) /4 /. -bool FP300KZ::CloseServiceInv(int& count) -{ - count=0; - unsigned char msg[5] = {0x01,0x24,0x00,fcCloseServiceInv,0x05}; - std::string str; - bool b=SendPMessage(msg,sizeof(msg),str); - b=b && !Status->s[0][5]; // - - if(b) count=fromString(str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/**OpCode - 1..16 -* OpPwd - 4 - 6 -* TillNmb - / 1..99999/ -*/ -bool FP300KZ::OpenBackInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenBackInv; - msg+=IntToStdStr(OpCode)+','+OpPwd+','+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenBackInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDuplicateInv() -{ - unsigned char msg[6] = {0x01,0x25,0x00,fcPrintDuplicateInv,0x31,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDuplicateInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/** -Option - 1..4 -Name - ( name = '' ) -*/ -bool FP300KZ::SetAddTypesOfPayment(char Option, std::wstring& Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetAddTypesOfPayment; - switch(Option) - { - case 1: - msg+='I'; - break; - case 2: - msg+='J'; - break; - case 3: - msg+='K'; - break; - case 4: - msg+='L'; - break; - } - if(Text.length()!=0) - { - msg+=','; - msg.append(ws2s(Text),0,31); // 31 - } - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b && Text.length()!=0 && answer!="P") b=b && false; - if(b && Text.length()==0) Text=s2ws(answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetAddTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintZReport() -{ - bool b=PrintEJ(); // - if(b) b=b && EJ("E"); // - if(b) b=b && DailyFinancialReport('1'); // Z - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintXReport() -{ - return DailyFinancialReport('3'); -} -//--------------------------------------------------------------------------- -// ( ) -bool FP300KZ::PrintLine(std::wstring line) -{ - bool b=PrintFreeTextInFiscalInv(ws2s(line)); //TODO ru-ru.1251 - if(!b) b=PrintFreeTextInServiceInv(ws2s(line)); // - return b; - -// bool b=PrintFreeTextInFiscalInv(WStringToString(line, std::locale(""),'?')); //TODO ru-ru.1251 -// if(!b) b=PrintFreeTextInServiceInv(WStringToString(line, std::locale(""),'?')); // -// return b; -} -//--------------------------------------------------------------------------- -/// -///'0' - Z -///'1' - Z -///'2' - X -///'3' - X -bool FP300KZ::DailyFinancialReport(uint1 Option) -{ - //N - unsigned char msg[6] = {0x01,0x25,0x00,fcDailyFinancialReport,Option,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyFinancialReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Start - DDMMYY /6 / -///End - DDMMYY /6 / -bool FP300KZ::ReportOnTaxRates(std::string Start,std::string End) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportOnTaxRates; - msg+=Start+','+End; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(answer=="f") b=false; // . - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportOnTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::FullFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::ReduceFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::FullFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::ReduceFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::DailyReportByTypesOfPayment(std::string& Cash,std::string& Credit,std::string& Debit,std::string& Cheque,std::string& Pay1,std::string& Pay2,std::string& Pay3,std::string& Pay4,std::string& Closure,std::string& Receipt) -{ -// - unsigned char msg[5] = {0x01,0x24,0x00,fcDailyReportByTypesOfPayment,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Cash=CutBeforeFirst(answer,','); - Credit=CutBeforeFirst(answer,','); - Debit=CutBeforeFirst(answer,','); - Cheque=CutBeforeFirst(answer,','); - Pay1=CutBeforeFirst(answer,','); - Pay2=CutBeforeFirst(answer,','); - Pay3=CutBeforeFirst(answer,','); - Pay4=CutBeforeFirst(answer,','); - Closure=CutBeforeFirst(answer,','); - Receipt=CutBeforeFirst(answer,','); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyReportByTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///'S' - . -///'P' - . -bool FP300KZ::ReportByArticle(std::string Option) //#define fcReportByArticle 0x6F //(111) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportByArticle; msg+=Option; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportByArticle(Option="+Option+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OperatorReport() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcOperatorReport,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OperatorReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param cnt -bool FP300KZ::FeedPaper(int cnt) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFeedPaper; - msg+=IntToStdStr(cnt); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FeedPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenCashDrawer(int mSec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenCashDrawer; - if(mSec>0) msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenCashDrawer(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -//,[] -/// () -bool FP300KZ::SetDepartmentName(int dept,std::wstring line1,std::wstring line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDepartmentName; - msg+=IntToStdStr(dept); - msg+=','; - msg.append(ws2s(line1),0,36); // 36 - if(line2.length()>0) - { - msg+=(char)10; - msg.append(ws2s(line2),0,46); // 46 - } - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDepartmentName(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetDepartmentInfo(int dept,int &RecSales,float &RecSum,int &TotSales,float &TotSum,std::wstring &Line1,std::wstring &Line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDepartmentInfo; - msg+=IntToStdStr(dept); - msg+=(char)0x05; - - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - if(CutBeforeFirst(str,',')=="P") // - { - std::string nstr; - nstr=CutBeforeFirst(str,','); - RecSales=StdStrToInt(nstr); - RecSum=fromString(CutBeforeFirst(str,',')); // 2 - nstr=CutBeforeFirst(str,','); - TotSales=StdStrToInt(nstr); - TotSum=fromString(CutBeforeFirst(str,',')); // 2 - Line1=s2ws(CutBeforeFirst(str,(char)10)); - Line2=s2ws(str); - }else - { - RecSales=0; - RecSum=0; - TotSales=0; - TotSum=0; - Line1=L' '; - Line2=L' '; - } - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDepartmentInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CutPaper() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcCutPaper; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CutPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDiagnostic() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcPrintDiagnostic,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDiagnostic(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::SetManufacturersSerialNumber(std::string Serial) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetManufacturersSerialNumber; - msg+=Serial; - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - b=b && BeforeFirst(answer,',')=="P"; - // "KAZAKHSTAN" - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetManufacturersSerialNumber(Serial="+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -std::string FP300KZ::GetStatusDescription(BYTE StatusCode) -{ - if (StatusCode == 0x00) - { - return "OK"; - } - if (StatusCode == 0xFF) - { - return " !"; - } - BYTE code = (BYTE)StatusCode & (BYTE)0x04; - if (code > 0) - { - return " "; - } - code = (BYTE)StatusCode & (BYTE)0x01; - if (code > 0) - { - return " "; - } - return ""; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetRNNAndRNM(std::string &RNN,std::string &RNM) -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcGetRNNAndRNM,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - RNN=BeforeFirst(answer,','); - RNM=AfterFirst(answer,','); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetRNNAndRNM("+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SetRNNAndRNM(std::string RNN,std::string RNM) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetRNNAndRNM; - msg+=RNN+','+RNM; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetRNNAndRNM(RNN="+RNN+",RNM="+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode -///\param OldPwd -///\param NewPwd -///\return -bool FP300KZ::SetOperatorPassword(std::string OpCode,std::string OldPwd,std::string NewPwd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorPassword; - msg+=OpCode+','+OldPwd+','+NewPwd; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorPassword(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode . 1 16 . -///\param Pwd (4 8 ). -///\param OpName ( 30 ). -///\return -bool FP300KZ::SetOperatorName(std::string OpCode,std::string Pwd,std::string OpName) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorName; - msg+=OpCode+','+Pwd+','+OpName; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorName(OpCode="+OpCode+",OpName="+OpName+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM[:SS]" -bool FP300KZ::SetDateTime(std::string date, std::string time) //#define fcSetDateTime 0x3D //(61) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDateTime; - msg+=trim(date)+' '+trim(time); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDateTime(\"")+date+std::string("\", \"")+time+std::string("\"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM:SS" -bool FP300KZ::GetDateTime(unsigned short& De,unsigned short& Me,unsigned short& Ye,unsigned short& Ho,unsigned short& Mi,unsigned short& Se) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDateTime; msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - De=fromString(CutBeforeFirst(str,'-')); - Me=fromString(CutBeforeFirst(str,'-')); - Ye=fromString(CutBeforeFirst(str,' '));//+2000; - - Ho=fromString(CutBeforeFirst(str,':')); - Mi=fromString(CutBeforeFirst(str,':')); - Se=fromString(str); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDateTime(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// HEADER FOOTER -bool FP300KZ::PrintSetup(std::string Item, std::string Text, std::string& Answer) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintSetup; - msg+=Item+Text; - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),Answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintSetup(Item="+Item+",Text="+Text+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::PrintFreeTextInServiceInv(std::string Text) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInServiceInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintFreeTextInFiscalInv(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInFiscalInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///[][]<[Sign]Price>[*][,Perc|;Abs] -///L1 - , 36 -///L2 - , 36 -///dep - (1..10) -///TaxCd - (, , , , ). -///Price - ( 8 ). -///Qwan - ( 8 3- ). -///Abs - Perc -///Perc - ( ) -bool FP300KZ::RegisterSale(std::wstring L1,std::wstring L2,int dep, std::string TaxCd,double Price,double Qwan,bool Abs,double Perc) -{ - L1=replaceStrings(L1,L"\n",L" "); // - L2=replaceStrings(L2,L"\n",L" "); // - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSale; - msg.append(ws2s(L1),0,36); // 36 - if(L2.length()>0) - { - msg+=(char)0x0A; - msg.append(ws2s(L2),0,36); // 36 - } - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=FloatToStdStr(Price,m_Dots); // - msg+='*'+FloatToStdStr(Qwan,3); - if(Perc!=0) - if(Abs) msg+=';'+FloatToStdStr(Perc,m_Dots); // - else msg+=','+FloatToStdStr(Perc,2); // - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSale(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// [Line]]<[Sign]Price>[*Qwan][,Perc|;Abs] -///Line - 20 . -///TaxCd - (, , , , ). -///Price - ( 8 ). -bool FP300KZ::RegisterSaleDisp(std::string L1,int dep,std::string TaxCd,std::string Price) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSaleDisp; - - msg+=L1; - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=Price; - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSaleDisp(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Print - 1 . -//Display - 1 . -//Abs - false Perc -//Perc - (+-99.9) -//Sum - / 10 / -bool FP300KZ::Subtotal(std::string Print,std::string Display, bool Abs, double Perc,double& Sum) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSubtotal; - - msg+=Print+Display; - if(Perc!=0) // - { - if(Abs) msg+=';'+FloatToStdStr(Perc,2); - else msg+=','+FloatToStdStr(Perc,2); - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - Sum=fromString(CutBeforeFirst(str,','))/M(); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("Subtotal(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -//Line1 - 36 -//Line2 - 36 -//PaidMode - : 'P' ; 'N' ; 'C' ; 'D' 'I' - 1 'J' - 2 'K' - 3 'L' - 4 -// +, Amount ( ). -//Amount - / 10 /. -//Change - -bool FP300KZ::Total(std::string Line1,std::string Line2,std::string PaidMode,double Amount, double& Change) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcTotal; - msg+=Line1; - msg+=(char)0x0A; - msg+=Line2; - msg+=(char)0x09; // - msg+=PaidMode; // - if(Amount>0) msg+='+'; - msg+=FloatToStdStr(Amount,m_Dots); - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - if(str[0]=='F') b=false; - std::string s=""; - s.append(str,1,str.length()-1); - Change=fromString(s)/M(); - if(str[0]=='D') Change=-fabs(Change); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Total(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Amount ( 10 ). . -//strH - strF - -//ExitCode P . , . F : . . -//CashSum . . -//ServIn . -//ServOut . -bool FP300KZ::ParishOrConsumption(std::string Oper,std::string Password,double Amount,std::wstring strH,std::wstring strF,std::string& ExitCode,double& CashSum,double& ServIn,double& ServOut) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcParishOrConsumption; - - if(PrinterName.find("FP600")!=std::string::npos) - { - if(Amount!=0) - { msg+=Oper+","; // - msg+=Password+","; // - msg+=FloatToStdStr(Amount,2); - } - }else - { - if(Amount!=0) - { - msg+=FloatToStdStr(Amount,2); - while(strH.length()>0) - { - std::wstring str = CutBeforeWFirst(strH,L'\n'); - msg+='\t'; msg+='h'; msg.append(ws2s(str),0,48); - } - while(strF.length()>0) - { - std::wstring str = CutBeforeWFirst(strF,L'\n'); - msg+='\t'; msg+='f'; msg.append(ws2s(str),0,48); - } - } - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - ExitCode=CutBeforeFirst(str,','); - CashSum=fromString(CutBeforeFirst(str,','))/M(); - ServIn=fromString(CutBeforeFirst(str,','))/M(); - ServOut=fromString(str)/M(); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ParishOrConsumption(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// - -///Type - 1 5 (1-EAN8, 2-EAN13, 3-Code 128, 4-ITF, 5-ITF) -bool FP300KZ::PrintBarCode(int Type,std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintBarCode; - msg+=IntToStdStr(Type); - msg+=','; - msg+=Data; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintBarCode(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Hz -///\param mSec -bool FP300KZ::Beep(int Hz,int mSec) -{ - if(Hz==0) Hz=294; - if(mSec==0) mSec=1000/8; - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcBeep; - msg+=IntToStdStr(Hz); - msg+=','; - msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Beep(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\Logical -bool FP300KZ::FreeFieldsByFiscalMemory(long& Logical) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFreeFieldsByFiscalMemory; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - {// Logical=fromString(CutBeforeFirst(str,',')); - Logical=fromString(CutBeforeFirst(str,',')); // - } - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FreeFieldsByFiscalMemory(Logical); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// update=false - , -, . -. -///\param update false , - -bool FP300KZ::SwitchPrg(bool update) -{ - std::string msg,key=""; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSwitchPrg; - if(update) - { - if(Sw8) key+='1'; else key+='0'; // - if(Sw7) key+='1'; else key+='0'; // - if(Sw6) key+='1'; else key+='0'; // - if(Sw5) key+='1'; else key+='0'; // - if(Sw4) key+='1'; else key+='0'; // Windows 1251 - if(Sw3) key+='1'; else key+='0'; // - if(Sw2) key+='1'; else key+='0'; // - if(Sw1) key+='1'; else key+='0'; // (: ) - msg+=key; - } - msg+=(char)0x05; - std::string str=""; - - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - saveLog(PrinterName+"_"+PrinterNumber,std::string("SwitchPrg("+key+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getSmallEJ(bool& val) -{ //val=Sw1; - val=Sw2; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setSmallEJ(bool val) -{ //Sw1=val; - Sw2=val; - return SwitchPrg(true); // -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getDisplayTransparent(bool& val) -{ val=Sw3; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setDisplayTransparent(bool val) -{ Sw3=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::getDisplayWin1251(bool& val) -{ - val=Sw4; - return true;// true . -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::setDisplayWin1251(bool val) -{ Sw4=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -// "bps" -int FP300KZ::getComSpeed() -{ - int speed=0; - if(!Sw6 && !Sw7 && !Sw8) speed=1200; - if(!Sw6 && !Sw7 && Sw8) speed=2400; - if(!Sw6 && Sw7 && !Sw8) speed=4800; - if(!Sw6 && Sw7 && Sw8) speed=9600; - if( Sw6 && !Sw7 && !Sw8) speed=19200; - if( Sw6 && !Sw7 && Sw8) speed=38400; - if( Sw6 && Sw7 && !Sw8) speed=57600; - if( Sw6 && Sw7 && Sw8) speed=115200; - return speed; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setComSpeed(int Speed) -{ - bool b=false; - if(Speed==1200) {Sw6=0; Sw7=0; Sw8=0; b=true;} - if(Speed==2400) {Sw6=0; Sw7=0; Sw8=1; b=true;} - if(Speed==4800) {Sw6=0; Sw7=1; Sw8=0; b=true;} - if(Speed==9600) {Sw6=0; Sw7=1; Sw8=1; b=true;} - if(Speed==19200) {Sw6=1; Sw7=0; Sw8=0; b=true;} - if(Speed==38400) {Sw6=1; Sw7=0; Sw8=1; b=true;} - if(Speed==57600) {Sw6=1; Sw7=1; Sw8=0; b=true;} - if(Speed==115200) {Sw6=1; Sw7=1; Sw8=1; b=true;} - - if(b) b=SwitchPrg(true); // - return b; -} -//--------------------------------------------------------------------------- -/// . -/// Sw3 OFF, . -bool FP300KZ::DisplayClear() -{ - unsigned char msg[5] = {0x01,0x24,0x00,fcDisplayClear,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DisplayClear(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Text - 20 -bool FP300KZ::DispalyLower(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyLower; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyLower(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Text - 20 -bool FP300KZ::DispalyUpper(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyUpper; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyUpper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// ( 40 ), . ASCII 20h ( ) 40h 10h. -bool FP300KZ::DispalyFree(std::string Text) -{ -//Text=TransformCode(Text); - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyFree; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyFree(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param Decimals 0,1 2 -///\param bA,bB,bC,bD -///\param TaxA -///\param TaxB -///\param TaxC -///\param TaxD -bool FP300KZ::GetTaxRates(std::string &Decimals,std::string &Rounding,bool& bA,bool& bB,bool& bC,bool& bD, std::string &TaxA, std::string &TaxB, std::string &TaxC, std::string &TaxD) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - Decimals=CutBeforeFirst(str,','); - m_Dots=fromString(Decimals); // - if(PrinterName.find("FP600")!=std::string::npos) - { - Rounding=CutBeforeFirst(str,','); // - } - bA=str[0]=='1'; bB=str[1]=='1'; bC=str[2]=='1'; bD=str[3]=='1'; - CutBeforeFirst(str,','); - TaxA=CutBeforeFirst(str,','); - TaxB=CutBeforeFirst(str,','); - TaxC=CutBeforeFirst(str,','); - TaxD=str; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Decimal 0,1 2 -bool FP300KZ::SetTaxRates(int Decimal,std::string Rounding,std::string TaxA, std::string TaxB, std::string TaxC, std::string TaxD) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - str+=IntToStdStr(Decimal)+","; //0,1,2 - if(PrinterName.find("FP600")!=std::string::npos) // - { - str+=Rounding+','; - } - if(TaxA!="") str+='1'; else str+='0'; // - if(TaxB!="") str+='1'; else str+='0'; // - if(TaxC!="") str+='1'; else str+='0'; // - if(TaxD!="") str+='1'; else str+='0'; // - str+=","; - str+=TaxA+','; - str+=TaxB+','; - str+=TaxC+','; - str+=TaxD; - msg+=str; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetTaxRates("+answer+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Open -///\param Items . -///\param Amount -///\param Tender . -bool FP300KZ::FiscalTransactionsStatus(bool& Open,int& Items,double& Amount,double& Tender) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalTransactionsStatus; - msg+='T'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - Open=CutBeforeFirst(answer,',')=="1"; - Items=fromString(CutBeforeFirst(answer,',')); - - Amount=fromString(CutBeforeFirst(answer,','))/M(); - Tender=fromString(answer)/M(); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FiscalTransactionsStatus(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SessionSec(int& sec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)93; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - sec=fromString(answer); - if(m_SaveLog) - saveLog(PrinterName+"_"+PrinterNumber,std::string("SessionSec(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::DiagnosticInfo() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcDiagnosticInfo,0x05}; - std::string answer=""; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - //,,, - PrinterName=CutBeforeFirst(answer,','); - PrinterVersion=CutBeforeFirst(answer,','); // - CutBeforeFirst(answer,','); // - std::string Sw18 = CutBeforeFirst(answer,',');// Sw1 Sw8. 4 0 1 - Sw8=Sw18[0]=='1'; - Sw7=Sw18[1]=='1'; - Sw6=Sw18[2]=='1'; - Sw5=Sw18[3]=='1'; - Sw4=Sw18[4]=='1'; - Sw3=Sw18[5]=='1'; - Sw2=Sw18[6]=='1'; - Sw1=Sw18[7]=='1'; - PrinterNumber=answer; // - 12 . - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DiagnosticInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::EJ(std::string Cmd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcEJ; - msg+=Cmd; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("EJ("+Cmd+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// ( ) . , -. Data . -bool FP300KZ::PrintEJ() -{ - return EJ("PL"); -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearEJ() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearEJ; - msg+='F'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - { - if(answer!="P") b=false; //'P' () 'F' () - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearEJ(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearRAM() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearRAM; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearRAM(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::getPrintLogo(bool& Enable,int& Height) -{ - std::string str; - if(PrintSetup("I","L",str)) - { - Enable = CutBeforeFirst(str,',')=="1"; - Height =fromString(str); - return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::setPrintLogo(bool Enable,int Height) -{ - std::string str=""; - if(Enable) str+="1,"; else str+="0,"; - str+=IntToStdStr(Height); - - std::string Answer=""; - return PrintSetup("L",str,Answer); -} -//--------------------------------------------------------------------------- -// 576x96 -//RowNum - -//Data - -bool FP300KZ::PrgGraphicLogo(int RowNum, std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - - msg+=IntToStdStr(RowNum); - msg+=','; - msg+=Data; - - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrgGraphicLogo("+IntToStdStr(RowNum)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param RowNum - -///\param Data - "01010101110" -bool FP300KZ::getGraphicLogo(int RowNum, std::string &Data) -{ - std::string msg,res; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - msg+='R'+IntToStdStr(RowNum); - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),res); - if(b) - { - Data=""; - for(uint4 i=0;i, -bool FP300KZ::Fiscalization(std::string Password,std::string Serial,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+Serial; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; // - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Fiscalization("+Password+","+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//,,, -bool FP300KZ::reFiscalization(std::string OldPwd,std::string Password,std::string RNN,std::string RNM,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+OldPwd+","+RNN+","+RNM; // ( ) - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("reFiscalization("+OldPwd+","+Password+","+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::AmountOfSavingsPerDay(double& TaxA,double& TaxB,double& TaxC,double& TaxD,double& TaxE) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcAmountOfSavingsPerDay; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - TaxA=fromString(CutBeforeFirst(answer,','))/M();//TaxA - TaxB=fromString(CutBeforeFirst(answer,','))/M();//TaxB - TaxC=fromString(CutBeforeFirst(answer,','))/M();//TaxC - TaxD=fromString(CutBeforeFirst(answer,','))/M();//TaxD - TaxE=fromString(CutBeforeFirst(answer,','))/M();//TaxE - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("AmountOfSavingsPerDay(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::DepartmentReport() -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDepartmentReport; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - saveLog(PrinterName+"_"+PrinterNumber,std::string("DepartmentReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::GetLastPrintedDocNumber(int& num) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetLastPrintedDocNumber; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - num=fromString(answer); - }else num=0; - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Clos - 4 . -///\param Rec - 4 . -///\param Total - 12 . -///\param VAT - 12 . -///\param Date - 6 /DDMMYY/. -bool FP300KZ::LatestFiscalRecord(std::string& Clos,int& Rec, float& Total,float& VAT,std::string& Date) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcLatestFiscalRecord; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Clos=CutBeforeFirst(answer,','); - if(PrinterName.find("FP600")==std::string::npos) - Rec=fromString(CutBeforeFirst(answer,',')); - else - Rec=-1; - Total=fromString(CutBeforeFirst(answer,',')); - VAT=fromString(CutBeforeFirst(answer,',')); - Date=answer; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~23~ b/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~23~ deleted file mode 100644 index 872b2da..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~23~ +++ /dev/null @@ -1,2181 +0,0 @@ -//! FP300KZ -/*! - FP300KZ -\author . -\file FP300KZ.cpp -*/ -//--------------------------------------------------------------------------- -#pragma hdrstop - -#include "stdafx.h" - - -#include "FP300KZ.h" -#include -#include -#include - -#include -#include -#include -//#include -#include -#include - -#include //mkdir - -//#include -//#include -//#include - -#if defined( __WXMSW__ ) // - #include -#endif // __WXMSW__ -//--------------------------------------------------------------------------- -//#pragma package(smart_init) -//--------------------------------------------------------------------------- -// -//typedef unsigned long DWORD; -//--------------------------------------------------------------------------- -// -bool saveLog(std::string FileName, std::string Text) -{ - try - { - for(uint4 i=0;is[0][0]) return 4; //0x04 -/*5 5 -6 6 -7 7 -8 8 -9 9 -0A 10 BCD -0B 11 -11 17 -12 18 -13 19 -14 20 -15 21 -16 22 -17 23 -18 24 -19 25 -1A 26 -1B 27 -1C 28 -1D 29 -1F 31 -20 32 -21 33 -22 34 -23 35 -24 36 -25 37 -33 51 -35 53 -36 54 -37 55 -38 56 + -39 57 -3A 58 -3C 60 : -3E 62 -3F 63 -40 64 -41 65 -42 66 2 -43 67 3 -44 68 4 -45 69 C -46 70 -47 71 -48 72 -4A 74 - -4B 75 -4C 76 -4D 77 -4E 78 24 -*/ - //if(CommandName==fcOpenFiscalInv && Password=="") return 79; //4F 79 - -/*50 80 -51 81 -52 82 2 -53 83 3 -54 84 4 -56 86 -57 87 : -58 88 -59 89 -5B 91 -5C 92 24 -5D 93 -5E 94 -5F 95 -60 96 -61 97 -62 98 -63 99 -64 100 + -65 101 -66 102 */ - if(!cPort->bOpen) return 103; //0x67 + -/*68 104 -69 105 -6A 106 I2C -6B 107 -6C 108 -6D 109 -6E 110 -6F 111 -70 112 -71 113 + -72 114 -73 115 -74 116 -75 117 + -76 118 : + -77 119 : + -78 120 -79 121 -7A 122 -7B 123 -7C 124 -7D 125 -7E 126 -7F 127 -80 128 + -81 129 + -82 130 + -83 131 + -84 132 -85 133 -86 134 -87 135 -88 136 -89 137 -8A 138 -8B 139 -8C 140 -8D 141 -8E 142 -8F 143 -90 144 , -91 145 -92 146 -93 147 -94 148 -A0 160 + -A1 161 + -A2 162 : -A3 163 -A4 164 -A5 165 -A6 166 -A7 167 -A8 168 : -A9 169 : -AA 170 ( ) -B0 176 : -B1 177 : -B2 178 : */ - if(Status->s[0][2]) return 192; //0xC0 ( ) -/*C1 193 : -C2 194 -C3 195 -C4 196 -5 197 -C6 198 -C7 199 */ - - // - if(Status->s[0][4]) return 500; // . - if(Status->s[0][1]) return 501; // . - if(Status->s[1][4]) return 502; // . - if(Status->s[1][3]) return 503; // ( RESET). - if(Status->s[1][2]) return 504; // . - if(Status->s[1][1]) - { - if(CommandName==fcOpenFiscalInv && Status->s[2][3]) return 509; else // . - if(CommandName==fcCloseFiscalInv) - { - bool Open; int Items; double Amount=0,Tender=0; - FiscalTransactionsStatus(Open,Items,Amount,Tender); - CommandName=fcCloseFiscalInv; // - Status->s[1][1]=true; // - if(Open && Amount-(Tender+0.002)>0) return 511; //" !" - }else - if(CommandName==fcOpenFiscalInv) - { - // - m_SaveLog=false; - int sec; - if(SessionSec(sec) && sec>24*60*60) - { - Status->s[1][1]=true; - CommandName=fcOpenFiscalInv; // - return 78; - } - m_SaveLog=true; - } - return 505; // . - } - if(Status->s[4][0]) return 506; // . - if(Status->s[4][4]) return 507; // . - if(Status->s[2][0]) return 508; // . - //509 " ." - if(Status->s[1][5]) return 510; // ! - //511 " !" - //512 - //513 . - //514 () (). - //515 . - //516 . - //517 Z-. Z-. - //518 . - //519 . - //520 " ". - - - return m_ErrorCode; -} -//--------------------------------------------------------------------------- -FP300KZ::FP300KZ() -{ - cPort=new ComPort(); - Status=new MyStatus(); - CheckCount=0; - for(int i=0;ibOpen) { m_ErrorCode=103; return false; } - - CommandName=msg[3]; // - for(int i=0;ibOpen) - { - for(int i=0;i<5;i++) // 5 ... - { - // - msg[1]=0x20+size-1; // - msg[2]=FrameSeqNumber; - unsigned int crc=MakeCRC(msg,1,size); - cPort->Write(msg,size); // - cPort->Write(&crc,4); // - cPort->WriteChar(0x03); // - - // - bool isOk=true; - int j=0; - while(j<9) //9*60=540 500ms - { - uint1 start=0; - unsigned long BytesRead=cPort->Read(&start,sizeof(start)); // ( 60 ms 500 ms) - if(BytesRead==0) // - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - m_ErrorCode=103; // - break; - }else - if(start==0x15) //NACK - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - break; - }else - if(start==0x16) //SYN 60ms - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - j=0; // ( ) - }else - if(start==0x01) // - { - ReadAr[0]=start; // CRC - uint1 size=0; - cPort->Read(&size,1); // - ReadAr[1]=size; - size=ReadAr[1]-0x20 + 6; // (+5 1 CRC 4 1 ) - - BytesRead=2; // - for(int j=0;j<100;j++) - { - BytesRead+=cPort->Read(&ReadAr[BytesRead],size-BytesRead); - if(BytesRead>=size) - break; - } - - // CRC - unsigned int crc0=MakeCRC(ReadAr,1,size-5); - unsigned int crc1=*((unsigned int*)&ReadAr[size-5]); - if(crc0!=crc1) isOk=false; // - else - { - Status->SetStatus(&ReadAr[size-12]); // - answer.assign((char*)&ReadAr[4],size-17); // - result=true; - } - if(result) break; - } - j++; - } - if(!isOk) continue; // - break; // - } - } - - if(!result) m_ErrorCode=5; - return result; -} -//--------------------------------------------------------------------------- -bool FP300KZ::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(0)) - return false; - }else return false; - return true; -} -//--------------------------------------------------------------------------- -void FP300KZ::LoadSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - cPort->port=ini->ReadString("Printer","Port",""); - cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0); - CheckCount=ini->ReadInteger("Printer","CheckCount",0); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -void FP300KZ::SaveSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - 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",CheckCount); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -bool FP300KZ::Print() -{ - return false; -} -//--------------------------------------------------------------------------- -void FP300KZ::NewLine() -{ - -} -//--------------------------------------------------------------------------- -/*public byte[] ReturnBCC(byte[] bytePacketData) - { - // (0000H-FFFFH) - // : 4 - // : 30H - 3FH - // <01> <05> . - // 30H. - // 1AE3H 31H,3AH,3EH,33H. - - // IN HEX - // 01 25 50 4C 54 05 30 - - // In decimal - // 1 37 80 76 84 5 48 - - Int64 triset_HEX = 0x30; - - byte[] bRes = new byte[4]; - int i = 48; - int iRes = 0; - // int i = 0; - int iCountB = 0; - string hexval1 = String.Empty; - string hexval2 = String.Empty; - StringBuilder sb = new StringBuilder(); - foreach (byte n in bytePacketData) - { - if (n != (byte)01) - { - if (iCountB == 0) - { - sb.Append(n.ToString("X2")); - string hexString = sb.ToString(); - triset_HEX = triset_HEX + Convert.ToInt64(hexString, 16); - } - iCountB++; - if (iCountB > 1) - iCountB = 0; - } - if (n == (byte)05) - break; - } - return this.ConvertHexToByteArr(Convert.ToString( triset_HEX )); - } -*/ -//--------------------------------------------------------------------------- -/// CRC -//BufStart - -//BufEnd - ( ) -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufEnd) -{ - unsigned int cs=0; - for(unsigned int i=BufStart;i> 0x0C) & 0x0F) + 0x30; - mas[1]=((cs >> 0x08) & 0x0F) + 0x30; - mas[2]=((cs >> 0x04) & 0x0F) + 0x30; - mas[3]=((cs >> 0x00) & 0x0F) + 0x30; - return result; -} -//--------------------------------------------------------------------------- -// PrinterName PrinterVersion PrinterNumber PrinterDecimal -// ... -bool FP300KZ::PrinterInit() -{ - bool b=DiagnosticInfo(); - if(b) - { - bool bA,bB,bC,bD; - std::string Decimal,r,TaxA,TaxB,TaxC,TaxD; - b=b && GetTaxRates(Decimal,r,bA,bB,bC,bD,TaxA,TaxB,TaxC,TaxD); -// if(b) b=b && fp->GetStatusFP(); - } - return b; -} -//--------------------------------------------------------------------------- -/// 4A -bool FP300KZ::GetStatusFP() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcGetStatusFP,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetStatusFP(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -bool FP300KZ::CancelFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcCancelFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CancelFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -///OpCode - 1..16 -///OpPwd - 4 - 6 -///TillNmb - 1..99999 -bool FP300KZ::OpenFiscalInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenFiscalInv; - msg+=IntToStdStr(OpCode)+","+OpPwd+","+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - //if(b) - //{ Password=OpPwd; // - //} - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenFiscalInv(OpCode="+IntToStdStr(OpCode)+",OpPwd=****,TillNmb="+IntToStdStr(TillNmb)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CloseFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcCloseFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenServiceInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcOpenServiceInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///TODO : ( ) /4 /. -bool FP300KZ::CloseServiceInv(int& count) -{ - count=0; - unsigned char msg[5] = {0x01,0x24,0x20,fcCloseServiceInv,0x05}; - std::string str; - bool b=SendPMessage(msg,sizeof(msg),str); - b=b && !Status->s[0][5]; // - - if(b) count=fromString(str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/**OpCode - 1..16 -* OpPwd - 4 - 6 -* TillNmb - / 1..99999/ -*/ -bool FP300KZ::OpenBackInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenBackInv; - msg+=IntToStdStr(OpCode)+','+OpPwd+','+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenBackInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDuplicateInv() -{ - unsigned char msg[6] = {0x01,0x25,0x20,fcPrintDuplicateInv,0x31,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDuplicateInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/** -Option - 1..4 -Name - ( name = '' ) -*/ -bool FP300KZ::SetAddTypesOfPayment(char Option, std::wstring& Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetAddTypesOfPayment; - switch(Option) - { - case 1: - msg+='I'; - break; - case 2: - msg+='J'; - break; - case 3: - msg+='K'; - break; - case 4: - msg+='L'; - break; - } - if(Text.length()!=0) - { - msg+=','; - msg.append(ws2s(Text),0,31); // 31 - } - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b && Text.length()!=0 && answer!="P") b=b && false; - if(b && Text.length()==0) Text=s2ws(answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetAddTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintZReport() -{ - bool b=PrintEJ(); // - if(b) b=b && EJ("E"); // - if(b) b=b && DailyFinancialReport('1'); // Z - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintXReport() -{ - return DailyFinancialReport('3'); -} -//--------------------------------------------------------------------------- -// ( ) -bool FP300KZ::PrintLine(std::wstring line) -{ - bool b=PrintFreeTextInFiscalInv(ws2s(line)); //TODO ru-ru.1251 - if(!b) b=PrintFreeTextInServiceInv(ws2s(line)); // - return b; - -// bool b=PrintFreeTextInFiscalInv(WStringToString(line, std::locale(""),'?')); //TODO ru-ru.1251 -// if(!b) b=PrintFreeTextInServiceInv(WStringToString(line, std::locale(""),'?')); // -// return b; -} -//--------------------------------------------------------------------------- -/// -///'0' - Z -///'1' - Z -///'2' - X -///'3' - X -bool FP300KZ::DailyFinancialReport(uint1 Option) -{ - //N - unsigned char msg[6] = {0x01,0x25,0x20,fcDailyFinancialReport,Option,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyFinancialReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Start - DDMMYY /6 / -///End - DDMMYY /6 / -bool FP300KZ::ReportOnTaxRates(std::string Start,std::string End) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportOnTaxRates; - msg+=Start+','+End; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(answer=="f") b=false; // . - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportOnTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::FullFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::ReduceFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::FullFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::ReduceFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::DailyReportByTypesOfPayment(std::string& Cash,std::string& Credit,std::string& Debit,std::string& Cheque,std::string& Pay1,std::string& Pay2,std::string& Pay3,std::string& Pay4,std::string& Closure,std::string& Receipt) -{ -// - unsigned char msg[5] = {0x01,0x24,0x20,fcDailyReportByTypesOfPayment,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Cash=CutBeforeFirst(answer,','); - Credit=CutBeforeFirst(answer,','); - Debit=CutBeforeFirst(answer,','); - Cheque=CutBeforeFirst(answer,','); - Pay1=CutBeforeFirst(answer,','); - Pay2=CutBeforeFirst(answer,','); - Pay3=CutBeforeFirst(answer,','); - Pay4=CutBeforeFirst(answer,','); - Closure=CutBeforeFirst(answer,','); - Receipt=CutBeforeFirst(answer,','); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyReportByTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///'S' - . -///'P' - . -bool FP300KZ::ReportByArticle(std::string Option) //#define fcReportByArticle 0x6F //(111) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportByArticle; msg+=Option; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportByArticle(Option="+Option+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OperatorReport() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcOperatorReport,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OperatorReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param cnt -bool FP300KZ::FeedPaper(int cnt) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFeedPaper; - msg+=IntToStdStr(cnt); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FeedPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenCashDrawer(int mSec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenCashDrawer; - if(mSec>0) msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenCashDrawer(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -//,[] -/// () -bool FP300KZ::SetDepartmentName(int dept,std::wstring line1,std::wstring line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDepartmentName; - msg+=IntToStdStr(dept); - msg+=','; - msg.append(ws2s(line1),0,36); // 36 - if(line2.length()>0) - { - msg+=(char)10; - msg.append(ws2s(line2),0,46); // 46 - } - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDepartmentName(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetDepartmentInfo(int dept,int &RecSales,float &RecSum,int &TotSales,float &TotSum,std::wstring &Line1,std::wstring &Line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDepartmentInfo; - msg+=IntToStdStr(dept); - msg+=(char)0x05; - - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - if(CutBeforeFirst(str,',')=="P") // - { - std::string nstr; - nstr=CutBeforeFirst(str,','); - RecSales=StdStrToInt(nstr); - RecSum=fromString(CutBeforeFirst(str,',')); // 2 - nstr=CutBeforeFirst(str,','); - TotSales=StdStrToInt(nstr); - TotSum=fromString(CutBeforeFirst(str,',')); // 2 - Line1=s2ws(CutBeforeFirst(str,(char)10)); - Line2=s2ws(str); - }else - { - RecSales=0; - RecSum=0; - TotSales=0; - TotSum=0; - Line1=L' '; - Line2=L' '; - } - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDepartmentInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CutPaper() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcCutPaper; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CutPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDiagnostic() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcPrintDiagnostic,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDiagnostic(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::SetManufacturersSerialNumber(std::string Serial) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetManufacturersSerialNumber; - msg+=Serial; - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - b=b && BeforeFirst(answer,',')=="P"; - // "KAZAKHSTAN" - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetManufacturersSerialNumber(Serial="+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -std::string FP300KZ::GetStatusDescription(BYTE StatusCode) -{ - if (StatusCode == 0x00) - { - return "OK"; - } - if (StatusCode == 0xFF) - { - return " !"; - } - BYTE code = (BYTE)StatusCode & (BYTE)0x04; - if (code > 0) - { - return " "; - } - code = (BYTE)StatusCode & (BYTE)0x01; - if (code > 0) - { - return " "; - } - return ""; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetRNNAndRNM(std::string &RNN,std::string &RNM) -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcGetRNNAndRNM,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - RNN=BeforeFirst(answer,','); - RNM=AfterFirst(answer,','); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetRNNAndRNM("+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SetRNNAndRNM(std::string RNN,std::string RNM) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetRNNAndRNM; - msg+=RNN+','+RNM; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetRNNAndRNM(RNN="+RNN+",RNM="+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode -///\param OldPwd -///\param NewPwd -///\return -bool FP300KZ::SetOperatorPassword(std::string OpCode,std::string OldPwd,std::string NewPwd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorPassword; - msg+=OpCode+','+OldPwd+','+NewPwd; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorPassword(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode . 1 16 . -///\param Pwd (4 8 ). -///\param OpName ( 30 ). -///\return -bool FP300KZ::SetOperatorName(std::string OpCode,std::string Pwd,std::string OpName) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorName; - msg+=OpCode+','+Pwd+','+OpName; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorName(OpCode="+OpCode+",OpName="+OpName+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM[:SS]" -bool FP300KZ::SetDateTime(std::string date, std::string time) //#define fcSetDateTime 0x3D //(61) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDateTime; - msg+=trim(date)+' '+trim(time); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDateTime(\"")+date+std::string("\", \"")+time+std::string("\"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM:SS" -bool FP300KZ::GetDateTime(unsigned short& De,unsigned short& Me,unsigned short& Ye,unsigned short& Ho,unsigned short& Mi,unsigned short& Se) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDateTime; msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - De=fromString(CutBeforeFirst(str,'-')); - Me=fromString(CutBeforeFirst(str,'-')); - Ye=fromString(CutBeforeFirst(str,' '));//+2000; - - Ho=fromString(CutBeforeFirst(str,':')); - Mi=fromString(CutBeforeFirst(str,':')); - Se=fromString(str); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDateTime(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// HEADER FOOTER -bool FP300KZ::PrintSetup(std::string Item, std::string Text, std::string& Answer) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintSetup; - msg+=Item+Text; - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),Answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintSetup(Item="+Item+",Text="+Text+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::PrintFreeTextInServiceInv(std::string Text) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInServiceInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintFreeTextInFiscalInv(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInFiscalInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///[][]<[Sign]Price>[*][,Perc|;Abs] -///L1 - , 36 -///L2 - , 36 -///dep - (1..10) -///TaxCd - (, , , , ). -///Price - ( 8 ). -///Qwan - ( 8 3- ). -///Abs - Perc -///Perc - ( ) -bool FP300KZ::RegisterSale(std::wstring L1,std::wstring L2,int dep, std::string TaxCd,double Price,double Qwan,bool Abs,double Perc) -{ - L1=replaceStrings(L1,L"\n",L" "); // - L2=replaceStrings(L2,L"\n",L" "); // - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSale; - msg.append(ws2s(L1),0,36); // 36 - if(L2.length()>0) - { - msg+=(char)0x0A; - msg.append(ws2s(L2),0,36); // 36 - } - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=FloatToStdStr(Price,m_Dots); // - msg+='*'+FloatToStdStr(Qwan,3); - if(Perc!=0) - if(Abs) msg+=';'+FloatToStdStr(Perc,m_Dots); // - else msg+=','+FloatToStdStr(Perc,2); // - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSale(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// [Line]]<[Sign]Price>[*Qwan][,Perc|;Abs] -///Line - 20 . -///TaxCd - (, , , , ). -///Price - ( 8 ). -bool FP300KZ::RegisterSaleDisp(std::string L1,int dep,std::string TaxCd,std::string Price) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSaleDisp; - - msg+=L1; - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=Price; - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSaleDisp(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Print - 1 . -//Display - 1 . -//Abs - false Perc -//Perc - (+-99.9) -//Sum - / 10 / -bool FP300KZ::Subtotal(std::string Print,std::string Display, bool Abs, double Perc,double& Sum) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSubtotal; - - msg+=Print+Display; - if(Perc!=0) // - { - if(Abs) msg+=';'+FloatToStdStr(Perc,2); - else msg+=','+FloatToStdStr(Perc,2); - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - Sum=fromString(CutBeforeFirst(str,','))/M(); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("Subtotal(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -//Line1 - 36 -//Line2 - 36 -//PaidMode - : 'P' ; 'N' ; 'C' ; 'D' 'I' - 1 'J' - 2 'K' - 3 'L' - 4 -// +, Amount ( ). -//Amount - / 10 /. -//Change - -bool FP300KZ::Total(std::string Line1,std::string Line2,std::string PaidMode,double Amount, double& Change) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcTotal; - msg+=Line1; - msg+=(char)0x0A; - msg+=Line2; - msg+=(char)0x09; // - msg+=PaidMode; // - if(Amount>0) msg+='+'; - msg+=FloatToStdStr(Amount,m_Dots); - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - if(str[0]=='F') b=false; - std::string s=""; - s.append(str,1,str.length()-1); - Change=fromString(s)/M(); - if(str[0]=='D') Change=-fabs(Change); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Total(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Amount ( 10 ). . -//strH - strF - -//ExitCode P . , . F : . . -//CashSum . . -//ServIn . -//ServOut . -bool FP300KZ::ParishOrConsumption(std::string Oper,std::string Password,double Amount,std::wstring strH,std::wstring strF,std::string& ExitCode,double& CashSum,double& ServIn,double& ServOut) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcParishOrConsumption; - - if(PrinterName.find("FP600")!=std::string::npos) - { - if(Amount!=0) - { msg+=Oper+","; // - msg+=Password+","; // - msg+=FloatToStdStr(Amount,2); - } - }else - { - if(Amount!=0) - { - msg+=FloatToStdStr(Amount,2); - while(strH.length()>0) - { - std::wstring str = CutBeforeWFirst(strH,L'\n'); - msg+='\t'; msg+='h'; msg.append(ws2s(str),0,48); - } - while(strF.length()>0) - { - std::wstring str = CutBeforeWFirst(strF,L'\n'); - msg+='\t'; msg+='f'; msg.append(ws2s(str),0,48); - } - } - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - ExitCode=CutBeforeFirst(str,','); - CashSum=fromString(CutBeforeFirst(str,','))/M(); - ServIn=fromString(CutBeforeFirst(str,','))/M(); - ServOut=fromString(str)/M(); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ParishOrConsumption(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// - -///Type - 1 5 (1-EAN8, 2-EAN13, 3-Code 128, 4-ITF, 5-ITF) -bool FP300KZ::PrintBarCode(int Type,std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintBarCode; - msg+=IntToStdStr(Type); - msg+=','; - msg+=Data; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintBarCode(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Hz -///\param mSec -bool FP300KZ::Beep(int Hz,int mSec) -{ - if(Hz==0) Hz=294; - if(mSec==0) mSec=1000/8; - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcBeep; - msg+=IntToStdStr(Hz); - msg+=','; - msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Beep(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\Logical -bool FP300KZ::FreeFieldsByFiscalMemory(long& Logical) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFreeFieldsByFiscalMemory; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - {// Logical=fromString(CutBeforeFirst(str,',')); - Logical=fromString(CutBeforeFirst(str,',')); // - } - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FreeFieldsByFiscalMemory(Logical); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// update=false - , -, . -. -///\param update false , - -bool FP300KZ::SwitchPrg(bool update) -{ - std::string msg,key=""; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSwitchPrg; - if(update) - { - if(Sw8) key+='1'; else key+='0'; // - if(Sw7) key+='1'; else key+='0'; // - if(Sw6) key+='1'; else key+='0'; // - if(Sw5) key+='1'; else key+='0'; // - if(Sw4) key+='1'; else key+='0'; // Windows 1251 - if(Sw3) key+='1'; else key+='0'; // - if(Sw2) key+='1'; else key+='0'; // - if(Sw1) key+='1'; else key+='0'; // (: ) - msg+=key; - } - msg+=(char)0x05; - std::string str=""; - - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - saveLog(PrinterName+"_"+PrinterNumber,std::string("SwitchPrg("+key+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getSmallEJ(bool& val) -{ //val=Sw1; - val=Sw2; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setSmallEJ(bool val) -{ //Sw1=val; - Sw2=val; - return SwitchPrg(true); // -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getDisplayTransparent(bool& val) -{ val=Sw3; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setDisplayTransparent(bool val) -{ Sw3=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::getDisplayWin1251(bool& val) -{ - val=Sw4; - return true;// true . -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::setDisplayWin1251(bool val) -{ Sw4=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -// "bps" -int FP300KZ::getComSpeed() -{ - int speed=0; - if(!Sw6 && !Sw7 && !Sw8) speed=1200; - if(!Sw6 && !Sw7 && Sw8) speed=2400; - if(!Sw6 && Sw7 && !Sw8) speed=4800; - if(!Sw6 && Sw7 && Sw8) speed=9600; - if( Sw6 && !Sw7 && !Sw8) speed=19200; - if( Sw6 && !Sw7 && Sw8) speed=38400; - if( Sw6 && Sw7 && !Sw8) speed=57600; - if( Sw6 && Sw7 && Sw8) speed=115200; - return speed; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setComSpeed(int Speed) -{ - bool b=false; - if(Speed==1200) {Sw6=0; Sw7=0; Sw8=0; b=true;} - if(Speed==2400) {Sw6=0; Sw7=0; Sw8=1; b=true;} - if(Speed==4800) {Sw6=0; Sw7=1; Sw8=0; b=true;} - if(Speed==9600) {Sw6=0; Sw7=1; Sw8=1; b=true;} - if(Speed==19200) {Sw6=1; Sw7=0; Sw8=0; b=true;} - if(Speed==38400) {Sw6=1; Sw7=0; Sw8=1; b=true;} - if(Speed==57600) {Sw6=1; Sw7=1; Sw8=0; b=true;} - if(Speed==115200) {Sw6=1; Sw7=1; Sw8=1; b=true;} - - if(b) b=SwitchPrg(true); // - return b; -} -//--------------------------------------------------------------------------- -/// . -/// Sw3 OFF, . -bool FP300KZ::DisplayClear() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcDisplayClear,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DisplayClear(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Text - 20 -bool FP300KZ::DispalyLower(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyLower; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyLower(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Text - 20 -bool FP300KZ::DispalyUpper(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyUpper; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyUpper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// ( 40 ), . ASCII 20h ( ) 40h 10h. -bool FP300KZ::DispalyFree(std::string Text) -{ -//Text=TransformCode(Text); - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyFree; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyFree(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param Decimals 0,1 2 -///\param bA,bB,bC,bD -///\param TaxA -///\param TaxB -///\param TaxC -///\param TaxD -bool FP300KZ::GetTaxRates(std::string &Decimals,std::string &Rounding,bool& bA,bool& bB,bool& bC,bool& bD, std::string &TaxA, std::string &TaxB, std::string &TaxC, std::string &TaxD) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - Decimals=CutBeforeFirst(str,','); - m_Dots=fromString(Decimals); // - if(PrinterName.find("FP600")!=std::string::npos) - { - Rounding=CutBeforeFirst(str,','); // - } - bA=str[0]=='1'; bB=str[1]=='1'; bC=str[2]=='1'; bD=str[3]=='1'; - CutBeforeFirst(str,','); - TaxA=CutBeforeFirst(str,','); - TaxB=CutBeforeFirst(str,','); - TaxC=CutBeforeFirst(str,','); - TaxD=str; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Decimal 0,1 2 -bool FP300KZ::SetTaxRates(int Decimal,std::string Rounding,std::string TaxA, std::string TaxB, std::string TaxC, std::string TaxD) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - str+=IntToStdStr(Decimal)+","; //0,1,2 - if(PrinterName.find("FP600")!=std::string::npos) // - { - str+=Rounding+','; - } - if(TaxA!="") str+='1'; else str+='0'; // - if(TaxB!="") str+='1'; else str+='0'; // - if(TaxC!="") str+='1'; else str+='0'; // - if(TaxD!="") str+='1'; else str+='0'; // - str+=","; - str+=TaxA+','; - str+=TaxB+','; - str+=TaxC+','; - str+=TaxD; - msg+=str; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetTaxRates("+answer+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Open -///\param Items . -///\param Amount -///\param Tender . -bool FP300KZ::FiscalTransactionsStatus(bool& Open,int& Items,double& Amount,double& Tender) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalTransactionsStatus; - msg+='T'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - Open=CutBeforeFirst(answer,',')=="1"; - Items=fromString(CutBeforeFirst(answer,',')); - - Amount=fromString(CutBeforeFirst(answer,','))/M(); - Tender=fromString(answer)/M(); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FiscalTransactionsStatus(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SessionSec(int& sec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)93; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - sec=fromString(answer); - if(m_SaveLog) - saveLog(PrinterName+"_"+PrinterNumber,std::string("SessionSec(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::DiagnosticInfo() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcDiagnosticInfo,0x05}; - std::string answer=""; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - //,,, - PrinterName=CutBeforeFirst(answer,','); - PrinterVersion=CutBeforeFirst(answer,','); // - CutBeforeFirst(answer,','); // - std::string Sw18 = CutBeforeFirst(answer,',');// Sw1 Sw8. 4 0 1 - Sw8=Sw18[0]=='1'; - Sw7=Sw18[1]=='1'; - Sw6=Sw18[2]=='1'; - Sw5=Sw18[3]=='1'; - Sw4=Sw18[4]=='1'; - Sw3=Sw18[5]=='1'; - Sw2=Sw18[6]=='1'; - Sw1=Sw18[7]=='1'; - PrinterNumber=answer; // - 12 . - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DiagnosticInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::EJ(std::string Cmd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcEJ; - msg+=Cmd; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("EJ("+Cmd+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// ( ) . , -. Data . -bool FP300KZ::PrintEJ() -{ - return EJ("PL"); -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearEJ() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearEJ; - msg+='F'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - { - if(answer!="P") b=false; //'P' () 'F' () - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearEJ(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearRAM() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearRAM; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearRAM(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::getPrintLogo(bool& Enable,int& Height) -{ - std::string str; - if(PrintSetup("I","L",str)) - { - Enable = CutBeforeFirst(str,',')=="1"; - Height =fromString(str); - return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::setPrintLogo(bool Enable,int Height) -{ - std::string str=""; - if(Enable) str+="1,"; else str+="0,"; - str+=IntToStdStr(Height); - - std::string Answer=""; - return PrintSetup("L",str,Answer); -} -//--------------------------------------------------------------------------- -// 576x96 -//RowNum - -//Data - -bool FP300KZ::PrgGraphicLogo(int RowNum, std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - - msg+=IntToStdStr(RowNum); - msg+=','; - msg+=Data; - - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrgGraphicLogo("+IntToStdStr(RowNum)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param RowNum - -///\param Data - "01010101110" -bool FP300KZ::getGraphicLogo(int RowNum, std::string &Data) -{ - std::string msg,res; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - msg+='R'+IntToStdStr(RowNum); - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),res); - if(b) - { - Data=""; - for(uint4 i=0;i, -bool FP300KZ::Fiscalization(std::string Password,std::string Serial,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+Serial; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; // - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Fiscalization("+Password+","+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//,,, -bool FP300KZ::reFiscalization(std::string OldPwd,std::string Password,std::string RNN,std::string RNM,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+OldPwd+","+RNN+","+RNM; // ( ) - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("reFiscalization("+OldPwd+","+Password+","+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::AmountOfSavingsPerDay(double& TaxA,double& TaxB,double& TaxC,double& TaxD,double& TaxE) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcAmountOfSavingsPerDay; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - TaxA=fromString(CutBeforeFirst(answer,','))/M();//TaxA - TaxB=fromString(CutBeforeFirst(answer,','))/M();//TaxB - TaxC=fromString(CutBeforeFirst(answer,','))/M();//TaxC - TaxD=fromString(CutBeforeFirst(answer,','))/M();//TaxD - TaxE=fromString(CutBeforeFirst(answer,','))/M();//TaxE - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("AmountOfSavingsPerDay(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::DepartmentReport() -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDepartmentReport; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - saveLog(PrinterName+"_"+PrinterNumber,std::string("DepartmentReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::GetLastPrintedDocNumber(int& num) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetLastPrintedDocNumber; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - num=fromString(answer); - }else num=0; - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Clos - 4 . -///\param Rec - 4 . -///\param Total - 12 . -///\param VAT - 12 . -///\param Date - 6 /DDMMYY/. -bool FP300KZ::LatestFiscalRecord(std::string& Clos,int& Rec, float& Total,float& VAT,std::string& Date) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcLatestFiscalRecord; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Clos=CutBeforeFirst(answer,','); - if(PrinterName.find("FP600")==std::string::npos) - Rec=fromString(CutBeforeFirst(answer,',')); - else - Rec=-1; - Total=fromString(CutBeforeFirst(answer,',')); - VAT=fromString(CutBeforeFirst(answer,',')); - Date=answer; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~24~ b/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~24~ deleted file mode 100644 index 102c1a3..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~24~ +++ /dev/null @@ -1,2182 +0,0 @@ -//! FP300KZ -/*! - FP300KZ -\author . -\file FP300KZ.cpp -*/ -//--------------------------------------------------------------------------- -#pragma hdrstop - -#include "stdafx.h" - - -#include "FP300KZ.h" -#include -#include -#include - -#include -#include -#include -//#include -#include -#include - -#include //mkdir - -//#include -//#include -//#include - -#if defined( __WXMSW__ ) // - #include -#endif // __WXMSW__ -//--------------------------------------------------------------------------- -//#pragma package(smart_init) -//--------------------------------------------------------------------------- -// -//typedef unsigned long DWORD; -//--------------------------------------------------------------------------- -// -bool saveLog(std::string FileName, std::string Text) -{ - try - { - for(uint4 i=0;is[0][0]) return 4; //0x04 -/*5 5 -6 6 -7 7 -8 8 -9 9 -0A 10 BCD -0B 11 -11 17 -12 18 -13 19 -14 20 -15 21 -16 22 -17 23 -18 24 -19 25 -1A 26 -1B 27 -1C 28 -1D 29 -1F 31 -20 32 -21 33 -22 34 -23 35 -24 36 -25 37 -33 51 -35 53 -36 54 -37 55 -38 56 + -39 57 -3A 58 -3C 60 : -3E 62 -3F 63 -40 64 -41 65 -42 66 2 -43 67 3 -44 68 4 -45 69 C -46 70 -47 71 -48 72 -4A 74 - -4B 75 -4C 76 -4D 77 -4E 78 24 -*/ - //if(CommandName==fcOpenFiscalInv && Password=="") return 79; //4F 79 - -/*50 80 -51 81 -52 82 2 -53 83 3 -54 84 4 -56 86 -57 87 : -58 88 -59 89 -5B 91 -5C 92 24 -5D 93 -5E 94 -5F 95 -60 96 -61 97 -62 98 -63 99 -64 100 + -65 101 -66 102 */ - if(!cPort->bOpen) return 103; //0x67 + -/*68 104 -69 105 -6A 106 I2C -6B 107 -6C 108 -6D 109 -6E 110 -6F 111 -70 112 -71 113 + -72 114 -73 115 -74 116 -75 117 + -76 118 : + -77 119 : + -78 120 -79 121 -7A 122 -7B 123 -7C 124 -7D 125 -7E 126 -7F 127 -80 128 + -81 129 + -82 130 + -83 131 + -84 132 -85 133 -86 134 -87 135 -88 136 -89 137 -8A 138 -8B 139 -8C 140 -8D 141 -8E 142 -8F 143 -90 144 , -91 145 -92 146 -93 147 -94 148 -A0 160 + -A1 161 + -A2 162 : -A3 163 -A4 164 -A5 165 -A6 166 -A7 167 -A8 168 : -A9 169 : -AA 170 ( ) -B0 176 : -B1 177 : -B2 178 : */ - if(Status->s[0][2]) return 192; //0xC0 ( ) -/*C1 193 : -C2 194 -C3 195 -C4 196 -5 197 -C6 198 -C7 199 */ - - // - if(Status->s[0][4]) return 500; // . - if(Status->s[0][1]) return 501; // . - if(Status->s[1][4]) return 502; // . - if(Status->s[1][3]) return 503; // ( RESET). - if(Status->s[1][2]) return 504; // . - if(Status->s[1][1]) - { - if(CommandName==fcOpenFiscalInv && Status->s[2][3]) return 509; else // . - if(CommandName==fcCloseFiscalInv) - { - bool Open; int Items; double Amount=0,Tender=0; - FiscalTransactionsStatus(Open,Items,Amount,Tender); - CommandName=fcCloseFiscalInv; // - Status->s[1][1]=true; // - if(Open && Amount-(Tender+0.002)>0) return 511; //" !" - }else - if(CommandName==fcOpenFiscalInv) - { - // - m_SaveLog=false; - int sec; - if(SessionSec(sec) && sec>24*60*60) - { - Status->s[1][1]=true; - CommandName=fcOpenFiscalInv; // - return 78; - } - m_SaveLog=true; - } - return 505; // . - } - if(Status->s[4][0]) return 506; // . - if(Status->s[4][4]) return 507; // . - if(Status->s[2][0]) return 508; // . - //509 " ." - if(Status->s[1][5]) return 510; // ! - //511 " !" - //512 - //513 . - //514 () (). - //515 . - //516 . - //517 Z-. Z-. - //518 . - //519 . - //520 " ". - - - return m_ErrorCode; -} -//--------------------------------------------------------------------------- -FP300KZ::FP300KZ() -{ - cPort=new ComPort(); - Status=new MyStatus(); - CheckCount=0; - for(int i=0;ibOpen) { m_ErrorCode=103; return false; } - - CommandName=msg[3]; // - for(int i=0;ibOpen) - { - for(int i=0;i<5;i++) // 5 ... - { - // - msg[1]=0x20+size-1; // - msg[2]=FrameSeqNumber; - unsigned int crc=MakeCRC(msg,1,size); - cPort->Write(msg,size); // - cPort->Write(&crc,4); // - cPort->WriteChar(0x03); // - - // - bool isOk=true; - int j=0; - while(j<9) //9*60=540 500ms - { - uint1 start=0; - unsigned long BytesRead=cPort->Read(&start,sizeof(start)); // ( 60 ms 500 ms) - if(BytesRead==0) // - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - m_ErrorCode=103; // - break; - }else - if(start==0x15) //NACK - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - break; - }else - if(start==0x16) //SYN 60ms - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - j=0; // ( ) - }else - if(start==0x01) // - { - ReadAr[0]=start; // CRC - uint1 size=0; - cPort->Read(&size,1); // - ReadAr[1]=size; - size=ReadAr[1]-0x20 + 6; // (+5 1 CRC 4 1 ) - - BytesRead=2; // - for(int j=0;j<100;j++) - { - BytesRead+=cPort->Read(&ReadAr[BytesRead],size-BytesRead); - if(BytesRead>=size) - break; - } - - // CRC - unsigned int crc0=MakeCRC(ReadAr,1,size-5); - unsigned int crc1=*((unsigned int*)&ReadAr[size-5]); - if(crc0!=crc1) isOk=false; // - else - { - Status->SetStatus(&ReadAr[size-12]); // - answer.assign((char*)&ReadAr[4],size-17); // - result=true; - } - if(result) break; - } - j++; - } - if(!isOk) continue; // - break; // - } - } - - if(!result) m_ErrorCode=5; - return result; -} -//--------------------------------------------------------------------------- -bool FP300KZ::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(0)) - return false; - }else return false; - return true; -} -//--------------------------------------------------------------------------- -void FP300KZ::LoadSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - cPort->port=ini->ReadString("Printer","Port",""); - cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0); - CheckCount=ini->ReadInteger("Printer","CheckCount",0); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -void FP300KZ::SaveSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - 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",CheckCount); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -bool FP300KZ::Print() -{ - return false; -} -//--------------------------------------------------------------------------- -void FP300KZ::NewLine() -{ - -} -//--------------------------------------------------------------------------- -/*public byte[] ReturnBCC(byte[] bytePacketData) - { - // (0000H-FFFFH) - // : 4 - // : 30H - 3FH - // <01> <05> . - // 30H. - // 1AE3H 31H,3AH,3EH,33H. - - // IN HEX - // 01 25 50 4C 54 05 30 - - // In decimal - // 1 37 80 76 84 5 48 - - Int64 triset_HEX = 0x30; - - byte[] bRes = new byte[4]; - int i = 48; - int iRes = 0; - // int i = 0; - int iCountB = 0; - string hexval1 = String.Empty; - string hexval2 = String.Empty; - StringBuilder sb = new StringBuilder(); - foreach (byte n in bytePacketData) - { - if (n != (byte)01) - { - if (iCountB == 0) - { - sb.Append(n.ToString("X2")); - string hexString = sb.ToString(); - triset_HEX = triset_HEX + Convert.ToInt64(hexString, 16); - } - iCountB++; - if (iCountB > 1) - iCountB = 0; - } - if (n == (byte)05) - break; - } - return this.ConvertHexToByteArr(Convert.ToString( triset_HEX )); - } -*/ -//--------------------------------------------------------------------------- -/// CRC -//BufStart - -//BufEnd - ( ) -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufEnd) -{ - unsigned int cs=0; - for(unsigned int i=BufStart;i> 0x0C) & 0x0F) + 0x30; - mas[1]=((cs >> 0x08) & 0x0F) + 0x30; - mas[2]=((cs >> 0x04) & 0x0F) + 0x30; - mas[3]=((cs >> 0x00) & 0x0F) + 0x30; - return result; -} -//--------------------------------------------------------------------------- -// PrinterName PrinterVersion PrinterNumber PrinterDecimal -// ... -MyError FP300KZ::PrinterInit() -{ - MyError result; - result.ErrorCode = DiagnosticInfo(); - if(b) - { - bool bA,bB,bC,bD; - std::string Decimal,r,TaxA,TaxB,TaxC,TaxD; - b=b && GetTaxRates(Decimal,r,bA,bB,bC,bD,TaxA,TaxB,TaxC,TaxD); -// if(b) b=b && fp->GetStatusFP(); - } - return result; -} -//--------------------------------------------------------------------------- -/// 4A -bool FP300KZ::GetStatusFP() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcGetStatusFP,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetStatusFP(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -bool FP300KZ::CancelFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcCancelFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CancelFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -///OpCode - 1..16 -///OpPwd - 4 - 6 -///TillNmb - 1..99999 -bool FP300KZ::OpenFiscalInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenFiscalInv; - msg+=IntToStdStr(OpCode)+","+OpPwd+","+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - //if(b) - //{ Password=OpPwd; // - //} - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenFiscalInv(OpCode="+IntToStdStr(OpCode)+",OpPwd=****,TillNmb="+IntToStdStr(TillNmb)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CloseFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcCloseFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenServiceInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcOpenServiceInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///TODO : ( ) /4 /. -bool FP300KZ::CloseServiceInv(int& count) -{ - count=0; - unsigned char msg[5] = {0x01,0x24,0x20,fcCloseServiceInv,0x05}; - std::string str; - bool b=SendPMessage(msg,sizeof(msg),str); - b=b && !Status->s[0][5]; // - - if(b) count=fromString(str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/**OpCode - 1..16 -* OpPwd - 4 - 6 -* TillNmb - / 1..99999/ -*/ -bool FP300KZ::OpenBackInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenBackInv; - msg+=IntToStdStr(OpCode)+','+OpPwd+','+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenBackInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDuplicateInv() -{ - unsigned char msg[6] = {0x01,0x25,0x20,fcPrintDuplicateInv,0x31,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDuplicateInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/** -Option - 1..4 -Name - ( name = '' ) -*/ -bool FP300KZ::SetAddTypesOfPayment(char Option, std::wstring& Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetAddTypesOfPayment; - switch(Option) - { - case 1: - msg+='I'; - break; - case 2: - msg+='J'; - break; - case 3: - msg+='K'; - break; - case 4: - msg+='L'; - break; - } - if(Text.length()!=0) - { - msg+=','; - msg.append(ws2s(Text),0,31); // 31 - } - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b && Text.length()!=0 && answer!="P") b=b && false; - if(b && Text.length()==0) Text=s2ws(answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetAddTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintZReport() -{ - bool b=PrintEJ(); // - if(b) b=b && EJ("E"); // - if(b) b=b && DailyFinancialReport('1'); // Z - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintXReport() -{ - return DailyFinancialReport('3'); -} -//--------------------------------------------------------------------------- -// ( ) -bool FP300KZ::PrintLine(std::wstring line) -{ - bool b=PrintFreeTextInFiscalInv(ws2s(line)); //TODO ru-ru.1251 - if(!b) b=PrintFreeTextInServiceInv(ws2s(line)); // - return b; - -// bool b=PrintFreeTextInFiscalInv(WStringToString(line, std::locale(""),'?')); //TODO ru-ru.1251 -// if(!b) b=PrintFreeTextInServiceInv(WStringToString(line, std::locale(""),'?')); // -// return b; -} -//--------------------------------------------------------------------------- -/// -///'0' - Z -///'1' - Z -///'2' - X -///'3' - X -bool FP300KZ::DailyFinancialReport(uint1 Option) -{ - //N - unsigned char msg[6] = {0x01,0x25,0x20,fcDailyFinancialReport,Option,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyFinancialReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Start - DDMMYY /6 / -///End - DDMMYY /6 / -bool FP300KZ::ReportOnTaxRates(std::string Start,std::string End) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportOnTaxRates; - msg+=Start+','+End; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(answer=="f") b=false; // . - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportOnTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::FullFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::ReduceFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::FullFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::ReduceFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::DailyReportByTypesOfPayment(std::string& Cash,std::string& Credit,std::string& Debit,std::string& Cheque,std::string& Pay1,std::string& Pay2,std::string& Pay3,std::string& Pay4,std::string& Closure,std::string& Receipt) -{ -// - unsigned char msg[5] = {0x01,0x24,0x20,fcDailyReportByTypesOfPayment,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Cash=CutBeforeFirst(answer,','); - Credit=CutBeforeFirst(answer,','); - Debit=CutBeforeFirst(answer,','); - Cheque=CutBeforeFirst(answer,','); - Pay1=CutBeforeFirst(answer,','); - Pay2=CutBeforeFirst(answer,','); - Pay3=CutBeforeFirst(answer,','); - Pay4=CutBeforeFirst(answer,','); - Closure=CutBeforeFirst(answer,','); - Receipt=CutBeforeFirst(answer,','); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyReportByTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///'S' - . -///'P' - . -bool FP300KZ::ReportByArticle(std::string Option) //#define fcReportByArticle 0x6F //(111) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportByArticle; msg+=Option; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportByArticle(Option="+Option+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OperatorReport() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcOperatorReport,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OperatorReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param cnt -bool FP300KZ::FeedPaper(int cnt) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFeedPaper; - msg+=IntToStdStr(cnt); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FeedPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenCashDrawer(int mSec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenCashDrawer; - if(mSec>0) msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenCashDrawer(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -//,[] -/// () -bool FP300KZ::SetDepartmentName(int dept,std::wstring line1,std::wstring line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDepartmentName; - msg+=IntToStdStr(dept); - msg+=','; - msg.append(ws2s(line1),0,36); // 36 - if(line2.length()>0) - { - msg+=(char)10; - msg.append(ws2s(line2),0,46); // 46 - } - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDepartmentName(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetDepartmentInfo(int dept,int &RecSales,float &RecSum,int &TotSales,float &TotSum,std::wstring &Line1,std::wstring &Line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDepartmentInfo; - msg+=IntToStdStr(dept); - msg+=(char)0x05; - - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - if(CutBeforeFirst(str,',')=="P") // - { - std::string nstr; - nstr=CutBeforeFirst(str,','); - RecSales=StdStrToInt(nstr); - RecSum=fromString(CutBeforeFirst(str,',')); // 2 - nstr=CutBeforeFirst(str,','); - TotSales=StdStrToInt(nstr); - TotSum=fromString(CutBeforeFirst(str,',')); // 2 - Line1=s2ws(CutBeforeFirst(str,(char)10)); - Line2=s2ws(str); - }else - { - RecSales=0; - RecSum=0; - TotSales=0; - TotSum=0; - Line1=L' '; - Line2=L' '; - } - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDepartmentInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CutPaper() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcCutPaper; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CutPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDiagnostic() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcPrintDiagnostic,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDiagnostic(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::SetManufacturersSerialNumber(std::string Serial) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetManufacturersSerialNumber; - msg+=Serial; - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - b=b && BeforeFirst(answer,',')=="P"; - // "KAZAKHSTAN" - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetManufacturersSerialNumber(Serial="+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -std::string FP300KZ::GetStatusDescription(BYTE StatusCode) -{ - if (StatusCode == 0x00) - { - return "OK"; - } - if (StatusCode == 0xFF) - { - return " !"; - } - BYTE code = (BYTE)StatusCode & (BYTE)0x04; - if (code > 0) - { - return " "; - } - code = (BYTE)StatusCode & (BYTE)0x01; - if (code > 0) - { - return " "; - } - return ""; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetRNNAndRNM(std::string &RNN,std::string &RNM) -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcGetRNNAndRNM,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - RNN=BeforeFirst(answer,','); - RNM=AfterFirst(answer,','); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetRNNAndRNM("+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SetRNNAndRNM(std::string RNN,std::string RNM) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetRNNAndRNM; - msg+=RNN+','+RNM; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetRNNAndRNM(RNN="+RNN+",RNM="+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode -///\param OldPwd -///\param NewPwd -///\return -bool FP300KZ::SetOperatorPassword(std::string OpCode,std::string OldPwd,std::string NewPwd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorPassword; - msg+=OpCode+','+OldPwd+','+NewPwd; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorPassword(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode . 1 16 . -///\param Pwd (4 8 ). -///\param OpName ( 30 ). -///\return -bool FP300KZ::SetOperatorName(std::string OpCode,std::string Pwd,std::string OpName) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorName; - msg+=OpCode+','+Pwd+','+OpName; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorName(OpCode="+OpCode+",OpName="+OpName+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM[:SS]" -bool FP300KZ::SetDateTime(std::string date, std::string time) //#define fcSetDateTime 0x3D //(61) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDateTime; - msg+=trim(date)+' '+trim(time); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDateTime(\"")+date+std::string("\", \"")+time+std::string("\"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM:SS" -bool FP300KZ::GetDateTime(unsigned short& De,unsigned short& Me,unsigned short& Ye,unsigned short& Ho,unsigned short& Mi,unsigned short& Se) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDateTime; msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - De=fromString(CutBeforeFirst(str,'-')); - Me=fromString(CutBeforeFirst(str,'-')); - Ye=fromString(CutBeforeFirst(str,' '));//+2000; - - Ho=fromString(CutBeforeFirst(str,':')); - Mi=fromString(CutBeforeFirst(str,':')); - Se=fromString(str); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDateTime(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// HEADER FOOTER -bool FP300KZ::PrintSetup(std::string Item, std::string Text, std::string& Answer) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintSetup; - msg+=Item+Text; - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),Answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintSetup(Item="+Item+",Text="+Text+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::PrintFreeTextInServiceInv(std::string Text) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInServiceInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintFreeTextInFiscalInv(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInFiscalInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///[][]<[Sign]Price>[*][,Perc|;Abs] -///L1 - , 36 -///L2 - , 36 -///dep - (1..10) -///TaxCd - (, , , , ). -///Price - ( 8 ). -///Qwan - ( 8 3- ). -///Abs - Perc -///Perc - ( ) -bool FP300KZ::RegisterSale(std::wstring L1,std::wstring L2,int dep, std::string TaxCd,double Price,double Qwan,bool Abs,double Perc) -{ - L1=replaceStrings(L1,L"\n",L" "); // - L2=replaceStrings(L2,L"\n",L" "); // - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSale; - msg.append(ws2s(L1),0,36); // 36 - if(L2.length()>0) - { - msg+=(char)0x0A; - msg.append(ws2s(L2),0,36); // 36 - } - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=FloatToStdStr(Price,m_Dots); // - msg+='*'+FloatToStdStr(Qwan,3); - if(Perc!=0) - if(Abs) msg+=';'+FloatToStdStr(Perc,m_Dots); // - else msg+=','+FloatToStdStr(Perc,2); // - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSale(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// [Line]]<[Sign]Price>[*Qwan][,Perc|;Abs] -///Line - 20 . -///TaxCd - (, , , , ). -///Price - ( 8 ). -bool FP300KZ::RegisterSaleDisp(std::string L1,int dep,std::string TaxCd,std::string Price) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSaleDisp; - - msg+=L1; - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=Price; - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSaleDisp(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Print - 1 . -//Display - 1 . -//Abs - false Perc -//Perc - (+-99.9) -//Sum - / 10 / -bool FP300KZ::Subtotal(std::string Print,std::string Display, bool Abs, double Perc,double& Sum) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSubtotal; - - msg+=Print+Display; - if(Perc!=0) // - { - if(Abs) msg+=';'+FloatToStdStr(Perc,2); - else msg+=','+FloatToStdStr(Perc,2); - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - Sum=fromString(CutBeforeFirst(str,','))/M(); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("Subtotal(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -//Line1 - 36 -//Line2 - 36 -//PaidMode - : 'P' ; 'N' ; 'C' ; 'D' 'I' - 1 'J' - 2 'K' - 3 'L' - 4 -// +, Amount ( ). -//Amount - / 10 /. -//Change - -bool FP300KZ::Total(std::string Line1,std::string Line2,std::string PaidMode,double Amount, double& Change) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcTotal; - msg+=Line1; - msg+=(char)0x0A; - msg+=Line2; - msg+=(char)0x09; // - msg+=PaidMode; // - if(Amount>0) msg+='+'; - msg+=FloatToStdStr(Amount,m_Dots); - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - if(str[0]=='F') b=false; - std::string s=""; - s.append(str,1,str.length()-1); - Change=fromString(s)/M(); - if(str[0]=='D') Change=-fabs(Change); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Total(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Amount ( 10 ). . -//strH - strF - -//ExitCode P . , . F : . . -//CashSum . . -//ServIn . -//ServOut . -bool FP300KZ::ParishOrConsumption(std::string Oper,std::string Password,double Amount,std::wstring strH,std::wstring strF,std::string& ExitCode,double& CashSum,double& ServIn,double& ServOut) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcParishOrConsumption; - - if(PrinterName.find("FP600")!=std::string::npos) - { - if(Amount!=0) - { msg+=Oper+","; // - msg+=Password+","; // - msg+=FloatToStdStr(Amount,2); - } - }else - { - if(Amount!=0) - { - msg+=FloatToStdStr(Amount,2); - while(strH.length()>0) - { - std::wstring str = CutBeforeWFirst(strH,L'\n'); - msg+='\t'; msg+='h'; msg.append(ws2s(str),0,48); - } - while(strF.length()>0) - { - std::wstring str = CutBeforeWFirst(strF,L'\n'); - msg+='\t'; msg+='f'; msg.append(ws2s(str),0,48); - } - } - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - ExitCode=CutBeforeFirst(str,','); - CashSum=fromString(CutBeforeFirst(str,','))/M(); - ServIn=fromString(CutBeforeFirst(str,','))/M(); - ServOut=fromString(str)/M(); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ParishOrConsumption(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// - -///Type - 1 5 (1-EAN8, 2-EAN13, 3-Code 128, 4-ITF, 5-ITF) -bool FP300KZ::PrintBarCode(int Type,std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintBarCode; - msg+=IntToStdStr(Type); - msg+=','; - msg+=Data; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintBarCode(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Hz -///\param mSec -bool FP300KZ::Beep(int Hz,int mSec) -{ - if(Hz==0) Hz=294; - if(mSec==0) mSec=1000/8; - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcBeep; - msg+=IntToStdStr(Hz); - msg+=','; - msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Beep(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\Logical -bool FP300KZ::FreeFieldsByFiscalMemory(long& Logical) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFreeFieldsByFiscalMemory; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - {// Logical=fromString(CutBeforeFirst(str,',')); - Logical=fromString(CutBeforeFirst(str,',')); // - } - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FreeFieldsByFiscalMemory(Logical); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// update=false - , -, . -. -///\param update false , - -bool FP300KZ::SwitchPrg(bool update) -{ - std::string msg,key=""; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSwitchPrg; - if(update) - { - if(Sw8) key+='1'; else key+='0'; // - if(Sw7) key+='1'; else key+='0'; // - if(Sw6) key+='1'; else key+='0'; // - if(Sw5) key+='1'; else key+='0'; // - if(Sw4) key+='1'; else key+='0'; // Windows 1251 - if(Sw3) key+='1'; else key+='0'; // - if(Sw2) key+='1'; else key+='0'; // - if(Sw1) key+='1'; else key+='0'; // (: ) - msg+=key; - } - msg+=(char)0x05; - std::string str=""; - - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - saveLog(PrinterName+"_"+PrinterNumber,std::string("SwitchPrg("+key+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getSmallEJ(bool& val) -{ //val=Sw1; - val=Sw2; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setSmallEJ(bool val) -{ //Sw1=val; - Sw2=val; - return SwitchPrg(true); // -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getDisplayTransparent(bool& val) -{ val=Sw3; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setDisplayTransparent(bool val) -{ Sw3=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::getDisplayWin1251(bool& val) -{ - val=Sw4; - return true;// true . -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::setDisplayWin1251(bool val) -{ Sw4=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -// "bps" -int FP300KZ::getComSpeed() -{ - int speed=0; - if(!Sw6 && !Sw7 && !Sw8) speed=1200; - if(!Sw6 && !Sw7 && Sw8) speed=2400; - if(!Sw6 && Sw7 && !Sw8) speed=4800; - if(!Sw6 && Sw7 && Sw8) speed=9600; - if( Sw6 && !Sw7 && !Sw8) speed=19200; - if( Sw6 && !Sw7 && Sw8) speed=38400; - if( Sw6 && Sw7 && !Sw8) speed=57600; - if( Sw6 && Sw7 && Sw8) speed=115200; - return speed; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setComSpeed(int Speed) -{ - bool b=false; - if(Speed==1200) {Sw6=0; Sw7=0; Sw8=0; b=true;} - if(Speed==2400) {Sw6=0; Sw7=0; Sw8=1; b=true;} - if(Speed==4800) {Sw6=0; Sw7=1; Sw8=0; b=true;} - if(Speed==9600) {Sw6=0; Sw7=1; Sw8=1; b=true;} - if(Speed==19200) {Sw6=1; Sw7=0; Sw8=0; b=true;} - if(Speed==38400) {Sw6=1; Sw7=0; Sw8=1; b=true;} - if(Speed==57600) {Sw6=1; Sw7=1; Sw8=0; b=true;} - if(Speed==115200) {Sw6=1; Sw7=1; Sw8=1; b=true;} - - if(b) b=SwitchPrg(true); // - return b; -} -//--------------------------------------------------------------------------- -/// . -/// Sw3 OFF, . -bool FP300KZ::DisplayClear() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcDisplayClear,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DisplayClear(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Text - 20 -bool FP300KZ::DispalyLower(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyLower; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyLower(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Text - 20 -bool FP300KZ::DispalyUpper(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyUpper; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyUpper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// ( 40 ), . ASCII 20h ( ) 40h 10h. -bool FP300KZ::DispalyFree(std::string Text) -{ -//Text=TransformCode(Text); - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyFree; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyFree(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param Decimals 0,1 2 -///\param bA,bB,bC,bD -///\param TaxA -///\param TaxB -///\param TaxC -///\param TaxD -bool FP300KZ::GetTaxRates(std::string &Decimals,std::string &Rounding,bool& bA,bool& bB,bool& bC,bool& bD, std::string &TaxA, std::string &TaxB, std::string &TaxC, std::string &TaxD) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - Decimals=CutBeforeFirst(str,','); - m_Dots=fromString(Decimals); // - if(PrinterName.find("FP600")!=std::string::npos) - { - Rounding=CutBeforeFirst(str,','); // - } - bA=str[0]=='1'; bB=str[1]=='1'; bC=str[2]=='1'; bD=str[3]=='1'; - CutBeforeFirst(str,','); - TaxA=CutBeforeFirst(str,','); - TaxB=CutBeforeFirst(str,','); - TaxC=CutBeforeFirst(str,','); - TaxD=str; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Decimal 0,1 2 -bool FP300KZ::SetTaxRates(int Decimal,std::string Rounding,std::string TaxA, std::string TaxB, std::string TaxC, std::string TaxD) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - str+=IntToStdStr(Decimal)+","; //0,1,2 - if(PrinterName.find("FP600")!=std::string::npos) // - { - str+=Rounding+','; - } - if(TaxA!="") str+='1'; else str+='0'; // - if(TaxB!="") str+='1'; else str+='0'; // - if(TaxC!="") str+='1'; else str+='0'; // - if(TaxD!="") str+='1'; else str+='0'; // - str+=","; - str+=TaxA+','; - str+=TaxB+','; - str+=TaxC+','; - str+=TaxD; - msg+=str; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetTaxRates("+answer+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Open -///\param Items . -///\param Amount -///\param Tender . -bool FP300KZ::FiscalTransactionsStatus(bool& Open,int& Items,double& Amount,double& Tender) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalTransactionsStatus; - msg+='T'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - Open=CutBeforeFirst(answer,',')=="1"; - Items=fromString(CutBeforeFirst(answer,',')); - - Amount=fromString(CutBeforeFirst(answer,','))/M(); - Tender=fromString(answer)/M(); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FiscalTransactionsStatus(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SessionSec(int& sec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)93; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - sec=fromString(answer); - if(m_SaveLog) - saveLog(PrinterName+"_"+PrinterNumber,std::string("SessionSec(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::DiagnosticInfo() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcDiagnosticInfo,0x05}; - std::string answer=""; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - //,,, - PrinterName=CutBeforeFirst(answer,','); - PrinterVersion=CutBeforeFirst(answer,','); // - CutBeforeFirst(answer,','); // - std::string Sw18 = CutBeforeFirst(answer,',');// Sw1 Sw8. 4 0 1 - Sw8=Sw18[0]=='1'; - Sw7=Sw18[1]=='1'; - Sw6=Sw18[2]=='1'; - Sw5=Sw18[3]=='1'; - Sw4=Sw18[4]=='1'; - Sw3=Sw18[5]=='1'; - Sw2=Sw18[6]=='1'; - Sw1=Sw18[7]=='1'; - PrinterNumber=answer; // - 12 . - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DiagnosticInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::EJ(std::string Cmd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcEJ; - msg+=Cmd; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("EJ("+Cmd+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// ( ) . , -. Data . -bool FP300KZ::PrintEJ() -{ - return EJ("PL"); -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearEJ() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearEJ; - msg+='F'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - { - if(answer!="P") b=false; //'P' () 'F' () - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearEJ(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearRAM() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearRAM; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearRAM(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::getPrintLogo(bool& Enable,int& Height) -{ - std::string str; - if(PrintSetup("I","L",str)) - { - Enable = CutBeforeFirst(str,',')=="1"; - Height =fromString(str); - return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::setPrintLogo(bool Enable,int Height) -{ - std::string str=""; - if(Enable) str+="1,"; else str+="0,"; - str+=IntToStdStr(Height); - - std::string Answer=""; - return PrintSetup("L",str,Answer); -} -//--------------------------------------------------------------------------- -// 576x96 -//RowNum - -//Data - -bool FP300KZ::PrgGraphicLogo(int RowNum, std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - - msg+=IntToStdStr(RowNum); - msg+=','; - msg+=Data; - - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrgGraphicLogo("+IntToStdStr(RowNum)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param RowNum - -///\param Data - "01010101110" -bool FP300KZ::getGraphicLogo(int RowNum, std::string &Data) -{ - std::string msg,res; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - msg+='R'+IntToStdStr(RowNum); - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),res); - if(b) - { - Data=""; - for(uint4 i=0;i, -bool FP300KZ::Fiscalization(std::string Password,std::string Serial,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+Serial; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; // - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Fiscalization("+Password+","+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//,,, -bool FP300KZ::reFiscalization(std::string OldPwd,std::string Password,std::string RNN,std::string RNM,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+OldPwd+","+RNN+","+RNM; // ( ) - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("reFiscalization("+OldPwd+","+Password+","+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::AmountOfSavingsPerDay(double& TaxA,double& TaxB,double& TaxC,double& TaxD,double& TaxE) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcAmountOfSavingsPerDay; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - TaxA=fromString(CutBeforeFirst(answer,','))/M();//TaxA - TaxB=fromString(CutBeforeFirst(answer,','))/M();//TaxB - TaxC=fromString(CutBeforeFirst(answer,','))/M();//TaxC - TaxD=fromString(CutBeforeFirst(answer,','))/M();//TaxD - TaxE=fromString(CutBeforeFirst(answer,','))/M();//TaxE - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("AmountOfSavingsPerDay(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::DepartmentReport() -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDepartmentReport; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - saveLog(PrinterName+"_"+PrinterNumber,std::string("DepartmentReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::GetLastPrintedDocNumber(int& num) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetLastPrintedDocNumber; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - num=fromString(answer); - }else num=0; - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Clos - 4 . -///\param Rec - 4 . -///\param Total - 12 . -///\param VAT - 12 . -///\param Date - 6 /DDMMYY/. -bool FP300KZ::LatestFiscalRecord(std::string& Clos,int& Rec, float& Total,float& VAT,std::string& Date) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcLatestFiscalRecord; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Clos=CutBeforeFirst(answer,','); - if(PrinterName.find("FP600")==std::string::npos) - Rec=fromString(CutBeforeFirst(answer,',')); - else - Rec=-1; - Total=fromString(CutBeforeFirst(answer,',')); - VAT=fromString(CutBeforeFirst(answer,',')); - Date=answer; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~25~ b/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~25~ deleted file mode 100644 index 7350249..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~25~ +++ /dev/null @@ -1,2182 +0,0 @@ -//! FP300KZ -/*! - FP300KZ -\author . -\file FP300KZ.cpp -*/ -//--------------------------------------------------------------------------- -#pragma hdrstop - -#include "stdafx.h" - - -#include "FP300KZ.h" -#include -#include -#include - -#include -#include -#include -//#include -#include -#include - -#include //mkdir - -//#include -//#include -//#include - -#if defined( __WXMSW__ ) // - #include -#endif // __WXMSW__ -//--------------------------------------------------------------------------- -//#pragma package(smart_init) -//--------------------------------------------------------------------------- -// -//typedef unsigned long DWORD; -//--------------------------------------------------------------------------- -// -bool saveLog(std::string FileName, std::string Text) -{ - try - { - for(uint4 i=0;is[0][0]) return 4; //0x04 -/*5 5 -6 6 -7 7 -8 8 -9 9 -0A 10 BCD -0B 11 -11 17 -12 18 -13 19 -14 20 -15 21 -16 22 -17 23 -18 24 -19 25 -1A 26 -1B 27 -1C 28 -1D 29 -1F 31 -20 32 -21 33 -22 34 -23 35 -24 36 -25 37 -33 51 -35 53 -36 54 -37 55 -38 56 + -39 57 -3A 58 -3C 60 : -3E 62 -3F 63 -40 64 -41 65 -42 66 2 -43 67 3 -44 68 4 -45 69 C -46 70 -47 71 -48 72 -4A 74 - -4B 75 -4C 76 -4D 77 -4E 78 24 -*/ - //if(CommandName==fcOpenFiscalInv && Password=="") return 79; //4F 79 - -/*50 80 -51 81 -52 82 2 -53 83 3 -54 84 4 -56 86 -57 87 : -58 88 -59 89 -5B 91 -5C 92 24 -5D 93 -5E 94 -5F 95 -60 96 -61 97 -62 98 -63 99 -64 100 + -65 101 -66 102 */ - if(!cPort->bOpen) return 103; //0x67 + -/*68 104 -69 105 -6A 106 I2C -6B 107 -6C 108 -6D 109 -6E 110 -6F 111 -70 112 -71 113 + -72 114 -73 115 -74 116 -75 117 + -76 118 : + -77 119 : + -78 120 -79 121 -7A 122 -7B 123 -7C 124 -7D 125 -7E 126 -7F 127 -80 128 + -81 129 + -82 130 + -83 131 + -84 132 -85 133 -86 134 -87 135 -88 136 -89 137 -8A 138 -8B 139 -8C 140 -8D 141 -8E 142 -8F 143 -90 144 , -91 145 -92 146 -93 147 -94 148 -A0 160 + -A1 161 + -A2 162 : -A3 163 -A4 164 -A5 165 -A6 166 -A7 167 -A8 168 : -A9 169 : -AA 170 ( ) -B0 176 : -B1 177 : -B2 178 : */ - if(Status->s[0][2]) return 192; //0xC0 ( ) -/*C1 193 : -C2 194 -C3 195 -C4 196 -5 197 -C6 198 -C7 199 */ - - // - if(Status->s[0][4]) return 500; // . - if(Status->s[0][1]) return 501; // . - if(Status->s[1][4]) return 502; // . - if(Status->s[1][3]) return 503; // ( RESET). - if(Status->s[1][2]) return 504; // . - if(Status->s[1][1]) - { - if(CommandName==fcOpenFiscalInv && Status->s[2][3]) return 509; else // . - if(CommandName==fcCloseFiscalInv) - { - bool Open; int Items; double Amount=0,Tender=0; - FiscalTransactionsStatus(Open,Items,Amount,Tender); - CommandName=fcCloseFiscalInv; // - Status->s[1][1]=true; // - if(Open && Amount-(Tender+0.002)>0) return 511; //" !" - }else - if(CommandName==fcOpenFiscalInv) - { - // - m_SaveLog=false; - int sec; - if(SessionSec(sec) && sec>24*60*60) - { - Status->s[1][1]=true; - CommandName=fcOpenFiscalInv; // - return 78; - } - m_SaveLog=true; - } - return 505; // . - } - if(Status->s[4][0]) return 506; // . - if(Status->s[4][4]) return 507; // . - if(Status->s[2][0]) return 508; // . - //509 " ." - if(Status->s[1][5]) return 510; // ! - //511 " !" - //512 - //513 . - //514 () (). - //515 . - //516 . - //517 Z-. Z-. - //518 . - //519 . - //520 " ". - - - return m_ErrorCode; -} -//--------------------------------------------------------------------------- -FP300KZ::FP300KZ() -{ - cPort=new ComPort(); - Status=new MyStatus(); - CheckCount=0; - for(int i=0;ibOpen) { m_ErrorCode=103; return false; } - - CommandName=msg[3]; // - for(int i=0;ibOpen) - { - for(int i=0;i<5;i++) // 5 ... - { - // - msg[1]=0x20+size-1; // - msg[2]=FrameSeqNumber; - unsigned int crc=MakeCRC(msg,1,size); - cPort->Write(msg,size); // - cPort->Write(&crc,4); // - cPort->WriteChar(0x03); // - - // - bool isOk=true; - int j=0; - while(j<9) //9*60=540 500ms - { - uint1 start=0; - unsigned long BytesRead=cPort->Read(&start,sizeof(start)); // ( 60 ms 500 ms) - if(BytesRead==0) // - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - m_ErrorCode=103; // - break; - }else - if(start==0x15) //NACK - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - break; - }else - if(start==0x16) //SYN 60ms - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - j=0; // ( ) - }else - if(start==0x01) // - { - ReadAr[0]=start; // CRC - uint1 size=0; - cPort->Read(&size,1); // - ReadAr[1]=size; - size=ReadAr[1]-0x20 + 6; // (+5 1 CRC 4 1 ) - - BytesRead=2; // - for(int j=0;j<100;j++) - { - BytesRead+=cPort->Read(&ReadAr[BytesRead],size-BytesRead); - if(BytesRead>=size) - break; - } - - // CRC - unsigned int crc0=MakeCRC(ReadAr,1,size-5); - unsigned int crc1=*((unsigned int*)&ReadAr[size-5]); - if(crc0!=crc1) isOk=false; // - else - { - Status->SetStatus(&ReadAr[size-12]); // - answer.assign((char*)&ReadAr[4],size-17); // - result=true; - } - if(result) break; - } - j++; - } - if(!isOk) continue; // - break; // - } - } - - if(!result) m_ErrorCode=5; - return result; -} -//--------------------------------------------------------------------------- -bool FP300KZ::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(0)) - return false; - }else return false; - return true; -} -//--------------------------------------------------------------------------- -void FP300KZ::LoadSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - cPort->port=ini->ReadString("Printer","Port",""); - cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0); - CheckCount=ini->ReadInteger("Printer","CheckCount",0); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -void FP300KZ::SaveSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - 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",CheckCount); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -bool FP300KZ::Print() -{ - return false; -} -//--------------------------------------------------------------------------- -void FP300KZ::NewLine() -{ - -} -//--------------------------------------------------------------------------- -/*public byte[] ReturnBCC(byte[] bytePacketData) - { - // (0000H-FFFFH) - // : 4 - // : 30H - 3FH - // <01> <05> . - // 30H. - // 1AE3H 31H,3AH,3EH,33H. - - // IN HEX - // 01 25 50 4C 54 05 30 - - // In decimal - // 1 37 80 76 84 5 48 - - Int64 triset_HEX = 0x30; - - byte[] bRes = new byte[4]; - int i = 48; - int iRes = 0; - // int i = 0; - int iCountB = 0; - string hexval1 = String.Empty; - string hexval2 = String.Empty; - StringBuilder sb = new StringBuilder(); - foreach (byte n in bytePacketData) - { - if (n != (byte)01) - { - if (iCountB == 0) - { - sb.Append(n.ToString("X2")); - string hexString = sb.ToString(); - triset_HEX = triset_HEX + Convert.ToInt64(hexString, 16); - } - iCountB++; - if (iCountB > 1) - iCountB = 0; - } - if (n == (byte)05) - break; - } - return this.ConvertHexToByteArr(Convert.ToString( triset_HEX )); - } -*/ -//--------------------------------------------------------------------------- -/// CRC -//BufStart - -//BufEnd - ( ) -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufEnd) -{ - unsigned int cs=0; - for(unsigned int i=BufStart;i> 0x0C) & 0x0F) + 0x30; - mas[1]=((cs >> 0x08) & 0x0F) + 0x30; - mas[2]=((cs >> 0x04) & 0x0F) + 0x30; - mas[3]=((cs >> 0x00) & 0x0F) + 0x30; - return result; -} -//--------------------------------------------------------------------------- -// PrinterName PrinterVersion PrinterNumber PrinterDecimal -// ... -MyError FP300KZ::PrinterInit() -{ - MyError result; - result.ErrorCode = DiagnosticInfo(); - if(b) - { - bool bA,bB,bC,bD; - std::string Decimal,r,TaxA,TaxB,TaxC,TaxD; - result.ErrorCode = GetTaxRates(Decimal,r,bA,bB,bC,bD,TaxA,TaxB,TaxC,TaxD); -// if(b) b=b && fp->GetStatusFP(); - } - return result; -} -//--------------------------------------------------------------------------- -/// 4A -bool FP300KZ::GetStatusFP() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcGetStatusFP,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetStatusFP(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -bool FP300KZ::CancelFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcCancelFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CancelFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -///OpCode - 1..16 -///OpPwd - 4 - 6 -///TillNmb - 1..99999 -bool FP300KZ::OpenFiscalInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenFiscalInv; - msg+=IntToStdStr(OpCode)+","+OpPwd+","+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - //if(b) - //{ Password=OpPwd; // - //} - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenFiscalInv(OpCode="+IntToStdStr(OpCode)+",OpPwd=****,TillNmb="+IntToStdStr(TillNmb)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CloseFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcCloseFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenServiceInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcOpenServiceInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///TODO : ( ) /4 /. -bool FP300KZ::CloseServiceInv(int& count) -{ - count=0; - unsigned char msg[5] = {0x01,0x24,0x20,fcCloseServiceInv,0x05}; - std::string str; - bool b=SendPMessage(msg,sizeof(msg),str); - b=b && !Status->s[0][5]; // - - if(b) count=fromString(str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/**OpCode - 1..16 -* OpPwd - 4 - 6 -* TillNmb - / 1..99999/ -*/ -bool FP300KZ::OpenBackInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenBackInv; - msg+=IntToStdStr(OpCode)+','+OpPwd+','+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenBackInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDuplicateInv() -{ - unsigned char msg[6] = {0x01,0x25,0x20,fcPrintDuplicateInv,0x31,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDuplicateInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/** -Option - 1..4 -Name - ( name = '' ) -*/ -bool FP300KZ::SetAddTypesOfPayment(char Option, std::wstring& Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetAddTypesOfPayment; - switch(Option) - { - case 1: - msg+='I'; - break; - case 2: - msg+='J'; - break; - case 3: - msg+='K'; - break; - case 4: - msg+='L'; - break; - } - if(Text.length()!=0) - { - msg+=','; - msg.append(ws2s(Text),0,31); // 31 - } - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b && Text.length()!=0 && answer!="P") b=b && false; - if(b && Text.length()==0) Text=s2ws(answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetAddTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintZReport() -{ - bool b=PrintEJ(); // - if(b) b=b && EJ("E"); // - if(b) b=b && DailyFinancialReport('1'); // Z - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintXReport() -{ - return DailyFinancialReport('3'); -} -//--------------------------------------------------------------------------- -// ( ) -bool FP300KZ::PrintLine(std::wstring line) -{ - bool b=PrintFreeTextInFiscalInv(ws2s(line)); //TODO ru-ru.1251 - if(!b) b=PrintFreeTextInServiceInv(ws2s(line)); // - return b; - -// bool b=PrintFreeTextInFiscalInv(WStringToString(line, std::locale(""),'?')); //TODO ru-ru.1251 -// if(!b) b=PrintFreeTextInServiceInv(WStringToString(line, std::locale(""),'?')); // -// return b; -} -//--------------------------------------------------------------------------- -/// -///'0' - Z -///'1' - Z -///'2' - X -///'3' - X -bool FP300KZ::DailyFinancialReport(uint1 Option) -{ - //N - unsigned char msg[6] = {0x01,0x25,0x20,fcDailyFinancialReport,Option,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyFinancialReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Start - DDMMYY /6 / -///End - DDMMYY /6 / -bool FP300KZ::ReportOnTaxRates(std::string Start,std::string End) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportOnTaxRates; - msg+=Start+','+End; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(answer=="f") b=false; // . - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportOnTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::FullFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::ReduceFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::FullFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::ReduceFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::DailyReportByTypesOfPayment(std::string& Cash,std::string& Credit,std::string& Debit,std::string& Cheque,std::string& Pay1,std::string& Pay2,std::string& Pay3,std::string& Pay4,std::string& Closure,std::string& Receipt) -{ -// - unsigned char msg[5] = {0x01,0x24,0x20,fcDailyReportByTypesOfPayment,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Cash=CutBeforeFirst(answer,','); - Credit=CutBeforeFirst(answer,','); - Debit=CutBeforeFirst(answer,','); - Cheque=CutBeforeFirst(answer,','); - Pay1=CutBeforeFirst(answer,','); - Pay2=CutBeforeFirst(answer,','); - Pay3=CutBeforeFirst(answer,','); - Pay4=CutBeforeFirst(answer,','); - Closure=CutBeforeFirst(answer,','); - Receipt=CutBeforeFirst(answer,','); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyReportByTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///'S' - . -///'P' - . -bool FP300KZ::ReportByArticle(std::string Option) //#define fcReportByArticle 0x6F //(111) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportByArticle; msg+=Option; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportByArticle(Option="+Option+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OperatorReport() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcOperatorReport,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OperatorReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param cnt -bool FP300KZ::FeedPaper(int cnt) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFeedPaper; - msg+=IntToStdStr(cnt); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FeedPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenCashDrawer(int mSec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenCashDrawer; - if(mSec>0) msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenCashDrawer(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -//,[] -/// () -bool FP300KZ::SetDepartmentName(int dept,std::wstring line1,std::wstring line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDepartmentName; - msg+=IntToStdStr(dept); - msg+=','; - msg.append(ws2s(line1),0,36); // 36 - if(line2.length()>0) - { - msg+=(char)10; - msg.append(ws2s(line2),0,46); // 46 - } - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDepartmentName(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetDepartmentInfo(int dept,int &RecSales,float &RecSum,int &TotSales,float &TotSum,std::wstring &Line1,std::wstring &Line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDepartmentInfo; - msg+=IntToStdStr(dept); - msg+=(char)0x05; - - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - if(CutBeforeFirst(str,',')=="P") // - { - std::string nstr; - nstr=CutBeforeFirst(str,','); - RecSales=StdStrToInt(nstr); - RecSum=fromString(CutBeforeFirst(str,',')); // 2 - nstr=CutBeforeFirst(str,','); - TotSales=StdStrToInt(nstr); - TotSum=fromString(CutBeforeFirst(str,',')); // 2 - Line1=s2ws(CutBeforeFirst(str,(char)10)); - Line2=s2ws(str); - }else - { - RecSales=0; - RecSum=0; - TotSales=0; - TotSum=0; - Line1=L' '; - Line2=L' '; - } - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDepartmentInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CutPaper() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcCutPaper; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CutPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDiagnostic() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcPrintDiagnostic,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDiagnostic(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::SetManufacturersSerialNumber(std::string Serial) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetManufacturersSerialNumber; - msg+=Serial; - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - b=b && BeforeFirst(answer,',')=="P"; - // "KAZAKHSTAN" - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetManufacturersSerialNumber(Serial="+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -std::string FP300KZ::GetStatusDescription(BYTE StatusCode) -{ - if (StatusCode == 0x00) - { - return "OK"; - } - if (StatusCode == 0xFF) - { - return " !"; - } - BYTE code = (BYTE)StatusCode & (BYTE)0x04; - if (code > 0) - { - return " "; - } - code = (BYTE)StatusCode & (BYTE)0x01; - if (code > 0) - { - return " "; - } - return ""; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetRNNAndRNM(std::string &RNN,std::string &RNM) -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcGetRNNAndRNM,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - RNN=BeforeFirst(answer,','); - RNM=AfterFirst(answer,','); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetRNNAndRNM("+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SetRNNAndRNM(std::string RNN,std::string RNM) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetRNNAndRNM; - msg+=RNN+','+RNM; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetRNNAndRNM(RNN="+RNN+",RNM="+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode -///\param OldPwd -///\param NewPwd -///\return -bool FP300KZ::SetOperatorPassword(std::string OpCode,std::string OldPwd,std::string NewPwd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorPassword; - msg+=OpCode+','+OldPwd+','+NewPwd; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorPassword(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode . 1 16 . -///\param Pwd (4 8 ). -///\param OpName ( 30 ). -///\return -bool FP300KZ::SetOperatorName(std::string OpCode,std::string Pwd,std::string OpName) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorName; - msg+=OpCode+','+Pwd+','+OpName; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorName(OpCode="+OpCode+",OpName="+OpName+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM[:SS]" -bool FP300KZ::SetDateTime(std::string date, std::string time) //#define fcSetDateTime 0x3D //(61) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDateTime; - msg+=trim(date)+' '+trim(time); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDateTime(\"")+date+std::string("\", \"")+time+std::string("\"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM:SS" -bool FP300KZ::GetDateTime(unsigned short& De,unsigned short& Me,unsigned short& Ye,unsigned short& Ho,unsigned short& Mi,unsigned short& Se) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDateTime; msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - De=fromString(CutBeforeFirst(str,'-')); - Me=fromString(CutBeforeFirst(str,'-')); - Ye=fromString(CutBeforeFirst(str,' '));//+2000; - - Ho=fromString(CutBeforeFirst(str,':')); - Mi=fromString(CutBeforeFirst(str,':')); - Se=fromString(str); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDateTime(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// HEADER FOOTER -bool FP300KZ::PrintSetup(std::string Item, std::string Text, std::string& Answer) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintSetup; - msg+=Item+Text; - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),Answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintSetup(Item="+Item+",Text="+Text+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::PrintFreeTextInServiceInv(std::string Text) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInServiceInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintFreeTextInFiscalInv(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInFiscalInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///[][]<[Sign]Price>[*][,Perc|;Abs] -///L1 - , 36 -///L2 - , 36 -///dep - (1..10) -///TaxCd - (, , , , ). -///Price - ( 8 ). -///Qwan - ( 8 3- ). -///Abs - Perc -///Perc - ( ) -bool FP300KZ::RegisterSale(std::wstring L1,std::wstring L2,int dep, std::string TaxCd,double Price,double Qwan,bool Abs,double Perc) -{ - L1=replaceStrings(L1,L"\n",L" "); // - L2=replaceStrings(L2,L"\n",L" "); // - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSale; - msg.append(ws2s(L1),0,36); // 36 - if(L2.length()>0) - { - msg+=(char)0x0A; - msg.append(ws2s(L2),0,36); // 36 - } - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=FloatToStdStr(Price,m_Dots); // - msg+='*'+FloatToStdStr(Qwan,3); - if(Perc!=0) - if(Abs) msg+=';'+FloatToStdStr(Perc,m_Dots); // - else msg+=','+FloatToStdStr(Perc,2); // - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSale(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// [Line]]<[Sign]Price>[*Qwan][,Perc|;Abs] -///Line - 20 . -///TaxCd - (, , , , ). -///Price - ( 8 ). -bool FP300KZ::RegisterSaleDisp(std::string L1,int dep,std::string TaxCd,std::string Price) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSaleDisp; - - msg+=L1; - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=Price; - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSaleDisp(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Print - 1 . -//Display - 1 . -//Abs - false Perc -//Perc - (+-99.9) -//Sum - / 10 / -bool FP300KZ::Subtotal(std::string Print,std::string Display, bool Abs, double Perc,double& Sum) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSubtotal; - - msg+=Print+Display; - if(Perc!=0) // - { - if(Abs) msg+=';'+FloatToStdStr(Perc,2); - else msg+=','+FloatToStdStr(Perc,2); - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - Sum=fromString(CutBeforeFirst(str,','))/M(); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("Subtotal(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -//Line1 - 36 -//Line2 - 36 -//PaidMode - : 'P' ; 'N' ; 'C' ; 'D' 'I' - 1 'J' - 2 'K' - 3 'L' - 4 -// +, Amount ( ). -//Amount - / 10 /. -//Change - -bool FP300KZ::Total(std::string Line1,std::string Line2,std::string PaidMode,double Amount, double& Change) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcTotal; - msg+=Line1; - msg+=(char)0x0A; - msg+=Line2; - msg+=(char)0x09; // - msg+=PaidMode; // - if(Amount>0) msg+='+'; - msg+=FloatToStdStr(Amount,m_Dots); - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - if(str[0]=='F') b=false; - std::string s=""; - s.append(str,1,str.length()-1); - Change=fromString(s)/M(); - if(str[0]=='D') Change=-fabs(Change); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Total(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Amount ( 10 ). . -//strH - strF - -//ExitCode P . , . F : . . -//CashSum . . -//ServIn . -//ServOut . -bool FP300KZ::ParishOrConsumption(std::string Oper,std::string Password,double Amount,std::wstring strH,std::wstring strF,std::string& ExitCode,double& CashSum,double& ServIn,double& ServOut) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcParishOrConsumption; - - if(PrinterName.find("FP600")!=std::string::npos) - { - if(Amount!=0) - { msg+=Oper+","; // - msg+=Password+","; // - msg+=FloatToStdStr(Amount,2); - } - }else - { - if(Amount!=0) - { - msg+=FloatToStdStr(Amount,2); - while(strH.length()>0) - { - std::wstring str = CutBeforeWFirst(strH,L'\n'); - msg+='\t'; msg+='h'; msg.append(ws2s(str),0,48); - } - while(strF.length()>0) - { - std::wstring str = CutBeforeWFirst(strF,L'\n'); - msg+='\t'; msg+='f'; msg.append(ws2s(str),0,48); - } - } - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - ExitCode=CutBeforeFirst(str,','); - CashSum=fromString(CutBeforeFirst(str,','))/M(); - ServIn=fromString(CutBeforeFirst(str,','))/M(); - ServOut=fromString(str)/M(); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ParishOrConsumption(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// - -///Type - 1 5 (1-EAN8, 2-EAN13, 3-Code 128, 4-ITF, 5-ITF) -bool FP300KZ::PrintBarCode(int Type,std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintBarCode; - msg+=IntToStdStr(Type); - msg+=','; - msg+=Data; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintBarCode(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Hz -///\param mSec -bool FP300KZ::Beep(int Hz,int mSec) -{ - if(Hz==0) Hz=294; - if(mSec==0) mSec=1000/8; - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcBeep; - msg+=IntToStdStr(Hz); - msg+=','; - msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Beep(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\Logical -bool FP300KZ::FreeFieldsByFiscalMemory(long& Logical) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFreeFieldsByFiscalMemory; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - {// Logical=fromString(CutBeforeFirst(str,',')); - Logical=fromString(CutBeforeFirst(str,',')); // - } - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FreeFieldsByFiscalMemory(Logical); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// update=false - , -, . -. -///\param update false , - -bool FP300KZ::SwitchPrg(bool update) -{ - std::string msg,key=""; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSwitchPrg; - if(update) - { - if(Sw8) key+='1'; else key+='0'; // - if(Sw7) key+='1'; else key+='0'; // - if(Sw6) key+='1'; else key+='0'; // - if(Sw5) key+='1'; else key+='0'; // - if(Sw4) key+='1'; else key+='0'; // Windows 1251 - if(Sw3) key+='1'; else key+='0'; // - if(Sw2) key+='1'; else key+='0'; // - if(Sw1) key+='1'; else key+='0'; // (: ) - msg+=key; - } - msg+=(char)0x05; - std::string str=""; - - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - saveLog(PrinterName+"_"+PrinterNumber,std::string("SwitchPrg("+key+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getSmallEJ(bool& val) -{ //val=Sw1; - val=Sw2; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setSmallEJ(bool val) -{ //Sw1=val; - Sw2=val; - return SwitchPrg(true); // -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getDisplayTransparent(bool& val) -{ val=Sw3; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setDisplayTransparent(bool val) -{ Sw3=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::getDisplayWin1251(bool& val) -{ - val=Sw4; - return true;// true . -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::setDisplayWin1251(bool val) -{ Sw4=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -// "bps" -int FP300KZ::getComSpeed() -{ - int speed=0; - if(!Sw6 && !Sw7 && !Sw8) speed=1200; - if(!Sw6 && !Sw7 && Sw8) speed=2400; - if(!Sw6 && Sw7 && !Sw8) speed=4800; - if(!Sw6 && Sw7 && Sw8) speed=9600; - if( Sw6 && !Sw7 && !Sw8) speed=19200; - if( Sw6 && !Sw7 && Sw8) speed=38400; - if( Sw6 && Sw7 && !Sw8) speed=57600; - if( Sw6 && Sw7 && Sw8) speed=115200; - return speed; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setComSpeed(int Speed) -{ - bool b=false; - if(Speed==1200) {Sw6=0; Sw7=0; Sw8=0; b=true;} - if(Speed==2400) {Sw6=0; Sw7=0; Sw8=1; b=true;} - if(Speed==4800) {Sw6=0; Sw7=1; Sw8=0; b=true;} - if(Speed==9600) {Sw6=0; Sw7=1; Sw8=1; b=true;} - if(Speed==19200) {Sw6=1; Sw7=0; Sw8=0; b=true;} - if(Speed==38400) {Sw6=1; Sw7=0; Sw8=1; b=true;} - if(Speed==57600) {Sw6=1; Sw7=1; Sw8=0; b=true;} - if(Speed==115200) {Sw6=1; Sw7=1; Sw8=1; b=true;} - - if(b) b=SwitchPrg(true); // - return b; -} -//--------------------------------------------------------------------------- -/// . -/// Sw3 OFF, . -bool FP300KZ::DisplayClear() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcDisplayClear,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DisplayClear(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Text - 20 -bool FP300KZ::DispalyLower(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyLower; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyLower(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Text - 20 -bool FP300KZ::DispalyUpper(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyUpper; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyUpper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// ( 40 ), . ASCII 20h ( ) 40h 10h. -bool FP300KZ::DispalyFree(std::string Text) -{ -//Text=TransformCode(Text); - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyFree; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyFree(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param Decimals 0,1 2 -///\param bA,bB,bC,bD -///\param TaxA -///\param TaxB -///\param TaxC -///\param TaxD -bool FP300KZ::GetTaxRates(std::string &Decimals,std::string &Rounding,bool& bA,bool& bB,bool& bC,bool& bD, std::string &TaxA, std::string &TaxB, std::string &TaxC, std::string &TaxD) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - Decimals=CutBeforeFirst(str,','); - m_Dots=fromString(Decimals); // - if(PrinterName.find("FP600")!=std::string::npos) - { - Rounding=CutBeforeFirst(str,','); // - } - bA=str[0]=='1'; bB=str[1]=='1'; bC=str[2]=='1'; bD=str[3]=='1'; - CutBeforeFirst(str,','); - TaxA=CutBeforeFirst(str,','); - TaxB=CutBeforeFirst(str,','); - TaxC=CutBeforeFirst(str,','); - TaxD=str; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Decimal 0,1 2 -bool FP300KZ::SetTaxRates(int Decimal,std::string Rounding,std::string TaxA, std::string TaxB, std::string TaxC, std::string TaxD) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - str+=IntToStdStr(Decimal)+","; //0,1,2 - if(PrinterName.find("FP600")!=std::string::npos) // - { - str+=Rounding+','; - } - if(TaxA!="") str+='1'; else str+='0'; // - if(TaxB!="") str+='1'; else str+='0'; // - if(TaxC!="") str+='1'; else str+='0'; // - if(TaxD!="") str+='1'; else str+='0'; // - str+=","; - str+=TaxA+','; - str+=TaxB+','; - str+=TaxC+','; - str+=TaxD; - msg+=str; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetTaxRates("+answer+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Open -///\param Items . -///\param Amount -///\param Tender . -bool FP300KZ::FiscalTransactionsStatus(bool& Open,int& Items,double& Amount,double& Tender) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalTransactionsStatus; - msg+='T'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - Open=CutBeforeFirst(answer,',')=="1"; - Items=fromString(CutBeforeFirst(answer,',')); - - Amount=fromString(CutBeforeFirst(answer,','))/M(); - Tender=fromString(answer)/M(); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FiscalTransactionsStatus(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SessionSec(int& sec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)93; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - sec=fromString(answer); - if(m_SaveLog) - saveLog(PrinterName+"_"+PrinterNumber,std::string("SessionSec(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::DiagnosticInfo() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcDiagnosticInfo,0x05}; - std::string answer=""; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - //,,, - PrinterName=CutBeforeFirst(answer,','); - PrinterVersion=CutBeforeFirst(answer,','); // - CutBeforeFirst(answer,','); // - std::string Sw18 = CutBeforeFirst(answer,',');// Sw1 Sw8. 4 0 1 - Sw8=Sw18[0]=='1'; - Sw7=Sw18[1]=='1'; - Sw6=Sw18[2]=='1'; - Sw5=Sw18[3]=='1'; - Sw4=Sw18[4]=='1'; - Sw3=Sw18[5]=='1'; - Sw2=Sw18[6]=='1'; - Sw1=Sw18[7]=='1'; - PrinterNumber=answer; // - 12 . - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DiagnosticInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::EJ(std::string Cmd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcEJ; - msg+=Cmd; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("EJ("+Cmd+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// ( ) . , -. Data . -bool FP300KZ::PrintEJ() -{ - return EJ("PL"); -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearEJ() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearEJ; - msg+='F'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - { - if(answer!="P") b=false; //'P' () 'F' () - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearEJ(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearRAM() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearRAM; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearRAM(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::getPrintLogo(bool& Enable,int& Height) -{ - std::string str; - if(PrintSetup("I","L",str)) - { - Enable = CutBeforeFirst(str,',')=="1"; - Height =fromString(str); - return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::setPrintLogo(bool Enable,int Height) -{ - std::string str=""; - if(Enable) str+="1,"; else str+="0,"; - str+=IntToStdStr(Height); - - std::string Answer=""; - return PrintSetup("L",str,Answer); -} -//--------------------------------------------------------------------------- -// 576x96 -//RowNum - -//Data - -bool FP300KZ::PrgGraphicLogo(int RowNum, std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - - msg+=IntToStdStr(RowNum); - msg+=','; - msg+=Data; - - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrgGraphicLogo("+IntToStdStr(RowNum)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param RowNum - -///\param Data - "01010101110" -bool FP300KZ::getGraphicLogo(int RowNum, std::string &Data) -{ - std::string msg,res; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - msg+='R'+IntToStdStr(RowNum); - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),res); - if(b) - { - Data=""; - for(uint4 i=0;i, -bool FP300KZ::Fiscalization(std::string Password,std::string Serial,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+Serial; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; // - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Fiscalization("+Password+","+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//,,, -bool FP300KZ::reFiscalization(std::string OldPwd,std::string Password,std::string RNN,std::string RNM,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+OldPwd+","+RNN+","+RNM; // ( ) - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("reFiscalization("+OldPwd+","+Password+","+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::AmountOfSavingsPerDay(double& TaxA,double& TaxB,double& TaxC,double& TaxD,double& TaxE) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcAmountOfSavingsPerDay; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - TaxA=fromString(CutBeforeFirst(answer,','))/M();//TaxA - TaxB=fromString(CutBeforeFirst(answer,','))/M();//TaxB - TaxC=fromString(CutBeforeFirst(answer,','))/M();//TaxC - TaxD=fromString(CutBeforeFirst(answer,','))/M();//TaxD - TaxE=fromString(CutBeforeFirst(answer,','))/M();//TaxE - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("AmountOfSavingsPerDay(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::DepartmentReport() -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDepartmentReport; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - saveLog(PrinterName+"_"+PrinterNumber,std::string("DepartmentReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::GetLastPrintedDocNumber(int& num) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetLastPrintedDocNumber; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - num=fromString(answer); - }else num=0; - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Clos - 4 . -///\param Rec - 4 . -///\param Total - 12 . -///\param VAT - 12 . -///\param Date - 6 /DDMMYY/. -bool FP300KZ::LatestFiscalRecord(std::string& Clos,int& Rec, float& Total,float& VAT,std::string& Date) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcLatestFiscalRecord; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Clos=CutBeforeFirst(answer,','); - if(PrinterName.find("FP600")==std::string::npos) - Rec=fromString(CutBeforeFirst(answer,',')); - else - Rec=-1; - Total=fromString(CutBeforeFirst(answer,',')); - VAT=fromString(CutBeforeFirst(answer,',')); - Date=answer; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~26~ b/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~26~ deleted file mode 100644 index 33ca993..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~26~ +++ /dev/null @@ -1,2182 +0,0 @@ -//! FP300KZ -/*! - FP300KZ -\author . -\file FP300KZ.cpp -*/ -//--------------------------------------------------------------------------- -#pragma hdrstop - -#include "stdafx.h" - - -#include "FP300KZ.h" -#include -#include -#include - -#include -#include -#include -//#include -#include -#include - -#include //mkdir - -//#include -//#include -//#include - -#if defined( __WXMSW__ ) // - #include -#endif // __WXMSW__ -//--------------------------------------------------------------------------- -//#pragma package(smart_init) -//--------------------------------------------------------------------------- -// -//typedef unsigned long DWORD; -//--------------------------------------------------------------------------- -// -bool saveLog(std::string FileName, std::string Text) -{ - try - { - for(uint4 i=0;is[0][0]) return 4; //0x04 -/*5 5 -6 6 -7 7 -8 8 -9 9 -0A 10 BCD -0B 11 -11 17 -12 18 -13 19 -14 20 -15 21 -16 22 -17 23 -18 24 -19 25 -1A 26 -1B 27 -1C 28 -1D 29 -1F 31 -20 32 -21 33 -22 34 -23 35 -24 36 -25 37 -33 51 -35 53 -36 54 -37 55 -38 56 + -39 57 -3A 58 -3C 60 : -3E 62 -3F 63 -40 64 -41 65 -42 66 2 -43 67 3 -44 68 4 -45 69 C -46 70 -47 71 -48 72 -4A 74 - -4B 75 -4C 76 -4D 77 -4E 78 24 -*/ - //if(CommandName==fcOpenFiscalInv && Password=="") return 79; //4F 79 - -/*50 80 -51 81 -52 82 2 -53 83 3 -54 84 4 -56 86 -57 87 : -58 88 -59 89 -5B 91 -5C 92 24 -5D 93 -5E 94 -5F 95 -60 96 -61 97 -62 98 -63 99 -64 100 + -65 101 -66 102 */ - if(!cPort->bOpen) return 103; //0x67 + -/*68 104 -69 105 -6A 106 I2C -6B 107 -6C 108 -6D 109 -6E 110 -6F 111 -70 112 -71 113 + -72 114 -73 115 -74 116 -75 117 + -76 118 : + -77 119 : + -78 120 -79 121 -7A 122 -7B 123 -7C 124 -7D 125 -7E 126 -7F 127 -80 128 + -81 129 + -82 130 + -83 131 + -84 132 -85 133 -86 134 -87 135 -88 136 -89 137 -8A 138 -8B 139 -8C 140 -8D 141 -8E 142 -8F 143 -90 144 , -91 145 -92 146 -93 147 -94 148 -A0 160 + -A1 161 + -A2 162 : -A3 163 -A4 164 -A5 165 -A6 166 -A7 167 -A8 168 : -A9 169 : -AA 170 ( ) -B0 176 : -B1 177 : -B2 178 : */ - if(Status->s[0][2]) return 192; //0xC0 ( ) -/*C1 193 : -C2 194 -C3 195 -C4 196 -5 197 -C6 198 -C7 199 */ - - // - if(Status->s[0][4]) return 500; // . - if(Status->s[0][1]) return 501; // . - if(Status->s[1][4]) return 502; // . - if(Status->s[1][3]) return 503; // ( RESET). - if(Status->s[1][2]) return 504; // . - if(Status->s[1][1]) - { - if(CommandName==fcOpenFiscalInv && Status->s[2][3]) return 509; else // . - if(CommandName==fcCloseFiscalInv) - { - bool Open; int Items; double Amount=0,Tender=0; - FiscalTransactionsStatus(Open,Items,Amount,Tender); - CommandName=fcCloseFiscalInv; // - Status->s[1][1]=true; // - if(Open && Amount-(Tender+0.002)>0) return 511; //" !" - }else - if(CommandName==fcOpenFiscalInv) - { - // - m_SaveLog=false; - int sec; - if(SessionSec(sec) && sec>24*60*60) - { - Status->s[1][1]=true; - CommandName=fcOpenFiscalInv; // - return 78; - } - m_SaveLog=true; - } - return 505; // . - } - if(Status->s[4][0]) return 506; // . - if(Status->s[4][4]) return 507; // . - if(Status->s[2][0]) return 508; // . - //509 " ." - if(Status->s[1][5]) return 510; // ! - //511 " !" - //512 - //513 . - //514 () (). - //515 . - //516 . - //517 Z-. Z-. - //518 . - //519 . - //520 " ". - - - return m_ErrorCode; -} -//--------------------------------------------------------------------------- -FP300KZ::FP300KZ() -{ - cPort=new ComPort(); - Status=new MyStatus(); - CheckCount=0; - for(int i=0;ibOpen) { m_ErrorCode=103; return false; } - - CommandName=msg[3]; // - for(int i=0;ibOpen) - { - for(int i=0;i<5;i++) // 5 ... - { - // - msg[1]=0x20+size-1; // - msg[2]=FrameSeqNumber; - unsigned int crc=MakeCRC(msg,1,size); - cPort->Write(msg,size); // - cPort->Write(&crc,4); // - cPort->WriteChar(0x03); // - - // - bool isOk=true; - int j=0; - while(j<9) //9*60=540 500ms - { - uint1 start=0; - unsigned long BytesRead=cPort->Read(&start,sizeof(start)); // ( 60 ms 500 ms) - if(BytesRead==0) // - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - m_ErrorCode=103; // - break; - }else - if(start==0x15) //NACK - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - break; - }else - if(start==0x16) //SYN 60ms - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - j=0; // ( ) - }else - if(start==0x01) // - { - ReadAr[0]=start; // CRC - uint1 size=0; - cPort->Read(&size,1); // - ReadAr[1]=size; - size=ReadAr[1]-0x20 + 6; // (+5 1 CRC 4 1 ) - - BytesRead=2; // - for(int j=0;j<100;j++) - { - BytesRead+=cPort->Read(&ReadAr[BytesRead],size-BytesRead); - if(BytesRead>=size) - break; - } - - // CRC - unsigned int crc0=MakeCRC(ReadAr,1,size-5); - unsigned int crc1=*((unsigned int*)&ReadAr[size-5]); - if(crc0!=crc1) isOk=false; // - else - { - Status->SetStatus(&ReadAr[size-12]); // - answer.assign((char*)&ReadAr[4],size-17); // - result=true; - } - if(result) break; - } - j++; - } - if(!isOk) continue; // - break; // - } - } - - if(!result) m_ErrorCode=5; - return result; -} -//--------------------------------------------------------------------------- -bool FP300KZ::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(0)) - return false; - }else return false; - return true; -} -//--------------------------------------------------------------------------- -void FP300KZ::LoadSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - cPort->port=ini->ReadString("Printer","Port",""); - cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0); - CheckCount=ini->ReadInteger("Printer","CheckCount",0); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -void FP300KZ::SaveSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - 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",CheckCount); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -bool FP300KZ::Print() -{ - return false; -} -//--------------------------------------------------------------------------- -void FP300KZ::NewLine() -{ - -} -//--------------------------------------------------------------------------- -/*public byte[] ReturnBCC(byte[] bytePacketData) - { - // (0000H-FFFFH) - // : 4 - // : 30H - 3FH - // <01> <05> . - // 30H. - // 1AE3H 31H,3AH,3EH,33H. - - // IN HEX - // 01 25 50 4C 54 05 30 - - // In decimal - // 1 37 80 76 84 5 48 - - Int64 triset_HEX = 0x30; - - byte[] bRes = new byte[4]; - int i = 48; - int iRes = 0; - // int i = 0; - int iCountB = 0; - string hexval1 = String.Empty; - string hexval2 = String.Empty; - StringBuilder sb = new StringBuilder(); - foreach (byte n in bytePacketData) - { - if (n != (byte)01) - { - if (iCountB == 0) - { - sb.Append(n.ToString("X2")); - string hexString = sb.ToString(); - triset_HEX = triset_HEX + Convert.ToInt64(hexString, 16); - } - iCountB++; - if (iCountB > 1) - iCountB = 0; - } - if (n == (byte)05) - break; - } - return this.ConvertHexToByteArr(Convert.ToString( triset_HEX )); - } -*/ -//--------------------------------------------------------------------------- -/// CRC -//BufStart - -//BufEnd - ( ) -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufEnd) -{ - unsigned int cs=0; - for(unsigned int i=BufStart;i> 0x0C) & 0x0F) + 0x30; - mas[1]=((cs >> 0x08) & 0x0F) + 0x30; - mas[2]=((cs >> 0x04) & 0x0F) + 0x30; - mas[3]=((cs >> 0x00) & 0x0F) + 0x30; - return result; -} -//--------------------------------------------------------------------------- -// PrinterName PrinterVersion PrinterNumber PrinterDecimal -// ... -int FP300KZ::PrinterInit() -{ - int result; - result = DiagnosticInfo(); - if(b) - { - bool bA,bB,bC,bD; - std::string Decimal,r,TaxA,TaxB,TaxC,TaxD; - result = GetTaxRates(Decimal,r,bA,bB,bC,bD,TaxA,TaxB,TaxC,TaxD); -// if(b) b=b && fp->GetStatusFP(); - } - return result; -} -//--------------------------------------------------------------------------- -/// 4A -bool FP300KZ::GetStatusFP() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcGetStatusFP,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetStatusFP(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -bool FP300KZ::CancelFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcCancelFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CancelFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -///OpCode - 1..16 -///OpPwd - 4 - 6 -///TillNmb - 1..99999 -bool FP300KZ::OpenFiscalInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenFiscalInv; - msg+=IntToStdStr(OpCode)+","+OpPwd+","+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - //if(b) - //{ Password=OpPwd; // - //} - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenFiscalInv(OpCode="+IntToStdStr(OpCode)+",OpPwd=****,TillNmb="+IntToStdStr(TillNmb)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CloseFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcCloseFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenServiceInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcOpenServiceInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///TODO : ( ) /4 /. -bool FP300KZ::CloseServiceInv(int& count) -{ - count=0; - unsigned char msg[5] = {0x01,0x24,0x20,fcCloseServiceInv,0x05}; - std::string str; - bool b=SendPMessage(msg,sizeof(msg),str); - b=b && !Status->s[0][5]; // - - if(b) count=fromString(str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/**OpCode - 1..16 -* OpPwd - 4 - 6 -* TillNmb - / 1..99999/ -*/ -bool FP300KZ::OpenBackInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenBackInv; - msg+=IntToStdStr(OpCode)+','+OpPwd+','+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenBackInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDuplicateInv() -{ - unsigned char msg[6] = {0x01,0x25,0x20,fcPrintDuplicateInv,0x31,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDuplicateInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/** -Option - 1..4 -Name - ( name = '' ) -*/ -bool FP300KZ::SetAddTypesOfPayment(char Option, std::wstring& Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetAddTypesOfPayment; - switch(Option) - { - case 1: - msg+='I'; - break; - case 2: - msg+='J'; - break; - case 3: - msg+='K'; - break; - case 4: - msg+='L'; - break; - } - if(Text.length()!=0) - { - msg+=','; - msg.append(ws2s(Text),0,31); // 31 - } - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b && Text.length()!=0 && answer!="P") b=b && false; - if(b && Text.length()==0) Text=s2ws(answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetAddTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintZReport() -{ - bool b=PrintEJ(); // - if(b) b=b && EJ("E"); // - if(b) b=b && DailyFinancialReport('1'); // Z - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintXReport() -{ - return DailyFinancialReport('3'); -} -//--------------------------------------------------------------------------- -// ( ) -bool FP300KZ::PrintLine(std::wstring line) -{ - bool b=PrintFreeTextInFiscalInv(ws2s(line)); //TODO ru-ru.1251 - if(!b) b=PrintFreeTextInServiceInv(ws2s(line)); // - return b; - -// bool b=PrintFreeTextInFiscalInv(WStringToString(line, std::locale(""),'?')); //TODO ru-ru.1251 -// if(!b) b=PrintFreeTextInServiceInv(WStringToString(line, std::locale(""),'?')); // -// return b; -} -//--------------------------------------------------------------------------- -/// -///'0' - Z -///'1' - Z -///'2' - X -///'3' - X -bool FP300KZ::DailyFinancialReport(uint1 Option) -{ - //N - unsigned char msg[6] = {0x01,0x25,0x20,fcDailyFinancialReport,Option,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyFinancialReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Start - DDMMYY /6 / -///End - DDMMYY /6 / -bool FP300KZ::ReportOnTaxRates(std::string Start,std::string End) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportOnTaxRates; - msg+=Start+','+End; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(answer=="f") b=false; // . - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportOnTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::FullFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::ReduceFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::FullFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::ReduceFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::DailyReportByTypesOfPayment(std::string& Cash,std::string& Credit,std::string& Debit,std::string& Cheque,std::string& Pay1,std::string& Pay2,std::string& Pay3,std::string& Pay4,std::string& Closure,std::string& Receipt) -{ -// - unsigned char msg[5] = {0x01,0x24,0x20,fcDailyReportByTypesOfPayment,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Cash=CutBeforeFirst(answer,','); - Credit=CutBeforeFirst(answer,','); - Debit=CutBeforeFirst(answer,','); - Cheque=CutBeforeFirst(answer,','); - Pay1=CutBeforeFirst(answer,','); - Pay2=CutBeforeFirst(answer,','); - Pay3=CutBeforeFirst(answer,','); - Pay4=CutBeforeFirst(answer,','); - Closure=CutBeforeFirst(answer,','); - Receipt=CutBeforeFirst(answer,','); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyReportByTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///'S' - . -///'P' - . -bool FP300KZ::ReportByArticle(std::string Option) //#define fcReportByArticle 0x6F //(111) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportByArticle; msg+=Option; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportByArticle(Option="+Option+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OperatorReport() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcOperatorReport,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OperatorReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param cnt -bool FP300KZ::FeedPaper(int cnt) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFeedPaper; - msg+=IntToStdStr(cnt); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FeedPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenCashDrawer(int mSec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenCashDrawer; - if(mSec>0) msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenCashDrawer(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -//,[] -/// () -bool FP300KZ::SetDepartmentName(int dept,std::wstring line1,std::wstring line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDepartmentName; - msg+=IntToStdStr(dept); - msg+=','; - msg.append(ws2s(line1),0,36); // 36 - if(line2.length()>0) - { - msg+=(char)10; - msg.append(ws2s(line2),0,46); // 46 - } - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDepartmentName(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetDepartmentInfo(int dept,int &RecSales,float &RecSum,int &TotSales,float &TotSum,std::wstring &Line1,std::wstring &Line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDepartmentInfo; - msg+=IntToStdStr(dept); - msg+=(char)0x05; - - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - if(CutBeforeFirst(str,',')=="P") // - { - std::string nstr; - nstr=CutBeforeFirst(str,','); - RecSales=StdStrToInt(nstr); - RecSum=fromString(CutBeforeFirst(str,',')); // 2 - nstr=CutBeforeFirst(str,','); - TotSales=StdStrToInt(nstr); - TotSum=fromString(CutBeforeFirst(str,',')); // 2 - Line1=s2ws(CutBeforeFirst(str,(char)10)); - Line2=s2ws(str); - }else - { - RecSales=0; - RecSum=0; - TotSales=0; - TotSum=0; - Line1=L' '; - Line2=L' '; - } - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDepartmentInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CutPaper() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcCutPaper; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CutPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDiagnostic() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcPrintDiagnostic,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDiagnostic(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::SetManufacturersSerialNumber(std::string Serial) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetManufacturersSerialNumber; - msg+=Serial; - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - b=b && BeforeFirst(answer,',')=="P"; - // "KAZAKHSTAN" - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetManufacturersSerialNumber(Serial="+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -std::string FP300KZ::GetStatusDescription(BYTE StatusCode) -{ - if (StatusCode == 0x00) - { - return "OK"; - } - if (StatusCode == 0xFF) - { - return " !"; - } - BYTE code = (BYTE)StatusCode & (BYTE)0x04; - if (code > 0) - { - return " "; - } - code = (BYTE)StatusCode & (BYTE)0x01; - if (code > 0) - { - return " "; - } - return ""; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetRNNAndRNM(std::string &RNN,std::string &RNM) -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcGetRNNAndRNM,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - RNN=BeforeFirst(answer,','); - RNM=AfterFirst(answer,','); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetRNNAndRNM("+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SetRNNAndRNM(std::string RNN,std::string RNM) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetRNNAndRNM; - msg+=RNN+','+RNM; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetRNNAndRNM(RNN="+RNN+",RNM="+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode -///\param OldPwd -///\param NewPwd -///\return -bool FP300KZ::SetOperatorPassword(std::string OpCode,std::string OldPwd,std::string NewPwd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorPassword; - msg+=OpCode+','+OldPwd+','+NewPwd; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorPassword(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode . 1 16 . -///\param Pwd (4 8 ). -///\param OpName ( 30 ). -///\return -bool FP300KZ::SetOperatorName(std::string OpCode,std::string Pwd,std::string OpName) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorName; - msg+=OpCode+','+Pwd+','+OpName; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorName(OpCode="+OpCode+",OpName="+OpName+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM[:SS]" -bool FP300KZ::SetDateTime(std::string date, std::string time) //#define fcSetDateTime 0x3D //(61) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDateTime; - msg+=trim(date)+' '+trim(time); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDateTime(\"")+date+std::string("\", \"")+time+std::string("\"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM:SS" -bool FP300KZ::GetDateTime(unsigned short& De,unsigned short& Me,unsigned short& Ye,unsigned short& Ho,unsigned short& Mi,unsigned short& Se) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDateTime; msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - De=fromString(CutBeforeFirst(str,'-')); - Me=fromString(CutBeforeFirst(str,'-')); - Ye=fromString(CutBeforeFirst(str,' '));//+2000; - - Ho=fromString(CutBeforeFirst(str,':')); - Mi=fromString(CutBeforeFirst(str,':')); - Se=fromString(str); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDateTime(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// HEADER FOOTER -bool FP300KZ::PrintSetup(std::string Item, std::string Text, std::string& Answer) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintSetup; - msg+=Item+Text; - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),Answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintSetup(Item="+Item+",Text="+Text+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::PrintFreeTextInServiceInv(std::string Text) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInServiceInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintFreeTextInFiscalInv(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInFiscalInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///[][]<[Sign]Price>[*][,Perc|;Abs] -///L1 - , 36 -///L2 - , 36 -///dep - (1..10) -///TaxCd - (, , , , ). -///Price - ( 8 ). -///Qwan - ( 8 3- ). -///Abs - Perc -///Perc - ( ) -bool FP300KZ::RegisterSale(std::wstring L1,std::wstring L2,int dep, std::string TaxCd,double Price,double Qwan,bool Abs,double Perc) -{ - L1=replaceStrings(L1,L"\n",L" "); // - L2=replaceStrings(L2,L"\n",L" "); // - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSale; - msg.append(ws2s(L1),0,36); // 36 - if(L2.length()>0) - { - msg+=(char)0x0A; - msg.append(ws2s(L2),0,36); // 36 - } - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=FloatToStdStr(Price,m_Dots); // - msg+='*'+FloatToStdStr(Qwan,3); - if(Perc!=0) - if(Abs) msg+=';'+FloatToStdStr(Perc,m_Dots); // - else msg+=','+FloatToStdStr(Perc,2); // - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSale(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// [Line]]<[Sign]Price>[*Qwan][,Perc|;Abs] -///Line - 20 . -///TaxCd - (, , , , ). -///Price - ( 8 ). -bool FP300KZ::RegisterSaleDisp(std::string L1,int dep,std::string TaxCd,std::string Price) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSaleDisp; - - msg+=L1; - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=Price; - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSaleDisp(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Print - 1 . -//Display - 1 . -//Abs - false Perc -//Perc - (+-99.9) -//Sum - / 10 / -bool FP300KZ::Subtotal(std::string Print,std::string Display, bool Abs, double Perc,double& Sum) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSubtotal; - - msg+=Print+Display; - if(Perc!=0) // - { - if(Abs) msg+=';'+FloatToStdStr(Perc,2); - else msg+=','+FloatToStdStr(Perc,2); - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - Sum=fromString(CutBeforeFirst(str,','))/M(); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("Subtotal(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -//Line1 - 36 -//Line2 - 36 -//PaidMode - : 'P' ; 'N' ; 'C' ; 'D' 'I' - 1 'J' - 2 'K' - 3 'L' - 4 -// +, Amount ( ). -//Amount - / 10 /. -//Change - -bool FP300KZ::Total(std::string Line1,std::string Line2,std::string PaidMode,double Amount, double& Change) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcTotal; - msg+=Line1; - msg+=(char)0x0A; - msg+=Line2; - msg+=(char)0x09; // - msg+=PaidMode; // - if(Amount>0) msg+='+'; - msg+=FloatToStdStr(Amount,m_Dots); - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - if(str[0]=='F') b=false; - std::string s=""; - s.append(str,1,str.length()-1); - Change=fromString(s)/M(); - if(str[0]=='D') Change=-fabs(Change); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Total(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Amount ( 10 ). . -//strH - strF - -//ExitCode P . , . F : . . -//CashSum . . -//ServIn . -//ServOut . -bool FP300KZ::ParishOrConsumption(std::string Oper,std::string Password,double Amount,std::wstring strH,std::wstring strF,std::string& ExitCode,double& CashSum,double& ServIn,double& ServOut) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcParishOrConsumption; - - if(PrinterName.find("FP600")!=std::string::npos) - { - if(Amount!=0) - { msg+=Oper+","; // - msg+=Password+","; // - msg+=FloatToStdStr(Amount,2); - } - }else - { - if(Amount!=0) - { - msg+=FloatToStdStr(Amount,2); - while(strH.length()>0) - { - std::wstring str = CutBeforeWFirst(strH,L'\n'); - msg+='\t'; msg+='h'; msg.append(ws2s(str),0,48); - } - while(strF.length()>0) - { - std::wstring str = CutBeforeWFirst(strF,L'\n'); - msg+='\t'; msg+='f'; msg.append(ws2s(str),0,48); - } - } - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - ExitCode=CutBeforeFirst(str,','); - CashSum=fromString(CutBeforeFirst(str,','))/M(); - ServIn=fromString(CutBeforeFirst(str,','))/M(); - ServOut=fromString(str)/M(); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ParishOrConsumption(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// - -///Type - 1 5 (1-EAN8, 2-EAN13, 3-Code 128, 4-ITF, 5-ITF) -bool FP300KZ::PrintBarCode(int Type,std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintBarCode; - msg+=IntToStdStr(Type); - msg+=','; - msg+=Data; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintBarCode(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Hz -///\param mSec -bool FP300KZ::Beep(int Hz,int mSec) -{ - if(Hz==0) Hz=294; - if(mSec==0) mSec=1000/8; - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcBeep; - msg+=IntToStdStr(Hz); - msg+=','; - msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Beep(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\Logical -bool FP300KZ::FreeFieldsByFiscalMemory(long& Logical) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFreeFieldsByFiscalMemory; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - {// Logical=fromString(CutBeforeFirst(str,',')); - Logical=fromString(CutBeforeFirst(str,',')); // - } - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FreeFieldsByFiscalMemory(Logical); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// update=false - , -, . -. -///\param update false , - -bool FP300KZ::SwitchPrg(bool update) -{ - std::string msg,key=""; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSwitchPrg; - if(update) - { - if(Sw8) key+='1'; else key+='0'; // - if(Sw7) key+='1'; else key+='0'; // - if(Sw6) key+='1'; else key+='0'; // - if(Sw5) key+='1'; else key+='0'; // - if(Sw4) key+='1'; else key+='0'; // Windows 1251 - if(Sw3) key+='1'; else key+='0'; // - if(Sw2) key+='1'; else key+='0'; // - if(Sw1) key+='1'; else key+='0'; // (: ) - msg+=key; - } - msg+=(char)0x05; - std::string str=""; - - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - saveLog(PrinterName+"_"+PrinterNumber,std::string("SwitchPrg("+key+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getSmallEJ(bool& val) -{ //val=Sw1; - val=Sw2; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setSmallEJ(bool val) -{ //Sw1=val; - Sw2=val; - return SwitchPrg(true); // -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getDisplayTransparent(bool& val) -{ val=Sw3; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setDisplayTransparent(bool val) -{ Sw3=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::getDisplayWin1251(bool& val) -{ - val=Sw4; - return true;// true . -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::setDisplayWin1251(bool val) -{ Sw4=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -// "bps" -int FP300KZ::getComSpeed() -{ - int speed=0; - if(!Sw6 && !Sw7 && !Sw8) speed=1200; - if(!Sw6 && !Sw7 && Sw8) speed=2400; - if(!Sw6 && Sw7 && !Sw8) speed=4800; - if(!Sw6 && Sw7 && Sw8) speed=9600; - if( Sw6 && !Sw7 && !Sw8) speed=19200; - if( Sw6 && !Sw7 && Sw8) speed=38400; - if( Sw6 && Sw7 && !Sw8) speed=57600; - if( Sw6 && Sw7 && Sw8) speed=115200; - return speed; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setComSpeed(int Speed) -{ - bool b=false; - if(Speed==1200) {Sw6=0; Sw7=0; Sw8=0; b=true;} - if(Speed==2400) {Sw6=0; Sw7=0; Sw8=1; b=true;} - if(Speed==4800) {Sw6=0; Sw7=1; Sw8=0; b=true;} - if(Speed==9600) {Sw6=0; Sw7=1; Sw8=1; b=true;} - if(Speed==19200) {Sw6=1; Sw7=0; Sw8=0; b=true;} - if(Speed==38400) {Sw6=1; Sw7=0; Sw8=1; b=true;} - if(Speed==57600) {Sw6=1; Sw7=1; Sw8=0; b=true;} - if(Speed==115200) {Sw6=1; Sw7=1; Sw8=1; b=true;} - - if(b) b=SwitchPrg(true); // - return b; -} -//--------------------------------------------------------------------------- -/// . -/// Sw3 OFF, . -bool FP300KZ::DisplayClear() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcDisplayClear,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DisplayClear(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Text - 20 -bool FP300KZ::DispalyLower(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyLower; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyLower(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Text - 20 -bool FP300KZ::DispalyUpper(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyUpper; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyUpper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// ( 40 ), . ASCII 20h ( ) 40h 10h. -bool FP300KZ::DispalyFree(std::string Text) -{ -//Text=TransformCode(Text); - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyFree; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyFree(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param Decimals 0,1 2 -///\param bA,bB,bC,bD -///\param TaxA -///\param TaxB -///\param TaxC -///\param TaxD -bool FP300KZ::GetTaxRates(std::string &Decimals,std::string &Rounding,bool& bA,bool& bB,bool& bC,bool& bD, std::string &TaxA, std::string &TaxB, std::string &TaxC, std::string &TaxD) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - Decimals=CutBeforeFirst(str,','); - m_Dots=fromString(Decimals); // - if(PrinterName.find("FP600")!=std::string::npos) - { - Rounding=CutBeforeFirst(str,','); // - } - bA=str[0]=='1'; bB=str[1]=='1'; bC=str[2]=='1'; bD=str[3]=='1'; - CutBeforeFirst(str,','); - TaxA=CutBeforeFirst(str,','); - TaxB=CutBeforeFirst(str,','); - TaxC=CutBeforeFirst(str,','); - TaxD=str; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Decimal 0,1 2 -bool FP300KZ::SetTaxRates(int Decimal,std::string Rounding,std::string TaxA, std::string TaxB, std::string TaxC, std::string TaxD) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - str+=IntToStdStr(Decimal)+","; //0,1,2 - if(PrinterName.find("FP600")!=std::string::npos) // - { - str+=Rounding+','; - } - if(TaxA!="") str+='1'; else str+='0'; // - if(TaxB!="") str+='1'; else str+='0'; // - if(TaxC!="") str+='1'; else str+='0'; // - if(TaxD!="") str+='1'; else str+='0'; // - str+=","; - str+=TaxA+','; - str+=TaxB+','; - str+=TaxC+','; - str+=TaxD; - msg+=str; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetTaxRates("+answer+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Open -///\param Items . -///\param Amount -///\param Tender . -bool FP300KZ::FiscalTransactionsStatus(bool& Open,int& Items,double& Amount,double& Tender) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalTransactionsStatus; - msg+='T'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - Open=CutBeforeFirst(answer,',')=="1"; - Items=fromString(CutBeforeFirst(answer,',')); - - Amount=fromString(CutBeforeFirst(answer,','))/M(); - Tender=fromString(answer)/M(); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FiscalTransactionsStatus(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SessionSec(int& sec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)93; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - sec=fromString(answer); - if(m_SaveLog) - saveLog(PrinterName+"_"+PrinterNumber,std::string("SessionSec(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::DiagnosticInfo() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcDiagnosticInfo,0x05}; - std::string answer=""; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - //,,, - PrinterName=CutBeforeFirst(answer,','); - PrinterVersion=CutBeforeFirst(answer,','); // - CutBeforeFirst(answer,','); // - std::string Sw18 = CutBeforeFirst(answer,',');// Sw1 Sw8. 4 0 1 - Sw8=Sw18[0]=='1'; - Sw7=Sw18[1]=='1'; - Sw6=Sw18[2]=='1'; - Sw5=Sw18[3]=='1'; - Sw4=Sw18[4]=='1'; - Sw3=Sw18[5]=='1'; - Sw2=Sw18[6]=='1'; - Sw1=Sw18[7]=='1'; - PrinterNumber=answer; // - 12 . - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DiagnosticInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::EJ(std::string Cmd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcEJ; - msg+=Cmd; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("EJ("+Cmd+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// ( ) . , -. Data . -bool FP300KZ::PrintEJ() -{ - return EJ("PL"); -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearEJ() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearEJ; - msg+='F'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - { - if(answer!="P") b=false; //'P' () 'F' () - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearEJ(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearRAM() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearRAM; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearRAM(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::getPrintLogo(bool& Enable,int& Height) -{ - std::string str; - if(PrintSetup("I","L",str)) - { - Enable = CutBeforeFirst(str,',')=="1"; - Height =fromString(str); - return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::setPrintLogo(bool Enable,int Height) -{ - std::string str=""; - if(Enable) str+="1,"; else str+="0,"; - str+=IntToStdStr(Height); - - std::string Answer=""; - return PrintSetup("L",str,Answer); -} -//--------------------------------------------------------------------------- -// 576x96 -//RowNum - -//Data - -bool FP300KZ::PrgGraphicLogo(int RowNum, std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - - msg+=IntToStdStr(RowNum); - msg+=','; - msg+=Data; - - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrgGraphicLogo("+IntToStdStr(RowNum)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param RowNum - -///\param Data - "01010101110" -bool FP300KZ::getGraphicLogo(int RowNum, std::string &Data) -{ - std::string msg,res; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - msg+='R'+IntToStdStr(RowNum); - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),res); - if(b) - { - Data=""; - for(uint4 i=0;i, -bool FP300KZ::Fiscalization(std::string Password,std::string Serial,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+Serial; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; // - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Fiscalization("+Password+","+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//,,, -bool FP300KZ::reFiscalization(std::string OldPwd,std::string Password,std::string RNN,std::string RNM,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+OldPwd+","+RNN+","+RNM; // ( ) - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("reFiscalization("+OldPwd+","+Password+","+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::AmountOfSavingsPerDay(double& TaxA,double& TaxB,double& TaxC,double& TaxD,double& TaxE) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcAmountOfSavingsPerDay; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - TaxA=fromString(CutBeforeFirst(answer,','))/M();//TaxA - TaxB=fromString(CutBeforeFirst(answer,','))/M();//TaxB - TaxC=fromString(CutBeforeFirst(answer,','))/M();//TaxC - TaxD=fromString(CutBeforeFirst(answer,','))/M();//TaxD - TaxE=fromString(CutBeforeFirst(answer,','))/M();//TaxE - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("AmountOfSavingsPerDay(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::DepartmentReport() -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDepartmentReport; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - saveLog(PrinterName+"_"+PrinterNumber,std::string("DepartmentReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::GetLastPrintedDocNumber(int& num) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetLastPrintedDocNumber; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - num=fromString(answer); - }else num=0; - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Clos - 4 . -///\param Rec - 4 . -///\param Total - 12 . -///\param VAT - 12 . -///\param Date - 6 /DDMMYY/. -bool FP300KZ::LatestFiscalRecord(std::string& Clos,int& Rec, float& Total,float& VAT,std::string& Date) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcLatestFiscalRecord; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Clos=CutBeforeFirst(answer,','); - if(PrinterName.find("FP600")==std::string::npos) - Rec=fromString(CutBeforeFirst(answer,',')); - else - Rec=-1; - Total=fromString(CutBeforeFirst(answer,',')); - VAT=fromString(CutBeforeFirst(answer,',')); - Date=answer; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~27~ b/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~27~ deleted file mode 100644 index 9d29766..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~27~ +++ /dev/null @@ -1,2185 +0,0 @@ -//! FP300KZ -/*! - FP300KZ -\author . -\file FP300KZ.cpp -*/ -//--------------------------------------------------------------------------- -#pragma hdrstop - -#include "stdafx.h" - - -#include "FP300KZ.h" -#include -#include -#include - -#include -#include -#include -//#include -#include -#include - -#include //mkdir - -//#include -//#include -//#include - -#if defined( __WXMSW__ ) // - #include -#endif // __WXMSW__ -//--------------------------------------------------------------------------- -//#pragma package(smart_init) -//--------------------------------------------------------------------------- -// -//typedef unsigned long DWORD; -//--------------------------------------------------------------------------- -// -bool saveLog(std::string FileName, std::string Text) -{ - try - { - for(uint4 i=0;is[0][0]) return 4; //0x04 -/*5 5 -6 6 -7 7 -8 8 -9 9 -0A 10 BCD -0B 11 -11 17 -12 18 -13 19 -14 20 -15 21 -16 22 -17 23 -18 24 -19 25 -1A 26 -1B 27 -1C 28 -1D 29 -1F 31 -20 32 -21 33 -22 34 -23 35 -24 36 -25 37 -33 51 -35 53 -36 54 -37 55 -38 56 + -39 57 -3A 58 -3C 60 : -3E 62 -3F 63 -40 64 -41 65 -42 66 2 -43 67 3 -44 68 4 -45 69 C -46 70 -47 71 -48 72 -4A 74 - -4B 75 -4C 76 -4D 77 -4E 78 24 -*/ - //if(CommandName==fcOpenFiscalInv && Password=="") return 79; //4F 79 - -/*50 80 -51 81 -52 82 2 -53 83 3 -54 84 4 -56 86 -57 87 : -58 88 -59 89 -5B 91 -5C 92 24 -5D 93 -5E 94 -5F 95 -60 96 -61 97 -62 98 -63 99 -64 100 + -65 101 -66 102 */ - if(!cPort->bOpen) return 103; //0x67 + -/*68 104 -69 105 -6A 106 I2C -6B 107 -6C 108 -6D 109 -6E 110 -6F 111 -70 112 -71 113 + -72 114 -73 115 -74 116 -75 117 + -76 118 : + -77 119 : + -78 120 -79 121 -7A 122 -7B 123 -7C 124 -7D 125 -7E 126 -7F 127 -80 128 + -81 129 + -82 130 + -83 131 + -84 132 -85 133 -86 134 -87 135 -88 136 -89 137 -8A 138 -8B 139 -8C 140 -8D 141 -8E 142 -8F 143 -90 144 , -91 145 -92 146 -93 147 -94 148 -A0 160 + -A1 161 + -A2 162 : -A3 163 -A4 164 -A5 165 -A6 166 -A7 167 -A8 168 : -A9 169 : -AA 170 ( ) -B0 176 : -B1 177 : -B2 178 : */ - if(Status->s[0][2]) return 192; //0xC0 ( ) -/*C1 193 : -C2 194 -C3 195 -C4 196 -5 197 -C6 198 -C7 199 */ - - // - if(Status->s[0][4]) return 500; // . - if(Status->s[0][1]) return 501; // . - if(Status->s[1][4]) return 502; // . - if(Status->s[1][3]) return 503; // ( RESET). - if(Status->s[1][2]) return 504; // . - if(Status->s[1][1]) - { - if(CommandName==fcOpenFiscalInv && Status->s[2][3]) return 509; else // . - if(CommandName==fcCloseFiscalInv) - { - bool Open; int Items; double Amount=0,Tender=0; - FiscalTransactionsStatus(Open,Items,Amount,Tender); - CommandName=fcCloseFiscalInv; // - Status->s[1][1]=true; // - if(Open && Amount-(Tender+0.002)>0) return 511; //" !" - }else - if(CommandName==fcOpenFiscalInv) - { - // - m_SaveLog=false; - int sec; - if(SessionSec(sec) && sec>24*60*60) - { - Status->s[1][1]=true; - CommandName=fcOpenFiscalInv; // - return 78; - } - m_SaveLog=true; - } - return 505; // . - } - if(Status->s[4][0]) return 506; // . - if(Status->s[4][4]) return 507; // . - if(Status->s[2][0]) return 508; // . - //509 " ." - if(Status->s[1][5]) return 510; // ! - //511 " !" - //512 - //513 . - //514 () (). - //515 . - //516 . - //517 Z-. Z-. - //518 . - //519 . - //520 " ". - - - return m_ErrorCode; -} -//--------------------------------------------------------------------------- -FP300KZ::FP300KZ() -{ - cPort=new ComPort(); - Status=new MyStatus(); - CheckCount=0; - for(int i=0;ibOpen) { m_ErrorCode=103; return false; } - - CommandName=msg[3]; // - for(int i=0;ibOpen) - { - for(int i=0;i<5;i++) // 5 ... - { - // - msg[1]=0x20+size-1; // - msg[2]=FrameSeqNumber; - unsigned int crc=MakeCRC(msg,1,size); - cPort->Write(msg,size); // - cPort->Write(&crc,4); // - cPort->WriteChar(0x03); // - - // - bool isOk=true; - int j=0; - while(j<9) //9*60=540 500ms - { - uint1 start=0; - unsigned long BytesRead=cPort->Read(&start,sizeof(start)); // ( 60 ms 500 ms) - if(BytesRead==0) // - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - m_ErrorCode=103; // - break; - }else - if(start==0x15) //NACK - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - break; - }else - if(start==0x16) //SYN 60ms - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - j=0; // ( ) - }else - if(start==0x01) // - { - ReadAr[0]=start; // CRC - uint1 size=0; - cPort->Read(&size,1); // - ReadAr[1]=size; - size=ReadAr[1]-0x20 + 6; // (+5 1 CRC 4 1 ) - - BytesRead=2; // - for(int j=0;j<100;j++) - { - BytesRead+=cPort->Read(&ReadAr[BytesRead],size-BytesRead); - if(BytesRead>=size) - break; - } - - // CRC - unsigned int crc0=MakeCRC(ReadAr,1,size-5); - unsigned int crc1=*((unsigned int*)&ReadAr[size-5]); - if(crc0!=crc1) isOk=false; // - else - { - Status->SetStatus(&ReadAr[size-12]); // - answer.assign((char*)&ReadAr[4],size-17); // - result=true; - } - if(result) break; - } - j++; - } - if(!isOk) continue; // - break; // - } - } - - if(!result) m_ErrorCode=5; - return result; -} -//--------------------------------------------------------------------------- -bool FP300KZ::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(0)) - return false; - }else return false; - return true; -} -//--------------------------------------------------------------------------- -void FP300KZ::LoadSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - cPort->port=ini->ReadString("Printer","Port",""); - cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0); - CheckCount=ini->ReadInteger("Printer","CheckCount",0); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -void FP300KZ::SaveSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - 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",CheckCount); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -bool FP300KZ::Print() -{ - return false; -} -//--------------------------------------------------------------------------- -void FP300KZ::NewLine() -{ - -} -//--------------------------------------------------------------------------- -/*public byte[] ReturnBCC(byte[] bytePacketData) - { - // (0000H-FFFFH) - // : 4 - // : 30H - 3FH - // <01> <05> . - // 30H. - // 1AE3H 31H,3AH,3EH,33H. - - // IN HEX - // 01 25 50 4C 54 05 30 - - // In decimal - // 1 37 80 76 84 5 48 - - Int64 triset_HEX = 0x30; - - byte[] bRes = new byte[4]; - int i = 48; - int iRes = 0; - // int i = 0; - int iCountB = 0; - string hexval1 = String.Empty; - string hexval2 = String.Empty; - StringBuilder sb = new StringBuilder(); - foreach (byte n in bytePacketData) - { - if (n != (byte)01) - { - if (iCountB == 0) - { - sb.Append(n.ToString("X2")); - string hexString = sb.ToString(); - triset_HEX = triset_HEX + Convert.ToInt64(hexString, 16); - } - iCountB++; - if (iCountB > 1) - iCountB = 0; - } - if (n == (byte)05) - break; - } - return this.ConvertHexToByteArr(Convert.ToString( triset_HEX )); - } -*/ -//--------------------------------------------------------------------------- -/// CRC -//BufStart - -//BufEnd - ( ) -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufEnd) -{ - unsigned int cs=0; - for(unsigned int i=BufStart;i> 0x0C) & 0x0F) + 0x30; - mas[1]=((cs >> 0x08) & 0x0F) + 0x30; - mas[2]=((cs >> 0x04) & 0x0F) + 0x30; - mas[3]=((cs >> 0x00) & 0x0F) + 0x30; - return result; -} -//--------------------------------------------------------------------------- -// PrinterName PrinterVersion PrinterNumber PrinterDecimal -// ... -int FP300KZ::PrinterInit() -{ - int result; - result = DiagnosticInfo(); - if(b) - { - bool bA,bB,bC,bD; - std::string Decimal,r,TaxA,TaxB,TaxC,TaxD; - result = GetTaxRates(Decimal,r,bA,bB,bC,bD,TaxA,TaxB,TaxC,TaxD); -// if(b) b=b && fp->GetStatusFP(); - } - return result; -} -//--------------------------------------------------------------------------- -/// 4A -bool FP300KZ::GetStatusFP() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcGetStatusFP,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetStatusFP(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -bool FP300KZ::CancelFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcCancelFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CancelFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -///OpCode - 1..16 -///OpPwd - 4 - 6 -///TillNmb - 1..99999 -bool FP300KZ::OpenFiscalInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenFiscalInv; - msg+=IntToStdStr(OpCode)+","+OpPwd+","+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - //if(b) - //{ Password=OpPwd; // - //} - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenFiscalInv(OpCode="+IntToStdStr(OpCode)+",OpPwd=****,TillNmb="+IntToStdStr(TillNmb)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CloseFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcCloseFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenServiceInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcOpenServiceInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///TODO : ( ) /4 /. -bool FP300KZ::CloseServiceInv(int& count) -{ - count=0; - unsigned char msg[5] = {0x01,0x24,0x20,fcCloseServiceInv,0x05}; - std::string str; - bool b=SendPMessage(msg,sizeof(msg),str); - b=b && !Status->s[0][5]; // - - if(b) count=fromString(str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/**OpCode - 1..16 -* OpPwd - 4 - 6 -* TillNmb - / 1..99999/ -*/ -bool FP300KZ::OpenBackInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenBackInv; - msg+=IntToStdStr(OpCode)+','+OpPwd+','+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenBackInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDuplicateInv() -{ - unsigned char msg[6] = {0x01,0x25,0x20,fcPrintDuplicateInv,0x31,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDuplicateInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/** -Option - 1..4 -Name - ( name = '' ) -*/ -bool FP300KZ::SetAddTypesOfPayment(char Option, std::wstring& Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetAddTypesOfPayment; - switch(Option) - { - case 1: - msg+='I'; - break; - case 2: - msg+='J'; - break; - case 3: - msg+='K'; - break; - case 4: - msg+='L'; - break; - } - if(Text.length()!=0) - { - msg+=','; - msg.append(ws2s(Text),0,31); // 31 - } - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b && Text.length()!=0 && answer!="P") b=b && false; - if(b && Text.length()==0) Text=s2ws(answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetAddTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintZReport() -{ - bool b=PrintEJ(); // - if(b) b=b && EJ("E"); // - if(b) b=b && DailyFinancialReport('1'); // Z - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintXReport() -{ - return DailyFinancialReport('3'); -} -//--------------------------------------------------------------------------- -// ( ) -bool FP300KZ::PrintLine(std::wstring line) -{ - bool b=PrintFreeTextInFiscalInv(ws2s(line)); //TODO ru-ru.1251 - if(!b) b=PrintFreeTextInServiceInv(ws2s(line)); // - return b; - -// bool b=PrintFreeTextInFiscalInv(WStringToString(line, std::locale(""),'?')); //TODO ru-ru.1251 -// if(!b) b=PrintFreeTextInServiceInv(WStringToString(line, std::locale(""),'?')); // -// return b; -} -//--------------------------------------------------------------------------- -/// -///'0' - Z -///'1' - Z -///'2' - X -///'3' - X -bool FP300KZ::DailyFinancialReport(uint1 Option) -{ - //N - unsigned char msg[6] = {0x01,0x25,0x20,fcDailyFinancialReport,Option,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyFinancialReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Start - DDMMYY /6 / -///End - DDMMYY /6 / -bool FP300KZ::ReportOnTaxRates(std::string Start,std::string End) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportOnTaxRates; - msg+=Start+','+End; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(answer=="f") b=false; // . - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportOnTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::FullFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::ReduceFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::FullFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::ReduceFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::DailyReportByTypesOfPayment(std::string& Cash,std::string& Credit,std::string& Debit,std::string& Cheque,std::string& Pay1,std::string& Pay2,std::string& Pay3,std::string& Pay4,std::string& Closure,std::string& Receipt) -{ -// - unsigned char msg[5] = {0x01,0x24,0x20,fcDailyReportByTypesOfPayment,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Cash=CutBeforeFirst(answer,','); - Credit=CutBeforeFirst(answer,','); - Debit=CutBeforeFirst(answer,','); - Cheque=CutBeforeFirst(answer,','); - Pay1=CutBeforeFirst(answer,','); - Pay2=CutBeforeFirst(answer,','); - Pay3=CutBeforeFirst(answer,','); - Pay4=CutBeforeFirst(answer,','); - Closure=CutBeforeFirst(answer,','); - Receipt=CutBeforeFirst(answer,','); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyReportByTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///'S' - . -///'P' - . -bool FP300KZ::ReportByArticle(std::string Option) //#define fcReportByArticle 0x6F //(111) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportByArticle; msg+=Option; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportByArticle(Option="+Option+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OperatorReport() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcOperatorReport,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OperatorReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param cnt -bool FP300KZ::FeedPaper(int cnt) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFeedPaper; - msg+=IntToStdStr(cnt); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FeedPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenCashDrawer(int mSec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenCashDrawer; - if(mSec>0) msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenCashDrawer(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -//,[] -/// () -bool FP300KZ::SetDepartmentName(int dept,std::wstring line1,std::wstring line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDepartmentName; - msg+=IntToStdStr(dept); - msg+=','; - msg.append(ws2s(line1),0,36); // 36 - if(line2.length()>0) - { - msg+=(char)10; - msg.append(ws2s(line2),0,46); // 46 - } - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDepartmentName(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetDepartmentInfo(int dept,int &RecSales,float &RecSum,int &TotSales,float &TotSum,std::wstring &Line1,std::wstring &Line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDepartmentInfo; - msg+=IntToStdStr(dept); - msg+=(char)0x05; - - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - if(CutBeforeFirst(str,',')=="P") // - { - std::string nstr; - nstr=CutBeforeFirst(str,','); - RecSales=StdStrToInt(nstr); - RecSum=fromString(CutBeforeFirst(str,',')); // 2 - nstr=CutBeforeFirst(str,','); - TotSales=StdStrToInt(nstr); - TotSum=fromString(CutBeforeFirst(str,',')); // 2 - Line1=s2ws(CutBeforeFirst(str,(char)10)); - Line2=s2ws(str); - }else - { - RecSales=0; - RecSum=0; - TotSales=0; - TotSum=0; - Line1=L' '; - Line2=L' '; - } - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDepartmentInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CutPaper() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcCutPaper; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CutPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDiagnostic() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcPrintDiagnostic,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDiagnostic(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::SetManufacturersSerialNumber(std::string Serial) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetManufacturersSerialNumber; - msg+=Serial; - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - b=b && BeforeFirst(answer,',')=="P"; - // "KAZAKHSTAN" - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetManufacturersSerialNumber(Serial="+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -std::string FP300KZ::GetStatusDescription(BYTE StatusCode) -{ - if (StatusCode == 0x00) - { - return "OK"; - } - if (StatusCode == 0xFF) - { - return " !"; - } - BYTE code = (BYTE)StatusCode & (BYTE)0x04; - if (code > 0) - { - return " "; - } - code = (BYTE)StatusCode & (BYTE)0x01; - if (code > 0) - { - return " "; - } - return ""; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetRNNAndRNM(std::string &RNN,std::string &RNM) -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcGetRNNAndRNM,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - RNN=BeforeFirst(answer,','); - RNM=AfterFirst(answer,','); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetRNNAndRNM("+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SetRNNAndRNM(std::string RNN,std::string RNM) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetRNNAndRNM; - msg+=RNN+','+RNM; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetRNNAndRNM(RNN="+RNN+",RNM="+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode -///\param OldPwd -///\param NewPwd -///\return -bool FP300KZ::SetOperatorPassword(std::string OpCode,std::string OldPwd,std::string NewPwd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorPassword; - msg+=OpCode+','+OldPwd+','+NewPwd; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorPassword(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode . 1 16 . -///\param Pwd (4 8 ). -///\param OpName ( 30 ). -///\return -bool FP300KZ::SetOperatorName(std::string OpCode,std::string Pwd,std::string OpName) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorName; - msg+=OpCode+','+Pwd+','+OpName; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorName(OpCode="+OpCode+",OpName="+OpName+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM[:SS]" -bool FP300KZ::SetDateTime(std::string date, std::string time) //#define fcSetDateTime 0x3D //(61) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDateTime; - msg+=trim(date)+' '+trim(time); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDateTime(\"")+date+std::string("\", \"")+time+std::string("\"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM:SS" -bool FP300KZ::GetDateTime(unsigned short& De,unsigned short& Me,unsigned short& Ye,unsigned short& Ho,unsigned short& Mi,unsigned short& Se) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDateTime; msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - De=fromString(CutBeforeFirst(str,'-')); - Me=fromString(CutBeforeFirst(str,'-')); - Ye=fromString(CutBeforeFirst(str,' '));//+2000; - - Ho=fromString(CutBeforeFirst(str,':')); - Mi=fromString(CutBeforeFirst(str,':')); - Se=fromString(str); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDateTime(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// HEADER FOOTER -bool FP300KZ::PrintSetup(std::string Item, std::string Text, std::string& Answer) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintSetup; - msg+=Item+Text; - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),Answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintSetup(Item="+Item+",Text="+Text+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::PrintFreeTextInServiceInv(std::string Text) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInServiceInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintFreeTextInFiscalInv(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInFiscalInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///[][]<[Sign]Price>[*][,Perc|;Abs] -///L1 - , 36 -///L2 - , 36 -///dep - (1..10) -///TaxCd - (, , , , ). -///Price - ( 8 ). -///Qwan - ( 8 3- ). -///Abs - Perc -///Perc - ( ) -bool FP300KZ::RegisterSale(std::wstring L1,std::wstring L2,int dep, std::string TaxCd,double Price,double Qwan,bool Abs,double Perc) -{ - L1=replaceStrings(L1,L"\n",L" "); // - L2=replaceStrings(L2,L"\n",L" "); // - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSale; - msg.append(ws2s(L1),0,36); // 36 - if(L2.length()>0) - { - msg+=(char)0x0A; - msg.append(ws2s(L2),0,36); // 36 - } - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=FloatToStdStr(Price,m_Dots); // - msg+='*'+FloatToStdStr(Qwan,3); - if(Perc!=0) - if(Abs) msg+=';'+FloatToStdStr(Perc,m_Dots); // - else msg+=','+FloatToStdStr(Perc,2); // - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSale(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// [Line]]<[Sign]Price>[*Qwan][,Perc|;Abs] -///Line - 20 . -///TaxCd - (, , , , ). -///Price - ( 8 ). -bool FP300KZ::RegisterSaleDisp(std::string L1,int dep,std::string TaxCd,std::string Price) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSaleDisp; - - msg+=L1; - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=Price; - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSaleDisp(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Print - 1 . -//Display - 1 . -//Abs - false Perc -//Perc - (+-99.9) -//Sum - / 10 / -bool FP300KZ::Subtotal(std::string Print,std::string Display, bool Abs, double Perc,double& Sum) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSubtotal; - - msg+=Print+Display; - if(Perc!=0) // - { - if(Abs) msg+=';'+FloatToStdStr(Perc,2); - else msg+=','+FloatToStdStr(Perc,2); - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - Sum=fromString(CutBeforeFirst(str,','))/M(); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("Subtotal(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -//Line1 - 36 -//Line2 - 36 -//PaidMode - : 'P' ; 'N' ; 'C' ; 'D' 'I' - 1 'J' - 2 'K' - 3 'L' - 4 -// +, Amount ( ). -//Amount - / 10 /. -//Change - -bool FP300KZ::Total(std::string Line1,std::string Line2,std::string PaidMode,double Amount, double& Change) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcTotal; - msg+=Line1; - msg+=(char)0x0A; - msg+=Line2; - msg+=(char)0x09; // - msg+=PaidMode; // - if(Amount>0) msg+='+'; - msg+=FloatToStdStr(Amount,m_Dots); - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - if(str[0]=='F') b=false; - std::string s=""; - s.append(str,1,str.length()-1); - Change=fromString(s)/M(); - if(str[0]=='D') Change=-fabs(Change); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Total(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Amount ( 10 ). . -//strH - strF - -//ExitCode P . , . F : . . -//CashSum . . -//ServIn . -//ServOut . -bool FP300KZ::ParishOrConsumption(std::string Oper,std::string Password,double Amount,std::wstring strH,std::wstring strF,std::string& ExitCode,double& CashSum,double& ServIn,double& ServOut) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcParishOrConsumption; - - if(PrinterName.find("FP600")!=std::string::npos) - { - if(Amount!=0) - { msg+=Oper+","; // - msg+=Password+","; // - msg+=FloatToStdStr(Amount,2); - } - }else - { - if(Amount!=0) - { - msg+=FloatToStdStr(Amount,2); - while(strH.length()>0) - { - std::wstring str = CutBeforeWFirst(strH,L'\n'); - msg+='\t'; msg+='h'; msg.append(ws2s(str),0,48); - } - while(strF.length()>0) - { - std::wstring str = CutBeforeWFirst(strF,L'\n'); - msg+='\t'; msg+='f'; msg.append(ws2s(str),0,48); - } - } - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - ExitCode=CutBeforeFirst(str,','); - CashSum=fromString(CutBeforeFirst(str,','))/M(); - ServIn=fromString(CutBeforeFirst(str,','))/M(); - ServOut=fromString(str)/M(); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ParishOrConsumption(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// - -///Type - 1 5 (1-EAN8, 2-EAN13, 3-Code 128, 4-ITF, 5-ITF) -bool FP300KZ::PrintBarCode(int Type,std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintBarCode; - msg+=IntToStdStr(Type); - msg+=','; - msg+=Data; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintBarCode(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Hz -///\param mSec -MyError FP300KZ::Beep(int Hz,int mSec) -{ - MyError result; - if(Hz==0) Hz=294; - if(mSec==0) mSec=1000/8; - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcBeep; - msg+=IntToStdStr(Hz); - msg+=','; - msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string str=""; - SendPMessage((uint1*)msg.c_str(),msg.size(),str); - result.ErrorCode=ResultCode(); -// result.ErrorMessage=getErrorDesc(ResultCode()); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Beep(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return result; -} -//--------------------------------------------------------------------------- -// -///\Logical -bool FP300KZ::FreeFieldsByFiscalMemory(long& Logical) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFreeFieldsByFiscalMemory; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - {// Logical=fromString(CutBeforeFirst(str,',')); - Logical=fromString(CutBeforeFirst(str,',')); // - } - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FreeFieldsByFiscalMemory(Logical); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// update=false - , -, . -. -///\param update false , - -bool FP300KZ::SwitchPrg(bool update) -{ - std::string msg,key=""; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSwitchPrg; - if(update) - { - if(Sw8) key+='1'; else key+='0'; // - if(Sw7) key+='1'; else key+='0'; // - if(Sw6) key+='1'; else key+='0'; // - if(Sw5) key+='1'; else key+='0'; // - if(Sw4) key+='1'; else key+='0'; // Windows 1251 - if(Sw3) key+='1'; else key+='0'; // - if(Sw2) key+='1'; else key+='0'; // - if(Sw1) key+='1'; else key+='0'; // (: ) - msg+=key; - } - msg+=(char)0x05; - std::string str=""; - - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - saveLog(PrinterName+"_"+PrinterNumber,std::string("SwitchPrg("+key+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getSmallEJ(bool& val) -{ //val=Sw1; - val=Sw2; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setSmallEJ(bool val) -{ //Sw1=val; - Sw2=val; - return SwitchPrg(true); // -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getDisplayTransparent(bool& val) -{ val=Sw3; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setDisplayTransparent(bool val) -{ Sw3=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::getDisplayWin1251(bool& val) -{ - val=Sw4; - return true;// true . -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::setDisplayWin1251(bool val) -{ Sw4=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -// "bps" -int FP300KZ::getComSpeed() -{ - int speed=0; - if(!Sw6 && !Sw7 && !Sw8) speed=1200; - if(!Sw6 && !Sw7 && Sw8) speed=2400; - if(!Sw6 && Sw7 && !Sw8) speed=4800; - if(!Sw6 && Sw7 && Sw8) speed=9600; - if( Sw6 && !Sw7 && !Sw8) speed=19200; - if( Sw6 && !Sw7 && Sw8) speed=38400; - if( Sw6 && Sw7 && !Sw8) speed=57600; - if( Sw6 && Sw7 && Sw8) speed=115200; - return speed; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setComSpeed(int Speed) -{ - bool b=false; - if(Speed==1200) {Sw6=0; Sw7=0; Sw8=0; b=true;} - if(Speed==2400) {Sw6=0; Sw7=0; Sw8=1; b=true;} - if(Speed==4800) {Sw6=0; Sw7=1; Sw8=0; b=true;} - if(Speed==9600) {Sw6=0; Sw7=1; Sw8=1; b=true;} - if(Speed==19200) {Sw6=1; Sw7=0; Sw8=0; b=true;} - if(Speed==38400) {Sw6=1; Sw7=0; Sw8=1; b=true;} - if(Speed==57600) {Sw6=1; Sw7=1; Sw8=0; b=true;} - if(Speed==115200) {Sw6=1; Sw7=1; Sw8=1; b=true;} - - if(b) b=SwitchPrg(true); // - return b; -} -//--------------------------------------------------------------------------- -/// . -/// Sw3 OFF, . -bool FP300KZ::DisplayClear() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcDisplayClear,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DisplayClear(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Text - 20 -bool FP300KZ::DispalyLower(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyLower; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyLower(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Text - 20 -bool FP300KZ::DispalyUpper(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyUpper; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyUpper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// ( 40 ), . ASCII 20h ( ) 40h 10h. -bool FP300KZ::DispalyFree(std::string Text) -{ -//Text=TransformCode(Text); - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyFree; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyFree(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param Decimals 0,1 2 -///\param bA,bB,bC,bD -///\param TaxA -///\param TaxB -///\param TaxC -///\param TaxD -bool FP300KZ::GetTaxRates(std::string &Decimals,std::string &Rounding,bool& bA,bool& bB,bool& bC,bool& bD, std::string &TaxA, std::string &TaxB, std::string &TaxC, std::string &TaxD) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - Decimals=CutBeforeFirst(str,','); - m_Dots=fromString(Decimals); // - if(PrinterName.find("FP600")!=std::string::npos) - { - Rounding=CutBeforeFirst(str,','); // - } - bA=str[0]=='1'; bB=str[1]=='1'; bC=str[2]=='1'; bD=str[3]=='1'; - CutBeforeFirst(str,','); - TaxA=CutBeforeFirst(str,','); - TaxB=CutBeforeFirst(str,','); - TaxC=CutBeforeFirst(str,','); - TaxD=str; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Decimal 0,1 2 -bool FP300KZ::SetTaxRates(int Decimal,std::string Rounding,std::string TaxA, std::string TaxB, std::string TaxC, std::string TaxD) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - str+=IntToStdStr(Decimal)+","; //0,1,2 - if(PrinterName.find("FP600")!=std::string::npos) // - { - str+=Rounding+','; - } - if(TaxA!="") str+='1'; else str+='0'; // - if(TaxB!="") str+='1'; else str+='0'; // - if(TaxC!="") str+='1'; else str+='0'; // - if(TaxD!="") str+='1'; else str+='0'; // - str+=","; - str+=TaxA+','; - str+=TaxB+','; - str+=TaxC+','; - str+=TaxD; - msg+=str; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetTaxRates("+answer+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Open -///\param Items . -///\param Amount -///\param Tender . -bool FP300KZ::FiscalTransactionsStatus(bool& Open,int& Items,double& Amount,double& Tender) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalTransactionsStatus; - msg+='T'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - Open=CutBeforeFirst(answer,',')=="1"; - Items=fromString(CutBeforeFirst(answer,',')); - - Amount=fromString(CutBeforeFirst(answer,','))/M(); - Tender=fromString(answer)/M(); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FiscalTransactionsStatus(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SessionSec(int& sec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)93; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - sec=fromString(answer); - if(m_SaveLog) - saveLog(PrinterName+"_"+PrinterNumber,std::string("SessionSec(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::DiagnosticInfo() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcDiagnosticInfo,0x05}; - std::string answer=""; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - //,,, - PrinterName=CutBeforeFirst(answer,','); - PrinterVersion=CutBeforeFirst(answer,','); // - CutBeforeFirst(answer,','); // - std::string Sw18 = CutBeforeFirst(answer,',');// Sw1 Sw8. 4 0 1 - Sw8=Sw18[0]=='1'; - Sw7=Sw18[1]=='1'; - Sw6=Sw18[2]=='1'; - Sw5=Sw18[3]=='1'; - Sw4=Sw18[4]=='1'; - Sw3=Sw18[5]=='1'; - Sw2=Sw18[6]=='1'; - Sw1=Sw18[7]=='1'; - PrinterNumber=answer; // - 12 . - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DiagnosticInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::EJ(std::string Cmd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcEJ; - msg+=Cmd; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("EJ("+Cmd+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// ( ) . , -. Data . -bool FP300KZ::PrintEJ() -{ - return EJ("PL"); -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearEJ() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearEJ; - msg+='F'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - { - if(answer!="P") b=false; //'P' () 'F' () - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearEJ(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearRAM() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearRAM; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearRAM(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::getPrintLogo(bool& Enable,int& Height) -{ - std::string str; - if(PrintSetup("I","L",str)) - { - Enable = CutBeforeFirst(str,',')=="1"; - Height =fromString(str); - return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::setPrintLogo(bool Enable,int Height) -{ - std::string str=""; - if(Enable) str+="1,"; else str+="0,"; - str+=IntToStdStr(Height); - - std::string Answer=""; - return PrintSetup("L",str,Answer); -} -//--------------------------------------------------------------------------- -// 576x96 -//RowNum - -//Data - -bool FP300KZ::PrgGraphicLogo(int RowNum, std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - - msg+=IntToStdStr(RowNum); - msg+=','; - msg+=Data; - - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrgGraphicLogo("+IntToStdStr(RowNum)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param RowNum - -///\param Data - "01010101110" -bool FP300KZ::getGraphicLogo(int RowNum, std::string &Data) -{ - std::string msg,res; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - msg+='R'+IntToStdStr(RowNum); - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),res); - if(b) - { - Data=""; - for(uint4 i=0;i, -bool FP300KZ::Fiscalization(std::string Password,std::string Serial,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+Serial; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; // - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Fiscalization("+Password+","+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//,,, -bool FP300KZ::reFiscalization(std::string OldPwd,std::string Password,std::string RNN,std::string RNM,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+OldPwd+","+RNN+","+RNM; // ( ) - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("reFiscalization("+OldPwd+","+Password+","+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::AmountOfSavingsPerDay(double& TaxA,double& TaxB,double& TaxC,double& TaxD,double& TaxE) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcAmountOfSavingsPerDay; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - TaxA=fromString(CutBeforeFirst(answer,','))/M();//TaxA - TaxB=fromString(CutBeforeFirst(answer,','))/M();//TaxB - TaxC=fromString(CutBeforeFirst(answer,','))/M();//TaxC - TaxD=fromString(CutBeforeFirst(answer,','))/M();//TaxD - TaxE=fromString(CutBeforeFirst(answer,','))/M();//TaxE - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("AmountOfSavingsPerDay(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::DepartmentReport() -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDepartmentReport; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - saveLog(PrinterName+"_"+PrinterNumber,std::string("DepartmentReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::GetLastPrintedDocNumber(int& num) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetLastPrintedDocNumber; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - num=fromString(answer); - }else num=0; - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Clos - 4 . -///\param Rec - 4 . -///\param Total - 12 . -///\param VAT - 12 . -///\param Date - 6 /DDMMYY/. -bool FP300KZ::LatestFiscalRecord(std::string& Clos,int& Rec, float& Total,float& VAT,std::string& Date) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcLatestFiscalRecord; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Clos=CutBeforeFirst(answer,','); - if(PrinterName.find("FP600")==std::string::npos) - Rec=fromString(CutBeforeFirst(answer,',')); - else - Rec=-1; - Total=fromString(CutBeforeFirst(answer,',')); - VAT=fromString(CutBeforeFirst(answer,',')); - Date=answer; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~28~ b/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~28~ deleted file mode 100644 index 5c61547..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.cpp.~28~ +++ /dev/null @@ -1,2185 +0,0 @@ -//! FP300KZ -/*! - FP300KZ -\author . -\file FP300KZ.cpp -*/ -//--------------------------------------------------------------------------- -#pragma hdrstop - -#include "stdafx.h" - - -#include "FP300KZ.h" -#include -#include -#include - -#include -#include -#include -//#include -#include -#include - -#include //mkdir - -//#include -//#include -//#include - -#if defined( __WXMSW__ ) // - #include -#endif // __WXMSW__ -//--------------------------------------------------------------------------- -//#pragma package(smart_init) -//--------------------------------------------------------------------------- -// -//typedef unsigned long DWORD; -//--------------------------------------------------------------------------- -// -bool saveLog(std::string FileName, std::string Text) -{ - try - { - for(uint4 i=0;is[0][0]) return 4; //0x04 -/*5 5 -6 6 -7 7 -8 8 -9 9 -0A 10 BCD -0B 11 -11 17 -12 18 -13 19 -14 20 -15 21 -16 22 -17 23 -18 24 -19 25 -1A 26 -1B 27 -1C 28 -1D 29 -1F 31 -20 32 -21 33 -22 34 -23 35 -24 36 -25 37 -33 51 -35 53 -36 54 -37 55 -38 56 + -39 57 -3A 58 -3C 60 : -3E 62 -3F 63 -40 64 -41 65 -42 66 2 -43 67 3 -44 68 4 -45 69 C -46 70 -47 71 -48 72 -4A 74 - -4B 75 -4C 76 -4D 77 -4E 78 24 -*/ - //if(CommandName==fcOpenFiscalInv && Password=="") return 79; //4F 79 - -/*50 80 -51 81 -52 82 2 -53 83 3 -54 84 4 -56 86 -57 87 : -58 88 -59 89 -5B 91 -5C 92 24 -5D 93 -5E 94 -5F 95 -60 96 -61 97 -62 98 -63 99 -64 100 + -65 101 -66 102 */ - if(!cPort->bOpen) return 103; //0x67 + -/*68 104 -69 105 -6A 106 I2C -6B 107 -6C 108 -6D 109 -6E 110 -6F 111 -70 112 -71 113 + -72 114 -73 115 -74 116 -75 117 + -76 118 : + -77 119 : + -78 120 -79 121 -7A 122 -7B 123 -7C 124 -7D 125 -7E 126 -7F 127 -80 128 + -81 129 + -82 130 + -83 131 + -84 132 -85 133 -86 134 -87 135 -88 136 -89 137 -8A 138 -8B 139 -8C 140 -8D 141 -8E 142 -8F 143 -90 144 , -91 145 -92 146 -93 147 -94 148 -A0 160 + -A1 161 + -A2 162 : -A3 163 -A4 164 -A5 165 -A6 166 -A7 167 -A8 168 : -A9 169 : -AA 170 ( ) -B0 176 : -B1 177 : -B2 178 : */ - if(Status->s[0][2]) return 192; //0xC0 ( ) -/*C1 193 : -C2 194 -C3 195 -C4 196 -5 197 -C6 198 -C7 199 */ - - // - if(Status->s[0][4]) return 500; // . - if(Status->s[0][1]) return 501; // . - if(Status->s[1][4]) return 502; // . - if(Status->s[1][3]) return 503; // ( RESET). - if(Status->s[1][2]) return 504; // . - if(Status->s[1][1]) - { - if(CommandName==fcOpenFiscalInv && Status->s[2][3]) return 509; else // . - if(CommandName==fcCloseFiscalInv) - { - bool Open; int Items; double Amount=0,Tender=0; - FiscalTransactionsStatus(Open,Items,Amount,Tender); - CommandName=fcCloseFiscalInv; // - Status->s[1][1]=true; // - if(Open && Amount-(Tender+0.002)>0) return 511; //" !" - }else - if(CommandName==fcOpenFiscalInv) - { - // - m_SaveLog=false; - int sec; - if(SessionSec(sec) && sec>24*60*60) - { - Status->s[1][1]=true; - CommandName=fcOpenFiscalInv; // - return 78; - } - m_SaveLog=true; - } - return 505; // . - } - if(Status->s[4][0]) return 506; // . - if(Status->s[4][4]) return 507; // . - if(Status->s[2][0]) return 508; // . - //509 " ." - if(Status->s[1][5]) return 510; // ! - //511 " !" - //512 - //513 . - //514 () (). - //515 . - //516 . - //517 Z-. Z-. - //518 . - //519 . - //520 " ". - - - return m_ErrorCode; -} -//--------------------------------------------------------------------------- -FP300KZ::FP300KZ() -{ - cPort=new ComPort(); - Status=new MyStatus(); - CheckCount=0; - for(int i=0;ibOpen) { m_ErrorCode=103; return false; } - - CommandName=msg[3]; // - for(int i=0;ibOpen) - { - for(int i=0;i<5;i++) // 5 ... - { - // - msg[1]=0x20+size-1; // - msg[2]=FrameSeqNumber; - unsigned int crc=MakeCRC(msg,1,size); - cPort->Write(msg,size); // - cPort->Write(&crc,4); // - cPort->WriteChar(0x03); // - - // - bool isOk=true; - int j=0; - while(j<9) //9*60=540 500ms - { - uint1 start=0; - unsigned long BytesRead=cPort->Read(&start,sizeof(start)); // ( 60 ms 500 ms) - if(BytesRead==0) // - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - m_ErrorCode=103; // - break; - }else - if(start==0x15) //NACK - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - isOk=false; - break; - }else - if(start==0x16) //SYN 60ms - { - #ifdef __WXMSW__ - wxThread::Sleep(60); - #endif // __WXMSW__ - #ifdef _BORLAND - Sleep(60); - #endif - j=0; // ( ) - }else - if(start==0x01) // - { - ReadAr[0]=start; // CRC - uint1 size=0; - cPort->Read(&size,1); // - ReadAr[1]=size; - size=ReadAr[1]-0x20 + 6; // (+5 1 CRC 4 1 ) - - BytesRead=2; // - for(int j=0;j<100;j++) - { - BytesRead+=cPort->Read(&ReadAr[BytesRead],size-BytesRead); - if(BytesRead>=size) - break; - } - - // CRC - unsigned int crc0=MakeCRC(ReadAr,1,size-5); - unsigned int crc1=*((unsigned int*)&ReadAr[size-5]); - if(crc0!=crc1) isOk=false; // - else - { - Status->SetStatus(&ReadAr[size-12]); // - answer.assign((char*)&ReadAr[4],size-17); // - result=true; - } - if(result) break; - } - j++; - } - if(!isOk) continue; // - break; // - } - } - - if(!result) m_ErrorCode=5; - return result; -} -//--------------------------------------------------------------------------- -bool FP300KZ::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(0)) - return false; - }else return false; - return true; -} -//--------------------------------------------------------------------------- -void FP300KZ::LoadSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - cPort->port=ini->ReadString("Printer","Port",""); - cPort->BaudRate=ini->ReadInteger("Printer","BaudRate",0); - CheckCount=ini->ReadInteger("Printer","CheckCount",0); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -void FP300KZ::SaveSetup() -{ -/* - std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; - - 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",CheckCount); - delete ini; -*/ -} -//--------------------------------------------------------------------------- -bool FP300KZ::Print() -{ - return false; -} -//--------------------------------------------------------------------------- -void FP300KZ::NewLine() -{ - -} -//--------------------------------------------------------------------------- -/*public byte[] ReturnBCC(byte[] bytePacketData) - { - // (0000H-FFFFH) - // : 4 - // : 30H - 3FH - // <01> <05> . - // 30H. - // 1AE3H 31H,3AH,3EH,33H. - - // IN HEX - // 01 25 50 4C 54 05 30 - - // In decimal - // 1 37 80 76 84 5 48 - - Int64 triset_HEX = 0x30; - - byte[] bRes = new byte[4]; - int i = 48; - int iRes = 0; - // int i = 0; - int iCountB = 0; - string hexval1 = String.Empty; - string hexval2 = String.Empty; - StringBuilder sb = new StringBuilder(); - foreach (byte n in bytePacketData) - { - if (n != (byte)01) - { - if (iCountB == 0) - { - sb.Append(n.ToString("X2")); - string hexString = sb.ToString(); - triset_HEX = triset_HEX + Convert.ToInt64(hexString, 16); - } - iCountB++; - if (iCountB > 1) - iCountB = 0; - } - if (n == (byte)05) - break; - } - return this.ConvertHexToByteArr(Convert.ToString( triset_HEX )); - } -*/ -//--------------------------------------------------------------------------- -/// CRC -//BufStart - -//BufEnd - ( ) -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufEnd) -{ - unsigned int cs=0; - for(unsigned int i=BufStart;i> 0x0C) & 0x0F) + 0x30; - mas[1]=((cs >> 0x08) & 0x0F) + 0x30; - mas[2]=((cs >> 0x04) & 0x0F) + 0x30; - mas[3]=((cs >> 0x00) & 0x0F) + 0x30; - return result; -} -//--------------------------------------------------------------------------- -// PrinterName PrinterVersion PrinterNumber PrinterDecimal -// ... -int FP300KZ::PrinterInit() -{ - int result; - result = DiagnosticInfo(); - if(result == 0) - { - bool bA,bB,bC,bD; - std::string Decimal,r,TaxA,TaxB,TaxC,TaxD; - result = GetTaxRates(Decimal,r,bA,bB,bC,bD,TaxA,TaxB,TaxC,TaxD); -// if(b) b=b && fp->GetStatusFP(); - } - return result; -} -//--------------------------------------------------------------------------- -/// 4A -bool FP300KZ::GetStatusFP() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcGetStatusFP,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetStatusFP(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -bool FP300KZ::CancelFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcCancelFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CancelFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -///OpCode - 1..16 -///OpPwd - 4 - 6 -///TillNmb - 1..99999 -bool FP300KZ::OpenFiscalInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenFiscalInv; - msg+=IntToStdStr(OpCode)+","+OpPwd+","+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - //if(b) - //{ Password=OpPwd; // - //} - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenFiscalInv(OpCode="+IntToStdStr(OpCode)+",OpPwd=****,TillNmb="+IntToStdStr(TillNmb)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CloseFiscalInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcCloseFiscalInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenServiceInv() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcOpenServiceInv,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///TODO : ( ) /4 /. -bool FP300KZ::CloseServiceInv(int& count) -{ - count=0; - unsigned char msg[5] = {0x01,0x24,0x20,fcCloseServiceInv,0x05}; - std::string str; - bool b=SendPMessage(msg,sizeof(msg),str); - b=b && !Status->s[0][5]; // - - if(b) count=fromString(str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CloseServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/**OpCode - 1..16 -* OpPwd - 4 - 6 -* TillNmb - / 1..99999/ -*/ -bool FP300KZ::OpenBackInv(int OpCode,std::string OpPwd,int TillNmb) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenBackInv; - msg+=IntToStdStr(OpCode)+','+OpPwd+','+IntToStdStr(TillNmb); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenBackInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDuplicateInv() -{ - unsigned char msg[6] = {0x01,0x25,0x20,fcPrintDuplicateInv,0x31,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDuplicateInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/** -Option - 1..4 -Name - ( name = '' ) -*/ -bool FP300KZ::SetAddTypesOfPayment(char Option, std::wstring& Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetAddTypesOfPayment; - switch(Option) - { - case 1: - msg+='I'; - break; - case 2: - msg+='J'; - break; - case 3: - msg+='K'; - break; - case 4: - msg+='L'; - break; - } - if(Text.length()!=0) - { - msg+=','; - msg.append(ws2s(Text),0,31); // 31 - } - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b && Text.length()!=0 && answer!="P") b=b && false; - if(b && Text.length()==0) Text=s2ws(answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetAddTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintZReport() -{ - bool b=PrintEJ(); // - if(b) b=b && EJ("E"); // - if(b) b=b && DailyFinancialReport('1'); // Z - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintXReport() -{ - return DailyFinancialReport('3'); -} -//--------------------------------------------------------------------------- -// ( ) -bool FP300KZ::PrintLine(std::wstring line) -{ - bool b=PrintFreeTextInFiscalInv(ws2s(line)); //TODO ru-ru.1251 - if(!b) b=PrintFreeTextInServiceInv(ws2s(line)); // - return b; - -// bool b=PrintFreeTextInFiscalInv(WStringToString(line, std::locale(""),'?')); //TODO ru-ru.1251 -// if(!b) b=PrintFreeTextInServiceInv(WStringToString(line, std::locale(""),'?')); // -// return b; -} -//--------------------------------------------------------------------------- -/// -///'0' - Z -///'1' - Z -///'2' - X -///'3' - X -bool FP300KZ::DailyFinancialReport(uint1 Option) -{ - //N - unsigned char msg[6] = {0x01,0x25,0x20,fcDailyFinancialReport,Option,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyFinancialReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Start - DDMMYY /6 / -///End - DDMMYY /6 / -bool FP300KZ::ReportOnTaxRates(std::string Start,std::string End) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportOnTaxRates; - msg+=Start+','+End; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(answer=="f") b=false; // . - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportOnTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::FullFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Password - 4 6 . -///Receipts - : 'X'. , . -///Start - . 6 DDMMYY. -///End - . 6 DDMMYY. -/// , . : -///Start - 4 (MMYY) . -///Start - 2 (YY) . -bool FP300KZ::ReduceFiscalReportByDate(std::string Password,std::string Receipts,std::string Start,std::string End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByDate; - - msg+=Password+','; - msg+=Receipts; - msg+=Start+','+End; - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByDate(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::FullFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFullFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FullFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// : , [[],] -///Password - 4 6 . -///Receipts - : X. , . -///Start - . 4 . -///End - . 4 . -bool FP300KZ::ReduceFiscalReportByNumber(std::string Password,std::string Receipts,int Start,int End) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReduceFiscalReportByNumber; - - msg+=Password+','; - msg+=Receipts; - msg+=IntToStdStr(Start)+','+IntToStdStr(End); - - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReduceFiscalReportByNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::DailyReportByTypesOfPayment(std::string& Cash,std::string& Credit,std::string& Debit,std::string& Cheque,std::string& Pay1,std::string& Pay2,std::string& Pay3,std::string& Pay4,std::string& Closure,std::string& Receipt) -{ -// - unsigned char msg[5] = {0x01,0x24,0x20,fcDailyReportByTypesOfPayment,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Cash=CutBeforeFirst(answer,','); - Credit=CutBeforeFirst(answer,','); - Debit=CutBeforeFirst(answer,','); - Cheque=CutBeforeFirst(answer,','); - Pay1=CutBeforeFirst(answer,','); - Pay2=CutBeforeFirst(answer,','); - Pay3=CutBeforeFirst(answer,','); - Pay4=CutBeforeFirst(answer,','); - Closure=CutBeforeFirst(answer,','); - Receipt=CutBeforeFirst(answer,','); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("DailyReportByTypesOfPayment(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///'S' - . -///'P' - . -bool FP300KZ::ReportByArticle(std::string Option) //#define fcReportByArticle 0x6F //(111) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcReportByArticle; msg+=Option; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ReportByArticle(Option="+Option+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OperatorReport() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcOperatorReport,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("OperatorReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param cnt -bool FP300KZ::FeedPaper(int cnt) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFeedPaper; - msg+=IntToStdStr(cnt); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FeedPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::OpenCashDrawer(int mSec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcOpenCashDrawer; - if(mSec>0) msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("OpenCashDrawer(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -//,[] -/// () -bool FP300KZ::SetDepartmentName(int dept,std::wstring line1,std::wstring line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDepartmentName; - msg+=IntToStdStr(dept); - msg+=','; - msg.append(ws2s(line1),0,36); // 36 - if(line2.length()>0) - { - msg+=(char)10; - msg.append(ws2s(line2),0,46); // 46 - } - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDepartmentName(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetDepartmentInfo(int dept,int &RecSales,float &RecSum,int &TotSales,float &TotSum,std::wstring &Line1,std::wstring &Line2) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDepartmentInfo; - msg+=IntToStdStr(dept); - msg+=(char)0x05; - - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - if(CutBeforeFirst(str,',')=="P") // - { - std::string nstr; - nstr=CutBeforeFirst(str,','); - RecSales=StdStrToInt(nstr); - RecSum=fromString(CutBeforeFirst(str,',')); // 2 - nstr=CutBeforeFirst(str,','); - TotSales=StdStrToInt(nstr); - TotSum=fromString(CutBeforeFirst(str,',')); // 2 - Line1=s2ws(CutBeforeFirst(str,(char)10)); - Line2=s2ws(str); - }else - { - RecSales=0; - RecSum=0; - TotSales=0; - TotSum=0; - Line1=L' '; - Line2=L' '; - } - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDepartmentInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::CutPaper() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcCutPaper; msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("CutPaper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::PrintDiagnostic() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcPrintDiagnostic,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintDiagnostic(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::SetManufacturersSerialNumber(std::string Serial) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetManufacturersSerialNumber; - msg+=Serial; - msg+=(char)0x05; - - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - b=b && BeforeFirst(answer,',')=="P"; - // "KAZAKHSTAN" - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetManufacturersSerialNumber(Serial="+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -std::string FP300KZ::GetStatusDescription(BYTE StatusCode) -{ - if (StatusCode == 0x00) - { - return "OK"; - } - if (StatusCode == 0xFF) - { - return " !"; - } - BYTE code = (BYTE)StatusCode & (BYTE)0x04; - if (code > 0) - { - return " "; - } - code = (BYTE)StatusCode & (BYTE)0x01; - if (code > 0) - { - return " "; - } - return ""; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::GetRNNAndRNM(std::string &RNN,std::string &RNM) -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcGetRNNAndRNM,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - RNN=BeforeFirst(answer,','); - RNM=AfterFirst(answer,','); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetRNNAndRNM("+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SetRNNAndRNM(std::string RNN,std::string RNM) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetRNNAndRNM; - msg+=RNN+','+RNM; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetRNNAndRNM(RNN="+RNN+",RNM="+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode -///\param OldPwd -///\param NewPwd -///\return -bool FP300KZ::SetOperatorPassword(std::string OpCode,std::string OldPwd,std::string NewPwd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorPassword; - msg+=OpCode+','+OldPwd+','+NewPwd; - msg+=(char)0x05; - std::string answer; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorPassword(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param OpCode . 1 16 . -///\param Pwd (4 8 ). -///\param OpName ( 30 ). -///\return -bool FP300KZ::SetOperatorName(std::string OpCode,std::string Pwd,std::string OpName) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetOperatorName; - msg+=OpCode+','+Pwd+','+OpName; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetOperatorName(OpCode="+OpCode+",OpName="+OpName+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM[:SS]" -bool FP300KZ::SetDateTime(std::string date, std::string time) //#define fcSetDateTime 0x3D //(61) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetDateTime; - msg+=trim(date)+' '+trim(time); - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetDateTime(\"")+date+std::string("\", \"")+time+std::string("\"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param date - "DD-MM-YY" -///\param time - "HH:MM:SS" -bool FP300KZ::GetDateTime(unsigned short& De,unsigned short& Me,unsigned short& Ye,unsigned short& Ho,unsigned short& Mi,unsigned short& Se) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetDateTime; msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - De=fromString(CutBeforeFirst(str,'-')); - Me=fromString(CutBeforeFirst(str,'-')); - Ye=fromString(CutBeforeFirst(str,' '));//+2000; - - Ho=fromString(CutBeforeFirst(str,':')); - Mi=fromString(CutBeforeFirst(str,':')); - Se=fromString(str); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetDateTime(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// HEADER FOOTER -bool FP300KZ::PrintSetup(std::string Item, std::string Text, std::string& Answer) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintSetup; - msg+=Item+Text; - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),Answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintSetup(Item="+Item+",Text="+Text+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::PrintFreeTextInServiceInv(std::string Text) // -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInServiceInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInServiceInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::PrintFreeTextInFiscalInv(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintFreeTextInFiscalInv; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintFreeTextInFiscalInv(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///[][]<[Sign]Price>[*][,Perc|;Abs] -///L1 - , 36 -///L2 - , 36 -///dep - (1..10) -///TaxCd - (, , , , ). -///Price - ( 8 ). -///Qwan - ( 8 3- ). -///Abs - Perc -///Perc - ( ) -bool FP300KZ::RegisterSale(std::wstring L1,std::wstring L2,int dep, std::string TaxCd,double Price,double Qwan,bool Abs,double Perc) -{ - L1=replaceStrings(L1,L"\n",L" "); // - L2=replaceStrings(L2,L"\n",L" "); // - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSale; - msg.append(ws2s(L1),0,36); // 36 - if(L2.length()>0) - { - msg+=(char)0x0A; - msg.append(ws2s(L2),0,36); // 36 - } - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=FloatToStdStr(Price,m_Dots); // - msg+='*'+FloatToStdStr(Qwan,3); - if(Perc!=0) - if(Abs) msg+=';'+FloatToStdStr(Perc,m_Dots); // - else msg+=','+FloatToStdStr(Perc,2); // - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSale(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// [Line]]<[Sign]Price>[*Qwan][,Perc|;Abs] -///Line - 20 . -///TaxCd - (, , , , ). -///Price - ( 8 ). -bool FP300KZ::RegisterSaleDisp(std::string L1,int dep,std::string TaxCd,std::string Price) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcRegisterSaleDisp; - - msg+=L1; - msg+=(char)0x09; - if(dep>0) - { - msg+=IntToStdStr(dep); // !!!! - msg+=(char)0x09; - } - msg+=TaxCd; // 1 - msg+=Price; - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("RegisterSaleDisp(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Print - 1 . -//Display - 1 . -//Abs - false Perc -//Perc - (+-99.9) -//Sum - / 10 / -bool FP300KZ::Subtotal(std::string Print,std::string Display, bool Abs, double Perc,double& Sum) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSubtotal; - - msg+=Print+Display; - if(Perc!=0) // - { - if(Abs) msg+=';'+FloatToStdStr(Perc,2); - else msg+=','+FloatToStdStr(Perc,2); - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - Sum=fromString(CutBeforeFirst(str,','))/M(); - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("Subtotal(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// () -//Line1 - 36 -//Line2 - 36 -//PaidMode - : 'P' ; 'N' ; 'C' ; 'D' 'I' - 1 'J' - 2 'K' - 3 'L' - 4 -// +, Amount ( ). -//Amount - / 10 /. -//Change - -bool FP300KZ::Total(std::string Line1,std::string Line2,std::string PaidMode,double Amount, double& Change) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcTotal; - msg+=Line1; - msg+=(char)0x0A; - msg+=Line2; - msg+=(char)0x09; // - msg+=PaidMode; // - if(Amount>0) msg+='+'; - msg+=FloatToStdStr(Amount,m_Dots); - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - if(str[0]=='F') b=false; - std::string s=""; - s.append(str,1,str.length()-1); - Change=fromString(s)/M(); - if(str[0]=='D') Change=-fabs(Change); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Total(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Amount ( 10 ). . -//strH - strF - -//ExitCode P . , . F : . . -//CashSum . . -//ServIn . -//ServOut . -bool FP300KZ::ParishOrConsumption(std::string Oper,std::string Password,double Amount,std::wstring strH,std::wstring strF,std::string& ExitCode,double& CashSum,double& ServIn,double& ServOut) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcParishOrConsumption; - - if(PrinterName.find("FP600")!=std::string::npos) - { - if(Amount!=0) - { msg+=Oper+","; // - msg+=Password+","; // - msg+=FloatToStdStr(Amount,2); - } - }else - { - if(Amount!=0) - { - msg+=FloatToStdStr(Amount,2); - while(strH.length()>0) - { - std::wstring str = CutBeforeWFirst(strH,L'\n'); - msg+='\t'; msg+='h'; msg.append(ws2s(str),0,48); - } - while(strF.length()>0) - { - std::wstring str = CutBeforeWFirst(strF,L'\n'); - msg+='\t'; msg+='f'; msg.append(ws2s(str),0,48); - } - } - } - - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - if(b) - { - ExitCode=CutBeforeFirst(str,','); - CashSum=fromString(CutBeforeFirst(str,','))/M(); - ServIn=fromString(CutBeforeFirst(str,','))/M(); - ServOut=fromString(str)/M(); - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("ParishOrConsumption(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// - -///Type - 1 5 (1-EAN8, 2-EAN13, 3-Code 128, 4-ITF, 5-ITF) -bool FP300KZ::PrintBarCode(int Type,std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrintBarCode; - msg+=IntToStdStr(Type); - msg+=','; - msg+=Data; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrintBarCode(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Hz -///\param mSec -MyError FP300KZ::Beep(int Hz,int mSec) -{ - MyError result; - if(Hz==0) Hz=294; - if(mSec==0) mSec=1000/8; - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcBeep; - msg+=IntToStdStr(Hz); - msg+=','; - msg+=IntToStdStr(mSec); - msg+=(char)0x05; - std::string str=""; - SendPMessage((uint1*)msg.c_str(),msg.size(),str); - result.ErrorCode=ResultCode(); -// result.ErrorMessage=getErrorDesc(ResultCode()); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Beep(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return result; -} -//--------------------------------------------------------------------------- -// -///\Logical -bool FP300KZ::FreeFieldsByFiscalMemory(long& Logical) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFreeFieldsByFiscalMemory; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - {// Logical=fromString(CutBeforeFirst(str,',')); - Logical=fromString(CutBeforeFirst(str,',')); // - } - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FreeFieldsByFiscalMemory(Logical); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -/// update=false - , -, . -. -///\param update false , - -bool FP300KZ::SwitchPrg(bool update) -{ - std::string msg,key=""; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSwitchPrg; - if(update) - { - if(Sw8) key+='1'; else key+='0'; // - if(Sw7) key+='1'; else key+='0'; // - if(Sw6) key+='1'; else key+='0'; // - if(Sw5) key+='1'; else key+='0'; // - if(Sw4) key+='1'; else key+='0'; // Windows 1251 - if(Sw3) key+='1'; else key+='0'; // - if(Sw2) key+='1'; else key+='0'; // - if(Sw1) key+='1'; else key+='0'; // (: ) - msg+=key; - } - msg+=(char)0x05; - std::string str=""; - - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - saveLog(PrinterName+"_"+PrinterNumber,std::string("SwitchPrg("+key+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getSmallEJ(bool& val) -{ //val=Sw1; - val=Sw2; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setSmallEJ(bool val) -{ //Sw1=val; - Sw2=val; - return SwitchPrg(true); // -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::getDisplayTransparent(bool& val) -{ val=Sw3; - return true;// true . -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setDisplayTransparent(bool val) -{ Sw3=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::getDisplayWin1251(bool& val) -{ - val=Sw4; - return true;// true . -} -//--------------------------------------------------------------------------- -///< Windows 1251 -bool FP300KZ::setDisplayWin1251(bool val) -{ Sw4=val; - return SwitchPrg(true); -} -//--------------------------------------------------------------------------- -// "bps" -int FP300KZ::getComSpeed() -{ - int speed=0; - if(!Sw6 && !Sw7 && !Sw8) speed=1200; - if(!Sw6 && !Sw7 && Sw8) speed=2400; - if(!Sw6 && Sw7 && !Sw8) speed=4800; - if(!Sw6 && Sw7 && Sw8) speed=9600; - if( Sw6 && !Sw7 && !Sw8) speed=19200; - if( Sw6 && !Sw7 && Sw8) speed=38400; - if( Sw6 && Sw7 && !Sw8) speed=57600; - if( Sw6 && Sw7 && Sw8) speed=115200; - return speed; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::setComSpeed(int Speed) -{ - bool b=false; - if(Speed==1200) {Sw6=0; Sw7=0; Sw8=0; b=true;} - if(Speed==2400) {Sw6=0; Sw7=0; Sw8=1; b=true;} - if(Speed==4800) {Sw6=0; Sw7=1; Sw8=0; b=true;} - if(Speed==9600) {Sw6=0; Sw7=1; Sw8=1; b=true;} - if(Speed==19200) {Sw6=1; Sw7=0; Sw8=0; b=true;} - if(Speed==38400) {Sw6=1; Sw7=0; Sw8=1; b=true;} - if(Speed==57600) {Sw6=1; Sw7=1; Sw8=0; b=true;} - if(Speed==115200) {Sw6=1; Sw7=1; Sw8=1; b=true;} - - if(b) b=SwitchPrg(true); // - return b; -} -//--------------------------------------------------------------------------- -/// . -/// Sw3 OFF, . -bool FP300KZ::DisplayClear() -{ - unsigned char msg[5] = {0x01,0x24,0x20,fcDisplayClear,0x05}; - std::string answer; - bool b=SendPMessage(msg,sizeof(msg),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DisplayClear(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//Text - 20 -bool FP300KZ::DispalyLower(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyLower; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyLower(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///Text - 20 -bool FP300KZ::DispalyUpper(std::string Text) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyUpper; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyUpper(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -/// ( 40 ), . ASCII 20h ( ) 40h 10h. -bool FP300KZ::DispalyFree(std::string Text) -{ -//Text=TransformCode(Text); - - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDispalyFree; - msg+=Text; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DispalyFree(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -///\param Decimals 0,1 2 -///\param bA,bB,bC,bD -///\param TaxA -///\param TaxB -///\param TaxC -///\param TaxD -bool FP300KZ::GetTaxRates(std::string &Decimals,std::string &Rounding,bool& bA,bool& bB,bool& bC,bool& bD, std::string &TaxA, std::string &TaxB, std::string &TaxC, std::string &TaxD) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - msg+=(char)0x05; - std::string str=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),str); - if(b) - { - Decimals=CutBeforeFirst(str,','); - m_Dots=fromString(Decimals); // - if(PrinterName.find("FP600")!=std::string::npos) - { - Rounding=CutBeforeFirst(str,','); // - } - bA=str[0]=='1'; bB=str[1]=='1'; bC=str[2]=='1'; bD=str[3]=='1'; - CutBeforeFirst(str,','); - TaxA=CutBeforeFirst(str,','); - TaxB=CutBeforeFirst(str,','); - TaxC=CutBeforeFirst(str,','); - TaxD=str; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetTaxRates(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Decimal 0,1 2 -bool FP300KZ::SetTaxRates(int Decimal,std::string Rounding,std::string TaxA, std::string TaxB, std::string TaxC, std::string TaxD) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcSetTaxRates; - str+=IntToStdStr(Decimal)+","; //0,1,2 - if(PrinterName.find("FP600")!=std::string::npos) // - { - str+=Rounding+','; - } - if(TaxA!="") str+='1'; else str+='0'; // - if(TaxB!="") str+='1'; else str+='0'; // - if(TaxC!="") str+='1'; else str+='0'; // - if(TaxD!="") str+='1'; else str+='0'; // - str+=","; - str+=TaxA+','; - str+=TaxB+','; - str+=TaxC+','; - str+=TaxD; - msg+=str; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("SetTaxRates("+answer+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Open -///\param Items . -///\param Amount -///\param Tender . -bool FP300KZ::FiscalTransactionsStatus(bool& Open,int& Items,double& Amount,double& Tender) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalTransactionsStatus; - msg+='T'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - Open=CutBeforeFirst(answer,',')=="1"; - Items=fromString(CutBeforeFirst(answer,',')); - - Amount=fromString(CutBeforeFirst(answer,','))/M(); - Tender=fromString(answer)/M(); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("FiscalTransactionsStatus(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::SessionSec(int& sec) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)93; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - sec=fromString(answer); - if(m_SaveLog) - saveLog(PrinterName+"_"+PrinterNumber,std::string("SessionSec(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::DiagnosticInfo() -{ - unsigned char msg[5] = {0x01,0x20,0x20,fcDiagnosticInfo,0x05}; - std::string answer=""; - bool b=SendPMessage(msg,sizeof(msg),answer); - b=b && !Status->s[0][5]; // - if(b) - { - //,,, - PrinterName=CutBeforeFirst(answer,','); - PrinterVersion=CutBeforeFirst(answer,','); // - CutBeforeFirst(answer,','); // - std::string Sw18 = CutBeforeFirst(answer,',');// Sw1 Sw8. 4 0 1 - Sw8=Sw18[0]=='1'; - Sw7=Sw18[1]=='1'; - Sw6=Sw18[2]=='1'; - Sw5=Sw18[3]=='1'; - Sw4=Sw18[4]=='1'; - Sw3=Sw18[5]=='1'; - Sw2=Sw18[6]=='1'; - Sw1=Sw18[7]=='1'; - PrinterNumber=answer; // - 12 . - } - - saveLog(PrinterName+"_"+PrinterNumber,std::string("DiagnosticInfo(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::EJ(std::string Cmd) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcEJ; - msg+=Cmd; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("EJ("+Cmd+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// ( ) . , -. Data . -bool FP300KZ::PrintEJ() -{ - return EJ("PL"); -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearEJ() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearEJ; - msg+='F'; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - if(b) - { - if(answer!="P") b=false; //'P' () 'F' () - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearEJ(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -/// -bool FP300KZ::ServiceClearRAM() -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcServiceClearRAM; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - saveLog(PrinterName+"_"+PrinterNumber,std::string("ServiceClearRAM(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::getPrintLogo(bool& Enable,int& Height) -{ - std::string str; - if(PrintSetup("I","L",str)) - { - Enable = CutBeforeFirst(str,',')=="1"; - Height =fromString(str); - return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -///\param Enable . -///\param Height -bool FP300KZ::setPrintLogo(bool Enable,int Height) -{ - std::string str=""; - if(Enable) str+="1,"; else str+="0,"; - str+=IntToStdStr(Height); - - std::string Answer=""; - return PrintSetup("L",str,Answer); -} -//--------------------------------------------------------------------------- -// 576x96 -//RowNum - -//Data - -bool FP300KZ::PrgGraphicLogo(int RowNum, std::string Data) -{ - std::string msg; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - - msg+=IntToStdStr(RowNum); - msg+=','; - msg+=Data; - - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - - saveLog(PrinterName+"_"+PrinterNumber,std::string("PrgGraphicLogo("+IntToStdStr(RowNum)+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param RowNum - -///\param Data - "01010101110" -bool FP300KZ::getGraphicLogo(int RowNum, std::string &Data) -{ - std::string msg,res; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcPrgGraphicLogo; - msg+='R'+IntToStdStr(RowNum); - msg+=(char)0x05; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),res); - if(b) - { - Data=""; - for(uint4 i=0;i, -bool FP300KZ::Fiscalization(std::string Password,std::string Serial,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+Serial; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; // - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("Fiscalization("+Password+","+Serial+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -//,,, -bool FP300KZ::reFiscalization(std::string OldPwd,std::string Password,std::string RNN,std::string RNM,std::string& ErrCode) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcFiscalization; - msg+=Password+","+OldPwd+","+RNN+","+RNM; // ( ) - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - ErrCode=answer; - m_ErrCode=answer; - - b=b && !Status->s[0][5]; // - - saveLog(PrinterName+"_"+PrinterNumber,std::string("reFiscalization("+OldPwd+","+Password+","+RNN+","+RNM+"); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -bool FP300KZ::AmountOfSavingsPerDay(double& TaxA,double& TaxB,double& TaxC,double& TaxD,double& TaxE) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcAmountOfSavingsPerDay; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - TaxA=fromString(CutBeforeFirst(answer,','))/M();//TaxA - TaxB=fromString(CutBeforeFirst(answer,','))/M();//TaxB - TaxC=fromString(CutBeforeFirst(answer,','))/M();//TaxC - TaxD=fromString(CutBeforeFirst(answer,','))/M();//TaxD - TaxE=fromString(CutBeforeFirst(answer,','))/M();//TaxE - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("AmountOfSavingsPerDay(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::DepartmentReport() -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcDepartmentReport; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - saveLog(PrinterName+"_"+PrinterNumber,std::string("DepartmentReport(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -bool FP300KZ::GetLastPrintedDocNumber(int& num) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcGetLastPrintedDocNumber; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - num=fromString(answer); - }else num=0; - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- -// -///\param Clos - 4 . -///\param Rec - 4 . -///\param Total - 12 . -///\param VAT - 12 . -///\param Date - 6 /DDMMYY/. -bool FP300KZ::LatestFiscalRecord(std::string& Clos,int& Rec, float& Total,float& VAT,std::string& Date) -{ - std::string msg,str; - msg+=(char)0x01; msg+=(char)0x20; msg+=(char)0x20; msg+=(char)fcLatestFiscalRecord; - msg+=(char)0x05; - std::string answer=""; - bool b=SendPMessage((uint1*)msg.c_str(),msg.size(),answer); - b=b && !Status->s[0][5]; // - if(b) - { - Clos=CutBeforeFirst(answer,','); - if(PrinterName.find("FP600")==std::string::npos) - Rec=fromString(CutBeforeFirst(answer,',')); - else - Rec=-1; - Total=fromString(CutBeforeFirst(answer,',')); - VAT=fromString(CutBeforeFirst(answer,',')); - Date=answer; - } - saveLog(PrinterName+"_"+PrinterNumber,std::string("GetLastPrintedDocNumber(); //")+(b ? "OK=" : "ERROR=")+IntToStdStr(ResultCode())+" "+getErrorDesc(ResultCode())); - return b; -} -//--------------------------------------------------------------------------- diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.h.~1~ b/devices/Printers/FP300KZ/__history/FP300KZ.h.~1~ deleted file mode 100644 index 01ca9fb..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.h.~1~ +++ /dev/null @@ -1,274 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterH -#define PrinterH -//--------------------------------------------------------------------------- -#include "../Printer.h" -#include "../../ComPort.h" -#include -#include -//--------------------------------------------------------------------------- -#define fcDisplayClear 0x21 //(33) -#define fcDispalyLower 0x23 //(35) -#define fcOpenServiceInv 0x26 //(38) -#define fcCloseServiceInv 0x27 //(39) -#define fcSwitchPrg 0x29 //(41) -#define fcPrintFreeTextInServiceInv 0x2A //(42) -#define fcPrintSetup 0x2B //(43) HEADER FOOTER -#define fcFeedPaper 0x2C //(44) -#define fcCutPaper 0x2D //(45) -#define fcDispalyUpper 0x2F //(47) -#define fcOpenFiscalInv 0x30 //(48) () -#define fcRegisterSale 0x31 //(49) -#define fcReportOnTaxRates 0x32 //(50) -#define fcSubtotal 0x33 //(51) -#define fcRegisterSaleDisp 0x34 //(52) -#define fcTotal 0x35 //(53) () -#define fcPrintFreeTextInFiscalInv 0x36 //(54) -#define fcCloseFiscalInv 0x38 //(56) -#define fcRegisterArticleSale 0x3A //(58) -#define fcCancelFiscalInv 0x3C //(60) () -#define fcSetDateTime 0x3D //(61) -#define fcGetDateTime 0x3E //(62) -#define fcDisplayDateTime 0x3F //(63) -#define fcLatestFiscalRecord 0x40 //(64) -#define fcAmountOfSavingsPerDay 0x41 //(65) -#define fcDepartmentReport 0x42 //(66) -#define fcFreeFieldsByFiscalMemory 0x44 //(68) -#define fcDailyFinancialReport 0x45 //(69) -#define fcParishOrConsumption 0x46 //(70) -#define fcPrintDiagnostic 0x47 //(71) -#define fcFiscalization 0x48 //(72) -#define fcFullFiscalReportByNumber 0x49 //(73) -#define fcGetStatusFP 0x4A //(74) -#define fcFiscalTransactionsStatus 0x4C //(76) -#define fcReduceFiscalReportByDate 0x4F //(79) -#define fcBeep 0x50 //(80) -#define fcOpenBackInv 0x52 //(82) -#define fcSetTaxRates 0x53 //(83) -#define fcPrintBarCode 0x54 //(84) - -#define fcSetAddTypesOfPayment 0x55 //(85) -#define fcDateOfLastEntryByFiscalMemory 0x56 //(86) -#define fcSetDepartmentName 0x57 //(87) -#define fcGetDepartmentInfo 0x58 //(88) -#define fcPrgProductionTestArea 0x59 //(89) -#define fcDiagnosticInfo 0x5A //(90) -#define fcSetManufacturersSerialNumber 0x5B //(91) -#define fcFullFiscalReportByDate 0x5E //(94) -#define fcReduceFiscalReportByNumber 0x5F //(95) -#define fcGetTaxRates 0x61 //(97) -#define fcSetRNNAndRNM 0x62 //(98) -#define fcGetRNNAndRNM 0x63 //(99) -#define fcDispalyFree 0x64 //(100) -#define fcSetOperatorPassword 0x65 //(101) -#define fcSetOperatorName 0x66 //(102) -#define fcInfoByCurrentInv 0x67 //(103) -#define fcOperatorReport 0x69 //(105) -#define fcOpenCashDrawer 0x6A //(106) -#define fcPrgAndReadArticle 0x6B //(107) -#define fcPrintDuplicateInv 0x6D //(109) -#define fcDailyReportByTypesOfPayment 0x6E //(110) -#define fcReportByArticle 0x6F //(111) -#define fcReportByOperators 0x70 //(112) -#define fcGetLastPrintedDocNumber 0x71 //(113) -#define fcGetInfoOfFiscalRecords 0x72 //(114) -#define fcPrgGraphicLogo 0x73 //(115) -#define fcReadFiscalMemoryBlock 0x74 //(116) -#define fcEJ 0x78 //(120) -#define fcReadROMBlock 0x79 //(121) -#define fcServiceClearEJ 0x7E //(126) -#define fcServiceClearRAM 0x7F //(127) -//--------------------------------------------------------------------------- -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufLen); -//--------------------------------------------------------------------------- -typedef char int1; -typedef unsigned char uint1; -typedef unsigned int uint4; -#if !defined( _BORLAND ) -// typedef unsigned short Word; // 0..65535 -#endif -typedef unsigned char BYTE; -//--------------------------------------------------------------------------- -// -// 6 -class MyStatus -{ - private: - protected: - public: - bool s[6][8]; - MyStatus(); - void SetStatus(uint1* status); - std::string getStatus(); // -}; -//--------------------------------------------------------------------------- -class FP300KZ : public CPrinter -{ - private: - unsigned char ReadAr[255]; ///< - unsigned char FrameSeqNumber; ///< - unsigned char CommandName; ///< . - uint1 getNextSeq(); - bool Sw1,Sw2,Sw3,Sw4,Sw5,Sw6,Sw7,Sw8; // DiagnosticInfo - bool m_SaveLog; ///< - protected: - std::string m_ErrCode; ///< - public: - std::string PrinterName; ///< - std::string PrinterVersion; ///< - std::string PrinterNumber; ///< () -// int PrinterDecimal; ///< ( GetTaxRates) m_Dots - //int iResultCode; ///< - - - int CheckCount; ///< - std::string Password; ///< - ComPort* cPort; - MyStatus* Status; - FP300KZ(); - virtual ~FP300KZ(); - - bool PrinterInit(); // . - - std::string getErrorDesc(int rc); - std::string getLastErrorDest(); - int ResultCode(); // - - bool SendPMessage(uint1* msg,uint1 size,std::string& answer); - bool OpenCOMPort(int ComNumber = -1,int BaudRate = -1); ///< COM - bool Print(); ///< - void LoadSetup(); ///bOpen; }; - bool CashInOut(bool test, double sum) // + - - { - float Amount=(float)sum; //10 - std::string ExitCode; - double CashSum; - double ServIn; - double ServOut; - return ParishOrConsumption("1",Password,Amount,L"",L"",ExitCode,CashSum,ServIn,ServOut); - }; - virtual bool GetCashSum(double& sum) //< . - { - std::string ExitCode; - double CashSum=0,ServIn=0,ServOut=0; - bool b=ParishOrConsumption("1",Password,0.0,L"",L"",ExitCode,CashSum,ServIn,ServOut); - - sum=CashSum; - return b; - }; - bool PrintZReport(); ///< - bool PrintXReport(); ///< - bool PrintLine(std::wstring line); // ( ) -}; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.h.~2~ b/devices/Printers/FP300KZ/__history/FP300KZ.h.~2~ deleted file mode 100644 index c392b40..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.h.~2~ +++ /dev/null @@ -1,274 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterH -#define PrinterH -//--------------------------------------------------------------------------- -#include "../Printer.h" -#include "../../ComPort.h" -#include -#include -//--------------------------------------------------------------------------- -#define fcDisplayClear 0x21 //(33) -#define fcDispalyLower 0x23 //(35) -#define fcOpenServiceInv 0x26 //(38) -#define fcCloseServiceInv 0x27 //(39) -#define fcSwitchPrg 0x29 //(41) -#define fcPrintFreeTextInServiceInv 0x2A //(42) -#define fcPrintSetup 0x2B //(43) HEADER FOOTER -#define fcFeedPaper 0x2C //(44) -#define fcCutPaper 0x2D //(45) -#define fcDispalyUpper 0x2F //(47) -#define fcOpenFiscalInv 0x30 //(48) () -#define fcRegisterSale 0x31 //(49) -#define fcReportOnTaxRates 0x32 //(50) -#define fcSubtotal 0x33 //(51) -#define fcRegisterSaleDisp 0x34 //(52) -#define fcTotal 0x35 //(53) () -#define fcPrintFreeTextInFiscalInv 0x36 //(54) -#define fcCloseFiscalInv 0x38 //(56) -#define fcRegisterArticleSale 0x3A //(58) -#define fcCancelFiscalInv 0x3C //(60) () -#define fcSetDateTime 0x3D //(61) -#define fcGetDateTime 0x3E //(62) -#define fcDisplayDateTime 0x3F //(63) -#define fcLatestFiscalRecord 0x40 //(64) -#define fcAmountOfSavingsPerDay 0x41 //(65) -#define fcDepartmentReport 0x42 //(66) -#define fcFreeFieldsByFiscalMemory 0x44 //(68) -#define fcDailyFinancialReport 0x45 //(69) -#define fcParishOrConsumption 0x46 //(70) -#define fcPrintDiagnostic 0x47 //(71) -#define fcFiscalization 0x48 //(72) -#define fcFullFiscalReportByNumber 0x49 //(73) -#define fcGetStatusFP 0x4A //(74) -#define fcFiscalTransactionsStatus 0x4C //(76) -#define fcReduceFiscalReportByDate 0x4F //(79) -#define fcBeep 0x50 //(80) -#define fcOpenBackInv 0x52 //(82) -#define fcSetTaxRates 0x53 //(83) -#define fcPrintBarCode 0x54 //(84) - -#define fcSetAddTypesOfPayment 0x55 //(85) -#define fcDateOfLastEntryByFiscalMemory 0x56 //(86) -#define fcSetDepartmentName 0x57 //(87) -#define fcGetDepartmentInfo 0x58 //(88) -#define fcPrgProductionTestArea 0x59 //(89) -#define fcDiagnosticInfo 0x5A //(90) -#define fcSetManufacturersSerialNumber 0x5B //(91) -#define fcFullFiscalReportByDate 0x5E //(94) -#define fcReduceFiscalReportByNumber 0x5F //(95) -#define fcGetTaxRates 0x61 //(97) -#define fcSetRNNAndRNM 0x62 //(98) -#define fcGetRNNAndRNM 0x63 //(99) -#define fcDispalyFree 0x64 //(100) -#define fcSetOperatorPassword 0x65 //(101) -#define fcSetOperatorName 0x66 //(102) -#define fcInfoByCurrentInv 0x67 //(103) -#define fcOperatorReport 0x69 //(105) -#define fcOpenCashDrawer 0x6A //(106) -#define fcPrgAndReadArticle 0x6B //(107) -#define fcPrintDuplicateInv 0x6D //(109) -#define fcDailyReportByTypesOfPayment 0x6E //(110) -#define fcReportByArticle 0x6F //(111) -#define fcReportByOperators 0x70 //(112) -#define fcGetLastPrintedDocNumber 0x71 //(113) -#define fcGetInfoOfFiscalRecords 0x72 //(114) -#define fcPrgGraphicLogo 0x73 //(115) -#define fcReadFiscalMemoryBlock 0x74 //(116) -#define fcEJ 0x78 //(120) -#define fcReadROMBlock 0x79 //(121) -#define fcServiceClearEJ 0x7E //(126) -#define fcServiceClearRAM 0x7F //(127) -//--------------------------------------------------------------------------- -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufLen); -//--------------------------------------------------------------------------- -typedef char int1; -typedef unsigned char uint1; -typedef unsigned int uint4; -#if !defined( _BORLAND ) -// typedef unsigned short Word; // 0..65535 -#endif -typedef unsigned char BYTE; -//--------------------------------------------------------------------------- -// -// 6 -class MyStatus -{ - private: - protected: - public: - bool s[6][8]; - MyStatus(); - void SetStatus(uint1* status); - std::string getStatus(); // -}; -//--------------------------------------------------------------------------- -class FP300KZ : public CPrinter -{ - private: - unsigned char ReadAr[255]; ///< - unsigned char FrameSeqNumber; ///< - unsigned char CommandName; ///< . - uint1 getNextSeq(); - bool Sw1,Sw2,Sw3,Sw4,Sw5,Sw6,Sw7,Sw8; // DiagnosticInfo - bool m_SaveLog; ///< - protected: - std::string m_ErrCode; ///< - public: - std::string PrinterName; ///< - std::string PrinterVersion; ///< - std::string PrinterNumber; ///< () -// int PrinterDecimal; ///< ( GetTaxRates) m_Dots - //int iResultCode; ///< - - - int CheckCount; ///< - std::string Password; ///< - ComPort* cPort; - MyStatus* Status; - FP300KZ(); - virtual ~FP300KZ(); - - bool PrinterInit(); // . - - std::string getErrorDesc(int rc); - std::string getLastErrorDest(); - int ResultCode(); // - - bool SendPMessage(uint1* msg,uint1 size,std::string& answer); - bool OpenCOMPort(int ComNumber = -1,int BaudRate = -1); ///< COM - bool Print(); ///< - void LoadSetup(); ///bOpen; }; - bool CashInOut(bool test, double sum) // + - - { - float Amount=(float)sum; //10 - std::string ExitCode; - double CashSum; - double ServIn; - double ServOut; - return ParishOrConsumption("1",Password,Amount,L"",L"",ExitCode,CashSum,ServIn,ServOut); - }; - virtual bool GetCashSum(double& sum) //< . - { - std::string ExitCode; - double CashSum=0,ServIn=0,ServOut=0; - bool b=ParishOrConsumption("1",Password,0.0,L"",L"",ExitCode,CashSum,ServIn,ServOut); - - sum=CashSum; - return b; - }; - bool PrintZReport(); ///< - bool PrintXReport(); ///< - bool PrintLine(std::wstring line); // ( ) -}; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.h.~3~ b/devices/Printers/FP300KZ/__history/FP300KZ.h.~3~ deleted file mode 100644 index bb4f67e..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.h.~3~ +++ /dev/null @@ -1,278 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterH -#define PrinterH -//--------------------------------------------------------------------------- -#include "../Printer.h" -#include "../../ComPort.h" -#include -#include -//--------------------------------------------------------------------------- -#define fcDisplayClear 0x21 //(33) -#define fcDispalyLower 0x23 //(35) -#define fcOpenServiceInv 0x26 //(38) -#define fcCloseServiceInv 0x27 //(39) -#define fcSwitchPrg 0x29 //(41) -#define fcPrintFreeTextInServiceInv 0x2A //(42) -#define fcPrintSetup 0x2B //(43) HEADER FOOTER -#define fcFeedPaper 0x2C //(44) -#define fcCutPaper 0x2D //(45) -#define fcDispalyUpper 0x2F //(47) -#define fcOpenFiscalInv 0x30 //(48) () -#define fcRegisterSale 0x31 //(49) -#define fcReportOnTaxRates 0x32 //(50) -#define fcSubtotal 0x33 //(51) -#define fcRegisterSaleDisp 0x34 //(52) -#define fcTotal 0x35 //(53) () -#define fcPrintFreeTextInFiscalInv 0x36 //(54) -#define fcCloseFiscalInv 0x38 //(56) -#define fcRegisterArticleSale 0x3A //(58) -#define fcCancelFiscalInv 0x3C //(60) () -#define fcSetDateTime 0x3D //(61) -#define fcGetDateTime 0x3E //(62) -#define fcDisplayDateTime 0x3F //(63) -#define fcLatestFiscalRecord 0x40 //(64) -#define fcAmountOfSavingsPerDay 0x41 //(65) -#define fcDepartmentReport 0x42 //(66) -#define fcFreeFieldsByFiscalMemory 0x44 //(68) -#define fcDailyFinancialReport 0x45 //(69) -#define fcParishOrConsumption 0x46 //(70) -#define fcPrintDiagnostic 0x47 //(71) -#define fcFiscalization 0x48 //(72) -#define fcFullFiscalReportByNumber 0x49 //(73) -#define fcGetStatusFP 0x4A //(74) -#define fcFiscalTransactionsStatus 0x4C //(76) -#define fcReduceFiscalReportByDate 0x4F //(79) -#define fcBeep 0x50 //(80) -#define fcOpenBackInv 0x52 //(82) -#define fcSetTaxRates 0x53 //(83) -#define fcPrintBarCode 0x54 //(84) - -#define fcSetAddTypesOfPayment 0x55 //(85) -#define fcDateOfLastEntryByFiscalMemory 0x56 //(86) -#define fcSetDepartmentName 0x57 //(87) -#define fcGetDepartmentInfo 0x58 //(88) -#define fcPrgProductionTestArea 0x59 //(89) -#define fcDiagnosticInfo 0x5A //(90) -#define fcSetManufacturersSerialNumber 0x5B //(91) -#define fcFullFiscalReportByDate 0x5E //(94) -#define fcReduceFiscalReportByNumber 0x5F //(95) -#define fcGetTaxRates 0x61 //(97) -#define fcSetRNNAndRNM 0x62 //(98) -#define fcGetRNNAndRNM 0x63 //(99) -#define fcDispalyFree 0x64 //(100) -#define fcSetOperatorPassword 0x65 //(101) -#define fcSetOperatorName 0x66 //(102) -#define fcInfoByCurrentInv 0x67 //(103) -#define fcOperatorReport 0x69 //(105) -#define fcOpenCashDrawer 0x6A //(106) -#define fcPrgAndReadArticle 0x6B //(107) -#define fcPrintDuplicateInv 0x6D //(109) -#define fcDailyReportByTypesOfPayment 0x6E //(110) -#define fcReportByArticle 0x6F //(111) -#define fcReportByOperators 0x70 //(112) -#define fcGetLastPrintedDocNumber 0x71 //(113) -#define fcGetInfoOfFiscalRecords 0x72 //(114) -#define fcPrgGraphicLogo 0x73 //(115) -#define fcReadFiscalMemoryBlock 0x74 //(116) -#define fcPrintEJ 0x78 //(119) -#define fcEJ 0x78 //(120) -#define fcReadROMBlock 0x79 //(121) -#define fcServiceClearEJ 0x7E //(126) -#define fcServiceClearRAM 0x7F //(127) -//--------------------------------------------------------------------------- -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufLen); -//--------------------------------------------------------------------------- -typedef char int1; -typedef unsigned char uint1; -typedef unsigned int uint4; -#if !defined( _BORLAND ) -// typedef unsigned short Word; // 0..65535 -#endif -typedef unsigned char BYTE; -//--------------------------------------------------------------------------- -// -// 6 -class MyStatus -{ - private: - protected: - public: - bool s[6][8]; - MyStatus(); - void SetStatus(uint1* status); - std::string getStatus(); // -}; -//--------------------------------------------------------------------------- -class FP300KZ : public CPrinter -{ - private: - unsigned char ReadAr[255]; ///< - unsigned char FrameSeqNumber; ///< - unsigned char CommandName; ///< . - uint1 getNextSeq(); - bool Sw1,Sw2,Sw3,Sw4,Sw5,Sw6,Sw7,Sw8; // DiagnosticInfo - bool m_SaveLog; ///< - protected: - std::string m_ErrCode; ///< - public: - std::string PrinterName; ///< - std::string PrinterVersion; ///< - std::string PrinterNumber; ///< () -// int PrinterDecimal; ///< ( GetTaxRates) m_Dots - //int iResultCode; ///< - - - int CheckCount; ///< - std::string Password; ///< - ComPort* cPort; - MyStatus* Status; - FP300KZ(); - virtual ~FP300KZ(); - - bool PrinterInit(); // . - - std::string getErrorDesc(int rc); - std::string getLastErrorDest(); - int ResultCode(); // - - bool SendPMessage(uint1* msg,uint1 size,std::string& answer); - bool OpenCOMPort(int ComNumber = -1,int BaudRate = -1); ///< COM - bool Print(); ///< - void LoadSetup(); ///bOpen; }; - bool CashInOut(bool test, double sum) // + - - { - float Amount=(float)sum; //10 - std::string ExitCode; - double CashSum; - double ServIn; - double ServOut; - return ParishOrConsumption("1",Password,Amount,L"",L"",ExitCode,CashSum,ServIn,ServOut); - }; - virtual bool GetCashSum(double& sum) //< . - { - std::string ExitCode; - double CashSum=0,ServIn=0,ServOut=0; - bool b=ParishOrConsumption("1",Password,0.0,L"",L"",ExitCode,CashSum,ServIn,ServOut); - - sum=CashSum; - return b; - }; - bool PrintZReport(); ///< - bool PrintXReport(); ///< - bool PrintLine(std::wstring line); // ( ) -}; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.h.~4~ b/devices/Printers/FP300KZ/__history/FP300KZ.h.~4~ deleted file mode 100644 index bb4f67e..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.h.~4~ +++ /dev/null @@ -1,278 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterH -#define PrinterH -//--------------------------------------------------------------------------- -#include "../Printer.h" -#include "../../ComPort.h" -#include -#include -//--------------------------------------------------------------------------- -#define fcDisplayClear 0x21 //(33) -#define fcDispalyLower 0x23 //(35) -#define fcOpenServiceInv 0x26 //(38) -#define fcCloseServiceInv 0x27 //(39) -#define fcSwitchPrg 0x29 //(41) -#define fcPrintFreeTextInServiceInv 0x2A //(42) -#define fcPrintSetup 0x2B //(43) HEADER FOOTER -#define fcFeedPaper 0x2C //(44) -#define fcCutPaper 0x2D //(45) -#define fcDispalyUpper 0x2F //(47) -#define fcOpenFiscalInv 0x30 //(48) () -#define fcRegisterSale 0x31 //(49) -#define fcReportOnTaxRates 0x32 //(50) -#define fcSubtotal 0x33 //(51) -#define fcRegisterSaleDisp 0x34 //(52) -#define fcTotal 0x35 //(53) () -#define fcPrintFreeTextInFiscalInv 0x36 //(54) -#define fcCloseFiscalInv 0x38 //(56) -#define fcRegisterArticleSale 0x3A //(58) -#define fcCancelFiscalInv 0x3C //(60) () -#define fcSetDateTime 0x3D //(61) -#define fcGetDateTime 0x3E //(62) -#define fcDisplayDateTime 0x3F //(63) -#define fcLatestFiscalRecord 0x40 //(64) -#define fcAmountOfSavingsPerDay 0x41 //(65) -#define fcDepartmentReport 0x42 //(66) -#define fcFreeFieldsByFiscalMemory 0x44 //(68) -#define fcDailyFinancialReport 0x45 //(69) -#define fcParishOrConsumption 0x46 //(70) -#define fcPrintDiagnostic 0x47 //(71) -#define fcFiscalization 0x48 //(72) -#define fcFullFiscalReportByNumber 0x49 //(73) -#define fcGetStatusFP 0x4A //(74) -#define fcFiscalTransactionsStatus 0x4C //(76) -#define fcReduceFiscalReportByDate 0x4F //(79) -#define fcBeep 0x50 //(80) -#define fcOpenBackInv 0x52 //(82) -#define fcSetTaxRates 0x53 //(83) -#define fcPrintBarCode 0x54 //(84) - -#define fcSetAddTypesOfPayment 0x55 //(85) -#define fcDateOfLastEntryByFiscalMemory 0x56 //(86) -#define fcSetDepartmentName 0x57 //(87) -#define fcGetDepartmentInfo 0x58 //(88) -#define fcPrgProductionTestArea 0x59 //(89) -#define fcDiagnosticInfo 0x5A //(90) -#define fcSetManufacturersSerialNumber 0x5B //(91) -#define fcFullFiscalReportByDate 0x5E //(94) -#define fcReduceFiscalReportByNumber 0x5F //(95) -#define fcGetTaxRates 0x61 //(97) -#define fcSetRNNAndRNM 0x62 //(98) -#define fcGetRNNAndRNM 0x63 //(99) -#define fcDispalyFree 0x64 //(100) -#define fcSetOperatorPassword 0x65 //(101) -#define fcSetOperatorName 0x66 //(102) -#define fcInfoByCurrentInv 0x67 //(103) -#define fcOperatorReport 0x69 //(105) -#define fcOpenCashDrawer 0x6A //(106) -#define fcPrgAndReadArticle 0x6B //(107) -#define fcPrintDuplicateInv 0x6D //(109) -#define fcDailyReportByTypesOfPayment 0x6E //(110) -#define fcReportByArticle 0x6F //(111) -#define fcReportByOperators 0x70 //(112) -#define fcGetLastPrintedDocNumber 0x71 //(113) -#define fcGetInfoOfFiscalRecords 0x72 //(114) -#define fcPrgGraphicLogo 0x73 //(115) -#define fcReadFiscalMemoryBlock 0x74 //(116) -#define fcPrintEJ 0x78 //(119) -#define fcEJ 0x78 //(120) -#define fcReadROMBlock 0x79 //(121) -#define fcServiceClearEJ 0x7E //(126) -#define fcServiceClearRAM 0x7F //(127) -//--------------------------------------------------------------------------- -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufLen); -//--------------------------------------------------------------------------- -typedef char int1; -typedef unsigned char uint1; -typedef unsigned int uint4; -#if !defined( _BORLAND ) -// typedef unsigned short Word; // 0..65535 -#endif -typedef unsigned char BYTE; -//--------------------------------------------------------------------------- -// -// 6 -class MyStatus -{ - private: - protected: - public: - bool s[6][8]; - MyStatus(); - void SetStatus(uint1* status); - std::string getStatus(); // -}; -//--------------------------------------------------------------------------- -class FP300KZ : public CPrinter -{ - private: - unsigned char ReadAr[255]; ///< - unsigned char FrameSeqNumber; ///< - unsigned char CommandName; ///< . - uint1 getNextSeq(); - bool Sw1,Sw2,Sw3,Sw4,Sw5,Sw6,Sw7,Sw8; // DiagnosticInfo - bool m_SaveLog; ///< - protected: - std::string m_ErrCode; ///< - public: - std::string PrinterName; ///< - std::string PrinterVersion; ///< - std::string PrinterNumber; ///< () -// int PrinterDecimal; ///< ( GetTaxRates) m_Dots - //int iResultCode; ///< - - - int CheckCount; ///< - std::string Password; ///< - ComPort* cPort; - MyStatus* Status; - FP300KZ(); - virtual ~FP300KZ(); - - bool PrinterInit(); // . - - std::string getErrorDesc(int rc); - std::string getLastErrorDest(); - int ResultCode(); // - - bool SendPMessage(uint1* msg,uint1 size,std::string& answer); - bool OpenCOMPort(int ComNumber = -1,int BaudRate = -1); ///< COM - bool Print(); ///< - void LoadSetup(); ///bOpen; }; - bool CashInOut(bool test, double sum) // + - - { - float Amount=(float)sum; //10 - std::string ExitCode; - double CashSum; - double ServIn; - double ServOut; - return ParishOrConsumption("1",Password,Amount,L"",L"",ExitCode,CashSum,ServIn,ServOut); - }; - virtual bool GetCashSum(double& sum) //< . - { - std::string ExitCode; - double CashSum=0,ServIn=0,ServOut=0; - bool b=ParishOrConsumption("1",Password,0.0,L"",L"",ExitCode,CashSum,ServIn,ServOut); - - sum=CashSum; - return b; - }; - bool PrintZReport(); ///< - bool PrintXReport(); ///< - bool PrintLine(std::wstring line); // ( ) -}; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.h.~5~ b/devices/Printers/FP300KZ/__history/FP300KZ.h.~5~ deleted file mode 100644 index 07509b1..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.h.~5~ +++ /dev/null @@ -1,279 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterH -#define PrinterH -//--------------------------------------------------------------------------- -#include "../Printer.h" -#include "../../ComPort.h" -#include -#include -//--------------------------------------------------------------------------- -#define fcDisplayClear 0x21 //(33) -#define fcDispalyLower 0x23 //(35) -#define fcOpenServiceInv 0x26 //(38) -#define fcCloseServiceInv 0x27 //(39) -#define fcSwitchPrg 0x29 //(41) -#define fcPrintFreeTextInServiceInv 0x2A //(42) -#define fcPrintSetup 0x2B //(43) HEADER FOOTER -#define fcFeedPaper 0x2C //(44) -#define fcCutPaper 0x2D //(45) -#define fcDispalyUpper 0x2F //(47) -#define fcOpenFiscalInv 0x30 //(48) () -#define fcRegisterSale 0x31 //(49) -#define fcReportOnTaxRates 0x32 //(50) -#define fcSubtotal 0x33 //(51) -#define fcRegisterSaleDisp 0x34 //(52) -#define fcTotal 0x35 //(53) () -#define fcPrintFreeTextInFiscalInv 0x36 //(54) -#define fcCloseFiscalInv 0x38 //(56) -#define fcRegisterArticleSale 0x3A //(58) -#define fcCancelFiscalInv 0x3C //(60) () -#define fcSetDateTime 0x3D //(61) -#define fcGetDateTime 0x3E //(62) -#define fcDisplayDateTime 0x3F //(63) -#define fcLatestFiscalRecord 0x40 //(64) -#define fcAmountOfSavingsPerDay 0x41 //(65) -#define fcDepartmentReport 0x42 //(66) -#define fcFreeFieldsByFiscalMemory 0x44 //(68) -#define fcDailyFinancialReport 0x45 //(69) -#define fcParishOrConsumption 0x46 //(70) -#define fcPrintDiagnostic 0x47 //(71) -#define fcFiscalization 0x48 //(72) -#define fcFullFiscalReportByNumber 0x49 //(73) -#define fcGetStatusFP 0x4A //(74) -#define fcFiscalTransactionsStatus 0x4C //(76) -#define fcReduceFiscalReportByDate 0x4F //(79) -#define fcBeep 0x50 //(80) -#define fcOpenBackInv 0x52 //(82) -#define fcSetTaxRates 0x53 //(83) -#define fcPrintBarCode 0x54 //(84) - -#define fcSetAddTypesOfPayment 0x55 //(85) -#define fcDateOfLastEntryByFiscalMemory 0x56 //(86) -#define fcSetDepartmentName 0x57 //(87) -#define fcGetDepartmentInfo 0x58 //(88) -#define fcPrgProductionTestArea 0x59 //(89) -#define fcDiagnosticInfo 0x5A //(90) -#define fcSetManufacturersSerialNumber 0x5B //(91) -#define fcFullFiscalReportByDate 0x5E //(94) -#define fcReduceFiscalReportByNumber 0x5F //(95) -#define fcGetTaxRates 0x61 //(97) -#define fcSetRNNAndRNM 0x62 //(98) -#define fcGetRNNAndRNM 0x63 //(99) -#define fcDispalyFree 0x64 //(100) -#define fcSetOperatorPassword 0x65 //(101) -#define fcSetOperatorName 0x66 //(102) -#define fcInfoByCurrentInv 0x67 //(103) -#define fcOperatorReport 0x69 //(105) -#define fcOpenCashDrawer 0x6A //(106) -#define fcPrgAndReadArticle 0x6B //(107) -#define fcPrintDuplicateInv 0x6D //(109) -#define fcDailyReportByTypesOfPayment 0x6E //(110) -#define fcReportByArticle 0x6F //(111) -#define fcReportByOperators 0x70 //(112) -#define fcGetLastPrintedDocNumber 0x71 //(113) -#define fcGetInfoOfFiscalRecords 0x72 //(114) -#define fcPrgGraphicLogo 0x73 //(115) -#define fcReadFiscalMemoryBlock 0x74 //(116) -#define fcPrintEJ 0x78 //(119) -#define fcEJ 0x78 //(120) -//#define fcPrintEJ 0x78 //(119) -#define fcReadROMBlock 0x79 //(121) -#define fcServiceClearEJ 0x7E //(126) -#define fcServiceClearRAM 0x7F //(127) -//--------------------------------------------------------------------------- -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufLen); -//--------------------------------------------------------------------------- -typedef char int1; -typedef unsigned char uint1; -typedef unsigned int uint4; -#if !defined( _BORLAND ) -// typedef unsigned short Word; // 0..65535 -#endif -typedef unsigned char BYTE; -//--------------------------------------------------------------------------- -// -// 6 -class MyStatus -{ - private: - protected: - public: - bool s[6][8]; - MyStatus(); - void SetStatus(uint1* status); - std::string getStatus(); // -}; -//--------------------------------------------------------------------------- -class FP300KZ : public CPrinter -{ - private: - unsigned char ReadAr[255]; ///< - unsigned char FrameSeqNumber; ///< - unsigned char CommandName; ///< . - uint1 getNextSeq(); - bool Sw1,Sw2,Sw3,Sw4,Sw5,Sw6,Sw7,Sw8; // DiagnosticInfo - bool m_SaveLog; ///< - protected: - std::string m_ErrCode; ///< - public: - std::string PrinterName; ///< - std::string PrinterVersion; ///< - std::string PrinterNumber; ///< () -// int PrinterDecimal; ///< ( GetTaxRates) m_Dots - //int iResultCode; ///< - - - int CheckCount; ///< - std::string Password; ///< - ComPort* cPort; - MyStatus* Status; - FP300KZ(); - virtual ~FP300KZ(); - - bool PrinterInit(); // . - - std::string getErrorDesc(int rc); - std::string getLastErrorDest(); - int ResultCode(); // - - bool SendPMessage(uint1* msg,uint1 size,std::string& answer); - bool OpenCOMPort(int ComNumber = -1,int BaudRate = -1); ///< COM - bool Print(); ///< - void LoadSetup(); ///bOpen; }; - bool CashInOut(bool test, double sum) // + - - { - float Amount=(float)sum; //10 - std::string ExitCode; - double CashSum; - double ServIn; - double ServOut; - return ParishOrConsumption("1",Password,Amount,L"",L"",ExitCode,CashSum,ServIn,ServOut); - }; - virtual bool GetCashSum(double& sum) //< . - { - std::string ExitCode; - double CashSum=0,ServIn=0,ServOut=0; - bool b=ParishOrConsumption("1",Password,0.0,L"",L"",ExitCode,CashSum,ServIn,ServOut); - - sum=CashSum; - return b; - }; - bool PrintZReport(); ///< - bool PrintXReport(); ///< - bool PrintLine(std::wstring line); // ( ) -}; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.h.~6~ b/devices/Printers/FP300KZ/__history/FP300KZ.h.~6~ deleted file mode 100644 index 9da1913..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.h.~6~ +++ /dev/null @@ -1,279 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterH -#define PrinterH -//--------------------------------------------------------------------------- -#include "../Printer.h" -#include "../../ComPort.h" -#include -#include -//--------------------------------------------------------------------------- -#define fcDisplayClear 0x21 //(33) -#define fcDispalyLower 0x23 //(35) -#define fcOpenServiceInv 0x26 //(38) -#define fcCloseServiceInv 0x27 //(39) -#define fcSwitchPrg 0x29 //(41) -#define fcPrintFreeTextInServiceInv 0x2A //(42) -#define fcPrintSetup 0x2B //(43) HEADER FOOTER -#define fcFeedPaper 0x2C //(44) -#define fcCutPaper 0x2D //(45) -#define fcDispalyUpper 0x2F //(47) -#define fcOpenFiscalInv 0x30 //(48) () -#define fcRegisterSale 0x31 //(49) -#define fcReportOnTaxRates 0x32 //(50) -#define fcSubtotal 0x33 //(51) -#define fcRegisterSaleDisp 0x34 //(52) -#define fcTotal 0x35 //(53) () -#define fcPrintFreeTextInFiscalInv 0x36 //(54) -#define fcCloseFiscalInv 0x38 //(56) -#define fcRegisterArticleSale 0x3A //(58) -#define fcCancelFiscalInv 0x3C //(60) () -#define fcSetDateTime 0x3D //(61) -#define fcGetDateTime 0x3E //(62) -#define fcDisplayDateTime 0x3F //(63) -#define fcLatestFiscalRecord 0x40 //(64) -#define fcAmountOfSavingsPerDay 0x41 //(65) -#define fcDepartmentReport 0x42 //(66) -#define fcFreeFieldsByFiscalMemory 0x44 //(68) -#define fcDailyFinancialReport 0x45 //(69) -#define fcParishOrConsumption 0x46 //(70) -#define fcPrintDiagnostic 0x47 //(71) -#define fcFiscalization 0x48 //(72) -#define fcFullFiscalReportByNumber 0x49 //(73) -#define fcGetStatusFP 0x4A //(74) -#define fcFiscalTransactionsStatus 0x4C //(76) -#define fcReduceFiscalReportByDate 0x4F //(79) -#define fcBeep 0x50 //(80) -#define fcOpenBackInv 0x52 //(82) -#define fcSetTaxRates 0x53 //(83) -#define fcPrintBarCode 0x54 //(84) - -#define fcSetAddTypesOfPayment 0x55 //(85) -#define fcDateOfLastEntryByFiscalMemory 0x56 //(86) -#define fcSetDepartmentName 0x57 //(87) -#define fcGetDepartmentInfo 0x58 //(88) -#define fcPrgProductionTestArea 0x59 //(89) -#define fcDiagnosticInfo 0x5A //(90) -#define fcSetManufacturersSerialNumber 0x5B //(91) -#define fcFullFiscalReportByDate 0x5E //(94) -#define fcReduceFiscalReportByNumber 0x5F //(95) -#define fcGetTaxRates 0x61 //(97) -#define fcSetRNNAndRNM 0x62 //(98) -#define fcGetRNNAndRNM 0x63 //(99) -#define fcDispalyFree 0x64 //(100) -#define fcSetOperatorPassword 0x65 //(101) -#define fcSetOperatorName 0x66 //(102) -#define fcInfoByCurrentInv 0x67 //(103) -#define fcOperatorReport 0x69 //(105) -#define fcOpenCashDrawer 0x6A //(106) -#define fcPrgAndReadArticle 0x6B //(107) -#define fcPrintDuplicateInv 0x6D //(109) -#define fcDailyReportByTypesOfPayment 0x6E //(110) -#define fcReportByArticle 0x6F //(111) -#define fcReportByOperators 0x70 //(112) -#define fcGetLastPrintedDocNumber 0x71 //(113) -#define fcGetInfoOfFiscalRecords 0x72 //(114) -#define fcPrgGraphicLogo 0x73 //(115) -#define fcReadFiscalMemoryBlock 0x74 //(116) -#define fcPrintEJ 0x78 //(119) -#define fcEJ 0x78 //(120) -//#define fcPrintEJ 0x78 //(119) -#define fcReadROMBlock 0x79 //(121) -#define fcServiceClearEJ 0x7E //(126) -#define fcServiceClearRAM 0x7F //(127) -//--------------------------------------------------------------------------- -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufLen); -//--------------------------------------------------------------------------- -typedef char int1; -typedef unsigned char uint1; -typedef unsigned int uint4; -#if !defined( _BORLAND ) -// typedef unsigned short Word; // 0..65535 -#endif -typedef unsigned char BYTE; -//--------------------------------------------------------------------------- -// -// 6 -class MyStatus -{ - private: - protected: - public: - bool s[6][8]; - MyStatus(); - void SetStatus(uint1* status); - std::string getStatus(); // -}; -//--------------------------------------------------------------------------- -class FP300KZ : public CPrinter -{ - private: - unsigned char ReadAr[255]; ///< - unsigned char FrameSeqNumber; ///< - unsigned char CommandName; ///< . - uint1 getNextSeq(); - bool Sw1,Sw2,Sw3,Sw4,Sw5,Sw6,Sw7,Sw8; // DiagnosticInfo - bool m_SaveLog; ///< - protected: - std::string m_ErrCode; ///< - public: - std::string PrinterName; ///< - std::string PrinterVersion; ///< - std::string PrinterNumber; ///< () -// int PrinterDecimal; ///< ( GetTaxRates) m_Dots - //int iResultCode; ///< - - - int CheckCount; ///< - std::string Password; ///< - ComPort* cPort; - MyStatus* Status; - FP300KZ(); - virtual ~FP300KZ(); - - MyError PrinterInit(); // . - - std::string getErrorDesc(int rc); - std::string getLastErrorDest(); - int ResultCode(); // - - bool SendPMessage(uint1* msg,uint1 size,std::string& answer); - bool OpenCOMPort(int ComNumber = -1,int BaudRate = -1); ///< COM - bool Print(); ///< - void LoadSetup(); ///bOpen; }; - bool CashInOut(bool test, double sum) // + - - { - float Amount=(float)sum; //10 - std::string ExitCode; - double CashSum; - double ServIn; - double ServOut; - return ParishOrConsumption("1",Password,Amount,L"",L"",ExitCode,CashSum,ServIn,ServOut); - }; - virtual bool GetCashSum(double& sum) //< . - { - std::string ExitCode; - double CashSum=0,ServIn=0,ServOut=0; - bool b=ParishOrConsumption("1",Password,0.0,L"",L"",ExitCode,CashSum,ServIn,ServOut); - - sum=CashSum; - return b; - }; - bool PrintZReport(); ///< - bool PrintXReport(); ///< - bool PrintLine(std::wstring line); // ( ) -}; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.h.~7~ b/devices/Printers/FP300KZ/__history/FP300KZ.h.~7~ deleted file mode 100644 index 821e421..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.h.~7~ +++ /dev/null @@ -1,279 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterH -#define PrinterH -//--------------------------------------------------------------------------- -#include "../Printer.h" -#include "../../ComPort.h" -#include -#include -//--------------------------------------------------------------------------- -#define fcDisplayClear 0x21 //(33) -#define fcDispalyLower 0x23 //(35) -#define fcOpenServiceInv 0x26 //(38) -#define fcCloseServiceInv 0x27 //(39) -#define fcSwitchPrg 0x29 //(41) -#define fcPrintFreeTextInServiceInv 0x2A //(42) -#define fcPrintSetup 0x2B //(43) HEADER FOOTER -#define fcFeedPaper 0x2C //(44) -#define fcCutPaper 0x2D //(45) -#define fcDispalyUpper 0x2F //(47) -#define fcOpenFiscalInv 0x30 //(48) () -#define fcRegisterSale 0x31 //(49) -#define fcReportOnTaxRates 0x32 //(50) -#define fcSubtotal 0x33 //(51) -#define fcRegisterSaleDisp 0x34 //(52) -#define fcTotal 0x35 //(53) () -#define fcPrintFreeTextInFiscalInv 0x36 //(54) -#define fcCloseFiscalInv 0x38 //(56) -#define fcRegisterArticleSale 0x3A //(58) -#define fcCancelFiscalInv 0x3C //(60) () -#define fcSetDateTime 0x3D //(61) -#define fcGetDateTime 0x3E //(62) -#define fcDisplayDateTime 0x3F //(63) -#define fcLatestFiscalRecord 0x40 //(64) -#define fcAmountOfSavingsPerDay 0x41 //(65) -#define fcDepartmentReport 0x42 //(66) -#define fcFreeFieldsByFiscalMemory 0x44 //(68) -#define fcDailyFinancialReport 0x45 //(69) -#define fcParishOrConsumption 0x46 //(70) -#define fcPrintDiagnostic 0x47 //(71) -#define fcFiscalization 0x48 //(72) -#define fcFullFiscalReportByNumber 0x49 //(73) -#define fcGetStatusFP 0x4A //(74) -#define fcFiscalTransactionsStatus 0x4C //(76) -#define fcReduceFiscalReportByDate 0x4F //(79) -#define fcBeep 0x50 //(80) -#define fcOpenBackInv 0x52 //(82) -#define fcSetTaxRates 0x53 //(83) -#define fcPrintBarCode 0x54 //(84) - -#define fcSetAddTypesOfPayment 0x55 //(85) -#define fcDateOfLastEntryByFiscalMemory 0x56 //(86) -#define fcSetDepartmentName 0x57 //(87) -#define fcGetDepartmentInfo 0x58 //(88) -#define fcPrgProductionTestArea 0x59 //(89) -#define fcDiagnosticInfo 0x5A //(90) -#define fcSetManufacturersSerialNumber 0x5B //(91) -#define fcFullFiscalReportByDate 0x5E //(94) -#define fcReduceFiscalReportByNumber 0x5F //(95) -#define fcGetTaxRates 0x61 //(97) -#define fcSetRNNAndRNM 0x62 //(98) -#define fcGetRNNAndRNM 0x63 //(99) -#define fcDispalyFree 0x64 //(100) -#define fcSetOperatorPassword 0x65 //(101) -#define fcSetOperatorName 0x66 //(102) -#define fcInfoByCurrentInv 0x67 //(103) -#define fcOperatorReport 0x69 //(105) -#define fcOpenCashDrawer 0x6A //(106) -#define fcPrgAndReadArticle 0x6B //(107) -#define fcPrintDuplicateInv 0x6D //(109) -#define fcDailyReportByTypesOfPayment 0x6E //(110) -#define fcReportByArticle 0x6F //(111) -#define fcReportByOperators 0x70 //(112) -#define fcGetLastPrintedDocNumber 0x71 //(113) -#define fcGetInfoOfFiscalRecords 0x72 //(114) -#define fcPrgGraphicLogo 0x73 //(115) -#define fcReadFiscalMemoryBlock 0x74 //(116) -#define fcPrintEJ 0x78 //(119) -#define fcEJ 0x78 //(120) -//#define fcPrintEJ 0x78 //(119) -#define fcReadROMBlock 0x79 //(121) -#define fcServiceClearEJ 0x7E //(126) -#define fcServiceClearRAM 0x7F //(127) -//--------------------------------------------------------------------------- -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufLen); -//--------------------------------------------------------------------------- -typedef char int1; -typedef unsigned char uint1; -typedef unsigned int uint4; -#if !defined( _BORLAND ) -// typedef unsigned short Word; // 0..65535 -#endif -typedef unsigned char BYTE; -//--------------------------------------------------------------------------- -// -// 6 -class MyStatus -{ - private: - protected: - public: - bool s[6][8]; - MyStatus(); - void SetStatus(uint1* status); - std::string getStatus(); // -}; -//--------------------------------------------------------------------------- -class FP300KZ : public CPrinter -{ - private: - unsigned char ReadAr[255]; ///< - unsigned char FrameSeqNumber; ///< - unsigned char CommandName; ///< . - uint1 getNextSeq(); - bool Sw1,Sw2,Sw3,Sw4,Sw5,Sw6,Sw7,Sw8; // DiagnosticInfo - bool m_SaveLog; ///< - protected: - std::string m_ErrCode; ///< - public: - std::string PrinterName; ///< - std::string PrinterVersion; ///< - std::string PrinterNumber; ///< () -// int PrinterDecimal; ///< ( GetTaxRates) m_Dots - //int iResultCode; ///< - - - int CheckCount; ///< - std::string Password; ///< - ComPort* cPort; - MyStatus* Status; - FP300KZ(); - virtual ~FP300KZ(); - - int PrinterInit(); // . - - std::string getErrorDesc(int rc); - std::string getLastErrorDest(); - int ResultCode(); // - - bool SendPMessage(uint1* msg,uint1 size,std::string& answer); - bool OpenCOMPort(int ComNumber = -1,int BaudRate = -1); ///< COM - bool Print(); ///< - void LoadSetup(); ///bOpen; }; - bool CashInOut(bool test, double sum) // + - - { - float Amount=(float)sum; //10 - std::string ExitCode; - double CashSum; - double ServIn; - double ServOut; - return ParishOrConsumption("1",Password,Amount,L"",L"",ExitCode,CashSum,ServIn,ServOut); - }; - virtual bool GetCashSum(double& sum) //< . - { - std::string ExitCode; - double CashSum=0,ServIn=0,ServOut=0; - bool b=ParishOrConsumption("1",Password,0.0,L"",L"",ExitCode,CashSum,ServIn,ServOut); - - sum=CashSum; - return b; - }; - bool PrintZReport(); ///< - bool PrintXReport(); ///< - bool PrintLine(std::wstring line); // ( ) -}; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/FP300KZ/__history/FP300KZ.h.~8~ b/devices/Printers/FP300KZ/__history/FP300KZ.h.~8~ deleted file mode 100644 index 699fec0..0000000 --- a/devices/Printers/FP300KZ/__history/FP300KZ.h.~8~ +++ /dev/null @@ -1,279 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterH -#define PrinterH -//--------------------------------------------------------------------------- -#include "../Printer.h" -#include "../../ComPort.h" -#include -#include -//--------------------------------------------------------------------------- -#define fcDisplayClear 0x21 //(33) -#define fcDispalyLower 0x23 //(35) -#define fcOpenServiceInv 0x26 //(38) -#define fcCloseServiceInv 0x27 //(39) -#define fcSwitchPrg 0x29 //(41) -#define fcPrintFreeTextInServiceInv 0x2A //(42) -#define fcPrintSetup 0x2B //(43) HEADER FOOTER -#define fcFeedPaper 0x2C //(44) -#define fcCutPaper 0x2D //(45) -#define fcDispalyUpper 0x2F //(47) -#define fcOpenFiscalInv 0x30 //(48) () -#define fcRegisterSale 0x31 //(49) -#define fcReportOnTaxRates 0x32 //(50) -#define fcSubtotal 0x33 //(51) -#define fcRegisterSaleDisp 0x34 //(52) -#define fcTotal 0x35 //(53) () -#define fcPrintFreeTextInFiscalInv 0x36 //(54) -#define fcCloseFiscalInv 0x38 //(56) -#define fcRegisterArticleSale 0x3A //(58) -#define fcCancelFiscalInv 0x3C //(60) () -#define fcSetDateTime 0x3D //(61) -#define fcGetDateTime 0x3E //(62) -#define fcDisplayDateTime 0x3F //(63) -#define fcLatestFiscalRecord 0x40 //(64) -#define fcAmountOfSavingsPerDay 0x41 //(65) -#define fcDepartmentReport 0x42 //(66) -#define fcFreeFieldsByFiscalMemory 0x44 //(68) -#define fcDailyFinancialReport 0x45 //(69) -#define fcParishOrConsumption 0x46 //(70) -#define fcPrintDiagnostic 0x47 //(71) -#define fcFiscalization 0x48 //(72) -#define fcFullFiscalReportByNumber 0x49 //(73) -#define fcGetStatusFP 0x4A //(74) -#define fcFiscalTransactionsStatus 0x4C //(76) -#define fcReduceFiscalReportByDate 0x4F //(79) -#define fcBeep 0x50 //(80) -#define fcOpenBackInv 0x52 //(82) -#define fcSetTaxRates 0x53 //(83) -#define fcPrintBarCode 0x54 //(84) - -#define fcSetAddTypesOfPayment 0x55 //(85) -#define fcDateOfLastEntryByFiscalMemory 0x56 //(86) -#define fcSetDepartmentName 0x57 //(87) -#define fcGetDepartmentInfo 0x58 //(88) -#define fcPrgProductionTestArea 0x59 //(89) -#define fcDiagnosticInfo 0x5A //(90) -#define fcSetManufacturersSerialNumber 0x5B //(91) -#define fcFullFiscalReportByDate 0x5E //(94) -#define fcReduceFiscalReportByNumber 0x5F //(95) -#define fcGetTaxRates 0x61 //(97) -#define fcSetRNNAndRNM 0x62 //(98) -#define fcGetRNNAndRNM 0x63 //(99) -#define fcDispalyFree 0x64 //(100) -#define fcSetOperatorPassword 0x65 //(101) -#define fcSetOperatorName 0x66 //(102) -#define fcInfoByCurrentInv 0x67 //(103) -#define fcOperatorReport 0x69 //(105) -#define fcOpenCashDrawer 0x6A //(106) -#define fcPrgAndReadArticle 0x6B //(107) -#define fcPrintDuplicateInv 0x6D //(109) -#define fcDailyReportByTypesOfPayment 0x6E //(110) -#define fcReportByArticle 0x6F //(111) -#define fcReportByOperators 0x70 //(112) -#define fcGetLastPrintedDocNumber 0x71 //(113) -#define fcGetInfoOfFiscalRecords 0x72 //(114) -#define fcPrgGraphicLogo 0x73 //(115) -#define fcReadFiscalMemoryBlock 0x74 //(116) -#define fcPrintEJ 0x78 //(119) -#define fcEJ 0x78 //(120) -//#define fcPrintEJ 0x78 //(119) -#define fcReadROMBlock 0x79 //(121) -#define fcServiceClearEJ 0x7E //(126) -#define fcServiceClearRAM 0x7F //(127) -//--------------------------------------------------------------------------- -unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufLen); -//--------------------------------------------------------------------------- -typedef char int1; -typedef unsigned char uint1; -typedef unsigned int uint4; -#if !defined( _BORLAND ) -// typedef unsigned short Word; // 0..65535 -#endif -typedef unsigned char BYTE; -//--------------------------------------------------------------------------- -// -// 6 -class MyStatus -{ - private: - protected: - public: - bool s[6][8]; - MyStatus(); - void SetStatus(uint1* status); - std::string getStatus(); // -}; -//--------------------------------------------------------------------------- -class FP300KZ : public CPrinter -{ - private: - unsigned char ReadAr[255]; ///< - unsigned char FrameSeqNumber; ///< - unsigned char CommandName; ///< . - uint1 getNextSeq(); - bool Sw1,Sw2,Sw3,Sw4,Sw5,Sw6,Sw7,Sw8; // DiagnosticInfo - bool m_SaveLog; ///< - protected: - std::string m_ErrCode; ///< - public: - std::string PrinterName; ///< - std::string PrinterVersion; ///< - std::string PrinterNumber; ///< () -// int PrinterDecimal; ///< ( GetTaxRates) m_Dots - //int iResultCode; ///< - - - int CheckCount; ///< - std::string Password; ///< - ComPort* cPort; - MyStatus* Status; - FP300KZ(); - virtual ~FP300KZ(); - - int PrinterInit(); // . - - std::string getErrorDesc(int rc); - std::string getLastErrorDest(); - int ResultCode(); // - - bool SendPMessage(uint1* msg,uint1 size,std::string& answer); - bool OpenCOMPort(int ComNumber = -1,int BaudRate = -1); ///< COM - bool Print(); ///< - void LoadSetup(); ///bOpen; }; - bool CashInOut(bool test, double sum) // + - - { - float Amount=(float)sum; //10 - std::string ExitCode; - double CashSum; - double ServIn; - double ServOut; - return ParishOrConsumption("1",Password,Amount,L"",L"",ExitCode,CashSum,ServIn,ServOut); - }; - virtual bool GetCashSum(double& sum) //< . - { - std::string ExitCode; - double CashSum=0,ServIn=0,ServOut=0; - bool b=ParishOrConsumption("1",Password,0.0,L"",L"",ExitCode,CashSum,ServIn,ServOut); - - sum=CashSum; - return b; - }; - bool PrintZReport(); ///< - bool PrintXReport(); ///< - bool PrintLine(std::wstring line); // ( ) -}; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~19~ b/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~19~ deleted file mode 100644 index a271f46..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~19~ +++ /dev/null @@ -1,928 +0,0 @@ -//--------------------------------------------------------------------------- - - -#pragma hdrstop - -#include "PrinterOPOS.h" -#include "OposFiscalPrinter_1_7_Lib_OCX.h" -//#include "OposFiscalPrinter_CCO_OCX.h" -#include "ud_Module.h" -#include -#include -#include -#include -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -char * kkm_err_msg_ru[] = { -"OK", //0 -" ID ", //1 FM ID Error -" ", //2 FM Rec Error -"Flash Chip ", //3 Flash Chip cant clear -" ", //4 FM not empty -" ", //5 FM Data destroyed -" ", //6 Cmd ignor prn mode -" ", //7 Oper code is absent -" ", //8 Doc type is absent -". ", //9 Ser num CR -" ", //10 Password error -" /", //11 Data/Time error -". . ", //12 Factory registration has already pass -" ", //13 Ser num CR destroyed -" ", //14 Fiscalize has already pass -" ", //15 Not fisc mode CR -" ", //16 Fiscalize Data destroyed -" ", //17 Rewrite is conclude -" ", //18 Rewrite is destroyed -" ", //19 Shift already open -" ", //20 Shift not opened -" ", //21 Many goods in receipt -" ", //22 EOD data in FM destroyed -" ", //23 Document format error -" ", //24 Text rewrite -" - ", //25 Many parameters in document -" -", //26 Document parameters error -" -", //27 Parameters value error -" ", //28 Object non-existent -" ", //29 Document is not finished -"/ ", //30 goods/operation description not enough -" ", //31 Check sum packet -" ", //32 Prn not ready -" ", //33 Nested interrupts -" ", //34 Check Sum Error -" ", //35 Overflow if FM -" ", //36 Unknown command -"CRC ", //37 CRC RAM -"CRC ", //38 CRC FM -" ", //39 Data port defective -" ", //40 Receipts parameters sequence -"0xy ", //41 0xy for required properties -" ", //42 Length request -" ", //43 number capacity -"", //44 Overflow -" ", //45 Number is absent -" ", //46 Not response -" ", //47 Transmission error -". ", //48 Math overflow -" ...", //49 Paper out... -" !!!", //50 CR not ready!!! -" !!", //51 Memory error!! -" ", //52 Printer off -" ", //53 Insufficient memory -" ", //54 Lenght number less -" ", //55 Zero lenght number -" ", //56 Password lenght less permissible -" ", //57 Zero lenght password -" ", //58 Impossible value -" -", //59 Time-out overdraw -"", -".", -" ", -" ", -"","","","","","",//69 -"","","","","","","","","","",//79 -"","","","","","","","","","",//89 -"","","","","","","","","","",//99 -"","","","","","","","","","",//109 -"","","","","","","","","","",//119 -"","","","","","","","","","",//129 -"","","","","","","","","","",//139 -"","","","","","","","","","",//149 -"","","","","","","","","","",//159 - -"","","","","","","","","","",//169 -"","","","","","","","","","",//179 -"","","","","","","","","","",//189 -"","","","","","","","","","",//199 -"","","","","","","","","","",//209 -"","","","","","","","","","",//219 -"","","","","","","","","","",//229 -"","","","","","","","","","",//239 -" ",//240 Cmd not init -". ",//241 Cmd write err -" -(DSR=0)",//242 Prn not ready (DSR=0) -" , -",//243 Cmd ok -" ",//244 Cmd resp timeout -"",//245 Prn error -" , ",//246 Cmd resp large -" , ",//247 Cmd resp small -" ",//248 -" ",//249 -" ",//250 Cmd break -" ",//251 -" ",//252 -" ",//253 -" ",//254 -" ( )!"//255 Previous cmd run -}; -//------------------------------------------------------------------------------ -bool FiscalPrinter::getNextCheckId(int &id) -{ - CheckId++; // - SaveSetup(); // - id=CheckId; - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::SaveCheck(int CheckId) // () -{ - if(dModule->UserType) //true - ; false - - dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice()); - else - dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice()); - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::deleteCheck(int CheckId) // -{ - 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;iCount;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; -} -//--------------------------------------------------------------------------- -// COM -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(" !"); - - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setHeader) "); - dModule->SendError(1,"(PrinterOPOS::setHeader) "); - } -} -//--------------------------------------------------------------------------- -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(" !"); - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrailer) "); - dModule->SendError(1,"(PrinterOPOS::setTrailer) "); - } -} -//--------------------------------------------------------------------------- -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) -{ - // - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintLine) "); - dModule->SendError(1,"(PrinterOPOS::PrintLine) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -//TODO -bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) // -{ - long err=0; - Currency cur=0; - Currency cAllPrice=0; - bool bOk=true; - - try - { if(Crashed) throw Exception(" !"); - - // ( ) - cAllPrice=getGoodsPrice(); - - if(check==0) // - { - CheckId++; // - check=CheckId; - SaveSetup(); // - } - - if(fp->RecEmpty) throw Exception(" !"); - if(!DayOpened()) throw Exception(" "); - - Currency UnitPrice,AllPriceDrb,AllPrice; - long Qnt,vat; - BSTR* bstr; - WideString sStr; - BSTR sTmp=new OLECHAR[255]; - sTmp=L""; - long MbsResponceCode; - CURRENCY Amount1,Amount2; - - // - //vat=11; sTmp=L""; - //err = fp->DirectIO(4, &vat, &sTmp); - //if (err) goto ErrHandler; - - // TODO!!! - if(headLine.Length()>0) - PrintLine(headLine); - - - if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; // - else fp->FiscalReceiptType=FPTR_RT_SERVICE; // - -//setTrainingMode(true); - - // ( ) - err = fp->BeginFiscalReceipt(true); - if (err) throw Exception(getLastError(&err)); //251 - - // (TODO ) - for(int i=0;iCount;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""); - if (err) throw Exception(getLastError(&err)); - } - ClearGoods(); - - // ( PrintRecTotal) - err = fp->DirectIO(3, &CheckId, &sTmp); - if (err) throw Exception(getLastError(&err)); - - // - //setNalog(1,12); - - // - Amount2.int64=0; - VarCyFromR8(cAllPrice*100,&Amount1); - err=fp->PrintRecTotal(Amount1, Amount1, L"na"); - if (err) throw Exception(getLastError(&err)); - - - err = fp->EndFiscalReceipt(True); // , (AdditionalTrailer) - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(err," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - if(!bOk) - { - fp->PrintRecVoid(L""); - } - - return bOk; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::Cut() // -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::Cut)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::Cut) "); - dModule->SendError(1,"(PrinterOPOS::Cut) "); - } -} -//--------------------------------------------------------------------------- -// ( ) -/*int PrinterOPOS::GetState() -{ - if(!fp->DeviceEnabled)FState=245; - //if(FState!=0) return FState; - // - // -// fp->ResultCodeExtended - return 0; -} */ -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::isOk() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - if(fp->RecEmpty) throw " !"; - err=fp->ResetPrinter(); - if(err) throw Exception(getLastError(&err)); // - - AnsiString str; - - if(!dModule->getDayShift())throw Exception(" !"); // - - bool dOpen=DayOpened(); - if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true; - if(!dOpen) throw Exception(" !"); - - if(DayOpened()) - { - // - TDateTime dt=getDateOpenShift(); - str=getLastError(&err); - if(err) throw Exception(getLastError(&err)); - - dModule->getDate(); - if(HoursBetween(dt,dModule->date)>24) // 24 - throw Exception("[1] "); - } else throw Exception(" !"); - BSTR bstr=new OLECHAR[50]; - err=fp->GetDate(&bstr); - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -} -//--------------------------------------------------------------------------- -// -TDateTime PrinterOPOS::getDateOpenShift() -{ - long err=0; - TDateTime date=0; - try - { - if(Crashed) throw Exception(" !"); - - 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; // - saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDateOpenShift) "); - dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) "); - } - return date; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::GetStatusDescription(long err) -{ - AnsiString str; - try - { - if(err<256) - str=kkm_err_msg_ru[err]; - if(str=="") str=" "; - }catch(...) - { - saveLog(1,"(PrinterOPOS::GetStatusDescription) "); - return " "; - } - return str; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::getLastError(long* err) -{ - BSTR str=new OLECHAR[255]; - str=L" !"; - try - { - fp->DirectIO(1, err, &str); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getLastError) "); - } - if(str==L"") return GetStatusDescription(*err); - return str; -} -//--------------------------------------------------------------------------- -AnsiString PrinterOPOS::getLastError() -{ - long err; - return getLastError(&err); -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::PrintZReport() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - - int sum=getDaySum(); - err=fp->PrintZReport(); - if(err) throw Exception(getLastError(&err)); - dModule->addZReport(sum);// Z - dModule->addPaper(-142*2);// - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintZReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintZReport) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -// -void PrinterOPOS::PrintXReport() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - err=fp->PrintXReport(); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintXReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintXReport) "); - } -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::OpenShift() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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)); // - err=fp->SetVatValue(1,L"120"); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::OpenShift) "); - dModule->SendError(1,"(PrinterOPOS::OpenShift) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::DayOpened() -{ - return fp->DayOpened; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::setTrainingMode(bool val) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrainingMode) "); - dModule->SendError(1,"(PrinterOPOS::setTrainingMode) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::getTrainingMode() -{ - return fp->TrainingModeActive; -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::setNalog(long n,float stavka) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message); - return true; - }catch(...) - { - saveLog(1,"(PrinterOPOS::setNalog) "); - dModule->SendError(1,"(PrinterOPOS::setNalog) "); - return true; - } - - return err==0; -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getDaySum() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDaySum) "); - dModule->SendError(1,"(PrinterOPOS::getDaySum) "); - return 0; - } -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getAllSum() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getAllSum) "); - dModule->SendError(1,"(PrinterOPOS::getAllSum) "); - return 0; - } -} - -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -// -bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine ) -{ - //bool err=0; - double cur=0; - double cAllPrice=0; - bool bOk=true; - - try - { - // ( ) - 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; - - // - 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); - - // - for(int i=0;iCount;i++) - { - Goods* goods=(Goods*)FListGoods->Items[i]; - bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"",goods->price,goods->count,0,0); // ( ) - if (!bOk) throw Exception(getLastError()); - } - ClearGoods(); - - // () - double Change; - bOk=fp->Total("","","P",cAllPrice,Change); - if (!bOk) throw Exception(getLastError()); - // - bOk = fp->CloseFiscalInv(); - if(!bOk) throw Exception(getLastError()); - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(bOk," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - 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);// Z - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," Z "+exception.Message); - dModule->SendError(bOk," Z "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," Z ."); - dModule->SendError(1," Z ."); - bOk=false; - } - - return bOk; -}; -//--------------------------------------------------------------------------- -bool FiscalPrinterPort::isOk() -{ - try - { - if (!fp->DiagnosticInfo()) throw Exception(getLastError()); - if(!dModule->getDayShift())throw Exception(" !"); // - } - catch(Exception &exception) - { - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -}; -//--------------------------------------------------------------------------- diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~20~ b/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~20~ deleted file mode 100644 index bd4eb3f..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~20~ +++ /dev/null @@ -1,928 +0,0 @@ -//--------------------------------------------------------------------------- - - -#pragma hdrstop - -#include "PrinterOPOS.h" -#include "OposFiscalPrinter_1_7_Lib_OCX.h" -//#include "OposFiscalPrinter_CCO_OCX.h" -#include "ud_Module.h" -#include -#include -#include -#include -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -char * kkm_err_msg_ru[] = { -"OK", //0 -" ID ", //1 FM ID Error -" ", //2 FM Rec Error -"Flash Chip ", //3 Flash Chip cant clear -" ", //4 FM not empty -" ", //5 FM Data destroyed -" ", //6 Cmd ignor prn mode -" ", //7 Oper code is absent -" ", //8 Doc type is absent -". ", //9 Ser num CR -" ", //10 Password error -" /", //11 Data/Time error -". . ", //12 Factory registration has already pass -" ", //13 Ser num CR destroyed -" ", //14 Fiscalize has already pass -" ", //15 Not fisc mode CR -" ", //16 Fiscalize Data destroyed -" ", //17 Rewrite is conclude -" ", //18 Rewrite is destroyed -" ", //19 Shift already open -" ", //20 Shift not opened -" ", //21 Many goods in receipt -" ", //22 EOD data in FM destroyed -" ", //23 Document format error -" ", //24 Text rewrite -" - ", //25 Many parameters in document -" -", //26 Document parameters error -" -", //27 Parameters value error -" ", //28 Object non-existent -" ", //29 Document is not finished -"/ ", //30 goods/operation description not enough -" ", //31 Check sum packet -" ", //32 Prn not ready -" ", //33 Nested interrupts -" ", //34 Check Sum Error -" ", //35 Overflow if FM -" ", //36 Unknown command -"CRC ", //37 CRC RAM -"CRC ", //38 CRC FM -" ", //39 Data port defective -" ", //40 Receipts parameters sequence -"0xy ", //41 0xy for required properties -" ", //42 Length request -" ", //43 number capacity -"", //44 Overflow -" ", //45 Number is absent -" ", //46 Not response -" ", //47 Transmission error -". ", //48 Math overflow -" ...", //49 Paper out... -" !!!", //50 CR not ready!!! -" !!", //51 Memory error!! -" ", //52 Printer off -" ", //53 Insufficient memory -" ", //54 Lenght number less -" ", //55 Zero lenght number -" ", //56 Password lenght less permissible -" ", //57 Zero lenght password -" ", //58 Impossible value -" -", //59 Time-out overdraw -"", -".", -" ", -" ", -"","","","","","",//69 -"","","","","","","","","","",//79 -"","","","","","","","","","",//89 -"","","","","","","","","","",//99 -"","","","","","","","","","",//109 -"","","","","","","","","","",//119 -"","","","","","","","","","",//129 -"","","","","","","","","","",//139 -"","","","","","","","","","",//149 -"","","","","","","","","","",//159 - -"","","","","","","","","","",//169 -"","","","","","","","","","",//179 -"","","","","","","","","","",//189 -"","","","","","","","","","",//199 -"","","","","","","","","","",//209 -"","","","","","","","","","",//219 -"","","","","","","","","","",//229 -"","","","","","","","","","",//239 -" ",//240 Cmd not init -". ",//241 Cmd write err -" -(DSR=0)",//242 Prn not ready (DSR=0) -" , -",//243 Cmd ok -" ",//244 Cmd resp timeout -"",//245 Prn error -" , ",//246 Cmd resp large -" , ",//247 Cmd resp small -" ",//248 -" ",//249 -" ",//250 Cmd break -" ",//251 -" ",//252 -" ",//253 -" ",//254 -" ( )!"//255 Previous cmd run -}; -//------------------------------------------------------------------------------ -bool FiscalPrinter::getNextCheckId(int &id) -{ - CheckId++; // - SaveSetup(); // - id=CheckId; - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::SaveCheck(int CheckId) // () -{ - if(dModule->UserType) //true - ; false - - dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice()); - else - dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice()); - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::deleteCheck(int CheckId) // -{ - 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;iCount;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; -} -//--------------------------------------------------------------------------- -// COM -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(" !"); - - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setHeader) "); - dModule->SendError(1,"(PrinterOPOS::setHeader) "); - } -} -//--------------------------------------------------------------------------- -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(" !"); - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrailer) "); - dModule->SendError(1,"(PrinterOPOS::setTrailer) "); - } -} -//--------------------------------------------------------------------------- -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) -{ - // - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintLine) "); - dModule->SendError(1,"(PrinterOPOS::PrintLine) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -//TODO -bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) // -{ - long err=0; - Currency cur=0; - Currency cAllPrice=0; - bool bOk=true; - - try - { if(Crashed) throw Exception(" !"); - - // ( ) - cAllPrice=getGoodsPrice(); - - if(check==0) // - { - CheckId++; // - check=CheckId; - SaveSetup(); // - } - - if(fp->RecEmpty) throw Exception(" !"); - if(!DayOpened()) throw Exception(" "); - - Currency UnitPrice,AllPriceDrb,AllPrice; - long Qnt,vat; - BSTR* bstr; - WideString sStr; - BSTR sTmp=new OLECHAR[255]; - sTmp=L""; - long MbsResponceCode; - CURRENCY Amount1,Amount2; - - // - //vat=11; sTmp=L""; - //err = fp->DirectIO(4, &vat, &sTmp); - //if (err) goto ErrHandler; - - // TODO!!! - if(headLine.Length()>0) - PrintLine(headLine); - - - if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; // - else fp->FiscalReceiptType=FPTR_RT_SERVICE; // - -//setTrainingMode(true); - - // ( ) - err = fp->BeginFiscalReceipt(true); - if (err) throw Exception(getLastError(&err)); //251 - - // (TODO ) - for(int i=0;iCount;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""); - if (err) throw Exception(getLastError(&err)); - } - ClearGoods(); - - // ( PrintRecTotal) - err = fp->DirectIO(3, &CheckId, &sTmp); - if (err) throw Exception(getLastError(&err)); - - // - //setNalog(1,12); - - // - Amount2.int64=0; - VarCyFromR8(cAllPrice*100,&Amount1); - err=fp->PrintRecTotal(Amount1, Amount1, L"na"); - if (err) throw Exception(getLastError(&err)); - - - err = fp->EndFiscalReceipt(True); // , (AdditionalTrailer) - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(err," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - if(!bOk) - { - fp->PrintRecVoid(L""); - } - - return bOk; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::Cut() // -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::Cut)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::Cut) "); - dModule->SendError(1,"(PrinterOPOS::Cut) "); - } -} -//--------------------------------------------------------------------------- -// ( ) -/*int PrinterOPOS::GetState() -{ - if(!fp->DeviceEnabled)FState=245; - //if(FState!=0) return FState; - // - // -// fp->ResultCodeExtended - return 0; -} */ -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::isOk() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - if(fp->RecEmpty) throw " !"; - err=fp->ResetPrinter(); - if(err) throw Exception(getLastError(&err)); // - - AnsiString str; - - if(!dModule->getDayShift())throw Exception(" !"); // - - bool dOpen=DayOpened(); - if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true; - if(!dOpen) throw Exception(" !"); - - if(DayOpened()) - { - // - TDateTime dt=getDateOpenShift(); - str=getLastError(&err); - if(err) throw Exception(getLastError(&err)); - - dModule->getDate(); - if(HoursBetween(dt,dModule->date)>24) // 24 - throw Exception("[1] "); - } else throw Exception(" !"); - BSTR bstr=new OLECHAR[50]; - err=fp->GetDate(&bstr); - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -} -//--------------------------------------------------------------------------- -// -TDateTime PrinterOPOS::getDateOpenShift() -{ - long err=0; - TDateTime date=0; - try - { - if(Crashed) throw Exception(" !"); - - 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; // - saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDateOpenShift) "); - dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) "); - } - return date; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::GetStatusDescription(long err) -{ - AnsiString str; - try - { - if(err<256) - str=kkm_err_msg_ru[err]; - if(str=="") str=" "; - }catch(...) - { - saveLog(1,"(PrinterOPOS::GetStatusDescription) "); - return " "; - } - return str; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::getLastError(long* err) -{ - BSTR str=new OLECHAR[255]; - str=L" !"; - try - { - fp->DirectIO(1, err, &str); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getLastError) "); - } - if(str==L"") return GetStatusDescription(*err); - return str; -} -//--------------------------------------------------------------------------- -AnsiString PrinterOPOS::getLastError() -{ - long err; - return getLastError(&err); -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::PrintZReport() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - - int sum=getDaySum(); - err=fp->PrintZReport(); - if(err) throw Exception(getLastError(&err)); - dModule->addZReport(sum);// Z - dModule->addPaper(-142*2);// - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintZReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintZReport) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -// -void PrinterOPOS::PrintXReport() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - err=fp->PrintXReport(); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintXReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintXReport) "); - } -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::OpenShift() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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)); // - err=fp->SetVatValue(1,L"120"); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::OpenShift) "); - dModule->SendError(1,"(PrinterOPOS::OpenShift) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::DayOpened() -{ - return fp->DayOpened; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::setTrainingMode(bool val) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrainingMode) "); - dModule->SendError(1,"(PrinterOPOS::setTrainingMode) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::getTrainingMode() -{ - return fp->TrainingModeActive; -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::setNalog(long n,float stavka) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message); - return true; - }catch(...) - { - saveLog(1,"(PrinterOPOS::setNalog) "); - dModule->SendError(1,"(PrinterOPOS::setNalog) "); - return true; - } - - return err==0; -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getDaySum() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDaySum) "); - dModule->SendError(1,"(PrinterOPOS::getDaySum) "); - return 0; - } -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getAllSum() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getAllSum) "); - dModule->SendError(1,"(PrinterOPOS::getAllSum) "); - return 0; - } -} - -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -// -bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine ) -{ - //bool err=0; - double cur=0; - double cAllPrice=0; - bool bOk=true; - - try - { - // ( ) - 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; - - // - 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); - - // - for(int i=0;iCount;i++) - { - Goods* goods=(Goods*)FListGoods->Items[i]; - bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"",goods->price,goods->count,0,0); // ( ) - if (!bOk) throw Exception(getLastError()); - } - ClearGoods(); - - // () - double Change; - bOk=fp->Total("","","P",cAllPrice,Change); - if (!bOk) throw Exception(getLastError()); - // - bOk = fp->CloseFiscalInv(); - if(!bOk) throw Exception(getLastError()); - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(bOk," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - 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);// Z - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," Z "+exception.Message); - dModule->SendError(bOk," Z "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," Z ."); - dModule->SendError(1," Z ."); - bOk=false; - } - - return bOk; -}; -//--------------------------------------------------------------------------- -bool FiscalPrinterPort::isOk() -{ - try - { - if (!fp->DiagnosticInfo()) throw Exception(getLastError()); - if(!dModule->getDayShift())throw Exception(" !"); // - } - catch(Exception &exception) - { - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -}; -//--------------------------------------------------------------------------- diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~21~ b/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~21~ deleted file mode 100644 index 3be85e0..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~21~ +++ /dev/null @@ -1,934 +0,0 @@ -//--------------------------------------------------------------------------- - - -#pragma hdrstop - -#include "PrinterOPOS.h" -#include "OposFiscalPrinter_1_7_Lib_OCX.h" -//#include "OposFiscalPrinter_CCO_OCX.h" -#include "ud_Module.h" -#include -#include -#include -#include -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -char * kkm_err_msg_ru[] = { -"OK", //0 -" ID ", //1 FM ID Error -" ", //2 FM Rec Error -"Flash Chip ", //3 Flash Chip cant clear -" ", //4 FM not empty -" ", //5 FM Data destroyed -" ", //6 Cmd ignor prn mode -" ", //7 Oper code is absent -" ", //8 Doc type is absent -". ", //9 Ser num CR -" ", //10 Password error -" /", //11 Data/Time error -". . ", //12 Factory registration has already pass -" ", //13 Ser num CR destroyed -" ", //14 Fiscalize has already pass -" ", //15 Not fisc mode CR -" ", //16 Fiscalize Data destroyed -" ", //17 Rewrite is conclude -" ", //18 Rewrite is destroyed -" ", //19 Shift already open -" ", //20 Shift not opened -" ", //21 Many goods in receipt -" ", //22 EOD data in FM destroyed -" ", //23 Document format error -" ", //24 Text rewrite -" - ", //25 Many parameters in document -" -", //26 Document parameters error -" -", //27 Parameters value error -" ", //28 Object non-existent -" ", //29 Document is not finished -"/ ", //30 goods/operation description not enough -" ", //31 Check sum packet -" ", //32 Prn not ready -" ", //33 Nested interrupts -" ", //34 Check Sum Error -" ", //35 Overflow if FM -" ", //36 Unknown command -"CRC ", //37 CRC RAM -"CRC ", //38 CRC FM -" ", //39 Data port defective -" ", //40 Receipts parameters sequence -"0xy ", //41 0xy for required properties -" ", //42 Length request -" ", //43 number capacity -"", //44 Overflow -" ", //45 Number is absent -" ", //46 Not response -" ", //47 Transmission error -". ", //48 Math overflow -" ...", //49 Paper out... -" !!!", //50 CR not ready!!! -" !!", //51 Memory error!! -" ", //52 Printer off -" ", //53 Insufficient memory -" ", //54 Lenght number less -" ", //55 Zero lenght number -" ", //56 Password lenght less permissible -" ", //57 Zero lenght password -" ", //58 Impossible value -" -", //59 Time-out overdraw -"", -".", -" ", -" ", -"","","","","","",//69 -"","","","","","","","","","",//79 -"","","","","","","","","","",//89 -"","","","","","","","","","",//99 -"","","","","","","","","","",//109 -"","","","","","","","","","",//119 -"","","","","","","","","","",//129 -"","","","","","","","","","",//139 -"","","","","","","","","","",//149 -"","","","","","","","","","",//159 - -"","","","","","","","","","",//169 -"","","","","","","","","","",//179 -"","","","","","","","","","",//189 -"","","","","","","","","","",//199 -"","","","","","","","","","",//209 -"","","","","","","","","","",//219 -"","","","","","","","","","",//229 -"","","","","","","","","","",//239 -" ",//240 Cmd not init -". ",//241 Cmd write err -" -(DSR=0)",//242 Prn not ready (DSR=0) -" , -",//243 Cmd ok -" ",//244 Cmd resp timeout -"",//245 Prn error -" , ",//246 Cmd resp large -" , ",//247 Cmd resp small -" ",//248 -" ",//249 -" ",//250 Cmd break -" ",//251 -" ",//252 -" ",//253 -" ",//254 -" ( )!"//255 Previous cmd run -}; -//------------------------------------------------------------------------------ -bool FiscalPrinter::getNextCheckId(int &id) -{ - CheckId++; // - SaveSetup(); // - id=CheckId; - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::SaveCheck(int CheckId) // () -{ - if(dModule->UserType) //true - ; false - - dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice()); - else - dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice()); - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::deleteCheck(int CheckId) // -{ - 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;iCount;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; -} -//--------------------------------------------------------------------------- -// COM -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(" !"); - - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setHeader) "); - dModule->SendError(1,"(PrinterOPOS::setHeader) "); - } -} -//--------------------------------------------------------------------------- -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(" !"); - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrailer) "); - dModule->SendError(1,"(PrinterOPOS::setTrailer) "); - } -} -//--------------------------------------------------------------------------- -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) -{ - // - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintLine) "); - dModule->SendError(1,"(PrinterOPOS::PrintLine) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -//TODO -bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) // -{ - long err=0; - Currency cur=0; - Currency cAllPrice=0; - bool bOk=true; - - try - { if(Crashed) throw Exception(" !"); - - // ( ) - cAllPrice=getGoodsPrice(); - - if(check==0) // - { - CheckId++; // - check=CheckId; - SaveSetup(); // - } - - if(fp->RecEmpty) throw Exception(" !"); - if(!DayOpened()) throw Exception(" "); - - Currency UnitPrice,AllPriceDrb,AllPrice; - long Qnt,vat; - BSTR* bstr; - WideString sStr; - BSTR sTmp=new OLECHAR[255]; - sTmp=L""; - long MbsResponceCode; - CURRENCY Amount1,Amount2; - - // - //vat=11; sTmp=L""; - //err = fp->DirectIO(4, &vat, &sTmp); - //if (err) goto ErrHandler; - - // TODO!!! - if(headLine.Length()>0) - PrintLine(headLine); - - - if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; // - else fp->FiscalReceiptType=FPTR_RT_SERVICE; // - -//setTrainingMode(true); - - // ( ) - err = fp->BeginFiscalReceipt(true); - if (err) throw Exception(getLastError(&err)); //251 - - // (TODO ) - for(int i=0;iCount;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""); - if (err) throw Exception(getLastError(&err)); - } - ClearGoods(); - - // ( PrintRecTotal) - err = fp->DirectIO(3, &CheckId, &sTmp); - if (err) throw Exception(getLastError(&err)); - - // - //setNalog(1,12); - - // - Amount2.int64=0; - VarCyFromR8(cAllPrice*100,&Amount1); - err=fp->PrintRecTotal(Amount1, Amount1, L"na"); - if (err) throw Exception(getLastError(&err)); - - - err = fp->EndFiscalReceipt(True); // , (AdditionalTrailer) - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(err," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - if(!bOk) - { - fp->PrintRecVoid(L""); - } - - return bOk; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::Cut() // -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::Cut)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::Cut) "); - dModule->SendError(1,"(PrinterOPOS::Cut) "); - } -} -//--------------------------------------------------------------------------- -// ( ) -/*int PrinterOPOS::GetState() -{ - if(!fp->DeviceEnabled)FState=245; - //if(FState!=0) return FState; - // - // -// fp->ResultCodeExtended - return 0; -} */ -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::isOk() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - if(fp->RecEmpty) throw " !"; - err=fp->ResetPrinter(); - if(err) throw Exception(getLastError(&err)); // - - AnsiString str; - - if(!dModule->getDayShift())throw Exception(" !"); // - - bool dOpen=DayOpened(); - if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true; - if(!dOpen) throw Exception(" !"); - - if(DayOpened()) - { - // - TDateTime dt=getDateOpenShift(); - str=getLastError(&err); - if(err) throw Exception(getLastError(&err)); - - dModule->getDate(); - if(HoursBetween(dt,dModule->date)>24) // 24 - throw Exception("[1] "); - } else throw Exception(" !"); - BSTR bstr=new OLECHAR[50]; - err=fp->GetDate(&bstr); - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -} -//--------------------------------------------------------------------------- -// -TDateTime PrinterOPOS::getDateOpenShift() -{ - long err=0; - TDateTime date=0; - try - { - if(Crashed) throw Exception(" !"); - - 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; // - saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDateOpenShift) "); - dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) "); - } - return date; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::GetStatusDescription(long err) -{ - AnsiString str; - try - { - if(err<256) - str=kkm_err_msg_ru[err]; - if(str=="") str=" "; - }catch(...) - { - saveLog(1,"(PrinterOPOS::GetStatusDescription) "); - return " "; - } - return str; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::getLastError(long* err) -{ - BSTR str=new OLECHAR[255]; - str=L" !"; - try - { - fp->DirectIO(1, err, &str); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getLastError) "); - } - if(str==L"") return GetStatusDescription(*err); - return str; -} -//--------------------------------------------------------------------------- -AnsiString PrinterOPOS::getLastError() -{ - long err; - return getLastError(&err); -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::PrintZReport() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - - int sum=getDaySum(); - err=fp->PrintZReport(); - if(err) throw Exception(getLastError(&err)); - dModule->addZReport(sum);// Z - dModule->addPaper(-142*2);// - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintZReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintZReport) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -// -void PrinterOPOS::PrintXReport() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - err=fp->PrintXReport(); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintXReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintXReport) "); - } -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::OpenShift() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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)); // - err=fp->SetVatValue(1,L"120"); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::OpenShift) "); - dModule->SendError(1,"(PrinterOPOS::OpenShift) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::DayOpened() -{ - return fp->DayOpened; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::setTrainingMode(bool val) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrainingMode) "); - dModule->SendError(1,"(PrinterOPOS::setTrainingMode) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::getTrainingMode() -{ - return fp->TrainingModeActive; -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::setNalog(long n,float stavka) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message); - return true; - }catch(...) - { - saveLog(1,"(PrinterOPOS::setNalog) "); - dModule->SendError(1,"(PrinterOPOS::setNalog) "); - return true; - } - - return err==0; -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getDaySum() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDaySum) "); - dModule->SendError(1,"(PrinterOPOS::getDaySum) "); - return 0; - } -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getAllSum() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getAllSum) "); - dModule->SendError(1,"(PrinterOPOS::getAllSum) "); - return 0; - } -} - -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -// -bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine ) -{ - //bool err=0; - double cur=0; - double cAllPrice=0; - bool bOk=true; - - try - { - // ( ) - 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; - - // - 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); - - // - for(int i=0;iCount;i++) - { - Goods* goods=(Goods*)FListGoods->Items[i]; - bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"",goods->price,goods->count,0,0); // ( ) - if (!bOk) throw Exception(getLastError()); - } - ClearGoods(); - - // () - double Change; - bOk=fp->Total("","","P",cAllPrice,Change); - if (!bOk) throw Exception(getLastError()); - // - bOk = fp->CloseFiscalInv(); - if(!bOk) throw Exception(getLastError()); - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(bOk," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - 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);// Z - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," Z "+exception.Message); - dModule->SendError(bOk," Z "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," Z ."); - dModule->SendError(1," Z ."); - bOk=false; - } - - return bOk; -}; -//--------------------------------------------------------------------------- -bool FiscalPrinterPort::isOk() -{ - try - { - if (!fp->DiagnosticInfo()) throw Exception(getLastError()); - if(!dModule->getDayShift())throw Exception(" !"); // - } - catch(Exception &exception) - { - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -}; -//--------------------------------------------------------------------------- diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~22~ b/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~22~ deleted file mode 100644 index 6254314..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~22~ +++ /dev/null @@ -1,933 +0,0 @@ -//--------------------------------------------------------------------------- - - -#pragma hdrstop - -#include "PrinterOPOS.h" -#include "OposFiscalPrinter_1_7_Lib_OCX.h" -//#include "OposFiscalPrinter_CCO_OCX.h" -#include "ud_Module.h" -#include -#include -#include -#include -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -char * kkm_err_msg_ru[] = { -"OK", //0 -" ID ", //1 FM ID Error -" ", //2 FM Rec Error -"Flash Chip ", //3 Flash Chip cant clear -" ", //4 FM not empty -" ", //5 FM Data destroyed -" ", //6 Cmd ignor prn mode -" ", //7 Oper code is absent -" ", //8 Doc type is absent -". ", //9 Ser num CR -" ", //10 Password error -" /", //11 Data/Time error -". . ", //12 Factory registration has already pass -" ", //13 Ser num CR destroyed -" ", //14 Fiscalize has already pass -" ", //15 Not fisc mode CR -" ", //16 Fiscalize Data destroyed -" ", //17 Rewrite is conclude -" ", //18 Rewrite is destroyed -" ", //19 Shift already open -" ", //20 Shift not opened -" ", //21 Many goods in receipt -" ", //22 EOD data in FM destroyed -" ", //23 Document format error -" ", //24 Text rewrite -" - ", //25 Many parameters in document -" -", //26 Document parameters error -" -", //27 Parameters value error -" ", //28 Object non-existent -" ", //29 Document is not finished -"/ ", //30 goods/operation description not enough -" ", //31 Check sum packet -" ", //32 Prn not ready -" ", //33 Nested interrupts -" ", //34 Check Sum Error -" ", //35 Overflow if FM -" ", //36 Unknown command -"CRC ", //37 CRC RAM -"CRC ", //38 CRC FM -" ", //39 Data port defective -" ", //40 Receipts parameters sequence -"0xy ", //41 0xy for required properties -" ", //42 Length request -" ", //43 number capacity -"", //44 Overflow -" ", //45 Number is absent -" ", //46 Not response -" ", //47 Transmission error -". ", //48 Math overflow -" ...", //49 Paper out... -" !!!", //50 CR not ready!!! -" !!", //51 Memory error!! -" ", //52 Printer off -" ", //53 Insufficient memory -" ", //54 Lenght number less -" ", //55 Zero lenght number -" ", //56 Password lenght less permissible -" ", //57 Zero lenght password -" ", //58 Impossible value -" -", //59 Time-out overdraw -"", -".", -" ", -" ", -"","","","","","",//69 -"","","","","","","","","","",//79 -"","","","","","","","","","",//89 -"","","","","","","","","","",//99 -"","","","","","","","","","",//109 -"","","","","","","","","","",//119 -"","","","","","","","","","",//129 -"","","","","","","","","","",//139 -"","","","","","","","","","",//149 -"","","","","","","","","","",//159 - -"","","","","","","","","","",//169 -"","","","","","","","","","",//179 -"","","","","","","","","","",//189 -"","","","","","","","","","",//199 -"","","","","","","","","","",//209 -"","","","","","","","","","",//219 -"","","","","","","","","","",//229 -"","","","","","","","","","",//239 -" ",//240 Cmd not init -". ",//241 Cmd write err -" -(DSR=0)",//242 Prn not ready (DSR=0) -" , -",//243 Cmd ok -" ",//244 Cmd resp timeout -"",//245 Prn error -" , ",//246 Cmd resp large -" , ",//247 Cmd resp small -" ",//248 -" ",//249 -" ",//250 Cmd break -" ",//251 -" ",//252 -" ",//253 -" ",//254 -" ( )!"//255 Previous cmd run -}; -//------------------------------------------------------------------------------ -bool FiscalPrinter::getNextCheckId(int &id) -{ - CheckId++; // - SaveSetup(); // - id=CheckId; - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::SaveCheck(int CheckId) // () -{ - if(dModule->UserType) //true - ; false - - dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice()); - else - dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice()); - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::deleteCheck(int CheckId) // -{ - 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;iCount;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; -} -//--------------------------------------------------------------------------- -// COM -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(" !"); - - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setHeader) "); - dModule->SendError(1,"(PrinterOPOS::setHeader) "); - } -} -//--------------------------------------------------------------------------- -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(" !"); - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrailer) "); - dModule->SendError(1,"(PrinterOPOS::setTrailer) "); - } -} -//--------------------------------------------------------------------------- -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) -{ - // - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintLine) "); - dModule->SendError(1,"(PrinterOPOS::PrintLine) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -//TODO -bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) // -{ - long err=0; - Currency cur=0; - Currency cAllPrice=0; - bool bOk=true; - - try - { if(Crashed) throw Exception(" !"); - - // ( ) - cAllPrice=getGoodsPrice(); - - if(check==0) // - { - CheckId++; // - check=CheckId; - SaveSetup(); // - } - - if(fp->RecEmpty) throw Exception(" !"); - if(!DayOpened()) throw Exception(" "); - - Currency UnitPrice,AllPriceDrb,AllPrice; - long Qnt,vat; - BSTR* bstr; - WideString sStr; - BSTR sTmp=new OLECHAR[255]; - sTmp=L""; - long MbsResponceCode; - CURRENCY Amount1,Amount2; - - // - //vat=11; sTmp=L""; - //err = fp->DirectIO(4, &vat, &sTmp); - //if (err) goto ErrHandler; - - // TODO!!! - if(headLine.Length()>0) - PrintLine(headLine); - - - if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; // - else fp->FiscalReceiptType=FPTR_RT_SERVICE; // - -//setTrainingMode(true); - - // ( ) - err = fp->BeginFiscalReceipt(true); - if (err) throw Exception(getLastError(&err)); //251 - - // (TODO ) - for(int i=0;iCount;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""); - if (err) throw Exception(getLastError(&err)); - } - ClearGoods(); - - // ( PrintRecTotal) - err = fp->DirectIO(3, &CheckId, &sTmp); - if (err) throw Exception(getLastError(&err)); - - // - //setNalog(1,12); - - // - Amount2.int64=0; - VarCyFromR8(cAllPrice*100,&Amount1); - err=fp->PrintRecTotal(Amount1, Amount1, L"na"); - if (err) throw Exception(getLastError(&err)); - - - err = fp->EndFiscalReceipt(True); // , (AdditionalTrailer) - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(err," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - if(!bOk) - { - fp->PrintRecVoid(L""); - } - - return bOk; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::Cut() // -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::Cut)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::Cut) "); - dModule->SendError(1,"(PrinterOPOS::Cut) "); - } -} -//--------------------------------------------------------------------------- -// ( ) -/*int PrinterOPOS::GetState() -{ - if(!fp->DeviceEnabled)FState=245; - //if(FState!=0) return FState; - // - // -// fp->ResultCodeExtended - return 0; -} */ -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::isOk() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - if(fp->RecEmpty) throw " !"; - err=fp->ResetPrinter(); - if(err) throw Exception(getLastError(&err)); // - - AnsiString str; - - if(!dModule->getDayShift())throw Exception(" !"); // - - bool dOpen=DayOpened(); - if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true; - if(!dOpen) throw Exception(" !"); - - if(DayOpened()) - { - // - TDateTime dt=getDateOpenShift(); - str=getLastError(&err); - if(err) throw Exception(getLastError(&err)); - - dModule->getDate(); - if(HoursBetween(dt,dModule->date)>24) // 24 - throw Exception("[1] "); - } else throw Exception(" !"); - BSTR bstr=new OLECHAR[50]; - err=fp->GetDate(&bstr); - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -} -//--------------------------------------------------------------------------- -// -TDateTime PrinterOPOS::getDateOpenShift() -{ - long err=0; - TDateTime date=0; - try - { - if(Crashed) throw Exception(" !"); - - 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; // - saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDateOpenShift) "); - dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) "); - } - return date; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::GetStatusDescription(long err) -{ - AnsiString str; - try - { - if(err<256) - str=kkm_err_msg_ru[err]; - if(str=="") str=" "; - }catch(...) - { - saveLog(1,"(PrinterOPOS::GetStatusDescription) "); - return " "; - } - return str; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::getLastError(long* err) -{ - BSTR str=new OLECHAR[255]; - str=L" !"; - try - { - fp->DirectIO(1, err, &str); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getLastError) "); - } - if(str==L"") return GetStatusDescription(*err); - return str; -} -//--------------------------------------------------------------------------- -AnsiString PrinterOPOS::getLastError() -{ - long err; - return getLastError(&err); -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::PrintZReport() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - - int sum=getDaySum(); - err=fp->PrintZReport(); - if(err) throw Exception(getLastError(&err)); - dModule->addZReport(sum);// Z - dModule->addPaper(-142*2);// - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintZReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintZReport) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -// -void PrinterOPOS::PrintXReport() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - err=fp->PrintXReport(); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintXReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintXReport) "); - } -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::OpenShift() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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)); // - err=fp->SetVatValue(1,L"120"); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::OpenShift) "); - dModule->SendError(1,"(PrinterOPOS::OpenShift) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::DayOpened() -{ - return fp->DayOpened; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::setTrainingMode(bool val) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrainingMode) "); - dModule->SendError(1,"(PrinterOPOS::setTrainingMode) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::getTrainingMode() -{ - return fp->TrainingModeActive; -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::setNalog(long n,float stavka) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message); - return true; - }catch(...) - { - saveLog(1,"(PrinterOPOS::setNalog) "); - dModule->SendError(1,"(PrinterOPOS::setNalog) "); - return true; - } - - return err==0; -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getDaySum() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDaySum) "); - dModule->SendError(1,"(PrinterOPOS::getDaySum) "); - return 0; - } -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getAllSum() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getAllSum) "); - dModule->SendError(1,"(PrinterOPOS::getAllSum) "); - return 0; - } -} - -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -// -bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine ) -{ - //bool err=0; - double cur=0; - double cAllPrice=0; - bool bOk=true; - - try - { - // ( ) - 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; - - // - 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); - - // - for(int i=0;iCount;i++) - { - Goods* goods=(Goods*)FListGoods->Items[i]; - bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"",goods->price,goods->count,0,0); // ( ) - if (!bOk) throw Exception(getLastError()); - } - ClearGoods(); - - // () - double Change; - bOk=fp->Total("","","P",cAllPrice,Change); - if (!bOk) throw Exception(getLastError()); - // - bOk = fp->CloseFiscalInv(); - if(!bOk) throw Exception(getLastError()); - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(bOk," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - 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);// Z - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," Z "+exception.Message); - dModule->SendError(bOk," Z "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," Z ."); - dModule->SendError(1," Z ."); - bOk=false; - } - - return bOk; -}; -//--------------------------------------------------------------------------- -bool FiscalPrinterPort::isOk() -{ - try - { - if (!fp->DiagnosticInfo()) throw Exception(getLastError()); - if(!dModule->getDayShift())throw Exception(" !"); // - } - catch(Exception &exception) - { - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -}; -//--------------------------------------------------------------------------- diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~23~ b/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~23~ deleted file mode 100644 index 8047557..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~23~ +++ /dev/null @@ -1,934 +0,0 @@ -//--------------------------------------------------------------------------- - - -#pragma hdrstop - -#include "PrinterOPOS.h" -#include "OposFiscalPrinter_1_7_Lib_OCX.h" -//#include "OposFiscalPrinter_CCO_OCX.h" -#include "ud_Module.h" -#include -#include -#include -#include -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -char * kkm_err_msg_ru[] = { -"OK", //0 -" ID ", //1 FM ID Error -" ", //2 FM Rec Error -"Flash Chip ", //3 Flash Chip cant clear -" ", //4 FM not empty -" ", //5 FM Data destroyed -" ", //6 Cmd ignor prn mode -" ", //7 Oper code is absent -" ", //8 Doc type is absent -". ", //9 Ser num CR -" ", //10 Password error -" /", //11 Data/Time error -". . ", //12 Factory registration has already pass -" ", //13 Ser num CR destroyed -" ", //14 Fiscalize has already pass -" ", //15 Not fisc mode CR -" ", //16 Fiscalize Data destroyed -" ", //17 Rewrite is conclude -" ", //18 Rewrite is destroyed -" ", //19 Shift already open -" ", //20 Shift not opened -" ", //21 Many goods in receipt -" ", //22 EOD data in FM destroyed -" ", //23 Document format error -" ", //24 Text rewrite -" - ", //25 Many parameters in document -" -", //26 Document parameters error -" -", //27 Parameters value error -" ", //28 Object non-existent -" ", //29 Document is not finished -"/ ", //30 goods/operation description not enough -" ", //31 Check sum packet -" ", //32 Prn not ready -" ", //33 Nested interrupts -" ", //34 Check Sum Error -" ", //35 Overflow if FM -" ", //36 Unknown command -"CRC ", //37 CRC RAM -"CRC ", //38 CRC FM -" ", //39 Data port defective -" ", //40 Receipts parameters sequence -"0xy ", //41 0xy for required properties -" ", //42 Length request -" ", //43 number capacity -"", //44 Overflow -" ", //45 Number is absent -" ", //46 Not response -" ", //47 Transmission error -". ", //48 Math overflow -" ...", //49 Paper out... -" !!!", //50 CR not ready!!! -" !!", //51 Memory error!! -" ", //52 Printer off -" ", //53 Insufficient memory -" ", //54 Lenght number less -" ", //55 Zero lenght number -" ", //56 Password lenght less permissible -" ", //57 Zero lenght password -" ", //58 Impossible value -" -", //59 Time-out overdraw -"", -".", -" ", -" ", -"","","","","","",//69 -"","","","","","","","","","",//79 -"","","","","","","","","","",//89 -"","","","","","","","","","",//99 -"","","","","","","","","","",//109 -"","","","","","","","","","",//119 -"","","","","","","","","","",//129 -"","","","","","","","","","",//139 -"","","","","","","","","","",//149 -"","","","","","","","","","",//159 - -"","","","","","","","","","",//169 -"","","","","","","","","","",//179 -"","","","","","","","","","",//189 -"","","","","","","","","","",//199 -"","","","","","","","","","",//209 -"","","","","","","","","","",//219 -"","","","","","","","","","",//229 -"","","","","","","","","","",//239 -" ",//240 Cmd not init -". ",//241 Cmd write err -" -(DSR=0)",//242 Prn not ready (DSR=0) -" , -",//243 Cmd ok -" ",//244 Cmd resp timeout -"",//245 Prn error -" , ",//246 Cmd resp large -" , ",//247 Cmd resp small -" ",//248 -" ",//249 -" ",//250 Cmd break -" ",//251 -" ",//252 -" ",//253 -" ",//254 -" ( )!"//255 Previous cmd run -}; -//------------------------------------------------------------------------------ -bool FiscalPrinter::getNextCheckId(int &id) -{ - CheckId++; // - SaveSetup(); // - id=CheckId; - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::SaveCheck(int CheckId) // () -{ - if(dModule->UserType) //true - ; false - - dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice()); - else - dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice()); - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::deleteCheck(int CheckId) // -{ - 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;iCount;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; -} -//--------------------------------------------------------------------------- -// COM -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(" !"); - - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setHeader) "); - dModule->SendError(1,"(PrinterOPOS::setHeader) "); - } -} -//--------------------------------------------------------------------------- -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(" !"); - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrailer) "); - dModule->SendError(1,"(PrinterOPOS::setTrailer) "); - } -} -//--------------------------------------------------------------------------- -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) -{ - // - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintLine) "); - dModule->SendError(1,"(PrinterOPOS::PrintLine) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -//TODO -bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) // -{ - long err=0; - Currency cur=0; - Currency cAllPrice=0; - bool bOk=true; - - try - { if(Crashed) throw Exception(" !"); - - // ( ) - cAllPrice=getGoodsPrice(); - - if(check==0) // - { - CheckId++; // - check=CheckId; - SaveSetup(); // - } - - if(fp->RecEmpty) throw Exception(" !"); - if(!DayOpened()) throw Exception(" "); - - Currency UnitPrice,AllPriceDrb,AllPrice; - long Qnt,vat; - BSTR* bstr; - WideString sStr; - BSTR sTmp=new OLECHAR[255]; - sTmp=L""; - long MbsResponceCode; - CURRENCY Amount1,Amount2; - - // - //vat=11; sTmp=L""; - //err = fp->DirectIO(4, &vat, &sTmp); - //if (err) goto ErrHandler; - - // TODO!!! - if(headLine.Length()>0) - PrintLine(headLine); - - - if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; // - else fp->FiscalReceiptType=FPTR_RT_SERVICE; // - -//setTrainingMode(true); - - // ( ) - err = fp->BeginFiscalReceipt(true); - if (err) throw Exception(getLastError(&err)); //251 - - // (TODO ) - for(int i=0;iCount;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""); - if (err) throw Exception(getLastError(&err)); - } - ClearGoods(); - - // ( PrintRecTotal) - err = fp->DirectIO(3, &CheckId, &sTmp); - if (err) throw Exception(getLastError(&err)); - - // - //setNalog(1,12); - - // - Amount2.int64=0; - VarCyFromR8(cAllPrice*100,&Amount1); - err=fp->PrintRecTotal(Amount1, Amount1, L"na"); - if (err) throw Exception(getLastError(&err)); - - - err = fp->EndFiscalReceipt(True); // , (AdditionalTrailer) - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(err," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - if(!bOk) - { - fp->PrintRecVoid(L""); - } - - return bOk; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::Cut() // -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::Cut)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::Cut) "); - dModule->SendError(1,"(PrinterOPOS::Cut) "); - } -} -//--------------------------------------------------------------------------- -// ( ) -/*int PrinterOPOS::GetState() -{ - if(!fp->DeviceEnabled)FState=245; - //if(FState!=0) return FState; - // - // -// fp->ResultCodeExtended - return 0; -} */ -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::isOk() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - if(fp->RecEmpty) throw " !"; - err=fp->ResetPrinter(); - if(err) throw Exception(getLastError(&err)); // - - AnsiString str; - - if(!dModule->getDayShift())throw Exception(" !"); // - - bool dOpen=DayOpened(); - if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true; - if(!dOpen) throw Exception(" !"); - - if(DayOpened()) - { - // - TDateTime dt=getDateOpenShift(); - str=getLastError(&err); - if(err) throw Exception(getLastError(&err)); - - dModule->getDate(); - if(HoursBetween(dt,dModule->date)>24) // 24 - throw Exception("[1] "); - } else throw Exception(" !"); - BSTR bstr=new OLECHAR[50]; - err=fp->GetDate(&bstr); - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -} -//--------------------------------------------------------------------------- -// -TDateTime PrinterOPOS::getDateOpenShift() -{ - long err=0; - TDateTime date=0; - try - { - if(Crashed) throw Exception(" !"); - - 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; // - saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDateOpenShift) "); - dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) "); - } - return date; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::GetStatusDescription(long err) -{ - AnsiString str; - try - { - if(err<256) - str=kkm_err_msg_ru[err]; - if(str=="") str=" "; - }catch(...) - { - saveLog(1,"(PrinterOPOS::GetStatusDescription) "); - return " "; - } - return str; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::getLastError(long* err) -{ - BSTR str=new OLECHAR[255]; - str=L" !"; - try - { - fp->DirectIO(1, err, &str); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getLastError) "); - } - if(str==L"") return GetStatusDescription(*err); - return str; -} -//--------------------------------------------------------------------------- -AnsiString PrinterOPOS::getLastError() -{ - long err; - return getLastError(&err); -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::PrintZReport() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - - int sum=getDaySum(); - err=fp->PrintZReport(); - if(err) throw Exception(getLastError(&err)); - dModule->addZReport(sum);// Z - dModule->addPaper(-142*2);// - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintZReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintZReport) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -// -void PrinterOPOS::PrintXReport() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - err=fp->PrintXReport(); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintXReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintXReport) "); - } -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::OpenShift() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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)); // - err=fp->SetVatValue(1,L"120"); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::OpenShift) "); - dModule->SendError(1,"(PrinterOPOS::OpenShift) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::DayOpened() -{ - return fp->DayOpened; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::setTrainingMode(bool val) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrainingMode) "); - dModule->SendError(1,"(PrinterOPOS::setTrainingMode) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::getTrainingMode() -{ - return fp->TrainingModeActive; -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::setNalog(long n,float stavka) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message); - return true; - }catch(...) - { - saveLog(1,"(PrinterOPOS::setNalog) "); - dModule->SendError(1,"(PrinterOPOS::setNalog) "); - return true; - } - - return err==0; -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getDaySum() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDaySum) "); - dModule->SendError(1,"(PrinterOPOS::getDaySum) "); - return 0; - } -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getAllSum() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getAllSum) "); - dModule->SendError(1,"(PrinterOPOS::getAllSum) "); - return 0; - } -} - -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -// -bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine ) -{ - //bool err=0; - double cur=0; - double cAllPrice=0; - bool bOk=true; - - try - { - // ( ) - 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; - - // - 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); - - // - for(int i=0;iCount;i++) - { - Goods* goods=(Goods*)FListGoods->Items[i]; - bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"",goods->price,goods->count,0,0); // ( ) - if (!bOk) throw Exception(getLastError()); - } - ClearGoods(); - - // () - double Change; - bOk=fp->Total("","","P",cAllPrice,Change); - if (!bOk) throw Exception(getLastError()); - // - bOk = fp->CloseFiscalInv(); - if(!bOk) throw Exception(getLastError()); - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(bOk," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - 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); ///< - if(!bOk) throw Exception(getLastError()); - bOk=fp->PrintZReport(); - if(!bOk) throw Exception(getLastError()); - dModule->addZReport(CashSum);// Z - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," Z "+exception.Message); - dModule->SendError(bOk," Z "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," Z ."); - dModule->SendError(1," Z ."); - bOk=false; - } - - return bOk; -}; -//--------------------------------------------------------------------------- -bool FiscalPrinterPort::isOk() -{ - try - { - if (!fp->DiagnosticInfo()) throw Exception(getLastError()); - if(!dModule->getDayShift())throw Exception(" !"); // - } - catch(Exception &exception) - { - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -}; -//--------------------------------------------------------------------------- diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~24~ b/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~24~ deleted file mode 100644 index aa011fc..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~24~ +++ /dev/null @@ -1,933 +0,0 @@ -//--------------------------------------------------------------------------- - - -#pragma hdrstop - -#include "PrinterOPOS.h" -#include "OposFiscalPrinter_1_7_Lib_OCX.h" -//#include "OposFiscalPrinter_CCO_OCX.h" -#include "ud_Module.h" -#include -#include -#include -#include -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -char * kkm_err_msg_ru[] = { -"OK", //0 -" ID ", //1 FM ID Error -" ", //2 FM Rec Error -"Flash Chip ", //3 Flash Chip cant clear -" ", //4 FM not empty -" ", //5 FM Data destroyed -" ", //6 Cmd ignor prn mode -" ", //7 Oper code is absent -" ", //8 Doc type is absent -". ", //9 Ser num CR -" ", //10 Password error -" /", //11 Data/Time error -". . ", //12 Factory registration has already pass -" ", //13 Ser num CR destroyed -" ", //14 Fiscalize has already pass -" ", //15 Not fisc mode CR -" ", //16 Fiscalize Data destroyed -" ", //17 Rewrite is conclude -" ", //18 Rewrite is destroyed -" ", //19 Shift already open -" ", //20 Shift not opened -" ", //21 Many goods in receipt -" ", //22 EOD data in FM destroyed -" ", //23 Document format error -" ", //24 Text rewrite -" - ", //25 Many parameters in document -" -", //26 Document parameters error -" -", //27 Parameters value error -" ", //28 Object non-existent -" ", //29 Document is not finished -"/ ", //30 goods/operation description not enough -" ", //31 Check sum packet -" ", //32 Prn not ready -" ", //33 Nested interrupts -" ", //34 Check Sum Error -" ", //35 Overflow if FM -" ", //36 Unknown command -"CRC ", //37 CRC RAM -"CRC ", //38 CRC FM -" ", //39 Data port defective -" ", //40 Receipts parameters sequence -"0xy ", //41 0xy for required properties -" ", //42 Length request -" ", //43 number capacity -"", //44 Overflow -" ", //45 Number is absent -" ", //46 Not response -" ", //47 Transmission error -". ", //48 Math overflow -" ...", //49 Paper out... -" !!!", //50 CR not ready!!! -" !!", //51 Memory error!! -" ", //52 Printer off -" ", //53 Insufficient memory -" ", //54 Lenght number less -" ", //55 Zero lenght number -" ", //56 Password lenght less permissible -" ", //57 Zero lenght password -" ", //58 Impossible value -" -", //59 Time-out overdraw -"", -".", -" ", -" ", -"","","","","","",//69 -"","","","","","","","","","",//79 -"","","","","","","","","","",//89 -"","","","","","","","","","",//99 -"","","","","","","","","","",//109 -"","","","","","","","","","",//119 -"","","","","","","","","","",//129 -"","","","","","","","","","",//139 -"","","","","","","","","","",//149 -"","","","","","","","","","",//159 - -"","","","","","","","","","",//169 -"","","","","","","","","","",//179 -"","","","","","","","","","",//189 -"","","","","","","","","","",//199 -"","","","","","","","","","",//209 -"","","","","","","","","","",//219 -"","","","","","","","","","",//229 -"","","","","","","","","","",//239 -" ",//240 Cmd not init -". ",//241 Cmd write err -" -(DSR=0)",//242 Prn not ready (DSR=0) -" , -",//243 Cmd ok -" ",//244 Cmd resp timeout -"",//245 Prn error -" , ",//246 Cmd resp large -" , ",//247 Cmd resp small -" ",//248 -" ",//249 -" ",//250 Cmd break -" ",//251 -" ",//252 -" ",//253 -" ",//254 -" ( )!"//255 Previous cmd run -}; -//------------------------------------------------------------------------------ -bool FiscalPrinter::getNextCheckId(int &id) -{ - CheckId++; // - SaveSetup(); // - id=CheckId; - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::SaveCheck(int CheckId) // () -{ - if(dModule->UserType) //true - ; false - - dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice()); - else - dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice()); - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::deleteCheck(int CheckId) // -{ - 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;iCount;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; -} -//--------------------------------------------------------------------------- -// COM -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(" !"); - - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setHeader) "); - dModule->SendError(1,"(PrinterOPOS::setHeader) "); - } -} -//--------------------------------------------------------------------------- -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(" !"); - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrailer) "); - dModule->SendError(1,"(PrinterOPOS::setTrailer) "); - } -} -//--------------------------------------------------------------------------- -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) -{ - // - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintLine) "); - dModule->SendError(1,"(PrinterOPOS::PrintLine) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -//TODO -bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) // -{ - long err=0; - Currency cur=0; - Currency cAllPrice=0; - bool bOk=true; - - try - { if(Crashed) throw Exception(" !"); - - // ( ) - cAllPrice=getGoodsPrice(); - - if(check==0) // - { - CheckId++; // - check=CheckId; - SaveSetup(); // - } - - if(fp->RecEmpty) throw Exception(" !"); - if(!DayOpened()) throw Exception(" "); - - Currency UnitPrice,AllPriceDrb,AllPrice; - long Qnt,vat; - BSTR* bstr; - WideString sStr; - BSTR sTmp=new OLECHAR[255]; - sTmp=L""; - long MbsResponceCode; - CURRENCY Amount1,Amount2; - - // - //vat=11; sTmp=L""; - //err = fp->DirectIO(4, &vat, &sTmp); - //if (err) goto ErrHandler; - - // TODO!!! - if(headLine.Length()>0) - PrintLine(headLine); - - - if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; // - else fp->FiscalReceiptType=FPTR_RT_SERVICE; // - -//setTrainingMode(true); - - // ( ) - err = fp->BeginFiscalReceipt(true); - if (err) throw Exception(getLastError(&err)); //251 - - // (TODO ) - for(int i=0;iCount;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""); - if (err) throw Exception(getLastError(&err)); - } - ClearGoods(); - - // ( PrintRecTotal) - err = fp->DirectIO(3, &CheckId, &sTmp); - if (err) throw Exception(getLastError(&err)); - - // - //setNalog(1,12); - - // - Amount2.int64=0; - VarCyFromR8(cAllPrice*100,&Amount1); - err=fp->PrintRecTotal(Amount1, Amount1, L"na"); - if (err) throw Exception(getLastError(&err)); - - - err = fp->EndFiscalReceipt(True); // , (AdditionalTrailer) - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(err," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - if(!bOk) - { - fp->PrintRecVoid(L""); - } - - return bOk; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::Cut() // -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::Cut)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::Cut) "); - dModule->SendError(1,"(PrinterOPOS::Cut) "); - } -} -//--------------------------------------------------------------------------- -// ( ) -/*int PrinterOPOS::GetState() -{ - if(!fp->DeviceEnabled)FState=245; - //if(FState!=0) return FState; - // - // -// fp->ResultCodeExtended - return 0; -} */ -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::isOk() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - if(fp->RecEmpty) throw " !"; - err=fp->ResetPrinter(); - if(err) throw Exception(getLastError(&err)); // - - AnsiString str; - - if(!dModule->getDayShift())throw Exception(" !"); // - - bool dOpen=DayOpened(); - if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true; - if(!dOpen) throw Exception(" !"); - - if(DayOpened()) - { - // - TDateTime dt=getDateOpenShift(); - str=getLastError(&err); - if(err) throw Exception(getLastError(&err)); - - dModule->getDate(); - if(HoursBetween(dt,dModule->date)>24) // 24 - throw Exception("[1] "); - } else throw Exception(" !"); - BSTR bstr=new OLECHAR[50]; - err=fp->GetDate(&bstr); - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -} -//--------------------------------------------------------------------------- -// -TDateTime PrinterOPOS::getDateOpenShift() -{ - long err=0; - TDateTime date=0; - try - { - if(Crashed) throw Exception(" !"); - - 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; // - saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDateOpenShift) "); - dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) "); - } - return date; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::GetStatusDescription(long err) -{ - AnsiString str; - try - { - if(err<256) - str=kkm_err_msg_ru[err]; - if(str=="") str=" "; - }catch(...) - { - saveLog(1,"(PrinterOPOS::GetStatusDescription) "); - return " "; - } - return str; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::getLastError(long* err) -{ - BSTR str=new OLECHAR[255]; - str=L" !"; - try - { - fp->DirectIO(1, err, &str); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getLastError) "); - } - if(str==L"") return GetStatusDescription(*err); - return str; -} -//--------------------------------------------------------------------------- -AnsiString PrinterOPOS::getLastError() -{ - long err; - return getLastError(&err); -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::PrintZReport() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - - int sum=getDaySum(); - err=fp->PrintZReport(); - if(err) throw Exception(getLastError(&err)); - dModule->addZReport(sum);// Z - dModule->addPaper(-142*2);// - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintZReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintZReport) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -// -void PrinterOPOS::PrintXReport() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - err=fp->PrintXReport(); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintXReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintXReport) "); - } -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::OpenShift() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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)); // - err=fp->SetVatValue(1,L"120"); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::OpenShift) "); - dModule->SendError(1,"(PrinterOPOS::OpenShift) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::DayOpened() -{ - return fp->DayOpened; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::setTrainingMode(bool val) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrainingMode) "); - dModule->SendError(1,"(PrinterOPOS::setTrainingMode) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::getTrainingMode() -{ - return fp->TrainingModeActive; -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::setNalog(long n,float stavka) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message); - return true; - }catch(...) - { - saveLog(1,"(PrinterOPOS::setNalog) "); - dModule->SendError(1,"(PrinterOPOS::setNalog) "); - return true; - } - - return err==0; -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getDaySum() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDaySum) "); - dModule->SendError(1,"(PrinterOPOS::getDaySum) "); - return 0; - } -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getAllSum() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getAllSum) "); - dModule->SendError(1,"(PrinterOPOS::getAllSum) "); - return 0; - } -} - -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -// -bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine ) -{ - //bool err=0; - double cur=0; - double cAllPrice=0; - bool bOk=true; - - try - { - // ( ) - 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; - - // - 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); - - // - for(int i=0;iCount;i++) - { - Goods* goods=(Goods*)FListGoods->Items[i]; - bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"",goods->price,goods->count,0,0); // ( ) - if (!bOk) throw Exception(getLastError()); - } - ClearGoods(); - - // () - double Change; - bOk=fp->Total("","","P",cAllPrice,Change); - if (!bOk) throw Exception(getLastError()); - // - bOk = fp->CloseFiscalInv(); - if(!bOk) throw Exception(getLastError()); - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(bOk," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - 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);// Z - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," Z "+exception.Message); - dModule->SendError(bOk," Z "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," Z ."); - dModule->SendError(1," Z ."); - bOk=false; - } - - return bOk; -}; -//--------------------------------------------------------------------------- -bool FiscalPrinterPort::isOk() -{ - try - { - if (!fp->DiagnosticInfo()) throw Exception(getLastError()); - if(!dModule->getDayShift())throw Exception(" !"); // - } - catch(Exception &exception) - { - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -}; -//--------------------------------------------------------------------------- diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~25~ b/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~25~ deleted file mode 100644 index 4acc573..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~25~ +++ /dev/null @@ -1,935 +0,0 @@ -//--------------------------------------------------------------------------- - - -#pragma hdrstop - -#include "PrinterOPOS.h" -#include "OposFiscalPrinter_1_7_Lib_OCX.h" -//#include "OposFiscalPrinter_CCO_OCX.h" -#include "ud_Module.h" -#include -#include -#include -#include -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -char * kkm_err_msg_ru[] = { -"OK", //0 -" ID ", //1 FM ID Error -" ", //2 FM Rec Error -"Flash Chip ", //3 Flash Chip cant clear -" ", //4 FM not empty -" ", //5 FM Data destroyed -" ", //6 Cmd ignor prn mode -" ", //7 Oper code is absent -" ", //8 Doc type is absent -". ", //9 Ser num CR -" ", //10 Password error -" /", //11 Data/Time error -". . ", //12 Factory registration has already pass -" ", //13 Ser num CR destroyed -" ", //14 Fiscalize has already pass -" ", //15 Not fisc mode CR -" ", //16 Fiscalize Data destroyed -" ", //17 Rewrite is conclude -" ", //18 Rewrite is destroyed -" ", //19 Shift already open -" ", //20 Shift not opened -" ", //21 Many goods in receipt -" ", //22 EOD data in FM destroyed -" ", //23 Document format error -" ", //24 Text rewrite -" - ", //25 Many parameters in document -" -", //26 Document parameters error -" -", //27 Parameters value error -" ", //28 Object non-existent -" ", //29 Document is not finished -"/ ", //30 goods/operation description not enough -" ", //31 Check sum packet -" ", //32 Prn not ready -" ", //33 Nested interrupts -" ", //34 Check Sum Error -" ", //35 Overflow if FM -" ", //36 Unknown command -"CRC ", //37 CRC RAM -"CRC ", //38 CRC FM -" ", //39 Data port defective -" ", //40 Receipts parameters sequence -"0xy ", //41 0xy for required properties -" ", //42 Length request -" ", //43 number capacity -"", //44 Overflow -" ", //45 Number is absent -" ", //46 Not response -" ", //47 Transmission error -". ", //48 Math overflow -" ...", //49 Paper out... -" !!!", //50 CR not ready!!! -" !!", //51 Memory error!! -" ", //52 Printer off -" ", //53 Insufficient memory -" ", //54 Lenght number less -" ", //55 Zero lenght number -" ", //56 Password lenght less permissible -" ", //57 Zero lenght password -" ", //58 Impossible value -" -", //59 Time-out overdraw -"", -".", -" ", -" ", -"","","","","","",//69 -"","","","","","","","","","",//79 -"","","","","","","","","","",//89 -"","","","","","","","","","",//99 -"","","","","","","","","","",//109 -"","","","","","","","","","",//119 -"","","","","","","","","","",//129 -"","","","","","","","","","",//139 -"","","","","","","","","","",//149 -"","","","","","","","","","",//159 - -"","","","","","","","","","",//169 -"","","","","","","","","","",//179 -"","","","","","","","","","",//189 -"","","","","","","","","","",//199 -"","","","","","","","","","",//209 -"","","","","","","","","","",//219 -"","","","","","","","","","",//229 -"","","","","","","","","","",//239 -" ",//240 Cmd not init -". ",//241 Cmd write err -" -(DSR=0)",//242 Prn not ready (DSR=0) -" , -",//243 Cmd ok -" ",//244 Cmd resp timeout -"",//245 Prn error -" , ",//246 Cmd resp large -" , ",//247 Cmd resp small -" ",//248 -" ",//249 -" ",//250 Cmd break -" ",//251 -" ",//252 -" ",//253 -" ",//254 -" ( )!"//255 Previous cmd run -}; -//------------------------------------------------------------------------------ -bool FiscalPrinter::getNextCheckId(int &id) -{ - CheckId++; // - SaveSetup(); // - id=CheckId; - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::SaveCheck(int CheckId) // () -{ - if(dModule->UserType) //true - ; false - - dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice()); - else - dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice()); - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::deleteCheck(int CheckId) // -{ - 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;iCount;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; -} -//--------------------------------------------------------------------------- -// COM -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(" !"); - - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setHeader) "); - dModule->SendError(1,"(PrinterOPOS::setHeader) "); - } -} -//--------------------------------------------------------------------------- -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(" !"); - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrailer) "); - dModule->SendError(1,"(PrinterOPOS::setTrailer) "); - } -} -//--------------------------------------------------------------------------- -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) -{ - // - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintLine) "); - dModule->SendError(1,"(PrinterOPOS::PrintLine) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -//TODO -bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) // -{ - long err=0; - Currency cur=0; - Currency cAllPrice=0; - bool bOk=true; - - try - { if(Crashed) throw Exception(" !"); - - // ( ) - cAllPrice=getGoodsPrice(); - - if(check==0) // - { - CheckId++; // - check=CheckId; - SaveSetup(); // - } - - if(fp->RecEmpty) throw Exception(" !"); - if(!DayOpened()) throw Exception(" "); - - Currency UnitPrice,AllPriceDrb,AllPrice; - long Qnt,vat; - BSTR* bstr; - WideString sStr; - BSTR sTmp=new OLECHAR[255]; - sTmp=L""; - long MbsResponceCode; - CURRENCY Amount1,Amount2; - - // - //vat=11; sTmp=L""; - //err = fp->DirectIO(4, &vat, &sTmp); - //if (err) goto ErrHandler; - - // TODO!!! - if(headLine.Length()>0) - PrintLine(headLine); - - - if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; // - else fp->FiscalReceiptType=FPTR_RT_SERVICE; // - -//setTrainingMode(true); - - // ( ) - err = fp->BeginFiscalReceipt(true); - if (err) throw Exception(getLastError(&err)); //251 - - // (TODO ) - for(int i=0;iCount;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""); - if (err) throw Exception(getLastError(&err)); - } - ClearGoods(); - - // ( PrintRecTotal) - err = fp->DirectIO(3, &CheckId, &sTmp); - if (err) throw Exception(getLastError(&err)); - - // - //setNalog(1,12); - - // - Amount2.int64=0; - VarCyFromR8(cAllPrice*100,&Amount1); - err=fp->PrintRecTotal(Amount1, Amount1, L"na"); - if (err) throw Exception(getLastError(&err)); - - - err = fp->EndFiscalReceipt(True); // , (AdditionalTrailer) - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(err," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - if(!bOk) - { - fp->PrintRecVoid(L""); - } - - return bOk; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::Cut() // -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::Cut)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::Cut) "); - dModule->SendError(1,"(PrinterOPOS::Cut) "); - } -} -//--------------------------------------------------------------------------- -// ( ) -/*int PrinterOPOS::GetState() -{ - if(!fp->DeviceEnabled)FState=245; - //if(FState!=0) return FState; - // - // -// fp->ResultCodeExtended - return 0; -} */ -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::isOk() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - if(fp->RecEmpty) throw " !"; - err=fp->ResetPrinter(); - if(err) throw Exception(getLastError(&err)); // - - AnsiString str; - - if(!dModule->getDayShift())throw Exception(" !"); // - - bool dOpen=DayOpened(); - if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true; - if(!dOpen) throw Exception(" !"); - - if(DayOpened()) - { - // - TDateTime dt=getDateOpenShift(); - str=getLastError(&err); - if(err) throw Exception(getLastError(&err)); - - dModule->getDate(); - if(HoursBetween(dt,dModule->date)>24) // 24 - throw Exception("[1] "); - } else throw Exception(" !"); - BSTR bstr=new OLECHAR[50]; - err=fp->GetDate(&bstr); - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -} -//--------------------------------------------------------------------------- -// -TDateTime PrinterOPOS::getDateOpenShift() -{ - long err=0; - TDateTime date=0; - try - { - if(Crashed) throw Exception(" !"); - - 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; // - saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDateOpenShift) "); - dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) "); - } - return date; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::GetStatusDescription(long err) -{ - AnsiString str; - try - { - if(err<256) - str=kkm_err_msg_ru[err]; - if(str=="") str=" "; - }catch(...) - { - saveLog(1,"(PrinterOPOS::GetStatusDescription) "); - return " "; - } - return str; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::getLastError(long* err) -{ - BSTR str=new OLECHAR[255]; - str=L" !"; - try - { - fp->DirectIO(1, err, &str); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getLastError) "); - } - if(str==L"") return GetStatusDescription(*err); - return str; -} -//--------------------------------------------------------------------------- -AnsiString PrinterOPOS::getLastError() -{ - long err; - return getLastError(&err); -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::PrintZReport() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - - int sum=getDaySum(); - err=fp->PrintZReport(); - if(err) throw Exception(getLastError(&err)); - dModule->addZReport(sum);// Z - dModule->addPaper(-142*2);// - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintZReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintZReport) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -// -void PrinterOPOS::PrintXReport() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - err=fp->PrintXReport(); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintXReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintXReport) "); - } -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::OpenShift() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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)); // - err=fp->SetVatValue(1,L"120"); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::OpenShift) "); - dModule->SendError(1,"(PrinterOPOS::OpenShift) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::DayOpened() -{ - return fp->DayOpened; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::setTrainingMode(bool val) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrainingMode) "); - dModule->SendError(1,"(PrinterOPOS::setTrainingMode) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::getTrainingMode() -{ - return fp->TrainingModeActive; -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::setNalog(long n,float stavka) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message); - return true; - }catch(...) - { - saveLog(1,"(PrinterOPOS::setNalog) "); - dModule->SendError(1,"(PrinterOPOS::setNalog) "); - return true; - } - - return err==0; -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getDaySum() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDaySum) "); - dModule->SendError(1,"(PrinterOPOS::getDaySum) "); - return 0; - } -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getAllSum() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getAllSum) "); - dModule->SendError(1,"(PrinterOPOS::getAllSum) "); - return 0; - } -} - -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -// -bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine ) -{ - //bool err=0; - double cur=0; - double cAllPrice=0; - bool bOk=true; - - try - { - // ( ) - 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; - - // - 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); - - // - for(int i=0;iCount;i++) - { - Goods* goods=(Goods*)FListGoods->Items[i]; - bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"",goods->price,goods->count,0,0); // ( ) - if (!bOk) throw Exception(getLastError()); - } - ClearGoods(); - - // () - double Change; - bOk=fp->Total("","","P",cAllPrice,Change); - if (!bOk) throw Exception(getLastError()); - // - bOk = fp->CloseFiscalInv(); - if(!bOk) throw Exception(getLastError()); - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(bOk," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - 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); ///< - if(!bOk) throw Exception(getLastError()); - bOk=fp->PrintZReport(); - if(!bOk) throw Exception(getLastError()); - dModule->addZReport(CashSum);// Z - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," Z "+exception.Message); - dModule->SendError(bOk," Z "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," Z ."); - dModule->SendError(1," Z ."); - bOk=false; - } - - return bOk; -}; -//--------------------------------------------------------------------------- -bool FiscalPrinterPort::isOk() -{ - try - { - if (!fp->DiagnosticInfo()) throw Exception(getLastError()); - if(!dModule->getDayShift())throw Exception(" !"); // - } - catch(Exception &exception) - { - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -}; -//--------------------------------------------------------------------------- diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~26~ b/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~26~ deleted file mode 100644 index 38def7d..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~26~ +++ /dev/null @@ -1,934 +0,0 @@ -//--------------------------------------------------------------------------- - - -#pragma hdrstop - -#include "PrinterOPOS.h" -#include "OposFiscalPrinter_1_7_Lib_OCX.h" -//#include "OposFiscalPrinter_CCO_OCX.h" -#include "ud_Module.h" -#include -#include -#include -#include -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -char * kkm_err_msg_ru[] = { -"OK", //0 -" ID ", //1 FM ID Error -" ", //2 FM Rec Error -"Flash Chip ", //3 Flash Chip cant clear -" ", //4 FM not empty -" ", //5 FM Data destroyed -" ", //6 Cmd ignor prn mode -" ", //7 Oper code is absent -" ", //8 Doc type is absent -". ", //9 Ser num CR -" ", //10 Password error -" /", //11 Data/Time error -". . ", //12 Factory registration has already pass -" ", //13 Ser num CR destroyed -" ", //14 Fiscalize has already pass -" ", //15 Not fisc mode CR -" ", //16 Fiscalize Data destroyed -" ", //17 Rewrite is conclude -" ", //18 Rewrite is destroyed -" ", //19 Shift already open -" ", //20 Shift not opened -" ", //21 Many goods in receipt -" ", //22 EOD data in FM destroyed -" ", //23 Document format error -" ", //24 Text rewrite -" - ", //25 Many parameters in document -" -", //26 Document parameters error -" -", //27 Parameters value error -" ", //28 Object non-existent -" ", //29 Document is not finished -"/ ", //30 goods/operation description not enough -" ", //31 Check sum packet -" ", //32 Prn not ready -" ", //33 Nested interrupts -" ", //34 Check Sum Error -" ", //35 Overflow if FM -" ", //36 Unknown command -"CRC ", //37 CRC RAM -"CRC ", //38 CRC FM -" ", //39 Data port defective -" ", //40 Receipts parameters sequence -"0xy ", //41 0xy for required properties -" ", //42 Length request -" ", //43 number capacity -"", //44 Overflow -" ", //45 Number is absent -" ", //46 Not response -" ", //47 Transmission error -". ", //48 Math overflow -" ...", //49 Paper out... -" !!!", //50 CR not ready!!! -" !!", //51 Memory error!! -" ", //52 Printer off -" ", //53 Insufficient memory -" ", //54 Lenght number less -" ", //55 Zero lenght number -" ", //56 Password lenght less permissible -" ", //57 Zero lenght password -" ", //58 Impossible value -" -", //59 Time-out overdraw -"", -".", -" ", -" ", -"","","","","","",//69 -"","","","","","","","","","",//79 -"","","","","","","","","","",//89 -"","","","","","","","","","",//99 -"","","","","","","","","","",//109 -"","","","","","","","","","",//119 -"","","","","","","","","","",//129 -"","","","","","","","","","",//139 -"","","","","","","","","","",//149 -"","","","","","","","","","",//159 - -"","","","","","","","","","",//169 -"","","","","","","","","","",//179 -"","","","","","","","","","",//189 -"","","","","","","","","","",//199 -"","","","","","","","","","",//209 -"","","","","","","","","","",//219 -"","","","","","","","","","",//229 -"","","","","","","","","","",//239 -" ",//240 Cmd not init -". ",//241 Cmd write err -" -(DSR=0)",//242 Prn not ready (DSR=0) -" , -",//243 Cmd ok -" ",//244 Cmd resp timeout -"",//245 Prn error -" , ",//246 Cmd resp large -" , ",//247 Cmd resp small -" ",//248 -" ",//249 -" ",//250 Cmd break -" ",//251 -" ",//252 -" ",//253 -" ",//254 -" ( )!"//255 Previous cmd run -}; -//------------------------------------------------------------------------------ -bool FiscalPrinter::getNextCheckId(int &id) -{ - CheckId++; // - SaveSetup(); // - id=CheckId; - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::SaveCheck(int CheckId) // () -{ - if(dModule->UserType) //true - ; false - - dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice()); - else - dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice()); - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::deleteCheck(int CheckId) // -{ - 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;iCount;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; -} -//--------------------------------------------------------------------------- -// COM -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(" !"); - - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setHeader) "); - dModule->SendError(1,"(PrinterOPOS::setHeader) "); - } -} -//--------------------------------------------------------------------------- -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(" !"); - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrailer) "); - dModule->SendError(1,"(PrinterOPOS::setTrailer) "); - } -} -//--------------------------------------------------------------------------- -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) -{ - // - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintLine) "); - dModule->SendError(1,"(PrinterOPOS::PrintLine) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -//TODO -bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) // -{ - long err=0; - Currency cur=0; - Currency cAllPrice=0; - bool bOk=true; - - try - { if(Crashed) throw Exception(" !"); - - // ( ) - cAllPrice=getGoodsPrice(); - - if(check==0) // - { - CheckId++; // - check=CheckId; - SaveSetup(); // - } - - if(fp->RecEmpty) throw Exception(" !"); - if(!DayOpened()) throw Exception(" "); - - Currency UnitPrice,AllPriceDrb,AllPrice; - long Qnt,vat; - BSTR* bstr; - WideString sStr; - BSTR sTmp=new OLECHAR[255]; - sTmp=L""; - long MbsResponceCode; - CURRENCY Amount1,Amount2; - - // - //vat=11; sTmp=L""; - //err = fp->DirectIO(4, &vat, &sTmp); - //if (err) goto ErrHandler; - - // TODO!!! - if(headLine.Length()>0) - PrintLine(headLine); - - - if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; // - else fp->FiscalReceiptType=FPTR_RT_SERVICE; // - -//setTrainingMode(true); - - // ( ) - err = fp->BeginFiscalReceipt(true); - if (err) throw Exception(getLastError(&err)); //251 - - // (TODO ) - for(int i=0;iCount;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""); - if (err) throw Exception(getLastError(&err)); - } - ClearGoods(); - - // ( PrintRecTotal) - err = fp->DirectIO(3, &CheckId, &sTmp); - if (err) throw Exception(getLastError(&err)); - - // - //setNalog(1,12); - - // - Amount2.int64=0; - VarCyFromR8(cAllPrice*100,&Amount1); - err=fp->PrintRecTotal(Amount1, Amount1, L"na"); - if (err) throw Exception(getLastError(&err)); - - - err = fp->EndFiscalReceipt(True); // , (AdditionalTrailer) - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(err," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - if(!bOk) - { - fp->PrintRecVoid(L""); - } - - return bOk; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::Cut() // -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::Cut)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::Cut) "); - dModule->SendError(1,"(PrinterOPOS::Cut) "); - } -} -//--------------------------------------------------------------------------- -// ( ) -/*int PrinterOPOS::GetState() -{ - if(!fp->DeviceEnabled)FState=245; - //if(FState!=0) return FState; - // - // -// fp->ResultCodeExtended - return 0; -} */ -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::isOk() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - if(fp->RecEmpty) throw " !"; - err=fp->ResetPrinter(); - if(err) throw Exception(getLastError(&err)); // - - AnsiString str; - - if(!dModule->getDayShift())throw Exception(" !"); // - - bool dOpen=DayOpened(); - if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true; - if(!dOpen) throw Exception(" !"); - - if(DayOpened()) - { - // - TDateTime dt=getDateOpenShift(); - str=getLastError(&err); - if(err) throw Exception(getLastError(&err)); - - dModule->getDate(); - if(HoursBetween(dt,dModule->date)>24) // 24 - throw Exception("[1] "); - } else throw Exception(" !"); - BSTR bstr=new OLECHAR[50]; - err=fp->GetDate(&bstr); - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -} -//--------------------------------------------------------------------------- -// -TDateTime PrinterOPOS::getDateOpenShift() -{ - long err=0; - TDateTime date=0; - try - { - if(Crashed) throw Exception(" !"); - - 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; // - saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDateOpenShift) "); - dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) "); - } - return date; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::GetStatusDescription(long err) -{ - AnsiString str; - try - { - if(err<256) - str=kkm_err_msg_ru[err]; - if(str=="") str=" "; - }catch(...) - { - saveLog(1,"(PrinterOPOS::GetStatusDescription) "); - return " "; - } - return str; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::getLastError(long* err) -{ - BSTR str=new OLECHAR[255]; - str=L" !"; - try - { - fp->DirectIO(1, err, &str); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getLastError) "); - } - if(str==L"") return GetStatusDescription(*err); - return str; -} -//--------------------------------------------------------------------------- -AnsiString PrinterOPOS::getLastError() -{ - long err; - return getLastError(&err); -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::PrintZReport() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - - int sum=getDaySum(); - err=fp->PrintZReport(); - if(err) throw Exception(getLastError(&err)); - dModule->addZReport(sum);// Z - dModule->addPaper(-142*2);// - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintZReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintZReport) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -// -void PrinterOPOS::PrintXReport() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - err=fp->PrintXReport(); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintXReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintXReport) "); - } -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::OpenShift() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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)); // - err=fp->SetVatValue(1,L"120"); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::OpenShift) "); - dModule->SendError(1,"(PrinterOPOS::OpenShift) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::DayOpened() -{ - return fp->DayOpened; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::setTrainingMode(bool val) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrainingMode) "); - dModule->SendError(1,"(PrinterOPOS::setTrainingMode) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::getTrainingMode() -{ - return fp->TrainingModeActive; -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::setNalog(long n,float stavka) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message); - return true; - }catch(...) - { - saveLog(1,"(PrinterOPOS::setNalog) "); - dModule->SendError(1,"(PrinterOPOS::setNalog) "); - return true; - } - - return err==0; -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getDaySum() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDaySum) "); - dModule->SendError(1,"(PrinterOPOS::getDaySum) "); - return 0; - } -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getAllSum() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getAllSum) "); - dModule->SendError(1,"(PrinterOPOS::getAllSum) "); - return 0; - } -} - -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -// -bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine ) -{ - //bool err=0; - double cur=0; - double cAllPrice=0; - bool bOk=true; - - try - { - // ( ) - 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; - - // - 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); - - // - for(int i=0;iCount;i++) - { - Goods* goods=(Goods*)FListGoods->Items[i]; - bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"",goods->price,goods->count,0,0); // ( ) - if (!bOk) throw Exception(getLastError()); - } - ClearGoods(); - - // () - double Change; - bOk=fp->Total("","","P",cAllPrice,Change); - if (!bOk) throw Exception(getLastError()); - // - bOk = fp->CloseFiscalInv(); - if(!bOk) throw Exception(getLastError()); - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(bOk," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - 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);// Z - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," Z "+exception.Message); - dModule->SendError(bOk," Z "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," Z ."); - dModule->SendError(1," Z ."); - bOk=false; - } - - return bOk; -}; -//--------------------------------------------------------------------------- -bool FiscalPrinterPort::isOk() -{ - try - { - if (!fp->DiagnosticInfo()) throw Exception(getLastError()); - if(!dModule->getDayShift())throw Exception(" !"); // - } - catch(Exception &exception) - { - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -}; -//--------------------------------------------------------------------------- diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~27~ b/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~27~ deleted file mode 100644 index 687a5aa..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~27~ +++ /dev/null @@ -1,934 +0,0 @@ -//--------------------------------------------------------------------------- - - -#pragma hdrstop - -#include "PrinterOPOS.h" -#include "OposFiscalPrinter_1_7_Lib_OCX.h" -//#include "OposFiscalPrinter_CCO_OCX.h" -#include "ud_Module.h" -#include -#include -#include -#include -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -char * kkm_err_msg_ru[] = { -"OK", //0 -" ID ", //1 FM ID Error -" ", //2 FM Rec Error -"Flash Chip ", //3 Flash Chip cant clear -" ", //4 FM not empty -" ", //5 FM Data destroyed -" ", //6 Cmd ignor prn mode -" ", //7 Oper code is absent -" ", //8 Doc type is absent -". ", //9 Ser num CR -" ", //10 Password error -" /", //11 Data/Time error -". . ", //12 Factory registration has already pass -" ", //13 Ser num CR destroyed -" ", //14 Fiscalize has already pass -" ", //15 Not fisc mode CR -" ", //16 Fiscalize Data destroyed -" ", //17 Rewrite is conclude -" ", //18 Rewrite is destroyed -" ", //19 Shift already open -" ", //20 Shift not opened -" ", //21 Many goods in receipt -" ", //22 EOD data in FM destroyed -" ", //23 Document format error -" ", //24 Text rewrite -" - ", //25 Many parameters in document -" -", //26 Document parameters error -" -", //27 Parameters value error -" ", //28 Object non-existent -" ", //29 Document is not finished -"/ ", //30 goods/operation description not enough -" ", //31 Check sum packet -" ", //32 Prn not ready -" ", //33 Nested interrupts -" ", //34 Check Sum Error -" ", //35 Overflow if FM -" ", //36 Unknown command -"CRC ", //37 CRC RAM -"CRC ", //38 CRC FM -" ", //39 Data port defective -" ", //40 Receipts parameters sequence -"0xy ", //41 0xy for required properties -" ", //42 Length request -" ", //43 number capacity -"", //44 Overflow -" ", //45 Number is absent -" ", //46 Not response -" ", //47 Transmission error -". ", //48 Math overflow -" ...", //49 Paper out... -" !!!", //50 CR not ready!!! -" !!", //51 Memory error!! -" ", //52 Printer off -" ", //53 Insufficient memory -" ", //54 Lenght number less -" ", //55 Zero lenght number -" ", //56 Password lenght less permissible -" ", //57 Zero lenght password -" ", //58 Impossible value -" -", //59 Time-out overdraw -"", -".", -" ", -" ", -"","","","","","",//69 -"","","","","","","","","","",//79 -"","","","","","","","","","",//89 -"","","","","","","","","","",//99 -"","","","","","","","","","",//109 -"","","","","","","","","","",//119 -"","","","","","","","","","",//129 -"","","","","","","","","","",//139 -"","","","","","","","","","",//149 -"","","","","","","","","","",//159 - -"","","","","","","","","","",//169 -"","","","","","","","","","",//179 -"","","","","","","","","","",//189 -"","","","","","","","","","",//199 -"","","","","","","","","","",//209 -"","","","","","","","","","",//219 -"","","","","","","","","","",//229 -"","","","","","","","","","",//239 -" ",//240 Cmd not init -". ",//241 Cmd write err -" -(DSR=0)",//242 Prn not ready (DSR=0) -" , -",//243 Cmd ok -" ",//244 Cmd resp timeout -"",//245 Prn error -" , ",//246 Cmd resp large -" , ",//247 Cmd resp small -" ",//248 -" ",//249 -" ",//250 Cmd break -" ",//251 -" ",//252 -" ",//253 -" ",//254 -" ( )!"//255 Previous cmd run -}; -//------------------------------------------------------------------------------ -bool FiscalPrinter::getNextCheckId(int &id) -{ - CheckId++; // - SaveSetup(); // - id=CheckId; - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::SaveCheck(int CheckId) // () -{ - if(dModule->UserType) //true - ; false - - dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice()); - else - dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice()); - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::deleteCheck(int CheckId) // -{ - 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;iCount;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; -} -//--------------------------------------------------------------------------- -// COM -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(" !"); - - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setHeader) "); - dModule->SendError(1,"(PrinterOPOS::setHeader) "); - } -} -//--------------------------------------------------------------------------- -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(" !"); - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrailer) "); - dModule->SendError(1,"(PrinterOPOS::setTrailer) "); - } -} -//--------------------------------------------------------------------------- -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) -{ - // - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintLine) "); - dModule->SendError(1,"(PrinterOPOS::PrintLine) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -//TODO -bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) // -{ - long err=0; - Currency cur=0; - Currency cAllPrice=0; - bool bOk=true; - - try - { if(Crashed) throw Exception(" !"); - - // ( ) - cAllPrice=getGoodsPrice(); - - if(check==0) // - { - CheckId++; // - check=CheckId; - SaveSetup(); // - } - - if(fp->RecEmpty) throw Exception(" !"); - if(!DayOpened()) throw Exception(" "); - - Currency UnitPrice,AllPriceDrb,AllPrice; - long Qnt,vat; - BSTR* bstr; - WideString sStr; - BSTR sTmp=new OLECHAR[255]; - sTmp=L""; - long MbsResponceCode; - CURRENCY Amount1,Amount2; - - // - //vat=11; sTmp=L""; - //err = fp->DirectIO(4, &vat, &sTmp); - //if (err) goto ErrHandler; - - // TODO!!! - if(headLine.Length()>0) - PrintLine(headLine); - - - if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; // - else fp->FiscalReceiptType=FPTR_RT_SERVICE; // - -//setTrainingMode(true); - - // ( ) - err = fp->BeginFiscalReceipt(true); - if (err) throw Exception(getLastError(&err)); //251 - - // (TODO ) - for(int i=0;iCount;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""); - if (err) throw Exception(getLastError(&err)); - } - ClearGoods(); - - // ( PrintRecTotal) - err = fp->DirectIO(3, &CheckId, &sTmp); - if (err) throw Exception(getLastError(&err)); - - // - //setNalog(1,12); - - // - Amount2.int64=0; - VarCyFromR8(cAllPrice*100,&Amount1); - err=fp->PrintRecTotal(Amount1, Amount1, L"na"); - if (err) throw Exception(getLastError(&err)); - - - err = fp->EndFiscalReceipt(True); // , (AdditionalTrailer) - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(err," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - if(!bOk) - { - fp->PrintRecVoid(L""); - } - - return bOk; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::Cut() // -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::Cut)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::Cut) "); - dModule->SendError(1,"(PrinterOPOS::Cut) "); - } -} -//--------------------------------------------------------------------------- -// ( ) -/*int PrinterOPOS::GetState() -{ - if(!fp->DeviceEnabled)FState=245; - //if(FState!=0) return FState; - // - // -// fp->ResultCodeExtended - return 0; -} */ -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::isOk() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - if(fp->RecEmpty) throw " !"; - err=fp->ResetPrinter(); - if(err) throw Exception(getLastError(&err)); // - - AnsiString str; - - if(!dModule->getDayShift())throw Exception(" !"); // - - bool dOpen=DayOpened(); - if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true; - if(!dOpen) throw Exception(" !"); - - if(DayOpened()) - { - // - TDateTime dt=getDateOpenShift(); - str=getLastError(&err); - if(err) throw Exception(getLastError(&err)); - - dModule->getDate(); - if(HoursBetween(dt,dModule->date)>24) // 24 - throw Exception("[1] "); - } else throw Exception(" !"); - BSTR bstr=new OLECHAR[50]; - err=fp->GetDate(&bstr); - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -} -//--------------------------------------------------------------------------- -// -TDateTime PrinterOPOS::getDateOpenShift() -{ - long err=0; - TDateTime date=0; - try - { - if(Crashed) throw Exception(" !"); - - 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; // - saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDateOpenShift) "); - dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) "); - } - return date; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::GetStatusDescription(long err) -{ - AnsiString str; - try - { - if(err<256) - str=kkm_err_msg_ru[err]; - if(str=="") str=" "; - }catch(...) - { - saveLog(1,"(PrinterOPOS::GetStatusDescription) "); - return " "; - } - return str; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::getLastError(long* err) -{ - BSTR str=new OLECHAR[255]; - str=L" !"; - try - { - fp->DirectIO(1, err, &str); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getLastError) "); - } - if(str==L"") return GetStatusDescription(*err); - return str; -} -//--------------------------------------------------------------------------- -AnsiString PrinterOPOS::getLastError() -{ - long err; - return getLastError(&err); -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::PrintZReport() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - - int sum=getDaySum(); - err=fp->PrintZReport(); - if(err) throw Exception(getLastError(&err)); - dModule->addZReport(sum);// Z - dModule->addPaper(-142*2);// - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintZReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintZReport) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -// -void PrinterOPOS::PrintXReport() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - err=fp->PrintXReport(); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintXReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintXReport) "); - } -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::OpenShift() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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)); // - err=fp->SetVatValue(1,L"120"); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::OpenShift) "); - dModule->SendError(1,"(PrinterOPOS::OpenShift) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::DayOpened() -{ - return fp->DayOpened; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::setTrainingMode(bool val) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrainingMode) "); - dModule->SendError(1,"(PrinterOPOS::setTrainingMode) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::getTrainingMode() -{ - return fp->TrainingModeActive; -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::setNalog(long n,float stavka) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message); - return true; - }catch(...) - { - saveLog(1,"(PrinterOPOS::setNalog) "); - dModule->SendError(1,"(PrinterOPOS::setNalog) "); - return true; - } - - return err==0; -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getDaySum() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDaySum) "); - dModule->SendError(1,"(PrinterOPOS::getDaySum) "); - return 0; - } -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getAllSum() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getAllSum) "); - dModule->SendError(1,"(PrinterOPOS::getAllSum) "); - return 0; - } -} - -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -// -bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine ) -{ - //bool err=0; - double cur=0; - double cAllPrice=0; - bool bOk=true; - - try - { - // ( ) - 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; - - // - 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); - - // - for(int i=0;iCount;i++) - { - Goods* goods=(Goods*)FListGoods->Items[i]; - bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"",goods->price,goods->count,0,0); // ( ) - if (!bOk) throw Exception(getLastError()); - } - ClearGoods(); - - // () - double Change; - bOk=fp->Total("","","P",cAllPrice,Change); - if (!bOk) throw Exception(getLastError()); - // - bOk = fp->CloseFiscalInv(); - if(!bOk) throw Exception(getLastError()); - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(bOk," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - 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);// Z - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," Z "+exception.Message); - dModule->SendError(bOk," Z "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," Z ."); - dModule->SendError(1," Z ."); - bOk=false; - } - - return bOk; -}; -//--------------------------------------------------------------------------- -bool FiscalPrinterPort::isOk() -{ - try - { - if (!fp->DiagnosticInfo()) throw Exception(getLastError()); - if(!dModule->getDayShift())throw Exception(" !"); // - } - catch(Exception &exception) - { - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -}; -//--------------------------------------------------------------------------- diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~28~ b/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~28~ deleted file mode 100644 index 7b4e445..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.cpp.~28~ +++ /dev/null @@ -1,934 +0,0 @@ -//--------------------------------------------------------------------------- - - -#pragma hdrstop - -#include "PrinterOPOS.h" -#include "OposFiscalPrinter_1_7_Lib_OCX.h" -//#include "OposFiscalPrinter_CCO_OCX.h" -#include "ud_Module.h" -#include -#include -#include -#include -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -char * kkm_err_msg_ru[] = { -"OK", //0 -" ID ", //1 FM ID Error -" ", //2 FM Rec Error -"Flash Chip ", //3 Flash Chip cant clear -" ", //4 FM not empty -" ", //5 FM Data destroyed -" ", //6 Cmd ignor prn mode -" ", //7 Oper code is absent -" ", //8 Doc type is absent -". ", //9 Ser num CR -" ", //10 Password error -" /", //11 Data/Time error -". . ", //12 Factory registration has already pass -" ", //13 Ser num CR destroyed -" ", //14 Fiscalize has already pass -" ", //15 Not fisc mode CR -" ", //16 Fiscalize Data destroyed -" ", //17 Rewrite is conclude -" ", //18 Rewrite is destroyed -" ", //19 Shift already open -" ", //20 Shift not opened -" ", //21 Many goods in receipt -" ", //22 EOD data in FM destroyed -" ", //23 Document format error -" ", //24 Text rewrite -" - ", //25 Many parameters in document -" -", //26 Document parameters error -" -", //27 Parameters value error -" ", //28 Object non-existent -" ", //29 Document is not finished -"/ ", //30 goods/operation description not enough -" ", //31 Check sum packet -" ", //32 Prn not ready -" ", //33 Nested interrupts -" ", //34 Check Sum Error -" ", //35 Overflow if FM -" ", //36 Unknown command -"CRC ", //37 CRC RAM -"CRC ", //38 CRC FM -" ", //39 Data port defective -" ", //40 Receipts parameters sequence -"0xy ", //41 0xy for required properties -" ", //42 Length request -" ", //43 number capacity -"", //44 Overflow -" ", //45 Number is absent -" ", //46 Not response -" ", //47 Transmission error -". ", //48 Math overflow -" ...", //49 Paper out... -" !!!", //50 CR not ready!!! -" !!", //51 Memory error!! -" ", //52 Printer off -" ", //53 Insufficient memory -" ", //54 Lenght number less -" ", //55 Zero lenght number -" ", //56 Password lenght less permissible -" ", //57 Zero lenght password -" ", //58 Impossible value -" -", //59 Time-out overdraw -"", -".", -" ", -" ", -"","","","","","",//69 -"","","","","","","","","","",//79 -"","","","","","","","","","",//89 -"","","","","","","","","","",//99 -"","","","","","","","","","",//109 -"","","","","","","","","","",//119 -"","","","","","","","","","",//129 -"","","","","","","","","","",//139 -"","","","","","","","","","",//149 -"","","","","","","","","","",//159 - -"","","","","","","","","","",//169 -"","","","","","","","","","",//179 -"","","","","","","","","","",//189 -"","","","","","","","","","",//199 -"","","","","","","","","","",//209 -"","","","","","","","","","",//219 -"","","","","","","","","","",//229 -"","","","","","","","","","",//239 -" ",//240 Cmd not init -". ",//241 Cmd write err -" -(DSR=0)",//242 Prn not ready (DSR=0) -" , -",//243 Cmd ok -" ",//244 Cmd resp timeout -"",//245 Prn error -" , ",//246 Cmd resp large -" , ",//247 Cmd resp small -" ",//248 -" ",//249 -" ",//250 Cmd break -" ",//251 -" ",//252 -" ",//253 -" ",//254 -" ( )!"//255 Previous cmd run -}; -//------------------------------------------------------------------------------ -bool FiscalPrinter::getNextCheckId(int &id) -{ - CheckId++; // - SaveSetup(); // - id=CheckId; - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::SaveCheck(int CheckId) // () -{ - if(dModule->UserType) //true - ; false - - dModule->SaveCheck(CheckId,dModule->UserId,0,getGoodsPrice()); - else - dModule->SaveCheck(CheckId,0,dModule->UserId,getGoodsPrice()); - return true; -} -//--------------------------------------------------------------------------- -bool FiscalPrinter::deleteCheck(int CheckId) // -{ - 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;iCount;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; -} -//--------------------------------------------------------------------------- -// COM -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(" !"); - - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setHeader)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setHeader)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setHeader) "); - dModule->SendError(1,"(PrinterOPOS::setHeader) "); - } -} -//--------------------------------------------------------------------------- -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(" !"); - for(int i=0;iCount;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; // - saveLog(err,"(PrinterOPOS::setTrailer)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrailer)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrailer) "); - dModule->SendError(1,"(PrinterOPOS::setTrailer) "); - } -} -//--------------------------------------------------------------------------- -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) -{ - // - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::PrintLine)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintLine)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintLine) "); - dModule->SendError(1,"(PrinterOPOS::PrintLine) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -//TODO -bool PrinterOPOS::PrintCheck(bool sales, int check, WideString headLine) // -{ - long err=0; - Currency cur=0; - Currency cAllPrice=0; - bool bOk=true; - - try - { if(Crashed) throw Exception(" !"); - - // ( ) - cAllPrice=getGoodsPrice(); - - if(check==0) // - { - CheckId++; // - check=CheckId; - SaveSetup(); // - } - - if(fp->RecEmpty) throw Exception(" !"); - if(!DayOpened()) throw Exception(" "); - - Currency UnitPrice,AllPriceDrb,AllPrice; - long Qnt,vat; - BSTR* bstr; - WideString sStr; - BSTR sTmp=new OLECHAR[255]; - sTmp=L""; - long MbsResponceCode; - CURRENCY Amount1,Amount2; - - // - //vat=11; sTmp=L""; - //err = fp->DirectIO(4, &vat, &sTmp); - //if (err) goto ErrHandler; - - // TODO!!! - if(headLine.Length()>0) - PrintLine(headLine); - - - if(sales) fp->FiscalReceiptType = FPTR_RT_SALES; // - else fp->FiscalReceiptType=FPTR_RT_SERVICE; // - -//setTrainingMode(true); - - // ( ) - err = fp->BeginFiscalReceipt(true); - if (err) throw Exception(getLastError(&err)); //251 - - // (TODO ) - for(int i=0;iCount;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""); - if (err) throw Exception(getLastError(&err)); - } - ClearGoods(); - - // ( PrintRecTotal) - err = fp->DirectIO(3, &CheckId, &sTmp); - if (err) throw Exception(getLastError(&err)); - - // - //setNalog(1,12); - - // - Amount2.int64=0; - VarCyFromR8(cAllPrice*100,&Amount1); - err=fp->PrintRecTotal(Amount1, Amount1, L"na"); - if (err) throw Exception(getLastError(&err)); - - - err = fp->EndFiscalReceipt(True); // , (AdditionalTrailer) - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(err," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - if(err==251) Crashed=true; // - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+IntToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - if(!bOk) - { - fp->PrintRecVoid(L""); - } - - return bOk; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::Cut() // -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::Cut)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::Cut)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::Cut) "); - dModule->SendError(1,"(PrinterOPOS::Cut) "); - } -} -//--------------------------------------------------------------------------- -// ( ) -/*int PrinterOPOS::GetState() -{ - if(!fp->DeviceEnabled)FState=245; - //if(FState!=0) return FState; - // - // -// fp->ResultCodeExtended - return 0; -} */ -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::isOk() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - if(fp->RecEmpty) throw " !"; - err=fp->ResetPrinter(); - if(err) throw Exception(getLastError(&err)); // - - AnsiString str; - - if(!dModule->getDayShift())throw Exception(" !"); // - - bool dOpen=DayOpened(); - if(!dOpen && AutoOpenShift && OpenShift()) dOpen=true; - if(!dOpen) throw Exception(" !"); - - if(DayOpened()) - { - // - TDateTime dt=getDateOpenShift(); - str=getLastError(&err); - if(err) throw Exception(getLastError(&err)); - - dModule->getDate(); - if(HoursBetween(dt,dModule->date)>24) // 24 - throw Exception("[1] "); - } else throw Exception(" !"); - BSTR bstr=new OLECHAR[50]; - err=fp->GetDate(&bstr); - if(err) throw Exception(getLastError(&err)); - } - catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - if(err==251) Crashed=true; // - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -} -//--------------------------------------------------------------------------- -// -TDateTime PrinterOPOS::getDateOpenShift() -{ - long err=0; - TDateTime date=0; - try - { - if(Crashed) throw Exception(" !"); - - 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; // - saveLog(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDateOpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDateOpenShift) "); - dModule->SendError(1,"(PrinterOPOS::getDateOpenShift) "); - } - return date; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::GetStatusDescription(long err) -{ - AnsiString str; - try - { - if(err<256) - str=kkm_err_msg_ru[err]; - if(str=="") str=" "; - }catch(...) - { - saveLog(1,"(PrinterOPOS::GetStatusDescription) "); - return " "; - } - return str; -} -//--------------------------------------------------------------------------- -// -AnsiString PrinterOPOS::getLastError(long* err) -{ - BSTR str=new OLECHAR[255]; - str=L" !"; - try - { - fp->DirectIO(1, err, &str); - }catch(...) - { - saveLog(1,"(PrinterOPOS::getLastError) "); - } - if(str==L"") return GetStatusDescription(*err); - return str; -} -//--------------------------------------------------------------------------- -AnsiString PrinterOPOS::getLastError() -{ - long err; - return getLastError(&err); -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::PrintZReport() -{ - long err=0; - try - { - if(Crashed) throw Exception(" !"); - - int sum=getDaySum(); - err=fp->PrintZReport(); - if(err) throw Exception(getLastError(&err)); - dModule->addZReport(sum);// Z - dModule->addPaper(-142*2);// - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintZReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintZReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintZReport) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -// -void PrinterOPOS::PrintXReport() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - err=fp->PrintXReport(); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::PrintXReport)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::PrintXReport) "); - dModule->SendError(1,"(PrinterOPOS::PrintXReport) "); - } -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::OpenShift() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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)); // - err=fp->SetVatValue(1,L"120"); - if(err) throw Exception(getLastError(&err)); - }catch(Exception &exception) - { - if(err==251) Crashed=true; // - saveLog(err,"(PrinterOPOS::OpenShift)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::OpenShift)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::OpenShift) "); - dModule->SendError(1,"(PrinterOPOS::OpenShift) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::DayOpened() -{ - return fp->DayOpened; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::setTrainingMode(bool val) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setTrainingMode)"+exception.Message); - }catch(...) - { - saveLog(1,"(PrinterOPOS::setTrainingMode) "); - dModule->SendError(1,"(PrinterOPOS::setTrainingMode) "); - } - return err==0; -} -//--------------------------------------------------------------------------- -bool PrinterOPOS::getTrainingMode() -{ - return fp->TrainingModeActive; -} -//--------------------------------------------------------------------------- -// -bool PrinterOPOS::setNalog(long n,float stavka) -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::setNalog)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::setNalog)"+exception.Message); - return true; - }catch(...) - { - saveLog(1,"(PrinterOPOS::setNalog) "); - dModule->SendError(1,"(PrinterOPOS::setNalog) "); - return true; - } - - return err==0; -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getDaySum() -{ - long err; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getDaySum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getDaySum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getDaySum) "); - dModule->SendError(1,"(PrinterOPOS::getDaySum) "); - return 0; - } -} -//--------------------------------------------------------------------------- -// -int PrinterOPOS::getAllSum() -{ - long err=0; - try - { if(Crashed) throw Exception(" !"); - 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; // - saveLog(err,"(PrinterOPOS::getAllSum)"+exception.Message); - dModule->SendError(err,"(PrinterOPOS::getAllSum)"+exception.Message); - return 0; - }catch(...) - { - saveLog(1,"(PrinterOPOS::getAllSum) "); - dModule->SendError(1,"(PrinterOPOS::getAllSum) "); - return 0; - } -} - -//--------------------------------------------------------------------------- -//sales - true , false - -//check - =0 -// -bool FiscalPrinterPort::PrintCheck(bool sales, int check, WideString headLine ) -{ - //bool err=0; - double cur=0; - double cAllPrice=0; - bool bOk=true; - - try - { - // ( ) - 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; - - // - 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); - - // - for(int i=0;iCount;i++) - { - Goods* goods=(Goods*)FListGoods->Items[i]; - bOk=fp->RegisterSale(goods->name1.c_bstr(),goods->name2.c_bstr(),0,"",goods->price,goods->count,0,0); // ( ) - if (!bOk) throw Exception(getLastError()); - } - ClearGoods(); - - // () - double Change; - bOk=fp->Total("","","P",cAllPrice,Change); - if (!bOk) throw Exception(getLastError()); - // - bOk = fp->CloseFiscalInv(); - if(!bOk) throw Exception(getLastError()); - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+CurrToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - dModule->SendError(bOk," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)+". "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - dModule->SendError(1," : N: "+IntToStr(dModule->UserId)+" : "+FloatToStr(cAllPrice)+" : "+AnsiString(CheckId)); - bOk=false; - } - // - 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);// Z - } - catch(Exception &exception) - { - ClearGoods(); - saveLog(1," Z "+exception.Message); - dModule->SendError(bOk," Z "+exception.Message); - bOk=false; - } - catch(...) - { - ClearGoods(); - saveLog(1," Z ."); - dModule->SendError(1," Z ."); - bOk=false; - } - - return bOk; -}; -//--------------------------------------------------------------------------- -bool FiscalPrinterPort::isOk() -{ - try - { - if (!fp->DiagnosticInfo()) throw Exception(getLastError()); - if(!dModule->getDayShift())throw Exception(" !"); // - } - catch(Exception &exception) - { - saveLog(1,"(PrinterOPOS::isOk)"+exception.Message); - dModule->SendError(1,"(PrinterOPOS::isOk)"+exception.Message); - return false; - } - catch (...) - { - saveLog(1,"(PrinterOPOS::isOk) "); - dModule->SendError(1,"(PrinterOPOS::isOk) "); - return false; - } - return true; -}; -//--------------------------------------------------------------------------- diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.h.~10~ b/devices/Printers/Mebius/__history/PrinterOPOS.h.~10~ deleted file mode 100644 index d4e94b4..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.h.~10~ +++ /dev/null @@ -1,207 +0,0 @@ -//--------------------------------------------------------------------------- -#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; -//--------------------------------------------------------------------------- -// -class Goods -{ - private: - public: - WideString name1; // 1 - WideString name2; // 2 - double price; // - long count; // - long VatInfo; // - Goods(WideString name1, WideString name2, double price, long count,long VatInfo) - { //if(name1==NULL) - // this->name1=L""; - //else - this->name1=name1; - //if(name2==NULL) - // this->name2=L""; - //else - this->name2=name2; - this->price=price; - this->count=count; - this->VatInfo=VatInfo; - }; -}; -//--------------------------------------------------------------------------- -class FiscalPrinter -{ - protected: - bool Crashed; - long FState; - TList* FListGoods; - long CheckId; // - public: - AnsiString HeadLine; // " " - WideString GoodsName; // - WideString CasireName; // - bool TestMode; - bool AutoOpenShift; // - - FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); }; - virtual AnsiString getPrinterName()=0; - virtual bool Start()=0; - virtual bool isOk()=0; - virtual long getCheckId(){ return CheckId; }; // - void ClearGoods() - { - try - { - while(FListGoods->Count>0) - { - Goods* g=(Goods*)FListGoods->Items[0]; - delete g; - FListGoods->Delete(0); - } - FListGoods->Clear(); - }catch(...) - { - Crashed=true; - } - }; - int getGoodsPrice(); - virtual bool PrintLine(WideString line)=0; - void addGoods(Goods* goods) - { - FListGoods->Add(goods); - }; - virtual bool getNextCheckId(int &id); - - bool SaveCheck(int CheckId); - virtual bool PrintCheck(bool sales, int check, WideString headLine ) { return false; }; - bool deleteCheck(int CheckId); - virtual AnsiString getLastError(){ return ""; }; - virtual bool DayOpened(){ return false; }; - virtual void setHeader(TStrings* Text){}; - virtual void getHeader(TStrings* Text){}; - virtual void setTrailer(TStrings* Text){}; - virtual void getTrailer(TStrings* Text){}; - virtual bool OpenShift(){ return true; }; // - - int getCOMPort(); - int getBaudRate(); - void setBaudRate(int val); - void setCOMPort(int n); - virtual bool PrintZReport()=0; - virtual void PrintXReport()=0; - - void LoadSetup(); - void SaveSetup(); - virtual bool setTrainingMode(bool val){ return false; }; - virtual bool Cut(){ return false; }; // - virtual bool setNalog(long n,float stavka){ return false; }; // - virtual int getAllSum(){ return 0; }; -}; -//--------------------------------------------------------------------------- -// OPOS -class PrinterOPOS : public FiscalPrinter -{ - private: - TOPOSFiscalPrinter *fp; - public: - - - bool setTrainingMode(bool val); - bool getTrainingMode(); - - PrinterOPOS(TComponent* AOwner); - virtual ~PrinterOPOS(); - AnsiString getPrinterName(){ return "Moebius";}; - bool Start(); // COM - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool SaveCheck(int CheckId); // - bool deleteCheck(int CheckId); // - - bool Cut(); // - //int GetState(); //0 - - bool isOk(); // - AnsiString GetStatusDescription(long StatusCode); // - AnsiString getLastError(long* err); // - AnsiString getLastError(); // - TDateTime getDateOpenShift(); // - - void setHeader(TStrings* Text); - void getHeader(TStrings* Text); - void setTrailer(TStrings* Text); - void getTrailer(TStrings* Text); - int getCOMPort(); - void setCOMPort(int n); - int getDaySum(); // Z - int getAllSum(); // - - - bool PrintLine(WideString line); - bool PrintZReport(); // - void PrintXReport(); // - bool OpenShift(); // - bool DayOpened(); // - - bool setNalog(long n,float stavka); // - - void Push(){}; // OPOS -}; -//--------------------------------------------------------------------------- -class FiscalPrinterPort : public FiscalPrinter -{ - private: - FP300KZ* fp; - public: - FiscalPrinterPort():FiscalPrinter() - { fp = new FP300KZ(); - }; - virtual ~FiscalPrinterPort(){ delete fp; }; - AnsiString getPrinterName(){ return "Port";}; - bool getNextCheckId(int &res) - { - int num; - bool b=fp->GetLastPrintedDocNumber(num); - res=num+1; - if(!b)throw Exception(getLastError()); - return b; - }; - - bool Start() - { - fp->OpenCOMPort(getCOMPort(),getBaudRate()); - return fp->PrinterInit(); - }; - long getCheckId(){ int num; fp->GetLastPrintedDocNumber(num); return num; }; // - - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool isOk(); - bool PrintLine(WideString line) - { - //if(line!=NULL) - return fp->PrintLine(line.c_bstr()); - //else - // return fp->PrintLine(L""); - }; - AnsiString getLastError() - { - return fp->getLastErrorDest().c_str(); - }; - bool DayOpened(){ return true; }; - bool PrintZReport(); - void PrintXReport() { fp->PrintXReport(); }; - bool Cut(){ return fp->CutPaper(); }; -}; -//--------------------------------------------------------------------------- -extern FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.h.~11~ b/devices/Printers/Mebius/__history/PrinterOPOS.h.~11~ deleted file mode 100644 index f88269d..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.h.~11~ +++ /dev/null @@ -1,208 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterOPOSH -#define PrinterOPOSH -//--------------------------------------------------------------------------- -#include -//#include "OposFiscalPrinter_1_7_Lib_OCX.h" -#include "OposFiscalPrinter_CCO_TLB.h" -#include "FP300KZ.h" -//--------------------------------------------------------------------------- -const LONG FPTR_RT_CASH_IN = 1; -const LONG FPTR_RT_CASH_OUT = 2; -const LONG FPTR_RT_GENERIC = 3; -const LONG FPTR_RT_SALES = 4; -const LONG FPTR_RT_SERVICE = 5; -const LONG FPTR_RT_SIMPLE_INVOICE = 6; -//--------------------------------------------------------------------------- -// -class Goods -{ - private: - public: - WideString name1; // 1 - WideString name2; // 2 - double price; // - long count; // - long VatInfo; // - Goods(WideString name1, WideString name2, double price, long count,long VatInfo) - { //if(name1==NULL) - // this->name1=L""; - //else - this->name1=name1; - //if(name2==NULL) - // this->name2=L""; - //else - this->name2=name2; - this->price=price; - this->count=count; - this->VatInfo=VatInfo; - }; -}; -//--------------------------------------------------------------------------- -class FiscalPrinter -{ - protected: - bool Crashed; - long FState; - TList* FListGoods; - long CheckId; // - public: - AnsiString HeadLine; // " " - WideString GoodsName; // - WideString CasireName; // - bool TestMode; - bool AutoOpenShift; // - - FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); }; - virtual AnsiString getPrinterName()=0; - virtual bool Start()=0; - virtual bool isOk()=0; - virtual long getCheckId(){ return CheckId; }; // - void ClearGoods() - { - try - { - while(FListGoods->Count>0) - { - Goods* g=(Goods*)FListGoods->Items[0]; - delete g; - FListGoods->Delete(0); - } - FListGoods->Clear(); - }catch(...) - { - Crashed=true; - } - }; - int getGoodsPrice(); - virtual bool PrintLine(WideString line)=0; - void addGoods(Goods* goods) - { - FListGoods->Add(goods); - }; - virtual bool getNextCheckId(int &id); - - bool SaveCheck(int CheckId); - virtual bool PrintCheck(bool sales, int check, WideString headLine ) { return false; }; - bool deleteCheck(int CheckId); - virtual AnsiString getLastError(){ return ""; }; - virtual bool DayOpened(){ return false; }; - virtual void setHeader(TStrings* Text){}; - virtual void getHeader(TStrings* Text){}; - virtual void setTrailer(TStrings* Text){}; - virtual void getTrailer(TStrings* Text){}; - virtual bool OpenShift(){ return true; }; // - - int getCOMPort(); - int getBaudRate(); - void setBaudRate(int val); - void setCOMPort(int n); - virtual bool PrintZReport()=0; - virtual void PrintXReport()=0; - - void LoadSetup(); - void SaveSetup(); - virtual bool setTrainingMode(bool val){ return false; }; - virtual bool Cut(){ return false; }; // - virtual bool setNalog(long n,float stavka){ return false; }; // - virtual int getAllSum(){ return 0; }; -}; -//--------------------------------------------------------------------------- -// OPOS -class PrinterOPOS : public FiscalPrinter -{ - private: - TOPOSFiscalPrinter *fp; - public: - - - bool setTrainingMode(bool val); - bool getTrainingMode(); - - PrinterOPOS(TComponent* AOwner); - virtual ~PrinterOPOS(); - AnsiString getPrinterName(){ return "Moebius";}; - bool Start(); // COM - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool SaveCheck(int CheckId); // - bool deleteCheck(int CheckId); // - - bool Cut(); // - //int GetState(); //0 - - bool isOk(); // - AnsiString GetStatusDescription(long StatusCode); // - AnsiString getLastError(long* err); // - AnsiString getLastError(); // - TDateTime getDateOpenShift(); // - - void setHeader(TStrings* Text); - void getHeader(TStrings* Text); - void setTrailer(TStrings* Text); - void getTrailer(TStrings* Text); - int getCOMPort(); - void setCOMPort(int n); - int getDaySum(); // Z - int getAllSum(); // - - - bool PrintLine(WideString line); - bool PrintZReport(); // - void PrintXReport(); // - bool OpenShift(); // - bool DayOpened(); // - - bool setNalog(long n,float stavka); // - - void Push(){}; // OPOS -}; -//--------------------------------------------------------------------------- -class FiscalPrinterPort : public FiscalPrinter -{ - private: - FP300KZ* fp; - public: - FiscalPrinterPort():FiscalPrinter() - { fp = new FP300KZ(); - }; - virtual ~FiscalPrinterPort(){ delete fp; }; - AnsiString getPrinterName(){ return "Port";}; - bool getNextCheckId(int &res) - { - int num; - bool b=fp->GetLastPrintedDocNumber(num); - res=num+1; - if(!b)throw Exception(getLastError()); - return b; - }; - - bool Start() - { - fp->OpenCOMPort(getCOMPort(),getBaudRate()); - return fp->PrinterInit(); - }; - long getCheckId(){ int num; fp->GetLastPrintedDocNumber(num); return num; }; // - - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool isOk(); - bool PrintLine(WideString line) - { - //if(line!=NULL) - return fp->PrintLine(line.c_bstr()); - //else - // return fp->PrintLine(L""); - }; - AnsiString getLastError() - { - return fp->getLastErrorDest().c_str(); - }; - bool DayOpened(){ return true; }; - bool PrintZReport(); - void PrintXReport() { fp->PrintXReport(); }; - bool Cut(){ return fp->CutPaper(); }; -}; -//--------------------------------------------------------------------------- -extern FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.h.~12~ b/devices/Printers/Mebius/__history/PrinterOPOS.h.~12~ deleted file mode 100644 index 82666b6..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.h.~12~ +++ /dev/null @@ -1,209 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterOPOSH -#define PrinterOPOSH -//--------------------------------------------------------------------------- -//#include -#include -//#include "OposFiscalPrinter_1_7_Lib_OCX.h" -#include "OposFiscalPrinter_CCO_TLB.h" -#include "FP300KZ.h" -//--------------------------------------------------------------------------- -const LONG FPTR_RT_CASH_IN = 1; -const LONG FPTR_RT_CASH_OUT = 2; -const LONG FPTR_RT_GENERIC = 3; -const LONG FPTR_RT_SALES = 4; -const LONG FPTR_RT_SERVICE = 5; -const LONG FPTR_RT_SIMPLE_INVOICE = 6; -//--------------------------------------------------------------------------- -// -class Goods -{ - private: - public: - WideString name1; // 1 - WideString name2; // 2 - double price; // - long count; // - long VatInfo; // - Goods(WideString name1, WideString name2, double price, long count,long VatInfo) - { //if(name1==NULL) - // this->name1=L""; - //else - this->name1=name1; - //if(name2==NULL) - // this->name2=L""; - //else - this->name2=name2; - this->price=price; - this->count=count; - this->VatInfo=VatInfo; - }; -}; -//--------------------------------------------------------------------------- -class FiscalPrinter -{ - protected: - bool Crashed; - long FState; - TList* FListGoods; - long CheckId; // - public: - AnsiString HeadLine; // " " - WideString GoodsName; // - WideString CasireName; // - bool TestMode; - bool AutoOpenShift; // - - FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); }; - virtual AnsiString getPrinterName()=0; - virtual bool Start()=0; - virtual bool isOk()=0; - virtual long getCheckId(){ return CheckId; }; // - void ClearGoods() - { - try - { - while(FListGoods->Count>0) - { - Goods* g=(Goods*)FListGoods->Items[0]; - delete g; - FListGoods->Delete(0); - } - FListGoods->Clear(); - }catch(...) - { - Crashed=true; - } - }; - int getGoodsPrice(); - virtual bool PrintLine(WideString line)=0; - void addGoods(Goods* goods) - { - FListGoods->Add(goods); - }; - virtual bool getNextCheckId(int &id); - - bool SaveCheck(int CheckId); - virtual bool PrintCheck(bool sales, int check, WideString headLine ) { return false; }; - bool deleteCheck(int CheckId); - virtual AnsiString getLastError(){ return ""; }; - virtual bool DayOpened(){ return false; }; - virtual void setHeader(TStrings* Text){}; - virtual void getHeader(TStrings* Text){}; - virtual void setTrailer(TStrings* Text){}; - virtual void getTrailer(TStrings* Text){}; - virtual bool OpenShift(){ return true; }; // - - int getCOMPort(); - int getBaudRate(); - void setBaudRate(int val); - void setCOMPort(int n); - virtual bool PrintZReport()=0; - virtual void PrintXReport()=0; - - void LoadSetup(); - void SaveSetup(); - virtual bool setTrainingMode(bool val){ return false; }; - virtual bool Cut(){ return false; }; // - virtual bool setNalog(long n,float stavka){ return false; }; // - virtual int getAllSum(){ return 0; }; -}; -//--------------------------------------------------------------------------- -// OPOS -class PrinterOPOS : public FiscalPrinter -{ - private: - TOPOSFiscalPrinter *fp; - public: - - - bool setTrainingMode(bool val); - bool getTrainingMode(); - - PrinterOPOS(TComponent* AOwner); - virtual ~PrinterOPOS(); - AnsiString getPrinterName(){ return "Moebius";}; - bool Start(); // COM - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool SaveCheck(int CheckId); // - bool deleteCheck(int CheckId); // - - bool Cut(); // - //int GetState(); //0 - - bool isOk(); // - AnsiString GetStatusDescription(long StatusCode); // - AnsiString getLastError(long* err); // - AnsiString getLastError(); // - TDateTime getDateOpenShift(); // - - void setHeader(TStrings* Text); - void getHeader(TStrings* Text); - void setTrailer(TStrings* Text); - void getTrailer(TStrings* Text); - int getCOMPort(); - void setCOMPort(int n); - int getDaySum(); // Z - int getAllSum(); // - - - bool PrintLine(WideString line); - bool PrintZReport(); // - void PrintXReport(); // - bool OpenShift(); // - bool DayOpened(); // - - bool setNalog(long n,float stavka); // - - void Push(){}; // OPOS -}; -//--------------------------------------------------------------------------- -class FiscalPrinterPort : public FiscalPrinter -{ - private: - FP300KZ* fp; - public: - FiscalPrinterPort():FiscalPrinter() - { fp = new FP300KZ(); - }; - virtual ~FiscalPrinterPort(){ delete fp; }; - AnsiString getPrinterName(){ return "Port";}; - bool getNextCheckId(int &res) - { - int num; - bool b=fp->GetLastPrintedDocNumber(num); - res=num+1; - if(!b)throw Exception(getLastError()); - return b; - }; - - bool Start() - { - fp->OpenCOMPort(getCOMPort(),getBaudRate()); - return fp->PrinterInit(); - }; - long getCheckId(){ int num; fp->GetLastPrintedDocNumber(num); return num; }; // - - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool isOk(); - bool PrintLine(WideString line) - { - //if(line!=NULL) - return fp->PrintLine(line.c_bstr()); - //else - // return fp->PrintLine(L""); - }; - AnsiString getLastError() - { - return fp->getLastErrorDest().c_str(); - }; - bool DayOpened(){ return true; }; - bool PrintZReport(); - void PrintXReport() { fp->PrintXReport(); }; - bool Cut(){ return fp->CutPaper(); }; -}; -//--------------------------------------------------------------------------- -extern FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.h.~13~ b/devices/Printers/Mebius/__history/PrinterOPOS.h.~13~ deleted file mode 100644 index 48ac0c2..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.h.~13~ +++ /dev/null @@ -1,209 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterOPOSH -#define PrinterOPOSH -//--------------------------------------------------------------------------- -//#include -#include -//#include "OposFiscalPrinter_1_7_Lib_OCX.h" -#include "OposFiscalPrinter_CCO_TLB.h" -#include "FP300KZ.h" -//--------------------------------------------------------------------------- -const LONG FPTR_RT_CASH_IN = 1; -const LONG FPTR_RT_CASH_OUT = 2; -const LONG FPTR_RT_GENERIC = 3; -const LONG FPTR_RT_SALES = 4; -const LONG FPTR_RT_SERVICE = 5; -const LONG FPTR_RT_SIMPLE_INVOICE = 6; -//--------------------------------------------------------------------------- -// -class Goods -{ - private: - public: - WideString name1; // 1 - WideString name2; // 2 - double price; // - long count; // - long VatInfo; // - Goods(WideString name1, WideString name2, double price, long count,long VatInfo) - { //if(name1==NULL) - // this->name1=L""; - //else - this->name1=name1; - //if(name2==NULL) - // this->name2=L""; - //else - this->name2=name2; - this->price=price; - this->count=count; - this->VatInfo=VatInfo; - }; -}; -//--------------------------------------------------------------------------- -class FiscalPrinter -{ - protected: - bool Crashed; - long FState; - TList* FListGoods; - long CheckId; // - public: - AnsiString HeadLine; // " " - WideString GoodsName; // - WideString CasireName; // - bool TestMode; - bool AutoOpenShift; // - - FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); }; - virtual AnsiString getPrinterName()=0; - virtual bool Start()=0; - virtual bool isOk()=0; - virtual long getCheckId(){ return CheckId; }; // - void ClearGoods() - { - try - { - while(FListGoods->Count>0) - { - Goods* g=(Goods*)FListGoods->Items[0]; - delete g; - FListGoods->Delete(0); - } - FListGoods->Clear(); - }catch(...) - { - Crashed=true; - } - }; - int getGoodsPrice(); - virtual bool PrintLine(WideString line)=0; - void addGoods(Goods* goods) - { - FListGoods->Add(goods); - }; - virtual bool getNextCheckId(int &id); - - bool SaveCheck(int CheckId); - virtual bool PrintCheck(bool sales, int check, WideString headLine ) { return false; }; - bool deleteCheck(int CheckId); - virtual AnsiString getLastError(){ return ""; }; - virtual bool DayOpened(){ return false; }; - virtual void setHeader(TStrings* Text){}; - virtual void getHeader(TStrings* Text){}; - virtual void setTrailer(TStrings* Text){}; - virtual void getTrailer(TStrings* Text){}; - virtual bool OpenShift(){ return true; }; // - - int getCOMPort(); - int getBaudRate(); - void setBaudRate(int val); - void setCOMPort(int n); - virtual bool PrintZReport()=0; - virtual void PrintXReport()=0; - - void LoadSetup(); - void SaveSetup(); - virtual bool setTrainingMode(bool val){ return false; }; - virtual bool Cut(){ return false; }; // - virtual bool setNalog(long n,float stavka){ return false; }; // - virtual int getAllSum(){ return 0; }; -}; -//--------------------------------------------------------------------------- -// OPOS -class PrinterOPOS : public FiscalPrinter -{ - private: - TOPOSFiscalPrinter_1_7 *fp; - public: - - - bool setTrainingMode(bool val); - bool getTrainingMode(); - - PrinterOPOS(TComponent* AOwner); - virtual ~PrinterOPOS(); - AnsiString getPrinterName(){ return "Moebius";}; - bool Start(); // COM - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool SaveCheck(int CheckId); // - bool deleteCheck(int CheckId); // - - bool Cut(); // - //int GetState(); //0 - - bool isOk(); // - AnsiString GetStatusDescription(long StatusCode); // - AnsiString getLastError(long* err); // - AnsiString getLastError(); // - TDateTime getDateOpenShift(); // - - void setHeader(TStrings* Text); - void getHeader(TStrings* Text); - void setTrailer(TStrings* Text); - void getTrailer(TStrings* Text); - int getCOMPort(); - void setCOMPort(int n); - int getDaySum(); // Z - int getAllSum(); // - - - bool PrintLine(WideString line); - bool PrintZReport(); // - void PrintXReport(); // - bool OpenShift(); // - bool DayOpened(); // - - bool setNalog(long n,float stavka); // - - void Push(){}; // OPOS -}; -//--------------------------------------------------------------------------- -class FiscalPrinterPort : public FiscalPrinter -{ - private: - FP300KZ* fp; - public: - FiscalPrinterPort():FiscalPrinter() - { fp = new FP300KZ(); - }; - virtual ~FiscalPrinterPort(){ delete fp; }; - AnsiString getPrinterName(){ return "Port";}; - bool getNextCheckId(int &res) - { - int num; - bool b=fp->GetLastPrintedDocNumber(num); - res=num+1; - if(!b)throw Exception(getLastError()); - return b; - }; - - bool Start() - { - fp->OpenCOMPort(getCOMPort(),getBaudRate()); - return fp->PrinterInit(); - }; - long getCheckId(){ int num; fp->GetLastPrintedDocNumber(num); return num; }; // - - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool isOk(); - bool PrintLine(WideString line) - { - //if(line!=NULL) - return fp->PrintLine(line.c_bstr()); - //else - // return fp->PrintLine(L""); - }; - AnsiString getLastError() - { - return fp->getLastErrorDest().c_str(); - }; - bool DayOpened(){ return true; }; - bool PrintZReport(); - void PrintXReport() { fp->PrintXReport(); }; - bool Cut(){ return fp->CutPaper(); }; -}; -//--------------------------------------------------------------------------- -extern FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.h.~14~ b/devices/Printers/Mebius/__history/PrinterOPOS.h.~14~ deleted file mode 100644 index 10b157a..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.h.~14~ +++ /dev/null @@ -1,209 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterOPOSH -#define PrinterOPOSH -//--------------------------------------------------------------------------- -//#include -#include -//#include "OposFiscalPrinter_1_7_Lib_OCX.h" -#include "OposFiscalPrinter_CCO_OCX.h" -#include "FP300KZ.h" -//--------------------------------------------------------------------------- -const LONG FPTR_RT_CASH_IN = 1; -const LONG FPTR_RT_CASH_OUT = 2; -const LONG FPTR_RT_GENERIC = 3; -const LONG FPTR_RT_SALES = 4; -const LONG FPTR_RT_SERVICE = 5; -const LONG FPTR_RT_SIMPLE_INVOICE = 6; -//--------------------------------------------------------------------------- -// -class Goods -{ - private: - public: - WideString name1; // 1 - WideString name2; // 2 - double price; // - long count; // - long VatInfo; // - Goods(WideString name1, WideString name2, double price, long count,long VatInfo) - { //if(name1==NULL) - // this->name1=L""; - //else - this->name1=name1; - //if(name2==NULL) - // this->name2=L""; - //else - this->name2=name2; - this->price=price; - this->count=count; - this->VatInfo=VatInfo; - }; -}; -//--------------------------------------------------------------------------- -class FiscalPrinter -{ - protected: - bool Crashed; - long FState; - TList* FListGoods; - long CheckId; // - public: - AnsiString HeadLine; // " " - WideString GoodsName; // - WideString CasireName; // - bool TestMode; - bool AutoOpenShift; // - - FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); }; - virtual AnsiString getPrinterName()=0; - virtual bool Start()=0; - virtual bool isOk()=0; - virtual long getCheckId(){ return CheckId; }; // - void ClearGoods() - { - try - { - while(FListGoods->Count>0) - { - Goods* g=(Goods*)FListGoods->Items[0]; - delete g; - FListGoods->Delete(0); - } - FListGoods->Clear(); - }catch(...) - { - Crashed=true; - } - }; - int getGoodsPrice(); - virtual bool PrintLine(WideString line)=0; - void addGoods(Goods* goods) - { - FListGoods->Add(goods); - }; - virtual bool getNextCheckId(int &id); - - bool SaveCheck(int CheckId); - virtual bool PrintCheck(bool sales, int check, WideString headLine ) { return false; }; - bool deleteCheck(int CheckId); - virtual AnsiString getLastError(){ return ""; }; - virtual bool DayOpened(){ return false; }; - virtual void setHeader(TStrings* Text){}; - virtual void getHeader(TStrings* Text){}; - virtual void setTrailer(TStrings* Text){}; - virtual void getTrailer(TStrings* Text){}; - virtual bool OpenShift(){ return true; }; // - - int getCOMPort(); - int getBaudRate(); - void setBaudRate(int val); - void setCOMPort(int n); - virtual bool PrintZReport()=0; - virtual void PrintXReport()=0; - - void LoadSetup(); - void SaveSetup(); - virtual bool setTrainingMode(bool val){ return false; }; - virtual bool Cut(){ return false; }; // - virtual bool setNalog(long n,float stavka){ return false; }; // - virtual int getAllSum(){ return 0; }; -}; -//--------------------------------------------------------------------------- -// OPOS -class PrinterOPOS : public FiscalPrinter -{ - private: - TOPOSFiscalPrinter_1_7 *fp; - public: - - - bool setTrainingMode(bool val); - bool getTrainingMode(); - - PrinterOPOS(TComponent* AOwner); - virtual ~PrinterOPOS(); - AnsiString getPrinterName(){ return "Moebius";}; - bool Start(); // COM - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool SaveCheck(int CheckId); // - bool deleteCheck(int CheckId); // - - bool Cut(); // - //int GetState(); //0 - - bool isOk(); // - AnsiString GetStatusDescription(long StatusCode); // - AnsiString getLastError(long* err); // - AnsiString getLastError(); // - TDateTime getDateOpenShift(); // - - void setHeader(TStrings* Text); - void getHeader(TStrings* Text); - void setTrailer(TStrings* Text); - void getTrailer(TStrings* Text); - int getCOMPort(); - void setCOMPort(int n); - int getDaySum(); // Z - int getAllSum(); // - - - bool PrintLine(WideString line); - bool PrintZReport(); // - void PrintXReport(); // - bool OpenShift(); // - bool DayOpened(); // - - bool setNalog(long n,float stavka); // - - void Push(){}; // OPOS -}; -//--------------------------------------------------------------------------- -class FiscalPrinterPort : public FiscalPrinter -{ - private: - FP300KZ* fp; - public: - FiscalPrinterPort():FiscalPrinter() - { fp = new FP300KZ(); - }; - virtual ~FiscalPrinterPort(){ delete fp; }; - AnsiString getPrinterName(){ return "Port";}; - bool getNextCheckId(int &res) - { - int num; - bool b=fp->GetLastPrintedDocNumber(num); - res=num+1; - if(!b)throw Exception(getLastError()); - return b; - }; - - bool Start() - { - fp->OpenCOMPort(getCOMPort(),getBaudRate()); - return fp->PrinterInit(); - }; - long getCheckId(){ int num; fp->GetLastPrintedDocNumber(num); return num; }; // - - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool isOk(); - bool PrintLine(WideString line) - { - //if(line!=NULL) - return fp->PrintLine(line.c_bstr()); - //else - // return fp->PrintLine(L""); - }; - AnsiString getLastError() - { - return fp->getLastErrorDest().c_str(); - }; - bool DayOpened(){ return true; }; - bool PrintZReport(); - void PrintXReport() { fp->PrintXReport(); }; - bool Cut(){ return fp->CutPaper(); }; -}; -//--------------------------------------------------------------------------- -extern FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.h.~15~ b/devices/Printers/Mebius/__history/PrinterOPOS.h.~15~ deleted file mode 100644 index 324fa54..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.h.~15~ +++ /dev/null @@ -1,209 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterOPOSH -#define PrinterOPOSH -//--------------------------------------------------------------------------- -//#include -#include -//#include "OposFiscalPrinter_1_7_Lib_OCX.h" -#include "OposFiscalPrinter_CCO_OCX.h" -#include "FP300KZ.h" -//--------------------------------------------------------------------------- -const LONG FPTR_RT_CASH_IN = 1; -const LONG FPTR_RT_CASH_OUT = 2; -const LONG FPTR_RT_GENERIC = 3; -const LONG FPTR_RT_SALES = 4; -const LONG FPTR_RT_SERVICE = 5; -const LONG FPTR_RT_SIMPLE_INVOICE = 6; -//--------------------------------------------------------------------------- -// -class Goods -{ - private: - public: - WideString name1; // 1 - WideString name2; // 2 - double price; // - long count; // - long VatInfo; // - Goods(WideString name1, WideString name2, double price, long count,long VatInfo) - { //if(name1==NULL) - // this->name1=L""; - //else - this->name1=name1; - //if(name2==NULL) - // this->name2=L""; - //else - this->name2=name2; - this->price=price; - this->count=count; - this->VatInfo=VatInfo; - }; -}; -//--------------------------------------------------------------------------- -class FiscalPrinter -{ - protected: - bool Crashed; - long FState; - TList* FListGoods; - long CheckId; // - public: - AnsiString HeadLine; // " " - WideString GoodsName; // - WideString CasireName; // - bool TestMode; - bool AutoOpenShift; // - - FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); }; - virtual AnsiString getPrinterName()=0; - virtual bool Start()=0; - virtual bool isOk()=0; - virtual long getCheckId(){ return CheckId; }; // - void ClearGoods() - { - try - { - while(FListGoods->Count>0) - { - Goods* g=(Goods*)FListGoods->Items[0]; - delete g; - FListGoods->Delete(0); - } - FListGoods->Clear(); - }catch(...) - { - Crashed=true; - } - }; - int getGoodsPrice(); - virtual bool PrintLine(WideString line)=0; - void addGoods(Goods* goods) - { - FListGoods->Add(goods); - }; - virtual bool getNextCheckId(int &id); - - bool SaveCheck(int CheckId); - virtual bool PrintCheck(bool sales, int check, WideString headLine ) { return false; }; - bool deleteCheck(int CheckId); - virtual AnsiString getLastError(){ return ""; }; - virtual bool DayOpened(){ return false; }; - virtual void setHeader(TStrings* Text){}; - virtual void getHeader(TStrings* Text){}; - virtual void setTrailer(TStrings* Text){}; - virtual void getTrailer(TStrings* Text){}; - virtual bool OpenShift(){ return true; }; // - - int getCOMPort(); - int getBaudRate(); - void setBaudRate(int val); - void setCOMPort(int n); - virtual bool PrintZReport()=0; - virtual void PrintXReport()=0; - - void LoadSetup(); - void SaveSetup(); - virtual bool setTrainingMode(bool val){ return false; }; - virtual bool Cut(){ return false; }; // - virtual bool setNalog(long n,float stavka){ return false; }; // - virtual int getAllSum(){ return 0; }; -}; -//--------------------------------------------------------------------------- -// OPOS -class PrinterOPOS : public FiscalPrinter -{ - private: - TOPOSFiscalPrinter *fp; - public: - - - bool setTrainingMode(bool val); - bool getTrainingMode(); - - PrinterOPOS(TComponent* AOwner); - virtual ~PrinterOPOS(); - AnsiString getPrinterName(){ return "Moebius";}; - bool Start(); // COM - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool SaveCheck(int CheckId); // - bool deleteCheck(int CheckId); // - - bool Cut(); // - //int GetState(); //0 - - bool isOk(); // - AnsiString GetStatusDescription(long StatusCode); // - AnsiString getLastError(long* err); // - AnsiString getLastError(); // - TDateTime getDateOpenShift(); // - - void setHeader(TStrings* Text); - void getHeader(TStrings* Text); - void setTrailer(TStrings* Text); - void getTrailer(TStrings* Text); - int getCOMPort(); - void setCOMPort(int n); - int getDaySum(); // Z - int getAllSum(); // - - - bool PrintLine(WideString line); - bool PrintZReport(); // - void PrintXReport(); // - bool OpenShift(); // - bool DayOpened(); // - - bool setNalog(long n,float stavka); // - - void Push(){}; // OPOS -}; -//--------------------------------------------------------------------------- -class FiscalPrinterPort : public FiscalPrinter -{ - private: - FP300KZ* fp; - public: - FiscalPrinterPort():FiscalPrinter() - { fp = new FP300KZ(); - }; - virtual ~FiscalPrinterPort(){ delete fp; }; - AnsiString getPrinterName(){ return "Port";}; - bool getNextCheckId(int &res) - { - int num; - bool b=fp->GetLastPrintedDocNumber(num); - res=num+1; - if(!b)throw Exception(getLastError()); - return b; - }; - - bool Start() - { - fp->OpenCOMPort(getCOMPort(),getBaudRate()); - return fp->PrinterInit(); - }; - long getCheckId(){ int num; fp->GetLastPrintedDocNumber(num); return num; }; // - - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool isOk(); - bool PrintLine(WideString line) - { - //if(line!=NULL) - return fp->PrintLine(line.c_bstr()); - //else - // return fp->PrintLine(L""); - }; - AnsiString getLastError() - { - return fp->getLastErrorDest().c_str(); - }; - bool DayOpened(){ return true; }; - bool PrintZReport(); - void PrintXReport() { fp->PrintXReport(); }; - bool Cut(){ return fp->CutPaper(); }; -}; -//--------------------------------------------------------------------------- -extern FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.h.~16~ b/devices/Printers/Mebius/__history/PrinterOPOS.h.~16~ deleted file mode 100644 index 142b30e..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.h.~16~ +++ /dev/null @@ -1,209 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterOPOSH -#define PrinterOPOSH -//--------------------------------------------------------------------------- -//#include -#include -#include "OposFiscalPrinter_1_7_Lib_OCX.h" -//#include "OposFiscalPrinter_CCO_OCX.h" -#include "FP300KZ.h" -//--------------------------------------------------------------------------- -const LONG FPTR_RT_CASH_IN = 1; -const LONG FPTR_RT_CASH_OUT = 2; -const LONG FPTR_RT_GENERIC = 3; -const LONG FPTR_RT_SALES = 4; -const LONG FPTR_RT_SERVICE = 5; -const LONG FPTR_RT_SIMPLE_INVOICE = 6; -//--------------------------------------------------------------------------- -// -class Goods -{ - private: - public: - WideString name1; // 1 - WideString name2; // 2 - double price; // - long count; // - long VatInfo; // - Goods(WideString name1, WideString name2, double price, long count,long VatInfo) - { //if(name1==NULL) - // this->name1=L""; - //else - this->name1=name1; - //if(name2==NULL) - // this->name2=L""; - //else - this->name2=name2; - this->price=price; - this->count=count; - this->VatInfo=VatInfo; - }; -}; -//--------------------------------------------------------------------------- -class FiscalPrinter -{ - protected: - bool Crashed; - long FState; - TList* FListGoods; - long CheckId; // - public: - AnsiString HeadLine; // " " - WideString GoodsName; // - WideString CasireName; // - bool TestMode; - bool AutoOpenShift; // - - FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); }; - virtual AnsiString getPrinterName()=0; - virtual bool Start()=0; - virtual bool isOk()=0; - virtual long getCheckId(){ return CheckId; }; // - void ClearGoods() - { - try - { - while(FListGoods->Count>0) - { - Goods* g=(Goods*)FListGoods->Items[0]; - delete g; - FListGoods->Delete(0); - } - FListGoods->Clear(); - }catch(...) - { - Crashed=true; - } - }; - int getGoodsPrice(); - virtual bool PrintLine(WideString line)=0; - void addGoods(Goods* goods) - { - FListGoods->Add(goods); - }; - virtual bool getNextCheckId(int &id); - - bool SaveCheck(int CheckId); - virtual bool PrintCheck(bool sales, int check, WideString headLine ) { return false; }; - bool deleteCheck(int CheckId); - virtual AnsiString getLastError(){ return ""; }; - virtual bool DayOpened(){ return false; }; - virtual void setHeader(TStrings* Text){}; - virtual void getHeader(TStrings* Text){}; - virtual void setTrailer(TStrings* Text){}; - virtual void getTrailer(TStrings* Text){}; - virtual bool OpenShift(){ return true; }; // - - int getCOMPort(); - int getBaudRate(); - void setBaudRate(int val); - void setCOMPort(int n); - virtual bool PrintZReport()=0; - virtual void PrintXReport()=0; - - void LoadSetup(); - void SaveSetup(); - virtual bool setTrainingMode(bool val){ return false; }; - virtual bool Cut(){ return false; }; // - virtual bool setNalog(long n,float stavka){ return false; }; // - virtual int getAllSum(){ return 0; }; -}; -//--------------------------------------------------------------------------- -// OPOS -class PrinterOPOS : public FiscalPrinter -{ - private: - TOPOSFiscalPrinter *fp; - public: - - - bool setTrainingMode(bool val); - bool getTrainingMode(); - - PrinterOPOS(TComponent* AOwner); - virtual ~PrinterOPOS(); - AnsiString getPrinterName(){ return "Moebius";}; - bool Start(); // COM - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool SaveCheck(int CheckId); // - bool deleteCheck(int CheckId); // - - bool Cut(); // - //int GetState(); //0 - - bool isOk(); // - AnsiString GetStatusDescription(long StatusCode); // - AnsiString getLastError(long* err); // - AnsiString getLastError(); // - TDateTime getDateOpenShift(); // - - void setHeader(TStrings* Text); - void getHeader(TStrings* Text); - void setTrailer(TStrings* Text); - void getTrailer(TStrings* Text); - int getCOMPort(); - void setCOMPort(int n); - int getDaySum(); // Z - int getAllSum(); // - - - bool PrintLine(WideString line); - bool PrintZReport(); // - void PrintXReport(); // - bool OpenShift(); // - bool DayOpened(); // - - bool setNalog(long n,float stavka); // - - void Push(){}; // OPOS -}; -//--------------------------------------------------------------------------- -class FiscalPrinterPort : public FiscalPrinter -{ - private: - FP300KZ* fp; - public: - FiscalPrinterPort():FiscalPrinter() - { fp = new FP300KZ(); - }; - virtual ~FiscalPrinterPort(){ delete fp; }; - AnsiString getPrinterName(){ return "Port";}; - bool getNextCheckId(int &res) - { - int num; - bool b=fp->GetLastPrintedDocNumber(num); - res=num+1; - if(!b)throw Exception(getLastError()); - return b; - }; - - bool Start() - { - fp->OpenCOMPort(getCOMPort(),getBaudRate()); - return fp->PrinterInit(); - }; - long getCheckId(){ int num; fp->GetLastPrintedDocNumber(num); return num; }; // - - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool isOk(); - bool PrintLine(WideString line) - { - //if(line!=NULL) - return fp->PrintLine(line.c_bstr()); - //else - // return fp->PrintLine(L""); - }; - AnsiString getLastError() - { - return fp->getLastErrorDest().c_str(); - }; - bool DayOpened(){ return true; }; - bool PrintZReport(); - void PrintXReport() { fp->PrintXReport(); }; - bool Cut(){ return fp->CutPaper(); }; -}; -//--------------------------------------------------------------------------- -extern FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.h.~17~ b/devices/Printers/Mebius/__history/PrinterOPOS.h.~17~ deleted file mode 100644 index 142b30e..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.h.~17~ +++ /dev/null @@ -1,209 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterOPOSH -#define PrinterOPOSH -//--------------------------------------------------------------------------- -//#include -#include -#include "OposFiscalPrinter_1_7_Lib_OCX.h" -//#include "OposFiscalPrinter_CCO_OCX.h" -#include "FP300KZ.h" -//--------------------------------------------------------------------------- -const LONG FPTR_RT_CASH_IN = 1; -const LONG FPTR_RT_CASH_OUT = 2; -const LONG FPTR_RT_GENERIC = 3; -const LONG FPTR_RT_SALES = 4; -const LONG FPTR_RT_SERVICE = 5; -const LONG FPTR_RT_SIMPLE_INVOICE = 6; -//--------------------------------------------------------------------------- -// -class Goods -{ - private: - public: - WideString name1; // 1 - WideString name2; // 2 - double price; // - long count; // - long VatInfo; // - Goods(WideString name1, WideString name2, double price, long count,long VatInfo) - { //if(name1==NULL) - // this->name1=L""; - //else - this->name1=name1; - //if(name2==NULL) - // this->name2=L""; - //else - this->name2=name2; - this->price=price; - this->count=count; - this->VatInfo=VatInfo; - }; -}; -//--------------------------------------------------------------------------- -class FiscalPrinter -{ - protected: - bool Crashed; - long FState; - TList* FListGoods; - long CheckId; // - public: - AnsiString HeadLine; // " " - WideString GoodsName; // - WideString CasireName; // - bool TestMode; - bool AutoOpenShift; // - - FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); }; - virtual AnsiString getPrinterName()=0; - virtual bool Start()=0; - virtual bool isOk()=0; - virtual long getCheckId(){ return CheckId; }; // - void ClearGoods() - { - try - { - while(FListGoods->Count>0) - { - Goods* g=(Goods*)FListGoods->Items[0]; - delete g; - FListGoods->Delete(0); - } - FListGoods->Clear(); - }catch(...) - { - Crashed=true; - } - }; - int getGoodsPrice(); - virtual bool PrintLine(WideString line)=0; - void addGoods(Goods* goods) - { - FListGoods->Add(goods); - }; - virtual bool getNextCheckId(int &id); - - bool SaveCheck(int CheckId); - virtual bool PrintCheck(bool sales, int check, WideString headLine ) { return false; }; - bool deleteCheck(int CheckId); - virtual AnsiString getLastError(){ return ""; }; - virtual bool DayOpened(){ return false; }; - virtual void setHeader(TStrings* Text){}; - virtual void getHeader(TStrings* Text){}; - virtual void setTrailer(TStrings* Text){}; - virtual void getTrailer(TStrings* Text){}; - virtual bool OpenShift(){ return true; }; // - - int getCOMPort(); - int getBaudRate(); - void setBaudRate(int val); - void setCOMPort(int n); - virtual bool PrintZReport()=0; - virtual void PrintXReport()=0; - - void LoadSetup(); - void SaveSetup(); - virtual bool setTrainingMode(bool val){ return false; }; - virtual bool Cut(){ return false; }; // - virtual bool setNalog(long n,float stavka){ return false; }; // - virtual int getAllSum(){ return 0; }; -}; -//--------------------------------------------------------------------------- -// OPOS -class PrinterOPOS : public FiscalPrinter -{ - private: - TOPOSFiscalPrinter *fp; - public: - - - bool setTrainingMode(bool val); - bool getTrainingMode(); - - PrinterOPOS(TComponent* AOwner); - virtual ~PrinterOPOS(); - AnsiString getPrinterName(){ return "Moebius";}; - bool Start(); // COM - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool SaveCheck(int CheckId); // - bool deleteCheck(int CheckId); // - - bool Cut(); // - //int GetState(); //0 - - bool isOk(); // - AnsiString GetStatusDescription(long StatusCode); // - AnsiString getLastError(long* err); // - AnsiString getLastError(); // - TDateTime getDateOpenShift(); // - - void setHeader(TStrings* Text); - void getHeader(TStrings* Text); - void setTrailer(TStrings* Text); - void getTrailer(TStrings* Text); - int getCOMPort(); - void setCOMPort(int n); - int getDaySum(); // Z - int getAllSum(); // - - - bool PrintLine(WideString line); - bool PrintZReport(); // - void PrintXReport(); // - bool OpenShift(); // - bool DayOpened(); // - - bool setNalog(long n,float stavka); // - - void Push(){}; // OPOS -}; -//--------------------------------------------------------------------------- -class FiscalPrinterPort : public FiscalPrinter -{ - private: - FP300KZ* fp; - public: - FiscalPrinterPort():FiscalPrinter() - { fp = new FP300KZ(); - }; - virtual ~FiscalPrinterPort(){ delete fp; }; - AnsiString getPrinterName(){ return "Port";}; - bool getNextCheckId(int &res) - { - int num; - bool b=fp->GetLastPrintedDocNumber(num); - res=num+1; - if(!b)throw Exception(getLastError()); - return b; - }; - - bool Start() - { - fp->OpenCOMPort(getCOMPort(),getBaudRate()); - return fp->PrinterInit(); - }; - long getCheckId(){ int num; fp->GetLastPrintedDocNumber(num); return num; }; // - - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool isOk(); - bool PrintLine(WideString line) - { - //if(line!=NULL) - return fp->PrintLine(line.c_bstr()); - //else - // return fp->PrintLine(L""); - }; - AnsiString getLastError() - { - return fp->getLastErrorDest().c_str(); - }; - bool DayOpened(){ return true; }; - bool PrintZReport(); - void PrintXReport() { fp->PrintXReport(); }; - bool Cut(){ return fp->CutPaper(); }; -}; -//--------------------------------------------------------------------------- -extern FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.h.~18~ b/devices/Printers/Mebius/__history/PrinterOPOS.h.~18~ deleted file mode 100644 index 41e7c68..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.h.~18~ +++ /dev/null @@ -1,209 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef PrinterOPOSH -#define PrinterOPOSH -//--------------------------------------------------------------------------- -//#include -#include -#include "OposFiscalPrinter_1_7_Lib_OCX.h" -//#include "OposFiscalPrinter_CCO_OCX.h" -#include "FP300KZ.h" -//--------------------------------------------------------------------------- -const LONG FPTR_RT_CASH_IN = 1; -const LONG FPTR_RT_CASH_OUT = 2; -const LONG FPTR_RT_GENERIC = 3; -const LONG FPTR_RT_SALES = 4; -const LONG FPTR_RT_SERVICE = 5; -const LONG FPTR_RT_SIMPLE_INVOICE = 6; -//--------------------------------------------------------------------------- -// -class Goods -{ - private: - public: - WideString name1; // 1 - WideString name2; // 2 - double price; // - long count; // - long VatInfo; // - Goods(WideString name1, WideString name2, double price, long count,long VatInfo) - { //if(name1==NULL) - // this->name1=L""; - //else - this->name1=name1; - //if(name2==NULL) - // this->name2=L""; - //else - this->name2=name2; - this->price=price; - this->count=count; - this->VatInfo=VatInfo; - }; -}; -//--------------------------------------------------------------------------- -class FiscalPrinter -{ - protected: - bool Crashed; - long FState; - TList* FListGoods; - long CheckId; // - public: - AnsiString HeadLine; // " " - WideString GoodsName; // - WideString CasireName; // - bool TestMode; - bool AutoOpenShift; // - - FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); }; - virtual AnsiString getPrinterName()=0; - virtual bool Start()=0; - virtual bool isOk()=0; - virtual long getCheckId(){ return CheckId; }; // - void ClearGoods() - { - try - { - while(FListGoods->Count>0) - { - Goods* g=(Goods*)FListGoods->Items[0]; - delete g; - FListGoods->Delete(0); - } - FListGoods->Clear(); - }catch(...) - { - Crashed=true; - } - }; - int getGoodsPrice(); - virtual bool PrintLine(WideString line)=0; - void addGoods(Goods* goods) - { - FListGoods->Add(goods); - }; - virtual bool getNextCheckId(int &id); - - bool SaveCheck(int CheckId); - virtual bool PrintCheck(bool sales, int check, WideString headLine ) { return false; }; - bool deleteCheck(int CheckId); - virtual AnsiString getLastError(){ return ""; }; - virtual bool DayOpened(){ return false; }; - virtual void setHeader(TStrings* Text){}; - virtual void getHeader(TStrings* Text){}; - virtual void setTrailer(TStrings* Text){}; - virtual void getTrailer(TStrings* Text){}; - virtual bool OpenShift(){ return true; }; // - - int getCOMPort(); - int getBaudRate(); - void setBaudRate(int val); - void setCOMPort(int n); - virtual bool PrintZReport()=0; - virtual void PrintXReport()=0; - - void LoadSetup(); - void SaveSetup(); - virtual bool setTrainingMode(bool val){ return false; }; - virtual bool Cut(){ return false; }; // - virtual bool setNalog(long n,float stavka){ return false; }; // - virtual int getAllSum(){ return 0; }; -}; -//--------------------------------------------------------------------------- -// OPOS -class PrinterOPOS : public FiscalPrinter -{ - private: - TOPOSFiscalPrinter *fp; - public: - - - bool setTrainingMode(bool val); - bool getTrainingMode(); - - PrinterOPOS(TComponent* AOwner); - virtual ~PrinterOPOS(); - AnsiString getPrinterName(){ return "Moebius";}; - bool Start(); // COM - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool SaveCheck(int CheckId); // - bool deleteCheck(int CheckId); // - - bool Cut(); // - //int GetState(); //0 - - bool isOk(); // - AnsiString GetStatusDescription(long StatusCode); // - AnsiString getLastError(long* err); // - AnsiString getLastError(); // - TDateTime getDateOpenShift(); // - - void setHeader(TStrings* Text); - void getHeader(TStrings* Text); - void setTrailer(TStrings* Text); - void getTrailer(TStrings* Text); - int getCOMPort(); - void setCOMPort(int n); - int getDaySum(); // Z - int getAllSum(); // - - - bool PrintLine(WideString line); - bool PrintZReport(); // - void PrintXReport(); // - bool OpenShift(); // - bool DayOpened(); // - - bool setNalog(long n,float stavka); // - - void Push(){}; // OPOS -}; -//--------------------------------------------------------------------------- -class FiscalPrinterPort : public FiscalPrinter -{ - private: - FP300KZ* fp; - public: - FiscalPrinterPort():FiscalPrinter() - { fp = new FP300KZ(); - }; - virtual ~FiscalPrinterPort(){ delete fp; }; - AnsiString getPrinterName(){ return "Port";}; - bool getNextCheckId(int &res) - { - int num; - bool b=fp->GetLastPrintedDocNumber(num); - res=num+1; - if(!b)throw Exception(getLastError()); - return b; - }; - - bool Start() - { - fp->OpenCOMPort(getCOMPort(),getBaudRate()); - return fp->PrinterInit(); - }; - long getCheckId(){ int num; fp->GetLastPrintedDocNumber(num); return num; }; // - - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool isOk(); - bool PrintLine(WideString line) - { - //if(line!=NULL) - return fp->PrintLine(line.c_bstr()); - //else - // return fp->PrintLine(L""); - }; - AnsiString getLastError() - { - return fp->getLastErrorDest().c_str(); - }; - bool DayOpened(){ return true; }; - bool PrintZReport(); - void PrintXReport() { fp->PrintXReport(); }; - bool Cut(){ return fp->CutPaper(); }; -}; -//--------------------------------------------------------------------------- -extern FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Printers/Mebius/__history/PrinterOPOS.h.~9~ b/devices/Printers/Mebius/__history/PrinterOPOS.h.~9~ deleted file mode 100644 index d4e94b4..0000000 --- a/devices/Printers/Mebius/__history/PrinterOPOS.h.~9~ +++ /dev/null @@ -1,207 +0,0 @@ -//--------------------------------------------------------------------------- -#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; -//--------------------------------------------------------------------------- -// -class Goods -{ - private: - public: - WideString name1; // 1 - WideString name2; // 2 - double price; // - long count; // - long VatInfo; // - Goods(WideString name1, WideString name2, double price, long count,long VatInfo) - { //if(name1==NULL) - // this->name1=L""; - //else - this->name1=name1; - //if(name2==NULL) - // this->name2=L""; - //else - this->name2=name2; - this->price=price; - this->count=count; - this->VatInfo=VatInfo; - }; -}; -//--------------------------------------------------------------------------- -class FiscalPrinter -{ - protected: - bool Crashed; - long FState; - TList* FListGoods; - long CheckId; // - public: - AnsiString HeadLine; // " " - WideString GoodsName; // - WideString CasireName; // - bool TestMode; - bool AutoOpenShift; // - - FiscalPrinter(){ FListGoods= new TList(); CheckId=0; LoadSetup(); }; - virtual AnsiString getPrinterName()=0; - virtual bool Start()=0; - virtual bool isOk()=0; - virtual long getCheckId(){ return CheckId; }; // - void ClearGoods() - { - try - { - while(FListGoods->Count>0) - { - Goods* g=(Goods*)FListGoods->Items[0]; - delete g; - FListGoods->Delete(0); - } - FListGoods->Clear(); - }catch(...) - { - Crashed=true; - } - }; - int getGoodsPrice(); - virtual bool PrintLine(WideString line)=0; - void addGoods(Goods* goods) - { - FListGoods->Add(goods); - }; - virtual bool getNextCheckId(int &id); - - bool SaveCheck(int CheckId); - virtual bool PrintCheck(bool sales, int check, WideString headLine ) { return false; }; - bool deleteCheck(int CheckId); - virtual AnsiString getLastError(){ return ""; }; - virtual bool DayOpened(){ return false; }; - virtual void setHeader(TStrings* Text){}; - virtual void getHeader(TStrings* Text){}; - virtual void setTrailer(TStrings* Text){}; - virtual void getTrailer(TStrings* Text){}; - virtual bool OpenShift(){ return true; }; // - - int getCOMPort(); - int getBaudRate(); - void setBaudRate(int val); - void setCOMPort(int n); - virtual bool PrintZReport()=0; - virtual void PrintXReport()=0; - - void LoadSetup(); - void SaveSetup(); - virtual bool setTrainingMode(bool val){ return false; }; - virtual bool Cut(){ return false; }; // - virtual bool setNalog(long n,float stavka){ return false; }; // - virtual int getAllSum(){ return 0; }; -}; -//--------------------------------------------------------------------------- -// OPOS -class PrinterOPOS : public FiscalPrinter -{ - private: - TOPOSFiscalPrinter *fp; - public: - - - bool setTrainingMode(bool val); - bool getTrainingMode(); - - PrinterOPOS(TComponent* AOwner); - virtual ~PrinterOPOS(); - AnsiString getPrinterName(){ return "Moebius";}; - bool Start(); // COM - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool SaveCheck(int CheckId); // - bool deleteCheck(int CheckId); // - - bool Cut(); // - //int GetState(); //0 - - bool isOk(); // - AnsiString GetStatusDescription(long StatusCode); // - AnsiString getLastError(long* err); // - AnsiString getLastError(); // - TDateTime getDateOpenShift(); // - - void setHeader(TStrings* Text); - void getHeader(TStrings* Text); - void setTrailer(TStrings* Text); - void getTrailer(TStrings* Text); - int getCOMPort(); - void setCOMPort(int n); - int getDaySum(); // Z - int getAllSum(); // - - - bool PrintLine(WideString line); - bool PrintZReport(); // - void PrintXReport(); // - bool OpenShift(); // - bool DayOpened(); // - - bool setNalog(long n,float stavka); // - - void Push(){}; // OPOS -}; -//--------------------------------------------------------------------------- -class FiscalPrinterPort : public FiscalPrinter -{ - private: - FP300KZ* fp; - public: - FiscalPrinterPort():FiscalPrinter() - { fp = new FP300KZ(); - }; - virtual ~FiscalPrinterPort(){ delete fp; }; - AnsiString getPrinterName(){ return "Port";}; - bool getNextCheckId(int &res) - { - int num; - bool b=fp->GetLastPrintedDocNumber(num); - res=num+1; - if(!b)throw Exception(getLastError()); - return b; - }; - - bool Start() - { - fp->OpenCOMPort(getCOMPort(),getBaudRate()); - return fp->PrinterInit(); - }; - long getCheckId(){ int num; fp->GetLastPrintedDocNumber(num); return num; }; // - - bool PrintCheck(bool sales, int check, WideString headLine ); // - - bool isOk(); - bool PrintLine(WideString line) - { - //if(line!=NULL) - return fp->PrintLine(line.c_bstr()); - //else - // return fp->PrintLine(L""); - }; - AnsiString getLastError() - { - return fp->getLastErrorDest().c_str(); - }; - bool DayOpened(){ return true; }; - bool PrintZReport(); - void PrintXReport() { fp->PrintXReport(); }; - bool Cut(){ return fp->CutPaper(); }; -}; -//--------------------------------------------------------------------------- -extern FiscalPrinter* g_printer; -//--------------------------------------------------------------------------- -#endif diff --git a/devices/Validators/__history/Validator.cpp.~1~ b/devices/Validators/__history/Validator.cpp.~1~ deleted file mode 100644 index c0e08d2..0000000 --- a/devices/Validators/__history/Validator.cpp.~1~ +++ /dev/null @@ -1,327 +0,0 @@ -//------------------------------------------------------------------------------ - -#pragma hdrstop - -#include -#include "Validator.h" -#include "ud_Module.h" - -//--------------------------------------------------------------------------- -Validator* validator=NULL; -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -#define POLYNOMIAL 0x08408 -unsigned int GetCRC16(unsigned char* bufData, unsigned int sizeData) -{ - unsigned int CRC, i; - unsigned char j; - CRC = 0; - for(i=0; i < sizeData; i++) - { - CRC ^= bufData[i]; - for(j=0; j < 8; j++) - { - if(CRC & 0x0001) {CRC >>= 1; CRC ^= POLYNOMIAL;} - else CRC >>= 1; - } - } - return CRC; -} -//--------------------------------------------------------------------------- -/*unsigned int GetCRC16(char* bufData, unsigned int sizeData) -{ return GetCRC16((unsigned char*)bufData, sizeData); -}*/ -//--------------------------------------------------------------------------- -// -int addZero(int val,int cnt) -{ - for(int i=0;iComNumber=ini->ReadInteger("Validator","Port",0); - cPort->BaudRate=ini->ReadInteger("Validator","BaudRate",0); - delete ini; -} -//--------------------------------------------------------------------------- -void Validator::SaveSetup() -{ - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - ini->WriteInteger("Validator","Port",cPort->ComNumber); - ini->WriteInteger("Validator","BaudRate",cPort->BaudRate); - delete ini; -} -//--------------------------------------------------------------------------- -bool Validator::startPay() // -{ - if(vThread!=NULL) vThread->Stop(); // - vThread = new ValidatorThread(false); -} -//--------------------------------------------------------------------------- -bool Validator::stopPay() // -{ - if(vThread!=NULL) - vThread->Stop(); -} -//--------------------------------------------------------------------------- -// 2 CRC -bool Validator::CheckOnCRC(unsigned char* lpBuffer,unsigned long nSize) -{ - if(nSize<2) return false; - unsigned int CRC=GetCRC16(lpBuffer,nSize-2); - WORD* pCRC=(WORD*)&lpBuffer[nSize-2]; - return (CRC==*pCRC); -} -//--------------------------------------------------------------------------- -//req - CRC -//ans - -// CRC -bool Validator::SendCommand(std::string req, std::string &ans) -{ - unsigned short crc=GetCRC16((unsigned char*)req.c_str(),req.size()); - req+=((char*)(&crc))[0]; req+=((char*)(&crc))[1]; - DWORD BytesWritten=cPort->Write(req.c_str(),req.size()); - // - ans=""; - for(int i=0;i<255;i++) - { - Sleep(10); - char ch; - DWORD BytesRead=cPort->Read(&ch,1); - if (BytesRead>0) ans+=ch; else break; - } - // CRC - if(ans.size()>=2) - { - crc=GetCRC16((unsigned char*)ans.c_str(),ans.size()-2); - if(crc==((unsigned short*)(&ans.c_str()[ans.size()-2]))[0]) return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -bool Validator::Start() -{ - if(cPort->Open(cPort->ComNumber)) - { - cPort->BaudRate=cPort->BaudRate; - if(!cPort->Setup(2)) return false; - - if(!Reset()) return false; // - if(!getSerialNumber()) return false; // - if(!getNominals()) return false; // - if(!SetEnableBillTypes(true)) return false; // - }else return false; -} -//--------------------------------------------------------------------------- -// (RESET 30H Command for Bill-to-Bill unit to self-reset) -bool Validator::Reset() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x30; - return SendCommand(req,ans); -} -//--------------------------------------------------------------------------- -// (GET STATUS 31H Request for Bill-to-Bill unit set-up status) -bool Validator::GetStatus() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x31; //req+=(char)0x41; req+=(char)0xB3; - bool r=SendCommand(req,ans); - if(r && ans.length()>6) // - { - // 3 - // 3 - // 3 - } - return r; -} -//--------------------------------------------------------------------------- -// -//enable - true , false -bool Validator::SetEnableBillTypes(bool enable) -{ - std::string req,ans; - if(enable) - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0xFF; req+=(char)0xFF; req+=(char)0xFF; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - }else - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - } - bool r=SendCommand(req,ans); - return r; -} -//--------------------------------------------------------------------------- -bool Validator::getSerialNumber() -{ - DWORD BytesWritten=cPort->Write(ConIdent,sizeof(ConIdent)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return false; - // - if(BytesRead!=39) - { - saveLog(1," "); - return false; - } - // - AnsiString str1((char*)&ReadAr[3],15); - BatchNumber=str1.Trim(); - - AnsiString str2((char*)&ReadAr[18],12); - SerialNumber=str2.Trim(); - - Sleep(100); - return true; -} -//--------------------------------------------------------------------------- -// -bool Validator::getNominals() -{ - bNominals=false; - Sleep(100); // - DWORD BytesWritten=cPort->Write(ConGetBT,sizeof(ConGetBT)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return bNominals; - Sleep(100); // - for(unsigned char i=0;i<23;i++) - { - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - // 3 - bt[i].country[0]=ReadAr[3+i*5+1]; - bt[i].country[1]=ReadAr[3+i*5+2]; - bt[i].country[2]=ReadAr[3+i*5+3]; - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - } - bNominals=true; - return bNominals; -} -//--------------------------------------------------------------------------- -// , . -//state - (. ) -// 0 -int Validator::getPay(int &state) -{ - state=0; - if(!cPort->bOpen){Sleep(1000); return 0;} - - int result=0; - DWORD BytesWritten=0; - DWORD BytesRead=0; - - BytesWritten=cPort->Write(ConReACK, sizeof(ConReACK)); // - Sleep(10); - - BytesWritten=cPort->Write(ConStPoll, sizeof(ConStPoll)); // - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(CheckOnCRC(ReadAr,BytesRead)) - { - if(ReadAr[3] == 0x13) //19 RESET - { - //saveLog(1,"(State)0x13 "); - }else - if(ReadAr[3]==0x14) //20 (IDLING The state in which Bill-to-Bill is ready accept bills) - { - //saveLog(1,"(State)0x14 "); - }else - if(ReadAr[3]==0x15) //21 ( 3 ) - { - state=0x15; - //saveLog(1,"(State)21 1 "); - }else - if(ReadAr[3]==0x17) //23 - { - //saveLog(1,"(State)23 !"); - }else - if(ReadAr[3]==0x19) //25 DISABLED The Bill-to-Bill unit has been disabled by the Controller and also the state in which Bill-to-Bill unit is after initialization. - { - state=0x19; - //saveLog(1,"(State)25 !!!"); - - SetEnableBillTypes(true); - }else - if(ReadAr[3]==0x1c) //28 - { - //saveLog(1,"(State)28 "); - }else - if(ReadAr[3]==0x41) //41H ... - { - //saveLog(1,"(State)0x41 ..."); - }else - if(ReadAr[3]==0x45) //69 "". - { - //saveLog(1,"(State)69 "); - }else - if(ReadAr[3]==0x81) //129 - { - state=0x81; - //saveLog(1,"(State)129 "); - - if(ReadAr[4]<23) - { - result=bt[ReadAr[4]].val; // ReadAr[5] - saveLog(1,"(Pay)"+IntToStr(result)); - } - }else - saveLog(1,"(State???)"+IntToStr(ReadAr[3])); - } - Sleep(100); - - return result; -} -//--------------------------------------------------------------------------- -// -void Validator::endPay() -{ - SetEnableBillTypes(false); - - DWORD BytesWritten,BytesRead; - BytesWritten=cPort->Write(ConReACK , sizeof(ConReACK)); - - BytesWritten=cPort->Write(ConStPoll , sizeof(ConStPoll)); - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); -} -//--------------------------------------------------------------------------- -int Validator::GetState() // 0 -{ - //if(! bNominals) getNominals(); //todo - if(! bNominals) return 1; - - return 0; -} -//--------------------------------------------------------------------------- -AnsiString Validator::GetStatusDescription(BYTE StatusCode) // -{ - if (StatusCode == 0x00) - return "OK"; - else - if (StatusCode == 1) - return " "; - else - return "Error"; -} -//--------------------------------------------------------------------------- diff --git a/devices/Validators/__history/Validator.cpp.~2~ b/devices/Validators/__history/Validator.cpp.~2~ deleted file mode 100644 index bb0a0ed..0000000 --- a/devices/Validators/__history/Validator.cpp.~2~ +++ /dev/null @@ -1,328 +0,0 @@ -//------------------------------------------------------------------------------ - -#pragma hdrstop - -#include -#include "Validator.h" -#include "ud_Module.h" - -//--------------------------------------------------------------------------- -Validator* validator=NULL; -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -#define POLYNOMIAL 0x08408 -unsigned int GetCRC16(unsigned char* bufData, unsigned int sizeData) -{ - unsigned int CRC, i; - unsigned char j; - CRC = 0; - for(i=0; i < sizeData; i++) - { - CRC ^= bufData[i]; - for(j=0; j < 8; j++) - { - if(CRC & 0x0001) {CRC >>= 1; CRC ^= POLYNOMIAL;} - else CRC >>= 1; - } - } - return CRC; -} -//--------------------------------------------------------------------------- -/*unsigned int GetCRC16(char* bufData, unsigned int sizeData) -{ return GetCRC16((unsigned char*)bufData, sizeData); -}*/ -//--------------------------------------------------------------------------- -// -int addZero(int val,int cnt) -{ - for(int i=0;iComNumber=ini->ReadInteger("Validator","Port",0); - cPort->BaudRate=ini->ReadInteger("Validator","BaudRate",0); - testmode=ini->ReadInteger("Validator","TestMode",false); - delete ini; -} -//--------------------------------------------------------------------------- -void Validator::SaveSetup() -{ - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - ini->WriteInteger("Validator","Port",cPort->ComNumber); - ini->WriteInteger("Validator","BaudRate",cPort->BaudRate); - delete ini; -} -//--------------------------------------------------------------------------- -bool Validator::startPay() // -{ - if(vThread!=NULL) vThread->Stop(); // - vThread = new ValidatorThread(false); -} -//--------------------------------------------------------------------------- -bool Validator::stopPay() // -{ - if(vThread!=NULL) - vThread->Stop(); -} -//--------------------------------------------------------------------------- -// 2 CRC -bool Validator::CheckOnCRC(unsigned char* lpBuffer,unsigned long nSize) -{ - if(nSize<2) return false; - unsigned int CRC=GetCRC16(lpBuffer,nSize-2); - WORD* pCRC=(WORD*)&lpBuffer[nSize-2]; - return (CRC==*pCRC); -} -//--------------------------------------------------------------------------- -//req - CRC -//ans - -// CRC -bool Validator::SendCommand(std::string req, std::string &ans) -{ - unsigned short crc=GetCRC16((unsigned char*)req.c_str(),req.size()); - req+=((char*)(&crc))[0]; req+=((char*)(&crc))[1]; - DWORD BytesWritten=cPort->Write(req.c_str(),req.size()); - // - ans=""; - for(int i=0;i<255;i++) - { - Sleep(10); - char ch; - DWORD BytesRead=cPort->Read(&ch,1); - if (BytesRead>0) ans+=ch; else break; - } - // CRC - if(ans.size()>=2) - { - crc=GetCRC16((unsigned char*)ans.c_str(),ans.size()-2); - if(crc==((unsigned short*)(&ans.c_str()[ans.size()-2]))[0]) return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -bool Validator::Start() -{ - if(cPort->Open(cPort->ComNumber)) - { - cPort->BaudRate=cPort->BaudRate; - if(!cPort->Setup(2)) return false; - - if(!Reset()) return false; // - if(!getSerialNumber()) return false; // - if(!getNominals()) return false; // - if(!SetEnableBillTypes(true)) return false; // - }else return false; -} -//--------------------------------------------------------------------------- -// (RESET 30H Command for Bill-to-Bill unit to self-reset) -bool Validator::Reset() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x30; - return SendCommand(req,ans); -} -//--------------------------------------------------------------------------- -// (GET STATUS 31H Request for Bill-to-Bill unit set-up status) -bool Validator::GetStatus() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x31; //req+=(char)0x41; req+=(char)0xB3; - bool r=SendCommand(req,ans); - if(r && ans.length()>6) // - { - // 3 - // 3 - // 3 - } - return r; -} -//--------------------------------------------------------------------------- -// -//enable - true , false -bool Validator::SetEnableBillTypes(bool enable) -{ - std::string req,ans; - if(enable) - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0xFF; req+=(char)0xFF; req+=(char)0xFF; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - }else - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - } - bool r=SendCommand(req,ans); - return r; -} -//--------------------------------------------------------------------------- -bool Validator::getSerialNumber() -{ - DWORD BytesWritten=cPort->Write(ConIdent,sizeof(ConIdent)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return false; - // - if(BytesRead!=39) - { - saveLog(1," "); - return false; - } - // - AnsiString str1((char*)&ReadAr[3],15); - BatchNumber=str1.Trim(); - - AnsiString str2((char*)&ReadAr[18],12); - SerialNumber=str2.Trim(); - - Sleep(100); - return true; -} -//--------------------------------------------------------------------------- -// -bool Validator::getNominals() -{ - bNominals=false; - Sleep(100); // - DWORD BytesWritten=cPort->Write(ConGetBT,sizeof(ConGetBT)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return bNominals; - Sleep(100); // - for(unsigned char i=0;i<23;i++) - { - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - // 3 - bt[i].country[0]=ReadAr[3+i*5+1]; - bt[i].country[1]=ReadAr[3+i*5+2]; - bt[i].country[2]=ReadAr[3+i*5+3]; - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - } - bNominals=true; - return bNominals; -} -//--------------------------------------------------------------------------- -// , . -//state - (. ) -// 0 -int Validator::getPay(int &state) -{ - state=0; - if(!cPort->bOpen){Sleep(1000); return 0;} - - int result=0; - DWORD BytesWritten=0; - DWORD BytesRead=0; - - BytesWritten=cPort->Write(ConReACK, sizeof(ConReACK)); // - Sleep(10); - - BytesWritten=cPort->Write(ConStPoll, sizeof(ConStPoll)); // - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(CheckOnCRC(ReadAr,BytesRead)) - { - if(ReadAr[3] == 0x13) //19 RESET - { - //saveLog(1,"(State)0x13 "); - }else - if(ReadAr[3]==0x14) //20 (IDLING The state in which Bill-to-Bill is ready accept bills) - { - //saveLog(1,"(State)0x14 "); - }else - if(ReadAr[3]==0x15) //21 ( 3 ) - { - state=0x15; - //saveLog(1,"(State)21 1 "); - }else - if(ReadAr[3]==0x17) //23 - { - //saveLog(1,"(State)23 !"); - }else - if(ReadAr[3]==0x19) //25 DISABLED The Bill-to-Bill unit has been disabled by the Controller and also the state in which Bill-to-Bill unit is after initialization. - { - state=0x19; - //saveLog(1,"(State)25 !!!"); - - SetEnableBillTypes(true); - }else - if(ReadAr[3]==0x1c) //28 - { - //saveLog(1,"(State)28 "); - }else - if(ReadAr[3]==0x41) //41H ... - { - //saveLog(1,"(State)0x41 ..."); - }else - if(ReadAr[3]==0x45) //69 "". - { - //saveLog(1,"(State)69 "); - }else - if(ReadAr[3]==0x81) //129 - { - state=0x81; - //saveLog(1,"(State)129 "); - - if(ReadAr[4]<23) - { - result=bt[ReadAr[4]].val; // ReadAr[5] - saveLog(1,"(Pay)"+IntToStr(result)); - } - }else - saveLog(1,"(State???)"+IntToStr(ReadAr[3])); - } - Sleep(100); - - return result; -} -//--------------------------------------------------------------------------- -// -void Validator::endPay() -{ - SetEnableBillTypes(false); - - DWORD BytesWritten,BytesRead; - BytesWritten=cPort->Write(ConReACK , sizeof(ConReACK)); - - BytesWritten=cPort->Write(ConStPoll , sizeof(ConStPoll)); - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); -} -//--------------------------------------------------------------------------- -int Validator::GetState() // 0 -{ - //if(! bNominals) getNominals(); //todo - if(! bNominals) return 1; - - return 0; -} -//--------------------------------------------------------------------------- -AnsiString Validator::GetStatusDescription(BYTE StatusCode) // -{ - if (StatusCode == 0x00) - return "OK"; - else - if (StatusCode == 1) - return " "; - else - return "Error"; -} -//--------------------------------------------------------------------------- diff --git a/devices/Validators/__history/Validator.cpp.~3~ b/devices/Validators/__history/Validator.cpp.~3~ deleted file mode 100644 index e792f0c..0000000 --- a/devices/Validators/__history/Validator.cpp.~3~ +++ /dev/null @@ -1,332 +0,0 @@ -//------------------------------------------------------------------------------ - -#pragma hdrstop - -#include -#include "Validator.h" -#include "ud_Module.h" - -//--------------------------------------------------------------------------- -Validator* validator=NULL; -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -#define POLYNOMIAL 0x08408 -unsigned int GetCRC16(unsigned char* bufData, unsigned int sizeData) -{ - unsigned int CRC, i; - unsigned char j; - CRC = 0; - for(i=0; i < sizeData; i++) - { - CRC ^= bufData[i]; - for(j=0; j < 8; j++) - { - if(CRC & 0x0001) {CRC >>= 1; CRC ^= POLYNOMIAL;} - else CRC >>= 1; - } - } - return CRC; -} -//--------------------------------------------------------------------------- -/*unsigned int GetCRC16(char* bufData, unsigned int sizeData) -{ return GetCRC16((unsigned char*)bufData, sizeData); -}*/ -//--------------------------------------------------------------------------- -// -int addZero(int val,int cnt) -{ - for(int i=0;iComNumber=ini->ReadInteger("Validator","Port",0); - cPort->BaudRate=ini->ReadInteger("Validator","BaudRate",0); - testmode=ini->ReadInteger("Validator","TestMode",false); - delete ini; -} -//--------------------------------------------------------------------------- -void Validator::SaveSetup() -{ - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - ini->WriteInteger("Validator","Port",cPort->ComNumber); - ini->WriteInteger("Validator","BaudRate",cPort->BaudRate); - delete ini; -} -//--------------------------------------------------------------------------- -bool Validator::startPay() // -{ - if(vThread!=NULL) vThread->Stop(); // - vThread = new ValidatorThread(false); -} -//--------------------------------------------------------------------------- -bool Validator::stopPay() // -{ - if(vThread!=NULL) - vThread->Stop(); -} -//--------------------------------------------------------------------------- -// 2 CRC -bool Validator::CheckOnCRC(unsigned char* lpBuffer,unsigned long nSize) -{ - if(nSize<2) return false; - unsigned int CRC=GetCRC16(lpBuffer,nSize-2); - WORD* pCRC=(WORD*)&lpBuffer[nSize-2]; - return (CRC==*pCRC); -} -//--------------------------------------------------------------------------- -//req - CRC -//ans - -// CRC -bool Validator::SendCommand(std::string req, std::string &ans) -{ - unsigned short crc=GetCRC16((unsigned char*)req.c_str(),req.size()); - req+=((char*)(&crc))[0]; req+=((char*)(&crc))[1]; - DWORD BytesWritten=cPort->Write(req.c_str(),req.size()); - // - ans=""; - for(int i=0;i<255;i++) - { - Sleep(10); - char ch; - DWORD BytesRead=cPort->Read(&ch,1); - if (BytesRead>0) ans+=ch; else break; - } - // CRC - if(ans.size()>=2) - { - crc=GetCRC16((unsigned char*)ans.c_str(),ans.size()-2); - if(crc==((unsigned short*)(&ans.c_str()[ans.size()-2]))[0]) return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -bool Validator::Start() -{ - bool result=true; - - if(cPort->Open(cPort->ComNumber)) - { - cPort->BaudRate=cPort->BaudRate; - if(!cPort->Setup(2)) return false; - - if(!Reset()) return false; // - if(!getSerialNumber()) return false; // - if(!getNominals()) return false; // - if(!SetEnableBillTypes(true)) return false; // - }else result=false; - - return result || m_testmode; -} -//--------------------------------------------------------------------------- -// (RESET 30H Command for Bill-to-Bill unit to self-reset) -bool Validator::Reset() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x30; - return SendCommand(req,ans); -} -//--------------------------------------------------------------------------- -// (GET STATUS 31H Request for Bill-to-Bill unit set-up status) -bool Validator::GetStatus() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x31; //req+=(char)0x41; req+=(char)0xB3; - bool r=SendCommand(req,ans); - if(r && ans.length()>6) // - { - // 3 - // 3 - // 3 - } - return r; -} -//--------------------------------------------------------------------------- -// -//enable - true , false -bool Validator::SetEnableBillTypes(bool enable) -{ - std::string req,ans; - if(enable) - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0xFF; req+=(char)0xFF; req+=(char)0xFF; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - }else - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - } - bool r=SendCommand(req,ans); - return r; -} -//--------------------------------------------------------------------------- -bool Validator::getSerialNumber() -{ - DWORD BytesWritten=cPort->Write(ConIdent,sizeof(ConIdent)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return false; - // - if(BytesRead!=39) - { - saveLog(1," "); - return false; - } - // - AnsiString str1((char*)&ReadAr[3],15); - BatchNumber=str1.Trim(); - - AnsiString str2((char*)&ReadAr[18],12); - SerialNumber=str2.Trim(); - - Sleep(100); - return true; -} -//--------------------------------------------------------------------------- -// -bool Validator::getNominals() -{ - bNominals=false; - Sleep(100); // - DWORD BytesWritten=cPort->Write(ConGetBT,sizeof(ConGetBT)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return bNominals; - Sleep(100); // - for(unsigned char i=0;i<23;i++) - { - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - // 3 - bt[i].country[0]=ReadAr[3+i*5+1]; - bt[i].country[1]=ReadAr[3+i*5+2]; - bt[i].country[2]=ReadAr[3+i*5+3]; - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - } - bNominals=true; - return bNominals; -} -//--------------------------------------------------------------------------- -// , . -//state - (. ) -// 0 -int Validator::getPay(int &state) -{ - state=0; - if(!cPort->bOpen){Sleep(1000); return 0;} - - int result=0; - DWORD BytesWritten=0; - DWORD BytesRead=0; - - BytesWritten=cPort->Write(ConReACK, sizeof(ConReACK)); // - Sleep(10); - - BytesWritten=cPort->Write(ConStPoll, sizeof(ConStPoll)); // - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(CheckOnCRC(ReadAr,BytesRead)) - { - if(ReadAr[3] == 0x13) //19 RESET - { - //saveLog(1,"(State)0x13 "); - }else - if(ReadAr[3]==0x14) //20 (IDLING The state in which Bill-to-Bill is ready accept bills) - { - //saveLog(1,"(State)0x14 "); - }else - if(ReadAr[3]==0x15) //21 ( 3 ) - { - state=0x15; - //saveLog(1,"(State)21 1 "); - }else - if(ReadAr[3]==0x17) //23 - { - //saveLog(1,"(State)23 !"); - }else - if(ReadAr[3]==0x19) //25 DISABLED The Bill-to-Bill unit has been disabled by the Controller and also the state in which Bill-to-Bill unit is after initialization. - { - state=0x19; - //saveLog(1,"(State)25 !!!"); - - SetEnableBillTypes(true); - }else - if(ReadAr[3]==0x1c) //28 - { - //saveLog(1,"(State)28 "); - }else - if(ReadAr[3]==0x41) //41H ... - { - //saveLog(1,"(State)0x41 ..."); - }else - if(ReadAr[3]==0x45) //69 "". - { - //saveLog(1,"(State)69 "); - }else - if(ReadAr[3]==0x81) //129 - { - state=0x81; - //saveLog(1,"(State)129 "); - - if(ReadAr[4]<23) - { - result=bt[ReadAr[4]].val; // ReadAr[5] - saveLog(1,"(Pay)"+IntToStr(result)); - } - }else - saveLog(1,"(State???)"+IntToStr(ReadAr[3])); - } - Sleep(100); - - return result; -} -//--------------------------------------------------------------------------- -// -void Validator::endPay() -{ - SetEnableBillTypes(false); - - DWORD BytesWritten,BytesRead; - BytesWritten=cPort->Write(ConReACK , sizeof(ConReACK)); - - BytesWritten=cPort->Write(ConStPoll , sizeof(ConStPoll)); - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); -} -//--------------------------------------------------------------------------- -int Validator::GetState() // 0 -{ - //if(! bNominals) getNominals(); //todo - if(! bNominals) return 1; - - return 0; -} -//--------------------------------------------------------------------------- -AnsiString Validator::GetStatusDescription(BYTE StatusCode) // -{ - if (StatusCode == 0x00) - return "OK"; - else - if (StatusCode == 1) - return " "; - else - return "Error"; -} -//--------------------------------------------------------------------------- diff --git a/devices/Validators/__history/Validator.cpp.~4~ b/devices/Validators/__history/Validator.cpp.~4~ deleted file mode 100644 index 470795c..0000000 --- a/devices/Validators/__history/Validator.cpp.~4~ +++ /dev/null @@ -1,332 +0,0 @@ -//------------------------------------------------------------------------------ - -#pragma hdrstop - -#include -#include "Validator.h" -#include "ud_Module.h" - -//--------------------------------------------------------------------------- -Validator* validator=NULL; -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -#define POLYNOMIAL 0x08408 -unsigned int GetCRC16(unsigned char* bufData, unsigned int sizeData) -{ - unsigned int CRC, i; - unsigned char j; - CRC = 0; - for(i=0; i < sizeData; i++) - { - CRC ^= bufData[i]; - for(j=0; j < 8; j++) - { - if(CRC & 0x0001) {CRC >>= 1; CRC ^= POLYNOMIAL;} - else CRC >>= 1; - } - } - return CRC; -} -//--------------------------------------------------------------------------- -/*unsigned int GetCRC16(char* bufData, unsigned int sizeData) -{ return GetCRC16((unsigned char*)bufData, sizeData); -}*/ -//--------------------------------------------------------------------------- -// -int addZero(int val,int cnt) -{ - for(int i=0;iComNumber=ini->ReadInteger("Validator","Port",0); - cPort->BaudRate=ini->ReadInteger("Validator","BaudRate",0); - testmode=ini->ReadInteger("Validator","TestMode",false); - delete ini; -} -//--------------------------------------------------------------------------- -void Validator::SaveSetup() -{ - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - ini->WriteInteger("Validator","Port",cPort->ComNumber); - ini->WriteInteger("Validator","BaudRate",cPort->BaudRate); - delete ini; -} -//--------------------------------------------------------------------------- -bool Validator::startPay() // -{ - if(vThread!=NULL) vThread->Stop(); // - vThread = new ValidatorThread(false); -} -//--------------------------------------------------------------------------- -bool Validator::stopPay() // -{ - if(vThread!=NULL) - vThread->Stop(); -} -//--------------------------------------------------------------------------- -// 2 CRC -bool Validator::CheckOnCRC(unsigned char* lpBuffer,unsigned long nSize) -{ - if(nSize<2) return false; - unsigned int CRC=GetCRC16(lpBuffer,nSize-2); - WORD* pCRC=(WORD*)&lpBuffer[nSize-2]; - return (CRC==*pCRC); -} -//--------------------------------------------------------------------------- -//req - CRC -//ans - -// CRC -bool Validator::SendCommand(std::string req, std::string &ans) -{ - unsigned short crc=GetCRC16((unsigned char*)req.c_str(),req.size()); - req+=((char*)(&crc))[0]; req+=((char*)(&crc))[1]; - DWORD BytesWritten=cPort->Write(req.c_str(),req.size()); - // - ans=""; - for(int i=0;i<255;i++) - { - Sleep(10); - char ch; - DWORD BytesRead=cPort->Read(&ch,1); - if (BytesRead>0) ans+=ch; else break; - } - // CRC - if(ans.size()>=2) - { - crc=GetCRC16((unsigned char*)ans.c_str(),ans.size()-2); - if(crc==((unsigned short*)(&ans.c_str()[ans.size()-2]))[0]) return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -bool Validator::Start() -{ - bool result=true; - - if(cPort->Open(cPort->ComNumber)) - { - cPort->BaudRate=cPort->BaudRate; - if(!cPort->Setup(2)) return false; - - if(!Reset()) return false; // - if(!getSerialNumber()) return false; // - if(!getNominals()) return false; // - if(!SetEnableBillTypes(true)) return false; // - }else result=false; - - return result || m_testmode; // OK -} -//--------------------------------------------------------------------------- -// (RESET 30H Command for Bill-to-Bill unit to self-reset) -bool Validator::Reset() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x30; - return SendCommand(req,ans); -} -//--------------------------------------------------------------------------- -// (GET STATUS 31H Request for Bill-to-Bill unit set-up status) -bool Validator::GetStatus() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x31; //req+=(char)0x41; req+=(char)0xB3; - bool r=SendCommand(req,ans); - if(r && ans.length()>6) // - { - // 3 - // 3 - // 3 - } - return r; -} -//--------------------------------------------------------------------------- -// -//enable - true , false -bool Validator::SetEnableBillTypes(bool enable) -{ - std::string req,ans; - if(enable) - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0xFF; req+=(char)0xFF; req+=(char)0xFF; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - }else - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - } - bool r=SendCommand(req,ans); - return r; -} -//--------------------------------------------------------------------------- -bool Validator::getSerialNumber() -{ - DWORD BytesWritten=cPort->Write(ConIdent,sizeof(ConIdent)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return false; - // - if(BytesRead!=39) - { - saveLog(1," "); - return false; - } - // - AnsiString str1((char*)&ReadAr[3],15); - BatchNumber=str1.Trim(); - - AnsiString str2((char*)&ReadAr[18],12); - SerialNumber=str2.Trim(); - - Sleep(100); - return true; -} -//--------------------------------------------------------------------------- -// -bool Validator::getNominals() -{ - bNominals=false; - Sleep(100); // - DWORD BytesWritten=cPort->Write(ConGetBT,sizeof(ConGetBT)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return bNominals; - Sleep(100); // - for(unsigned char i=0;i<23;i++) - { - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - // 3 - bt[i].country[0]=ReadAr[3+i*5+1]; - bt[i].country[1]=ReadAr[3+i*5+2]; - bt[i].country[2]=ReadAr[3+i*5+3]; - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - } - bNominals=true; - return bNominals; -} -//--------------------------------------------------------------------------- -// , . -//state - (. ) -// 0 -int Validator::getPay(int &state) -{ - state=0; - if(!cPort->bOpen){Sleep(1000); return 0;} - - int result=0; - DWORD BytesWritten=0; - DWORD BytesRead=0; - - BytesWritten=cPort->Write(ConReACK, sizeof(ConReACK)); // - Sleep(10); - - BytesWritten=cPort->Write(ConStPoll, sizeof(ConStPoll)); // - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(CheckOnCRC(ReadAr,BytesRead)) - { - if(ReadAr[3] == 0x13) //19 RESET - { - //saveLog(1,"(State)0x13 "); - }else - if(ReadAr[3]==0x14) //20 (IDLING The state in which Bill-to-Bill is ready accept bills) - { - //saveLog(1,"(State)0x14 "); - }else - if(ReadAr[3]==0x15) //21 ( 3 ) - { - state=0x15; - //saveLog(1,"(State)21 1 "); - }else - if(ReadAr[3]==0x17) //23 - { - //saveLog(1,"(State)23 !"); - }else - if(ReadAr[3]==0x19) //25 DISABLED The Bill-to-Bill unit has been disabled by the Controller and also the state in which Bill-to-Bill unit is after initialization. - { - state=0x19; - //saveLog(1,"(State)25 !!!"); - - SetEnableBillTypes(true); - }else - if(ReadAr[3]==0x1c) //28 - { - //saveLog(1,"(State)28 "); - }else - if(ReadAr[3]==0x41) //41H ... - { - //saveLog(1,"(State)0x41 ..."); - }else - if(ReadAr[3]==0x45) //69 "". - { - //saveLog(1,"(State)69 "); - }else - if(ReadAr[3]==0x81) //129 - { - state=0x81; - //saveLog(1,"(State)129 "); - - if(ReadAr[4]<23) - { - result=bt[ReadAr[4]].val; // ReadAr[5] - saveLog(1,"(Pay)"+IntToStr(result)); - } - }else - saveLog(1,"(State???)"+IntToStr(ReadAr[3])); - } - Sleep(100); - - return result; -} -//--------------------------------------------------------------------------- -// -void Validator::endPay() -{ - SetEnableBillTypes(false); - - DWORD BytesWritten,BytesRead; - BytesWritten=cPort->Write(ConReACK , sizeof(ConReACK)); - - BytesWritten=cPort->Write(ConStPoll , sizeof(ConStPoll)); - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); -} -//--------------------------------------------------------------------------- -int Validator::GetState() // 0 -{ - //if(! bNominals) getNominals(); //todo - if(! bNominals) return 1; - - return 0; -} -//--------------------------------------------------------------------------- -AnsiString Validator::GetStatusDescription(BYTE StatusCode) // -{ - if (StatusCode == 0x00) - return "OK"; - else - if (StatusCode == 1) - return " "; - else - return "Error"; -} -//--------------------------------------------------------------------------- diff --git a/devices/Validators/__history/Validator.cpp.~5~ b/devices/Validators/__history/Validator.cpp.~5~ deleted file mode 100644 index 192eca1..0000000 --- a/devices/Validators/__history/Validator.cpp.~5~ +++ /dev/null @@ -1,333 +0,0 @@ -//------------------------------------------------------------------------------ - -#pragma hdrstop - -#include -#include "Validator.h" -#include "ud_Module.h" - -//--------------------------------------------------------------------------- -Validator* validator=NULL; -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -#define POLYNOMIAL 0x08408 -unsigned int GetCRC16(unsigned char* bufData, unsigned int sizeData) -{ - unsigned int CRC, i; - unsigned char j; - CRC = 0; - for(i=0; i < sizeData; i++) - { - CRC ^= bufData[i]; - for(j=0; j < 8; j++) - { - if(CRC & 0x0001) {CRC >>= 1; CRC ^= POLYNOMIAL;} - else CRC >>= 1; - } - } - return CRC; -} -//--------------------------------------------------------------------------- -/*unsigned int GetCRC16(char* bufData, unsigned int sizeData) -{ return GetCRC16((unsigned char*)bufData, sizeData); -}*/ -//--------------------------------------------------------------------------- -// -int addZero(int val,int cnt) -{ - for(int i=0;iComNumber=ini->ReadInteger("Validator","Port",0); - cPort->BaudRate=ini->ReadInteger("Validator","BaudRate",0); - testmode=ini->ReadInteger("Validator","TestMode",false); - delete ini; -} -//--------------------------------------------------------------------------- -void Validator::SaveSetup() -{ - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - ini->WriteInteger("Validator","Port",cPort->ComNumber); - ini->WriteInteger("Validator","BaudRate",cPort->BaudRate); - delete ini; -} -//--------------------------------------------------------------------------- -bool Validator::startPay() // -{ - if(vThread!=NULL) vThread->Stop(); // - vThread = new ValidatorThread(false); -} -//--------------------------------------------------------------------------- -bool Validator::stopPay() // -{ - if(vThread!=NULL) - vThread->Stop(); -} -//--------------------------------------------------------------------------- -// 2 CRC -bool Validator::CheckOnCRC(unsigned char* lpBuffer,unsigned long nSize) -{ - if(nSize<2) return false; - unsigned int CRC=GetCRC16(lpBuffer,nSize-2); - WORD* pCRC=(WORD*)&lpBuffer[nSize-2]; - return (CRC==*pCRC); -} -//--------------------------------------------------------------------------- -//req - CRC -//ans - -// CRC -bool Validator::SendCommand(std::string req, std::string &ans) -{ - unsigned short crc=GetCRC16((unsigned char*)req.c_str(),req.size()); - req+=((char*)(&crc))[0]; req+=((char*)(&crc))[1]; - DWORD BytesWritten=cPort->Write(req.c_str(),req.size()); - // - ans=""; - for(int i=0;i<255;i++) - { - Sleep(10); - char ch; - DWORD BytesRead=cPort->Read(&ch,1); - if (BytesRead>0) ans+=ch; else break; - } - // CRC - if(ans.size()>=2) - { - crc=GetCRC16((unsigned char*)ans.c_str(),ans.size()-2); - if(crc==((unsigned short*)(&ans.c_str()[ans.size()-2]))[0]) return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -bool Validator::Start() -{ - bool result=true; - - if(cPort->Open(cPort->ComNumber)) - { - cPort->BaudRate=cPort->BaudRate; - result = result && cPort->Setup(2); - - if(result) result=result && Reset(); // - if(result) result=result && getSerialNumber(); // - if(result) result=result && getNominals(); // - if(result) result=result && SetEnableBillTypes(true); // - - }else result=false; - - return result || m_testmode; // OK -} -//--------------------------------------------------------------------------- -// (RESET 30H Command for Bill-to-Bill unit to self-reset) -bool Validator::Reset() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x30; - return SendCommand(req,ans); -} -//--------------------------------------------------------------------------- -// (GET STATUS 31H Request for Bill-to-Bill unit set-up status) -bool Validator::GetStatus() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x31; //req+=(char)0x41; req+=(char)0xB3; - bool r=SendCommand(req,ans); - if(r && ans.length()>6) // - { - // 3 - // 3 - // 3 - } - return r; -} -//--------------------------------------------------------------------------- -// -//enable - true , false -bool Validator::SetEnableBillTypes(bool enable) -{ - std::string req,ans; - if(enable) - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0xFF; req+=(char)0xFF; req+=(char)0xFF; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - }else - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - } - bool r=SendCommand(req,ans); - return r; -} -//--------------------------------------------------------------------------- -bool Validator::getSerialNumber() -{ - DWORD BytesWritten=cPort->Write(ConIdent,sizeof(ConIdent)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return false; - // - if(BytesRead!=39) - { - saveLog(1," "); - return false; - } - // - AnsiString str1((char*)&ReadAr[3],15); - BatchNumber=str1.Trim(); - - AnsiString str2((char*)&ReadAr[18],12); - SerialNumber=str2.Trim(); - - Sleep(100); - return true; -} -//--------------------------------------------------------------------------- -// -bool Validator::getNominals() -{ - bNominals=false; - Sleep(100); // - DWORD BytesWritten=cPort->Write(ConGetBT,sizeof(ConGetBT)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return bNominals; - Sleep(100); // - for(unsigned char i=0;i<23;i++) - { - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - // 3 - bt[i].country[0]=ReadAr[3+i*5+1]; - bt[i].country[1]=ReadAr[3+i*5+2]; - bt[i].country[2]=ReadAr[3+i*5+3]; - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - } - bNominals=true; - return bNominals; -} -//--------------------------------------------------------------------------- -// , . -//state - (. ) -// 0 -int Validator::getPay(int &state) -{ - state=0; - if(!cPort->bOpen){Sleep(1000); return 0;} - - int result=0; - DWORD BytesWritten=0; - DWORD BytesRead=0; - - BytesWritten=cPort->Write(ConReACK, sizeof(ConReACK)); // - Sleep(10); - - BytesWritten=cPort->Write(ConStPoll, sizeof(ConStPoll)); // - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(CheckOnCRC(ReadAr,BytesRead)) - { - if(ReadAr[3] == 0x13) //19 RESET - { - //saveLog(1,"(State)0x13 "); - }else - if(ReadAr[3]==0x14) //20 (IDLING The state in which Bill-to-Bill is ready accept bills) - { - //saveLog(1,"(State)0x14 "); - }else - if(ReadAr[3]==0x15) //21 ( 3 ) - { - state=0x15; - //saveLog(1,"(State)21 1 "); - }else - if(ReadAr[3]==0x17) //23 - { - //saveLog(1,"(State)23 !"); - }else - if(ReadAr[3]==0x19) //25 DISABLED The Bill-to-Bill unit has been disabled by the Controller and also the state in which Bill-to-Bill unit is after initialization. - { - state=0x19; - //saveLog(1,"(State)25 !!!"); - - SetEnableBillTypes(true); - }else - if(ReadAr[3]==0x1c) //28 - { - //saveLog(1,"(State)28 "); - }else - if(ReadAr[3]==0x41) //41H ... - { - //saveLog(1,"(State)0x41 ..."); - }else - if(ReadAr[3]==0x45) //69 "". - { - //saveLog(1,"(State)69 "); - }else - if(ReadAr[3]==0x81) //129 - { - state=0x81; - //saveLog(1,"(State)129 "); - - if(ReadAr[4]<23) - { - result=bt[ReadAr[4]].val; // ReadAr[5] - saveLog(1,"(Pay)"+IntToStr(result)); - } - }else - saveLog(1,"(State???)"+IntToStr(ReadAr[3])); - } - Sleep(100); - - return result; -} -//--------------------------------------------------------------------------- -// -void Validator::endPay() -{ - SetEnableBillTypes(false); - - DWORD BytesWritten,BytesRead; - BytesWritten=cPort->Write(ConReACK , sizeof(ConReACK)); - - BytesWritten=cPort->Write(ConStPoll , sizeof(ConStPoll)); - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); -} -//--------------------------------------------------------------------------- -int Validator::GetState() // 0 -{ - //if(! bNominals) getNominals(); //todo - if(! bNominals) return 1; - - return 0; -} -//--------------------------------------------------------------------------- -AnsiString Validator::GetStatusDescription(BYTE StatusCode) // -{ - if (StatusCode == 0x00) - return "OK"; - else - if (StatusCode == 1) - return " "; - else - return "Error"; -} -//--------------------------------------------------------------------------- diff --git a/devices/Validators/__history/Validator.cpp.~6~ b/devices/Validators/__history/Validator.cpp.~6~ deleted file mode 100644 index c6ec97b..0000000 --- a/devices/Validators/__history/Validator.cpp.~6~ +++ /dev/null @@ -1,333 +0,0 @@ -//------------------------------------------------------------------------------ - -#pragma hdrstop - -#include -#include "Validator.h" -#include "ud_Module.h" - -//--------------------------------------------------------------------------- -Validator* validator=NULL; -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -#define POLYNOMIAL 0x08408 -unsigned int GetCRC16(unsigned char* bufData, unsigned int sizeData) -{ - unsigned int CRC, i; - unsigned char j; - CRC = 0; - for(i=0; i < sizeData; i++) - { - CRC ^= bufData[i]; - for(j=0; j < 8; j++) - { - if(CRC & 0x0001) {CRC >>= 1; CRC ^= POLYNOMIAL;} - else CRC >>= 1; - } - } - return CRC; -} -//--------------------------------------------------------------------------- -/*unsigned int GetCRC16(char* bufData, unsigned int sizeData) -{ return GetCRC16((unsigned char*)bufData, sizeData); -}*/ -//--------------------------------------------------------------------------- -// -int addZero(int val,int cnt) -{ - for(int i=0;iComNumber=ini->ReadInteger("Validator","Port",0); - cPort->BaudRate=ini->ReadInteger("Validator","BaudRate",0); - m_testmode=ini->ReadInteger("Validator","TestMode",false); - delete ini; -} -//--------------------------------------------------------------------------- -void Validator::SaveSetup() -{ - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - ini->WriteInteger("Validator","Port",cPort->ComNumber); - ini->WriteInteger("Validator","BaudRate",cPort->BaudRate); - delete ini; -} -//--------------------------------------------------------------------------- -bool Validator::startPay() // -{ - if(vThread!=NULL) vThread->Stop(); // - vThread = new ValidatorThread(false); -} -//--------------------------------------------------------------------------- -bool Validator::stopPay() // -{ - if(vThread!=NULL) - vThread->Stop(); -} -//--------------------------------------------------------------------------- -// 2 CRC -bool Validator::CheckOnCRC(unsigned char* lpBuffer,unsigned long nSize) -{ - if(nSize<2) return false; - unsigned int CRC=GetCRC16(lpBuffer,nSize-2); - WORD* pCRC=(WORD*)&lpBuffer[nSize-2]; - return (CRC==*pCRC); -} -//--------------------------------------------------------------------------- -//req - CRC -//ans - -// CRC -bool Validator::SendCommand(std::string req, std::string &ans) -{ - unsigned short crc=GetCRC16((unsigned char*)req.c_str(),req.size()); - req+=((char*)(&crc))[0]; req+=((char*)(&crc))[1]; - DWORD BytesWritten=cPort->Write(req.c_str(),req.size()); - // - ans=""; - for(int i=0;i<255;i++) - { - Sleep(10); - char ch; - DWORD BytesRead=cPort->Read(&ch,1); - if (BytesRead>0) ans+=ch; else break; - } - // CRC - if(ans.size()>=2) - { - crc=GetCRC16((unsigned char*)ans.c_str(),ans.size()-2); - if(crc==((unsigned short*)(&ans.c_str()[ans.size()-2]))[0]) return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -bool Validator::Start() -{ - bool result=true; - - if(cPort->Open(cPort->ComNumber)) - { - cPort->BaudRate=cPort->BaudRate; - result = result && cPort->Setup(2); - - if(result) result=result && Reset(); // - if(result) result=result && getSerialNumber(); // - if(result) result=result && getNominals(); // - if(result) result=result && SetEnableBillTypes(true); // - - }else result=false; - - return result || m_testmode; // OK -} -//--------------------------------------------------------------------------- -// (RESET 30H Command for Bill-to-Bill unit to self-reset) -bool Validator::Reset() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x30; - return SendCommand(req,ans); -} -//--------------------------------------------------------------------------- -// (GET STATUS 31H Request for Bill-to-Bill unit set-up status) -bool Validator::GetStatus() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x31; //req+=(char)0x41; req+=(char)0xB3; - bool r=SendCommand(req,ans); - if(r && ans.length()>6) // - { - // 3 - // 3 - // 3 - } - return r; -} -//--------------------------------------------------------------------------- -// -//enable - true , false -bool Validator::SetEnableBillTypes(bool enable) -{ - std::string req,ans; - if(enable) - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0xFF; req+=(char)0xFF; req+=(char)0xFF; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - }else - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - } - bool r=SendCommand(req,ans); - return r; -} -//--------------------------------------------------------------------------- -bool Validator::getSerialNumber() -{ - DWORD BytesWritten=cPort->Write(ConIdent,sizeof(ConIdent)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return false; - // - if(BytesRead!=39) - { - saveLog(1," "); - return false; - } - // - AnsiString str1((char*)&ReadAr[3],15); - BatchNumber=str1.Trim(); - - AnsiString str2((char*)&ReadAr[18],12); - SerialNumber=str2.Trim(); - - Sleep(100); - return true; -} -//--------------------------------------------------------------------------- -// -bool Validator::getNominals() -{ - bNominals=false; - Sleep(100); // - DWORD BytesWritten=cPort->Write(ConGetBT,sizeof(ConGetBT)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return bNominals; - Sleep(100); // - for(unsigned char i=0;i<23;i++) - { - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - // 3 - bt[i].country[0]=ReadAr[3+i*5+1]; - bt[i].country[1]=ReadAr[3+i*5+2]; - bt[i].country[2]=ReadAr[3+i*5+3]; - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - } - bNominals=true; - return bNominals; -} -//--------------------------------------------------------------------------- -// , . -//state - (. ) -// 0 -int Validator::getPay(int &state) -{ - state=0; - if(!cPort->bOpen){Sleep(1000); return 0;} - - int result=0; - DWORD BytesWritten=0; - DWORD BytesRead=0; - - BytesWritten=cPort->Write(ConReACK, sizeof(ConReACK)); // - Sleep(10); - - BytesWritten=cPort->Write(ConStPoll, sizeof(ConStPoll)); // - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(CheckOnCRC(ReadAr,BytesRead)) - { - if(ReadAr[3] == 0x13) //19 RESET - { - //saveLog(1,"(State)0x13 "); - }else - if(ReadAr[3]==0x14) //20 (IDLING The state in which Bill-to-Bill is ready accept bills) - { - //saveLog(1,"(State)0x14 "); - }else - if(ReadAr[3]==0x15) //21 ( 3 ) - { - state=0x15; - //saveLog(1,"(State)21 1 "); - }else - if(ReadAr[3]==0x17) //23 - { - //saveLog(1,"(State)23 !"); - }else - if(ReadAr[3]==0x19) //25 DISABLED The Bill-to-Bill unit has been disabled by the Controller and also the state in which Bill-to-Bill unit is after initialization. - { - state=0x19; - //saveLog(1,"(State)25 !!!"); - - SetEnableBillTypes(true); - }else - if(ReadAr[3]==0x1c) //28 - { - //saveLog(1,"(State)28 "); - }else - if(ReadAr[3]==0x41) //41H ... - { - //saveLog(1,"(State)0x41 ..."); - }else - if(ReadAr[3]==0x45) //69 "". - { - //saveLog(1,"(State)69 "); - }else - if(ReadAr[3]==0x81) //129 - { - state=0x81; - //saveLog(1,"(State)129 "); - - if(ReadAr[4]<23) - { - result=bt[ReadAr[4]].val; // ReadAr[5] - saveLog(1,"(Pay)"+IntToStr(result)); - } - }else - saveLog(1,"(State???)"+IntToStr(ReadAr[3])); - } - Sleep(100); - - return result; -} -//--------------------------------------------------------------------------- -// -void Validator::endPay() -{ - SetEnableBillTypes(false); - - DWORD BytesWritten,BytesRead; - BytesWritten=cPort->Write(ConReACK , sizeof(ConReACK)); - - BytesWritten=cPort->Write(ConStPoll , sizeof(ConStPoll)); - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); -} -//--------------------------------------------------------------------------- -int Validator::GetState() // 0 -{ - //if(! bNominals) getNominals(); //todo - if(! bNominals) return 1; - - return 0; -} -//--------------------------------------------------------------------------- -AnsiString Validator::GetStatusDescription(BYTE StatusCode) // -{ - if (StatusCode == 0x00) - return "OK"; - else - if (StatusCode == 1) - return " "; - else - return "Error"; -} -//--------------------------------------------------------------------------- diff --git a/devices/Validators/__history/Validator.cpp.~7~ b/devices/Validators/__history/Validator.cpp.~7~ deleted file mode 100644 index e469fc8..0000000 --- a/devices/Validators/__history/Validator.cpp.~7~ +++ /dev/null @@ -1,333 +0,0 @@ -//------------------------------------------------------------------------------ - -#pragma hdrstop - -#include -#include "Validator.h" -#include "ud_Module.h" - -//--------------------------------------------------------------------------- -Validator* validator=NULL; -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -#define POLYNOMIAL 0x08408 -unsigned int GetCRC16(unsigned char* bufData, unsigned int sizeData) -{ - unsigned int CRC, i; - unsigned char j; - CRC = 0; - for(i=0; i < sizeData; i++) - { - CRC ^= bufData[i]; - for(j=0; j < 8; j++) - { - if(CRC & 0x0001) {CRC >>= 1; CRC ^= POLYNOMIAL;} - else CRC >>= 1; - } - } - return CRC; -} -//--------------------------------------------------------------------------- -/*unsigned int GetCRC16(char* bufData, unsigned int sizeData) -{ return GetCRC16((unsigned char*)bufData, sizeData); -}*/ -//--------------------------------------------------------------------------- -// -int addZero(int val,int cnt) -{ - for(int i=0;iComNumber=ini->ReadInteger("Validator","Port",0); - cPort->BaudRate=ini->ReadInteger("Validator","BaudRate",0); - m_testmode=ini->ReadInteger("Validator","TestMode",false); - delete ini; -} -//--------------------------------------------------------------------------- -void Validator::SaveSetup() -{ - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - ini->WriteInteger("Validator","Port",cPort->ComNumber); - ini->WriteInteger("Validator","BaudRate",cPort->BaudRate); - delete ini; -} -//--------------------------------------------------------------------------- -bool Validator::startPay() // -{ - if(vThread!=NULL) vThread->Stop(); // - vThread = new ValidatorThread(false); -} -//--------------------------------------------------------------------------- -bool Validator::stopPay() // -{ - if(vThread!=NULL) - vThread->Stop(); -} -//--------------------------------------------------------------------------- -// 2 CRC -bool Validator::CheckOnCRC(unsigned char* lpBuffer,unsigned long nSize) -{ - if(nSize<2) return false; - unsigned int CRC=GetCRC16(lpBuffer,nSize-2); - WORD* pCRC=(WORD*)&lpBuffer[nSize-2]; - return (CRC==*pCRC); -} -//--------------------------------------------------------------------------- -//req - CRC -//ans - -// CRC -bool Validator::SendCommand(std::string req, std::string &ans) -{ - unsigned short crc=GetCRC16((unsigned char*)req.c_str(),req.size()); - req+=((char*)(&crc))[0]; req+=((char*)(&crc))[1]; - DWORD BytesWritten=cPort->Write(req.c_str(),req.size()); - // - ans=""; - for(int i=0;i<255;i++) - { - Sleep(10); - char ch; - DWORD BytesRead=cPort->Read(&ch,1); - if (BytesRead>0) ans+=ch; else break; - } - // CRC - if(ans.size()>=2) - { - crc=GetCRC16((unsigned char*)ans.c_str(),ans.size()-2); - if(crc==((unsigned short*)(&ans.c_str()[ans.size()-2]))[0]) return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -bool Validator::Start() -{ - bool result=true; - - if(cPort->Open(cPort->ComNumber)) - { - cPort->BaudRate=cPort->BaudRate; - result = result && cPort->Setup(2); - - if(result) result=result && Reset(); // - if(result) result=result && getSerialNumber(); // - if(result) result=result && getNominals(); // - if(result) result=result && SetEnableBillTypes(true); // - - }else result=false; - - return result || m_testmode; // OK -} -//--------------------------------------------------------------------------- -// (RESET 30H Command for Bill-to-Bill unit to self-reset) -bool Validator::Reset() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x30; - return SendCommand(req,ans); -} -//--------------------------------------------------------------------------- -// (GET STATUS 31H Request for Bill-to-Bill unit set-up status) -bool Validator::GetStatus() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x31; //req+=(char)0x41; req+=(char)0xB3; - bool r=SendCommand(req,ans); - if(r && ans.length()>6) // - { - // 3 - // 3 - // 3 - } - return r; -} -//--------------------------------------------------------------------------- -// -//enable - true , false -bool Validator::SetEnableBillTypes(bool enable) -{ - std::string req,ans; - if(enable) - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0xFF; req+=(char)0xFF; req+=(char)0xFF; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - }else - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - } - bool r=SendCommand(req,ans); - return r; -} -//--------------------------------------------------------------------------- -bool Validator::getSerialNumber() -{ - DWORD BytesWritten=cPort->Write(ConIdent,sizeof(ConIdent)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return false; - // - if(BytesRead!=39) - { - saveLog(1," "); - return false; - } - // - AnsiString str1((char*)&ReadAr[3],15); - BatchNumber=str1.Trim(); - - AnsiString str2((char*)&ReadAr[18],12); - SerialNumber=str2.Trim(); - - Sleep(100); - return true; -} -//--------------------------------------------------------------------------- -// -bool Validator::getNominals() -{ - bNominals=false; - Sleep(100); // - DWORD BytesWritten=cPort->Write(ConGetBT,sizeof(ConGetBT)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return bNominals; - Sleep(100); // - for(unsigned char i=0;i<23;i++) - { - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - // 3 - bt[i].country[0]=ReadAr[3+i*5+1]; - bt[i].country[1]=ReadAr[3+i*5+2]; - bt[i].country[2]=ReadAr[3+i*5+3]; - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - } - bNominals=true; - return bNominals; -} -//--------------------------------------------------------------------------- -// , . -//state - (. ) -// 0 -int Validator::getPay(int &state) -{ - state=0; - if(!cPort->bOpen){Sleep(1000); return 0;} - - int result=0; - DWORD BytesWritten=0; - DWORD BytesRead=0; - - BytesWritten=cPort->Write(ConReACK, sizeof(ConReACK)); // - Sleep(10); - - BytesWritten=cPort->Write(ConStPoll, sizeof(ConStPoll)); // - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(CheckOnCRC(ReadAr,BytesRead)) - { - if(ReadAr[3] == 0x13) //19 RESET - { - //saveLog(1,"(State)0x13 "); - }else - if(ReadAr[3]==0x14) //20 (IDLING The state in which Bill-to-Bill is ready accept bills) - { - //saveLog(1,"(State)0x14 "); - }else - if(ReadAr[3]==0x15) //21 ( 3 ) - { - state=0x15; - //saveLog(1,"(State)21 1 "); - }else - if(ReadAr[3]==0x17) //23 - { - //saveLog(1,"(State)23 !"); - }else - if(ReadAr[3]==0x19) //25 DISABLED The Bill-to-Bill unit has been disabled by the Controller and also the state in which Bill-to-Bill unit is after initialization. - { - state=0x19; - //saveLog(1,"(State)25 !!!"); - - SetEnableBillTypes(true); - }else - if(ReadAr[3]==0x1c) //28 - { - //saveLog(1,"(State)28 "); - }else - if(ReadAr[3]==0x41) //41H ... - { - //saveLog(1,"(State)0x41 ..."); - }else - if(ReadAr[3]==0x45) //69 "". - { - //saveLog(1,"(State)69 "); - }else - if(ReadAr[3]==0x81) //129 - { - state=0x81; - //saveLog(1,"(State)129 "); - - if(ReadAr[4]<23) - { - result=bt[ReadAr[4]].val; // ReadAr[5] - saveLog(1,"(Pay)"+IntToStr(result)); - } - }else - saveLog(1,"(State???)"+IntToStr(ReadAr[3])); - } - Sleep(100); - - return result; -} -//--------------------------------------------------------------------------- -// -void Validator::endPay() -{ - SetEnableBillTypes(false); - - DWORD BytesWritten,BytesRead; - BytesWritten=cPort->Write(ConReACK , sizeof(ConReACK)); - - BytesWritten=cPort->Write(ConStPoll , sizeof(ConStPoll)); - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); -} -//--------------------------------------------------------------------------- -int Validator::GetState() // 0 -{ - if(m_testmode) return 0; - //if(! bNominals) getNominals(); //todo - if(! bNominals) return 1; - return 0; -} -//--------------------------------------------------------------------------- -AnsiString Validator::GetStatusDescription(BYTE StatusCode) // -{ - if (StatusCode == 0x00) - return "OK"; - else - if (StatusCode == 1) - return " "; - else - return "Error"; -} -//--------------------------------------------------------------------------- diff --git a/devices/Validators/__history/Validator.cpp.~8~ b/devices/Validators/__history/Validator.cpp.~8~ deleted file mode 100644 index 6762244..0000000 --- a/devices/Validators/__history/Validator.cpp.~8~ +++ /dev/null @@ -1,333 +0,0 @@ -//------------------------------------------------------------------------------ - -#pragma hdrstop - -#include -#include "Validator.h" -#include "ud_Module.h" - -//--------------------------------------------------------------------------- -Validator* validator=NULL; -//--------------------------------------------------------------------------- - -#pragma package(smart_init) -//--------------------------------------------------------------------------- -#define POLYNOMIAL 0x08408 -unsigned int GetCRC16(unsigned char* bufData, unsigned int sizeData) -{ - unsigned int CRC, i; - unsigned char j; - CRC = 0; - for(i=0; i < sizeData; i++) - { - CRC ^= bufData[i]; - for(j=0; j < 8; j++) - { - if(CRC & 0x0001) {CRC >>= 1; CRC ^= POLYNOMIAL;} - else CRC >>= 1; - } - } - return CRC; -} -//--------------------------------------------------------------------------- -/*unsigned int GetCRC16(char* bufData, unsigned int sizeData) -{ return GetCRC16((unsigned char*)bufData, sizeData); -}*/ -//--------------------------------------------------------------------------- -// -int addZero(int val,int cnt) -{ - for(int i=0;iComNumber=ini->ReadInteger("Validator","Port",0); - cPort->BaudRate=ini->ReadInteger("Validator","BaudRate",0); - m_testmode=ini->ReadInteger("Validator","TestMode",false); - delete ini; -} -//--------------------------------------------------------------------------- -void Validator::SaveSetup() -{ - TIniFile* ini=new TIniFile(ExtractFilePath(ParamStr(0))+"\\Setup.ini"); - ini->WriteInteger("Validator","Port",cPort->ComNumber); - ini->WriteInteger("Validator","BaudRate",cPort->BaudRate); - delete ini; -} -//--------------------------------------------------------------------------- -bool Validator::startPay() // -{ - if(vThread!=NULL) vThread->Stop(); // - vThread = new ValidatorThread(false); -} -//--------------------------------------------------------------------------- -bool Validator::stopPay() // -{ - if(vThread!=NULL) - vThread->Stop(); -} -//--------------------------------------------------------------------------- -// 2 CRC -bool Validator::CheckOnCRC(unsigned char* lpBuffer,unsigned long nSize) -{ - if(nSize<2) return false; - unsigned int CRC=GetCRC16(lpBuffer,nSize-2); - WORD* pCRC=(WORD*)&lpBuffer[nSize-2]; - return (CRC==*pCRC); -} -//--------------------------------------------------------------------------- -//req - CRC -//ans - -// CRC -bool Validator::SendCommand(std::string req, std::string &ans) -{ - unsigned short crc=GetCRC16((unsigned char*)req.c_str(),req.size()); - req+=((char*)(&crc))[0]; req+=((char*)(&crc))[1]; - DWORD BytesWritten=cPort->Write(req.c_str(),req.size()); - // - ans=""; - for(int i=0;i<255;i++) - { - Sleep(10); - char ch; - DWORD BytesRead=cPort->Read(&ch,1); - if (BytesRead>0) ans+=ch; else break; - } - // CRC - if(ans.size()>=2) - { - crc=GetCRC16((unsigned char*)ans.c_str(),ans.size()-2); - if(crc==((unsigned short*)(&ans.c_str()[ans.size()-2]))[0]) return true; - } - return false; -} -//--------------------------------------------------------------------------- -// -bool Validator::Start() -{ - bool result=true; - - if(cPort->Open(cPort->ComNumber)) - { - cPort->BaudRate=cPort->BaudRate; - result = result && cPort->Setup(2); - - if(result) result=result && Reset(); // - if(result) result=result && getSerialNumber(); // - if(result) result=result && getNominals(); // - if(result) result=result && SetEnableBillTypes(true); // - - }else result=false; - - return result || m_testmode; // OK -} -//--------------------------------------------------------------------------- -// (RESET 30H Command for Bill-to-Bill unit to self-reset) -bool Validator::Reset() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x30; - return SendCommand(req,ans); -} -//--------------------------------------------------------------------------- -// (GET STATUS 31H Request for Bill-to-Bill unit set-up status) -bool Validator::GetStatus() -{ - std::string req,ans; - req+=(char)0x02; req+=(char)0x03; req+=(char)0x06; req+=(char)0x31; //req+=(char)0x41; req+=(char)0xB3; - bool r=SendCommand(req,ans); - if(r && ans.length()>6) // - { - // 3 - // 3 - // 3 - } - return r; -} -//--------------------------------------------------------------------------- -// -//enable - true , false -bool Validator::SetEnableBillTypes(bool enable) -{ - std::string req,ans; - if(enable) - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0xFF; req+=(char)0xFF; req+=(char)0xFF; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - }else - { req+=(char)0x02; req+=(char)0x03; req+=(char)0x0C; req+=(char)0x34; - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - req+=(char)0x00; req+=(char)0x00; req+=(char)0x00; //24 - } - bool r=SendCommand(req,ans); - return r; -} -//--------------------------------------------------------------------------- -bool Validator::getSerialNumber() -{ - DWORD BytesWritten=cPort->Write(ConIdent,sizeof(ConIdent)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return false; - // - if(BytesRead!=39) - { - saveLog(1," "); - return false; - } - // - AnsiString str1((char*)&ReadAr[3],15); - BatchNumber=str1.Trim(); - - AnsiString str2((char*)&ReadAr[18],12); - SerialNumber=str2.Trim(); - - Sleep(100); - return true; -} -//--------------------------------------------------------------------------- -// -bool Validator::getNominals() -{ - bNominals=false; - Sleep(100); // - DWORD BytesWritten=cPort->Write(ConGetBT,sizeof(ConGetBT)); - DWORD BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(!CheckOnCRC(ReadAr,BytesRead)) return bNominals; - Sleep(100); // - for(unsigned char i=0;i<23;i++) - { - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - // 3 - bt[i].country[0]=ReadAr[3+i*5+1]; - bt[i].country[1]=ReadAr[3+i*5+2]; - bt[i].country[2]=ReadAr[3+i*5+3]; - bt[i].val=addZero(ReadAr[3+i*5],ReadAr[3+i*5+4]); - } - bNominals=true; - return bNominals; -} -//--------------------------------------------------------------------------- -// , . -//state - (. ) -// 0 -int Validator::getPay(int &state) -{ - state=0; - if(!cPort->bOpen){Sleep(1000); return 0;} - - int result=0; - DWORD BytesWritten=0; - DWORD BytesRead=0; - - BytesWritten=cPort->Write(ConReACK, sizeof(ConReACK)); // - Sleep(10); - - BytesWritten=cPort->Write(ConStPoll, sizeof(ConStPoll)); // - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); - if(CheckOnCRC(ReadAr,BytesRead)) - { - if(ReadAr[3] == 0x13) //19 RESET - { - //saveLog(1,"(State)0x13 "); - }else - if(ReadAr[3]==0x14) //20 (IDLING The state in which Bill-to-Bill is ready accept bills) - { - //saveLog(1,"(State)0x14 "); - }else - if(ReadAr[3]==0x15) //21 ( 3 ) - { - state=0x15; - //saveLog(1,"(State)21 1 "); - }else - if(ReadAr[3]==0x17) //23 - { - //saveLog(1,"(State)23 !"); - }else - if(ReadAr[3]==0x19) //25 DISABLED The Bill-to-Bill unit has been disabled by the Controller and also the state in which Bill-to-Bill unit is after initialization. - { - state=0x19; - //saveLog(1,"(State)25 !!!"); - - SetEnableBillTypes(true); - }else - if(ReadAr[3]==0x1c) //28 - { - //saveLog(1,"(State)28 "); - }else - if(ReadAr[3]==0x41) //41H ... - { - //saveLog(1,"(State)0x41 ..."); - }else - if(ReadAr[3]==0x45) //69 "". - { - //saveLog(1,"(State)69 "); - }else - if(ReadAr[3]==0x81) //129 - { - state=0x81; - //saveLog(1,"(State)129 "); - - if(ReadAr[4]<23) - { - result=bt[ReadAr[4]].val; // ReadAr[5] - saveLog(1,"(Pay)"+IntToStr(result)); - } - }else - saveLog(1,"(State???)"+IntToStr(ReadAr[3])); - } - Sleep(100); - - return result; -} -//--------------------------------------------------------------------------- -// -void Validator::endPay() -{ - SetEnableBillTypes(false); - - DWORD BytesWritten,BytesRead; - BytesWritten=cPort->Write(ConReACK , sizeof(ConReACK)); - - BytesWritten=cPort->Write(ConStPoll , sizeof(ConStPoll)); - BytesRead=cPort->Read(ReadAr,sizeof(ReadAr)); -} -//--------------------------------------------------------------------------- -int Validator::GetState() // 0 -{ - if(m_testmode) return 0; - //if(! bNominals) getNominals(); //todo - if(! bNominals) return 1; - return 0; -} -//--------------------------------------------------------------------------- -AnsiString Validator::GetStatusDescription(BYTE StatusCode) // -{ - if (StatusCode == 0x00) - return "OK"; - else - if (StatusCode == 1) - return " "; - else - return "Error"; -} -//--------------------------------------------------------------------------- diff --git a/devices/Validators/__history/Validator.h.~1~ b/devices/Validators/__history/Validator.h.~1~ deleted file mode 100644 index 6a9ee91..0000000 --- a/devices/Validators/__history/Validator.h.~1~ +++ /dev/null @@ -1,64 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef ValidatorH -#define ValidatorH -//--------------------------------------------------------------------------- -#include "../ComPort.h" -#include "ValidatorThread.h" -//--------------------------------------------------------------------------- -unsigned char ConReset[6] = {0x02,0x03,0x06,0x30,0x41,0xB3}; //RESET - -unsigned char ConReACK[6] = {0x02,0x03,0x06,0x00,0xC2,0x82}; // ... -unsigned char ConGetBT[6] = {0x02,0x03,0x06,0x41,0x4F,0xD1}; //GET BILL TABLE -unsigned char ConStPoll[6]= {0x02,0x03,0x06,0x33,0xDA,0x81}; //POLL 33H Request for Bill-to-Bill unit activity Status ( ) -unsigned char ConIdent[6] = {0x02,0x03,0x06,0x37,0xFE,0xC7}; //IDENTIFICATION 37H Request for Model, Serial Number, Country ISO code, Asset Number -//--------------------------------------------------------------------------- -struct BillType -{ - int val; // - char country[3]; // -}; -//--------------------------------------------------------------------------- -int addZero(int val,int cnt); -//--------------------------------------------------------------------------- -class Validator -{ -private: - unsigned char ReadAr[255]; -protected: - int Pay; - ValidatorThread* vThread; - bool CheckOnCRC(unsigned char* lpBuffer,unsigned long nSize); -public: - ComPort* cPort; - bool bNominals; // - BillType bt[24]; // - AnsiString BatchNumber, SerialNumber; // - - Validator(); - virtual ~Validator(); - bool SendCommand(std::string req, std::string &ans); - bool Start(); // - - bool Reset(); // - bool GetStatus(); // - bool SetEnableBillTypes(bool enable); // - - - bool getSerialNumber(); // - bool getNominals(); // - void LoadSetup(); - void SaveSetup(); - - int getPay(int &state); - void endPay(); // - bool startPay(); // - bool stopPay(); // - - int GetState(); // 0 - AnsiString GetStatusDescription(BYTE StatusCode); // -}; -//--------------------------------------------------------------------------- -extern Validator* validator; -//--------------------------------------------------------------------------- -#endif - diff --git a/devices/Validators/__history/Validator.h.~2~ b/devices/Validators/__history/Validator.h.~2~ deleted file mode 100644 index aab6e00..0000000 --- a/devices/Validators/__history/Validator.h.~2~ +++ /dev/null @@ -1,64 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef ValidatorH -#define ValidatorH -//--------------------------------------------------------------------------- -#include "../ComPort.h" -#include "ValidatorThread.h" -//--------------------------------------------------------------------------- -unsigned char ConReset[6] = {0x02,0x03,0x06,0x30,0x41,0xB3}; //RESET - -unsigned char ConReACK[6] = {0x02,0x03,0x06,0x00,0xC2,0x82}; // ... -unsigned char ConGetBT[6] = {0x02,0x03,0x06,0x41,0x4F,0xD1}; //GET BILL TABLE -unsigned char ConStPoll[6]= {0x02,0x03,0x06,0x33,0xDA,0x81}; //POLL 33H Request for Bill-to-Bill unit activity Status ( ) -unsigned char ConIdent[6] = {0x02,0x03,0x06,0x37,0xFE,0xC7}; //IDENTIFICATION 37H Request for Model, Serial Number, Country ISO code, Asset Number -//--------------------------------------------------------------------------- -struct BillType -{ - int val; // - char country[3]; // -}; -//--------------------------------------------------------------------------- -int addZero(int val,int cnt); -//--------------------------------------------------------------------------- -class Validator -{ -private: - unsigned char ReadAr[255]; -protected: - int Pay; - ValidatorThread* vThread; - bool CheckOnCRC(unsigned char* lpBuffer,unsigned long nSize); -public: - ComPort* cPort; - bool bNominals; // - BillType bt[24]; // - AnsiString BatchNumber, SerialNumber; // - - Validator(); - virtual ~Validator(); - bool SendCommand(std::string req, std::string &ans); - bool Start(); // - - bool Reset(); // - bool GetStatus(); // - bool SetEnableBillTypes(bool enable); // - - - bool getSerialNumber(); // - bool getNominals(); // - void LoadSetup(); - void SaveSetup(); - - int getPay(int &state); - void endPay(); // - bool startPay(); // - bool stopPay(); // - - int GetState(); // 0 - AnsiString GetStatusDescription(BYTE StatusCode); // -}; -//--------------------------------------------------------------------------- -extern Validator* validator; -//--------------------------------------------------------------------------- -#endif - diff --git a/devices/Validators/__history/Validator.h.~3~ b/devices/Validators/__history/Validator.h.~3~ deleted file mode 100644 index 5b0c97b..0000000 --- a/devices/Validators/__history/Validator.h.~3~ +++ /dev/null @@ -1,64 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef ValidatorH -#define ValidatorH -//--------------------------------------------------------------------------- -#include "../ComPort.h" -#include "ValidatorThread.h" -//--------------------------------------------------------------------------- -unsigned char ConReset[6] = {0x02,0x03,0x06,0x30,0x41,0xB3}; //RESET - -unsigned char ConReACK[6] = {0x02,0x03,0x06,0x00,0xC2,0x82}; // ... -unsigned char ConGetBT[6] = {0x02,0x03,0x06,0x41,0x4F,0xD1}; //GET BILL TABLE -unsigned char ConStPoll[6]= {0x02,0x03,0x06,0x33,0xDA,0x81}; //POLL 33H Request for Bill-to-Bill unit activity Status ( ) -unsigned char ConIdent[6] = {0x02,0x03,0x06,0x37,0xFE,0xC7}; //IDENTIFICATION 37H Request for Model, Serial Number, Country ISO code, Asset Number -//--------------------------------------------------------------------------- -struct BillType -{ - int val; // - char country[3]; // -}; -//--------------------------------------------------------------------------- -int addZero(int val,int cnt); // -//--------------------------------------------------------------------------- -class Validator -{ -private: - unsigned char ReadAr[255]; -protected: - int Pay; - ValidatorThread* vThread; - bool CheckOnCRC(unsigned char* lpBuffer,unsigned long nSize); -public: - ComPort* cPort; // - bool bNominals; // - BillType bt[24]; // - AnsiString BatchNumber, SerialNumber; // - - Validator(); - virtual ~Validator(); - bool SendCommand(std::string req, std::string &ans); - bool Start(); // - - bool Reset(); // - bool GetStatus(); // - bool SetEnableBillTypes(bool enable); // - - - bool getSerialNumber(); // - bool getNominals(); // - void LoadSetup(); - void SaveSetup(); - - int getPay(int &state); - void endPay(); // - bool startPay(); // - bool stopPay(); // - - int GetState(); // 0 - AnsiString GetStatusDescription(BYTE StatusCode); // -}; -//--------------------------------------------------------------------------- -extern Validator* validator; -//--------------------------------------------------------------------------- -#endif - diff --git a/devices/Validators/__history/Validator.h.~4~ b/devices/Validators/__history/Validator.h.~4~ deleted file mode 100644 index a40ed04..0000000 --- a/devices/Validators/__history/Validator.h.~4~ +++ /dev/null @@ -1,66 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef ValidatorH -#define ValidatorH -//--------------------------------------------------------------------------- -#include "../ComPort.h" -#include "ValidatorThread.h" -//--------------------------------------------------------------------------- -unsigned char ConReset[6] = {0x02,0x03,0x06,0x30,0x41,0xB3}; //RESET - -unsigned char ConReACK[6] = {0x02,0x03,0x06,0x00,0xC2,0x82}; // ... -unsigned char ConGetBT[6] = {0x02,0x03,0x06,0x41,0x4F,0xD1}; //GET BILL TABLE -unsigned char ConStPoll[6]= {0x02,0x03,0x06,0x33,0xDA,0x81}; //POLL 33H Request for Bill-to-Bill unit activity Status ( ) -unsigned char ConIdent[6] = {0x02,0x03,0x06,0x37,0xFE,0xC7}; //IDENTIFICATION 37H Request for Model, Serial Number, Country ISO code, Asset Number -//--------------------------------------------------------------------------- -struct BillType -{ - int val; // - char country[3]; // -}; -//--------------------------------------------------------------------------- -int addZero(int val,int cnt); // -//--------------------------------------------------------------------------- -class Validator -{ -private: - unsigned char ReadAr[255]; -protected: - int Pay; - ValidatorThread* vThread; - bool CheckOnCRC(unsigned char* lpBuffer,unsigned long nSize); -public: - bool testmode; // - - ComPort* cPort; // - bool bNominals; // - BillType bt[24]; // - AnsiString BatchNumber, SerialNumber; // - - Validator(); - virtual ~Validator(); - bool SendCommand(std::string req, std::string &ans); - bool Start(); // - - bool Reset(); // - bool GetStatus(); // - bool SetEnableBillTypes(bool enable); // - - - bool getSerialNumber(); // - bool getNominals(); // - void LoadSetup(); - void SaveSetup(); - - int getPay(int &state); - void endPay(); // - bool startPay(); // - bool stopPay(); // - - int GetState(); // 0 - AnsiString GetStatusDescription(BYTE StatusCode); // -}; -//--------------------------------------------------------------------------- -extern Validator* validator; -//--------------------------------------------------------------------------- -#endif - diff --git a/lib/WTools.cpp b/lib/WTools.cpp index abae8d3..f23041b 100644 --- a/lib/WTools.cpp +++ b/lib/WTools.cpp @@ -75,16 +75,50 @@ double getDoubleVal(VARIANT *pvarPropVal) return 0; } //--------------------------------------------------------------------------- -// -std::string getStringVal(VARIANT *pvarPropVal) +//Преобразование типов если нужно +//--------------------------------------------------------------------------- +//Преобразование типов если нужно +std::string getStringVal(VARIANT* pvarPropVal, const std::string& dateFormat = "") { - if(pvarPropVal->vt==VT_BOOL) return Utility::IntToStdStr(pvarPropVal->boolVal==0 ? 0 : 1); else - if(pvarPropVal->vt==VT_I2) return Utility::IntToStdStr(pvarPropVal->bVal); else - if(pvarPropVal->vt==VT_I4) return Utility::IntToStdStr(pvarPropVal->intVal); else - if(pvarPropVal->vt==VT_R4) return Utility::FloatToStdStr(pvarPropVal->fltVal); else - if(pvarPropVal->vt==VT_R8) return Utility::FloatToStdStr(pvarPropVal->dblVal); else - if(pvarPropVal->vt==VT_BSTR) return getSTDStr(pvarPropVal->bstrVal); else - return ""; + switch (pvarPropVal->vt) + { + case VT_BOOL: + return Utility::IntToStdStr(pvarPropVal->boolVal == 0 ? 0 : 1); + case VT_I2: + return Utility::IntToStdStr(pvarPropVal->bVal); + case VT_I4: + return Utility::IntToStdStr(pvarPropVal->intVal); + case VT_R4: + return Utility::FloatToStdStr(pvarPropVal->fltVal); + case VT_R8: + return Utility::FloatToStdStr(pvarPropVal->dblVal); + case VT_BSTR: + return getSTDStr(pvarPropVal->bstrVal); + case VT_DATE: + { + SYSTEMTIME st; + if (VariantTimeToSystemTime(pvarPropVal->date, &st)) + { + std::string fmt = dateFormat.empty() ? "%Y-%m-%dT%H:%M:%S" : dateFormat; + struct tm tm = { 0 }; + tm.tm_year = st.wYear - 1900; + tm.tm_mon = st.wMonth - 1; + tm.tm_mday = st.wDay; + tm.tm_hour = st.wHour; + tm.tm_min = st.wMinute; + tm.tm_sec = st.wSecond; + tm.tm_isdst = -1; + char buf[256]; + if (strftime(buf, sizeof(buf), fmt.c_str(), &tm) > 0) + { + return std::string(buf); + } + } + return ""; + } + default: + return ""; + } } //--------------------------------------------------------------------------- std::wstring getWStringVal(VARIANT *pvarPropVal) @@ -126,7 +160,7 @@ _bstr_t bs(vt); return std::string(static_cast(bs)); }*/ //--------------------------------------------------------------------------- -/// Unicode BSTR ANSI std::string +///Преобразование из Unicode BSTR строки в ANSI строку std::string std::string getSTDStr(const BSTR& unicodestr) { std::string str=""; @@ -150,11 +184,11 @@ std::wstring getSTDWStr(const BSTR& unicodestr) return unicodestr; } //--------------------------------------------------------------------------- -// ini +//Сохранить параметр в ini файл bool IniWriteW(std::wstring filename,std::wstring section,std::wstring key,std::wstring data) { std::wstring str= Utility::BeforeWLast(filename,L'\\'); - CreateDirectory(str.c_str(), NULL); // + CreateDirectory(str.c_str(), NULL); //Пробуем создать папку return WritePrivateProfileString( (LPCWSTR)section.c_str(), @@ -178,7 +212,7 @@ std::wstring IniReadW(std::wstring filename,std::wstring section,std::wstring ke return out; } //--------------------------------------------------------------------------- -// "Application Data" +//Путь к "Application Data" для всех пользователей std::wstring getCommonAppPathW() { wchar_t szPath[MAX_PATH]; @@ -186,7 +220,7 @@ std::wstring getCommonAppPathW() return szPath; } //--------------------------------------------------------------------------- -// "Application Data" +//Путь к "Application Data" для всех пользователей std::string getCommonAppPathA() { char szPath[MAX_PATH]; @@ -194,7 +228,7 @@ std::string getCommonAppPathA() return szPath; } //--------------------------------------------------------------------------- -// "Application Data" +//Путь к "Application Data" для текущего пользователя /*std::wstring getDefaultAppPathW() { wchar_t szPath[MAX_PATH]; @@ -202,7 +236,7 @@ std::string getCommonAppPathA() return szPath; }*/ //--------------------------------------------------------------------------- -// "Application Data" +//Путь к "Application Data" пользователя std::wstring getAppDataPathW() { wchar_t szPath[MAX_PATH]; @@ -210,7 +244,7 @@ std::wstring getAppDataPathW() return szPath; } //--------------------------------------------------------------------------- -// "Application Data" +//Путь к "Application Data" пользователя std::string getAppDataPathA() { char szPath[MAX_PATH]; @@ -218,14 +252,14 @@ std::string getAppDataPathA() return szPath; } //--------------------------------------------------------------------------- -// +//Выключить компьютер bool shoot(bool reboot, bool force) { /* OSVERSIONINFO ver; ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&ver); - if (ver.dwPlatformId == VER_PLATFORM_WIN32_NT) // NT SE_SHUTDOWN_NAME + if (ver.dwPlatformId == VER_PLATFORM_WIN32_NT) // в семействе NT для выключения необходимо иметь привилегию SE_SHUTDOWN_NAME { HANDLE hToken; TOKEN_PRIVILEGES* NewState; @@ -267,7 +301,7 @@ std::string getCurrentFilePath() */ } //--------------------------------------------------------------------------- -// +//Прочитать версию файла std::string getFileVersion( std::wstring path ) { DWORD dwHandle, sz = GetFileVersionInfoSizeW( path.c_str(), & dwHandle ); diff --git a/lib/WTools.h b/lib/WTools.h index 84d7ff7..96202ce 100644 --- a/lib/WTools.h +++ b/lib/WTools.h @@ -7,9 +7,9 @@ //--------------------------------------------------------------------------- typedef unsigned int uint4; //--------------------------------------------------------------------------- -// Windows +//Для Windows платформы //--------------------------------------------------------------------------- - //std::string getHDDSerial(); // + //std::string getHDDSerial(); //Получить серийный номер С диска //void cpuid (int output[4], int functionnumber); std::string getSTDStr(const BSTR& unicodestr); @@ -17,11 +17,11 @@ typedef unsigned int uint4; BSTR stdStrToBSTR(const std::string& s); BSTR stdWStrToBSTR(const std::wstring& s); - std::wstring getCommonAppPathW(); // "Application Data" + std::wstring getCommonAppPathW(); //Путь к "Application Data" std::string getCommonAppPathA(); - std::wstring getAppDataPathW(); // "Application Data" - std::string getAppDataPathA(); // "Application Data" - std::string getCurrentFilePath(); // DLL + std::wstring getAppDataPathW(); //Путь к "Application Data" текущего пользователя + std::string getAppDataPathA(); //Путь к "Application Data" текущего пользователя + std::string getCurrentFilePath(); //Путь к текущей DLL std::string getFileVersion( std::wstring path ); std::wstring IniReadW(std::wstring filename,std::wstring section,std::wstring key); @@ -32,9 +32,9 @@ typedef unsigned int uint4; bool getBoolVal(VARIANT *pvarPropVal); float getFloatVal(VARIANT *pvarPropVal); double getDoubleVal(VARIANT *pvarPropVal); - std::string getStringVal(VARIANT *pvarPropVal); + std::string getStringVal(VARIANT* pvarPropVal, const std::string& dateFormat); std::wstring getWStringVal(VARIANT *pvarPropVal); - bool shoot(bool reboot, bool force); //< + bool shoot(bool reboot, bool force); //<Выключить комп //------------------------------------------------------------------------------ #endif \ No newline at end of file diff --git a/lib/mathTools.cpp b/lib/mathTools.cpp index e79efef..daf3d70 100644 --- a/lib/mathTools.cpp +++ b/lib/mathTools.cpp @@ -175,19 +175,19 @@ int RandInt(int a, int b) //Расстояние от начала декартовых координат до заданной точки float fnGetDistans(RfPointXYZ p) { - return sqrt(sqr(p.x) + sqr(p.y) + sqr(p.z)); + return (float)sqrt(sqr(p.x) + sqr(p.y) + sqr(p.z)); } //------------------------------------------------------------------------------ //Расстояние между 2мя точками на плоскости в декартовых координатах float fnGetDistans2d(RfPointXY PointXY1, RfPointXY PointXY2) { - return sqrt(fabs(sqr(PointXY1.x - PointXY2.x) + sqr(PointXY1.y - PointXY2.y))); + return (float)sqrt(fabs(sqr(PointXY1.x - PointXY2.x) + sqr(PointXY1.y - PointXY2.y))); } //------------------------------------------------------------------------------ //Расстояние между 2мя точками в пространстве в декартовых координатах float fnGetDistans3d(RfPointXYZ PointXYZ1, RfPointXYZ PointXYZ2) { - return sqrt(fabs(sqr(PointXYZ1.x - PointXYZ2.x) + sqr(PointXYZ1.y - PointXYZ2.y) + sqr(PointXYZ1.z - PointXYZ2.z))); + return (float)sqrt(fabs(sqr(PointXYZ1.x - PointXYZ2.x) + sqr(PointXYZ1.y - PointXYZ2.y) + sqr(PointXYZ1.z - PointXYZ2.z))); } //------------------------------------------------------------------------------ float sqr(float val) @@ -286,7 +286,7 @@ void CalcNormals(float x0, float y0, float z0, float x1, float y1, float z1, flo a = (y1 - y0)*(z2 - z0) - (y2 - y0)*(z1 - z0); b = (x2 - x0)*(z1 - z0) - (x1 - x0)*(z2 - z0); c = (x1 - x0)*(y2 - y0) - (y1 - y0)*(x2 - x0); - r = sqrt(a*a + b*b + c*c); + r = (float)sqrt(a*a + b*b + c*c); if (r != 0) r = 1 / r; xr = a*r; yr = b*r; @@ -333,7 +333,7 @@ void fnCalcCircle(RfPointXYZ p1, RfPointXYZ p2, RfPointXYZ p3, float &a, float & { //всё в 1 точке r = 0; } - r = sqrt((a - p1.x)*(a - p1.x) + (b - p1.y)*(b - p1.y)); + r = (float)sqrt((a - p1.x)*(a - p1.x) + (b - p1.y)*(b - p1.y)); } //------------------------------------------------------------------------------ /** Из декартовых в полярные @@ -345,13 +345,13 @@ r - радиус void NormalInPolar3d(float x, float y, float z, float &AngleH, float &AngleV, float &r) { if (x == 0.0) x = 0.0000001f; - r = sqrt(x*x + y*y + z*z); - AngleH = fabs(atan(y / x)); + r = (float)sqrt(x*x + y*y + z*z); + AngleH = (float)fabs(atan(y / x)); if ((x <= 0) && (y <= 0)) AngleH = (float)(PI - AngleH); if ((x<0) && (y>0)) AngleH = (float)(AngleH + PI); if ((x >= 0) && (y >= 0)) AngleH = (float)(2.0f*PI - AngleH); if (AngleH>PI*2.0f) AngleH = (float)(AngleH - PI*2.0f); - AngleV = fabs(atan(z / sqrt(x*x + y*y))); + AngleV = (float)fabs(atan(z / sqrt(x*x + y*y))); if (z<0) AngleV = -AngleV; } //------------------------------------------------------------------------------ @@ -363,8 +363,8 @@ r - радиус void NormalInPolar2d(float x, float y, float &Angle, float &r) { if (x == 0.0) x = 0.0000001f; - r = sqrt(x*x + y*y); - Angle = fabs(atan(y / x)); + r = (float)sqrt(x*x + y*y); + Angle = (float)fabs(atan(y / x)); if ((x <= 0) && (y <= 0)) Angle = (float)(PI - Angle); if ((x<0) && (y>0)) Angle = (float)(Angle + PI); if ((x >= 0) && (y >= 0)) Angle = (float)(2.0f*PI - Angle); @@ -560,9 +560,9 @@ RfPointXY ApproachPoint2d(RfPointXY PointXY1, RfPointXY PointXY2, float Distans) float dist; RfPointXY LengthXY; - LengthXY.x = fabs(PointXY1.x - PointXY2.x); - LengthXY.y = fabs(PointXY1.y - PointXY2.y); - dist = sqrt(sqr(LengthXY.x) + sqr(LengthXY.y)); + LengthXY.x = (float)fabs(PointXY1.x - PointXY2.x); + LengthXY.y = (float)fabs(PointXY1.y - PointXY2.y); + dist = (float)sqrt(sqr(LengthXY.x) + sqr(LengthXY.y)); dist = Distans / dist; PointXY2.x = PointXY1.x*(1 - dist) + PointXY2.x*dist; @@ -577,11 +577,11 @@ RfPointXYZ ApproachPoint3d(RfPointXYZ PointXYZ1, RfPointXYZ PointXYZ2, float Dis float dist; RfPointXYZ LengthXYZ; - LengthXYZ.x = fabs(PointXYZ1.x - PointXYZ2.x); - LengthXYZ.y = fabs(PointXYZ1.y - PointXYZ2.y); - LengthXYZ.z = fabs(PointXYZ1.z - PointXYZ2.z); + LengthXYZ.x = (float)fabs(PointXYZ1.x - PointXYZ2.x); + LengthXYZ.y = (float)fabs(PointXYZ1.y - PointXYZ2.y); + LengthXYZ.z = (float)fabs(PointXYZ1.z - PointXYZ2.z); - dist = sqrt(sqr(LengthXYZ.x) + sqr(LengthXYZ.y) + sqr(LengthXYZ.z)); + dist = (float)sqrt(sqr(LengthXYZ.x) + sqr(LengthXYZ.y) + sqr(LengthXYZ.z)); dist = Distans / dist; PointXYZ2.x = PointXYZ1.x*(1 - dist) + PointXYZ2.x*dist; PointXYZ2.y = PointXYZ1.y*(1 - dist) + PointXYZ2.y*dist; @@ -596,11 +596,11 @@ RfPointXYZ setDistancePoint3d(RfPointXYZ PointXYZ1, RfPointXYZ PointXYZ2, float float dist; RfPointXYZ LengthXYZ; - LengthXYZ.x = fabs(PointXYZ1.x - PointXYZ2.x); - LengthXYZ.y = fabs(PointXYZ1.y - PointXYZ2.y); - LengthXYZ.z = fabs(PointXYZ1.z - PointXYZ2.z); + LengthXYZ.x = (float)fabs(PointXYZ1.x - PointXYZ2.x); + LengthXYZ.y = (float)fabs(PointXYZ1.y - PointXYZ2.y); + LengthXYZ.z = (float)fabs(PointXYZ1.z - PointXYZ2.z); - dist = sqrt(sqr(LengthXYZ.x) + sqr(LengthXYZ.y) + sqr(LengthXYZ.z)); + dist = (float)sqrt(sqr(LengthXYZ.x) + sqr(LengthXYZ.y) + sqr(LengthXYZ.z)); dist = 1 - Distans / dist; PointXYZ2.x = PointXYZ1.x*(1 - dist) + PointXYZ2.x*dist; PointXYZ2.y = PointXYZ1.y*(1 - dist) + PointXYZ2.y*dist; diff --git a/lib/tiptopbd.h b/lib/tiptopbd.h index 742583e..e7b02d7 100644 --- a/lib/tiptopbd.h +++ b/lib/tiptopbd.h @@ -24,6 +24,7 @@ const uint2 file_id=65500;//*((uint2*)"TB");//16980 id файла базы да const uint2 file_version=1; //текущая версия файла базы данных 2 байта //--------------------------------------------------------------------------- //типы данных которые можно хранить в базе под них 1 байт +#define BD_UINT1_B 27 //1 байт без знаковый #define BD_UINT1 0 //1 байт без знаковый #define BD_UINT2 1 //2 байт без знаковый //#define BD_UINT3 2 //3 байт без знаковый