263 lines
9.3 KiB
C++
263 lines
9.3 KiB
C++
//---------------------------------------------------------------------------
|
|
#pragma hdrstop
|
|
#include "stdafx.h"
|
|
//---------------------------------------------------------------------------
|
|
#include "FP300KZ1C.h"
|
|
#include <WTools.h>
|
|
//---------------------------------------------------------------------------
|
|
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<LDDevice*>(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<int>(str);
|
|
str=IniRead(path, "Main", "BaudRate");
|
|
cPort->BaudRate=fromString<int>(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;i<ListLDDevice->count();i++)
|
|
if(Number<ListLDDevice->get(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;i<ListLDDevice->count();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<int>(str);
|
|
|
|
ListLDDevice->clear();
|
|
//çàãðóæàåì êîëè÷åñòâî óñòðîéñòâ
|
|
str=IniReadW(path, L"Main", L"LDCount");
|
|
if(str==L"") str=L"0";
|
|
int cnt=fromWString<int>(str);
|
|
for(int i=0; i<cnt; i++)
|
|
{
|
|
str=L"LDDevice"+toStdWStr(i);
|
|
LDDevice *dv= new LDDevice;
|
|
|
|
dv->Number=fromWString<int>(IniReadW(path, str, L"Number"));
|
|
dv->Name = WStringToString( IniReadW(path, str, L"Name"), std::locale(""));
|
|
dv->ComNumber=fromWString<int>(IniReadW(path, str, L"ComNumber"));
|
|
dv->BaudRate=fromWString<int>(IniReadW(path, str, L"BaudRate"));
|
|
dv->ComputerName=WStringToString( IniReadW(path, str, L"ComputerName"), std::locale(""));
|
|
dv->TimeOut=fromWString<int>(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;i<ListLDDevice->count();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;
|
|
}
|