//--------------------------------------------------------------------------- #pragma hdrstop #include "stdafx.h" //--------------------------------------------------------------------------- #include "FP300KZ1C.h" #include //--------------------------------------------------------------------------- FP300KZ1C::FP300KZ1C() { //DiscountInvertor=1; DocumentNumber=0; OperatorNumber=1; PayMode="P"; //Наличными ActiveLD=-1; //Активное логическое устройство UseReceiptRibbon=true; //Печатать на ленте UseJournalRibbon=true; Absolute=false; //Процентное Discount=0; //Скидка Tax1=0; Tax2=0; Tax3=0; Tax4=0; Department=0; StringQuantity=5; //На сколько двиигать бумагу Open = false; //Открыт фискальный или служебный чек Items = 0; //Количество зарегистрированных продаж в текущем или последнем фискальном чеке. Amount = 0; //Сумма последнего фискального чека Tender = 0; //Сумма оплаты текущего или последнего чека ListLDDevice=new TSimpleList(10,true); //Список LD устройств } //--------------------------------------------------------------------------- FP300KZ1C::~FP300KZ1C() { delete ListLDDevice; } //--------------------------------------------------------------------------- //Получить состояние ККМ bool FP300KZ1C::getECRStatus() { GetStatusFP(); bool b=true; unsigned short De,Me,Ye,Ho,Mi,Se; b=b && GetDateTime(De,Me,Ye,Ho,Mi,Se); ///<Поолучение даты и времени Date=add0(IntToStdStr(De))+"-"+add0(IntToStdStr(Me))+"-"+add0(IntToStdStr(Ye)); //DD-MM-YYYY Time=add0(IntToStdStr(Ho))+":"+add0(IntToStdStr(Mi))+":"+add0(IntToStdStr(Se)); //HH:MM:SS return b; } //--------------------------------------------------------------------------- bool FP300KZ1C::SaveSetup() { bool b=true; /* std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; std::string str; str=toStdStr(cPort->ComNumber); b=b && IniWrite(path, "Main", "ComNumber", str.c_str()); str=toStdStr(cPort->BaudRate); b=b && IniWrite(path, "Main", "BaudRate", str.c_str()); //str=toStdStr(cPort->TimeOut) b=b && IniWrite(path, "Main", "TimeOut", "500"); */ return b; } //--------------------------------------------------------------------------- bool FP300KZ1C::LoadSetup() { /* std::wstring path=getCommonAppPathW()+"\\NewTon\\Setup.ini"; std::string str; str=IniRead(path, "Main", "ComNumber"); cPort->ComNumber=fromString(str); str=IniRead(path, "Main", "BaudRate"); cPort->BaudRate=fromString(str); //Timeout */ return true; } //--------------------------------------------------------------------------- //Добавить логическое устройство в конец списка и сразу сохранить в ini файл ///\param Name Имя ЛУ ///\param ComNumber Номер ком-порта ЛУ ///\param BaudRate Скорость работы ЛУ, в бодах или в виде индекса (индекс 0 соответствует скорости 1200 бод) ///\param ComputerName Имя компьютера, на котором установлено физическое устройство ///\param TimeOut Таймаут ожидания ответа от ЛУ ///\param FrType Тип ФР, соответствующий добавляемому ЛУ bool FP300KZ1C::AddLD(std::string Name,int ComNumber,int BaudRate,std::string ComputerName,int TimeOut,std::string FrType) { //Ищем максимальный номер для уникальности int Number=0; for(unsigned int i=0;icount();i++) if(Numberget(i)->Number) Number=ListLDDevice->get(i)->Number; LDDevice *dv= new LDDevice; dv->Name=Name; dv->Number=Number+1; dv->ComNumber=ComNumber; dv->BaudRate=BaudRate; dv->ComputerName=ComputerName; dv->TimeOut=TimeOut; dv->FrType=FrType; ListLDDevice->add(dv); SaveLD(); //Персохраняем весь список в ini файл return true; } //--------------------------------------------------------------------------- //По номеру лог устройство и удаляем bool FP300KZ1C::DelLD(int LDNumber) { for(unsigned int i=0;icount();i++) { if(ListLDDevice->get(i)->Number==LDNumber) { ListLDDevice->del(i); i--; } } SaveLD(); //Персохраняем весь список в ini файл return true; } //--------------------------------------------------------------------------- //ЗАГРУЗИИТЬЛУ bool FP300KZ1C::LoadLD() { //TIniFileSTD* ini=new TIniFileSTD(getCommonAppPathW()+L"\\Newton\\Setup.ini"); //delete ini; std::wstring str; std::wstring path=getCommonAppPathW()+L"\\Newton\\Setup.ini"; //Загружаем активное логическое устройство str=IniReadW(path, L"Main", L"ActiveLD"); if(str==L"") str=L"-1"; ActiveLD=fromWString(str); ListLDDevice->clear(); //загружаем количество устройств str=IniReadW(path, L"Main", L"LDCount"); if(str==L"") str=L"0"; int cnt=fromWString(str); for(int i=0; iNumber=fromWString(IniReadW(path, str, L"Number")); dv->Name = WStringToString( IniReadW(path, str, L"Name"), std::locale("")); dv->ComNumber=fromWString(IniReadW(path, str, L"ComNumber")); dv->BaudRate=fromWString(IniReadW(path, str, L"BaudRate")); dv->ComputerName=WStringToString( IniReadW(path, str, L"ComputerName"), std::locale("")); dv->TimeOut=fromWString(IniReadW(path, str, L"TimeOut")); dv->FrType=WStringToString( IniReadW(path, str, L"FrType"), std::locale("")); ListLDDevice->add(dv); } return true; } //--------------------------------------------------------------------------- //Сохраниить логические устройства bool FP300KZ1C::SaveLD() { std::wstring path=getCommonAppPathW()+L"\\NewTon\\Setup.ini"; LDDevice *dv; //Персохраняем весь список в ini файл std::string str=IntToStdStr(ListLDDevice->count()); //std::string str=toStdStr(ListLDDevice->count()); //std::string str=toStdStr(ListLDDevice->count()); IniWriteW(path, L"Main", L"LDCount", StringToWString(str,std::locale(""))); str=IntToStdStr(ActiveLD); //str=toStdStr(ActiveLD); IniWriteW(path, L"Main", L"ActiveLD", StringToWString(str,std::locale(""))); for(uint4 i=0;icount();i++) { str="LDDevice"+IntToStdStr(i); //str="LDDevice"+toStdStr(i); dv=ListLDDevice->get(i); IniWriteW(path, StringToWString(str,std::locale("")), L"Number", StringToWString(IntToStdStr(dv->Number),std::locale(""))); IniWriteW(path, StringToWString(str,std::locale("")), L"Name", StringToWString(dv->Name,std::locale(""))); IniWriteW(path, StringToWString(str,std::locale("")), L"ComNumber", StringToWString(IntToStdStr(dv->ComNumber),std::locale(""))); IniWriteW(path, StringToWString(str,std::locale("")), L"BaudRate", StringToWString(IntToStdStr(dv->BaudRate),std::locale(""))); IniWriteW(path, StringToWString(str,std::locale("")), L"ComputerName", StringToWString(dv->ComputerName,std::locale(""))); IniWriteW(path, StringToWString(str,std::locale("")), L"TimeOut", StringToWString(IntToStdStr(dv->TimeOut),std::locale(""))); IniWriteW(path, StringToWString(str,std::locale("")), L"FrType", StringToWString(dv->FrType,std::locale(""))); /* IniWriteW(path, StringToWString(str,std::locale("")), L"Number", StringToWString(toStdStr(dv->Number),std::locale(""))); IniWriteW(path, StringToWString(str,std::locale("")), L"Name", StringToWString(dv->Name,std::locale(""))); IniWriteW(path, StringToWString(str,std::locale("")), L"ComNumber", StringToWString(toStdStr(dv->ComNumber),std::locale(""))); IniWriteW(path, StringToWString(str,std::locale("")), L"BaudRate", StringToWString(toStdStr(dv->BaudRate),std::locale(""))); IniWriteW(path, StringToWString(str,std::locale("")), L"ComputerName", StringToWString(dv->ComputerName,std::locale(""))); IniWriteW(path, StringToWString(str,std::locale("")), L"TimeOut", StringToWString(toStdStr(dv->TimeOut),std::locale(""))); IniWriteW(path, StringToWString(str,std::locale("")), L"FrType", StringToWString(dv->FrType,std::locale(""))); */ } return true; } //--------------------------------------------------------------------------- //Обвёртка специально для свойств int FP300KZ1C::getLDCount() { return ListLDDevice->count(); } //--------------------------------------------------------------------------- //Обвёртка специально для свойств std::string FP300KZ1C::ECRFlags() { return Status->getStatus(); } //--------------------------------------------------------------------------- void FP300KZ1C::setStringForPrinting(std::string str) { replaseChars(str,10,' '); StringForPrinting=str; } //--------------------------------------------------------------------------- int FP300KZ1C::GetLastPrintedDocNumber2() { int num; GetLastPrintedDocNumber(num); return num; } //--------------------------------------------------------------------------- //Вся сумма в кассе double FP300KZ1C::getCashSum() { std::string ExitCode; double CashSum,ServIn,ServOut; ParishOrConsumption("","",0.0,L"",L"",ExitCode,CashSum,ServIn,ServOut); return CashSum; } //--------------------------------------------------------------------------- //Сума внесений наличности в кассу double FP300KZ1C::getCashIn() { std::string ExitCode; double CashSum,ServIn,ServOut; ParishOrConsumption("","",0.0,L"",L"",ExitCode,CashSum,ServIn,ServOut); return ServIn; } //--------------------------------------------------------------------------- //Сумма выемки налличности из кассы double FP300KZ1C::getCashOut() { std::string ExitCode; double CashSum,ServIn,ServOut; ParishOrConsumption("","",0.0,L"",L"",ExitCode,CashSum,ServIn,ServOut); return ServOut; } //--------------------------------------------------------------------------- //Секунд с начала смены int FP300KZ1C::getSessionSec() { int sec=0; SessionSec(sec); //Секунд с начала смены return sec; }