Files
Tools_CPP/devices/Validators/_ValidatorThread.cpp
2024-11-01 12:23:13 +05:00

105 lines
3.1 KiB
C++

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "ValidatorThread.h"
#include "Validator.h"
#include "PrinterOPOS.h"
#include "uf_Main.h"
#include "ud_Module.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// Important: Methods and properties of objects in VCL can only be
// used in a method called using Synchronize, for example:
//
// Synchronize(UpdateCaption);
//
// where UpdateCaption could look like:
//
// void __fastcall ValidatorThread::UpdateCaption()
// {
// Form1->Caption = "Updated in a thread";
// }
//---------------------------------------------------------------------------
__fastcall ValidatorThread::ValidatorThread(bool CreateSuspended)
: TThread(CreateSuspended)
{
bStop=false;
}
//---------------------------------------------------------------------------
void __fastcall ValidatorThread::Execute()
{
while(!bStop)
{
pay=validator->getPay();
if(pay!=0) Synchronize(UpdateCaption);
}
validator->endPay();
}
//---------------------------------------------------------------------------
void ValidatorThread::Stop()
{
bStop=true;
}
//---------------------------------------------------------------------------
//ïåðåäà¸ì ñóììó
void __fastcall ValidatorThread::UpdateCaption()
{
bool isOk=true;
frmMain->gbtnJCheck->Enabled=true; //ðàçðåøàåì êíîïê ïëàò¸æ
frmMain->gbtnPCheck->Enabled=true;
frmMain->gbtnMainMenu->Enabled=false;
frmMain->sum+=pay;
frmMain->Label13->Caption=dModule->language->Values["npay"]+" "+IntToStr(frmMain->sum)+"òã.";
frmMain->Label9->Caption=frmMain->Label13->Caption;
try
{
//Ñîõðàíÿåì ïëàò¸æ â áàçå äàííûõ
if(dModule->UserType) //true - Þðåäè÷åñêîå ëèöî
{
if(dModule->BalanceType) //Çàäîëæåííîñòü ïî õîëîäíîé âîäå
{
if(dModule->addPayJuridicalPerson(dModule->UserId, pay, printerOPOS->CheckId+1))
dModule->OraSession1->Commit();
else
{isOk=false; dModule->OraSession1->Rollback();}
}else //Çàäîëæåííîñòü ïî êàíàëèçàöèè
{
if(dModule->addPayJuridicalPerson(dModule->UserId, pay, printerOPOS->CheckId+1))
dModule->OraSession1->Commit();
else
{isOk=false; dModule->OraSession1->Rollback();}
}
}else //false - ôèçè÷åñêîå ëèöî
{
if(dModule->BalanceType) //Çàäîëæåííîñòü ïî õîëîäíîé âîäå
{
if(dModule->addPayPhysicalPerson(dModule->UserId, pay, printerOPOS->CheckId+1))
dModule->OraSession1->Commit();
else
{isOk=false; dModule->OraSession1->Rollback();}
}else //Çàäîëæåííîñòü ïî êàíàëèçàöèè
{
if(dModule->addPayPhysicalPerson(dModule->UserId, pay, printerOPOS->CheckId+1))
dModule->OraSession1->Commit();
else
{isOk=false; dModule->OraSession1->Rollback();}
}
}
}catch(...){isOk=false;}
//Åñëè íå ñîõðàíèëñÿ â áàðå Îðàêëà òî ñîõðàíÿåì ëîêàëüíî
if(!isOk)
{
if(dModule->BalanceType)
dModule->savePay(1,dModule->UserType,dModule->UserId,pay,printerOPOS->CheckId+1); //Õîëîäíàÿ
else
dModule->savePay(2,dModule->UserType,dModule->UserId,pay,printerOPOS->CheckId+1); //Êàíàëèçàöèÿ
}
}
//---------------------------------------------------------------------------