154 lines
4.7 KiB
Plaintext
154 lines
4.7 KiB
Plaintext
//---------------------------------------------------------------------------
|
|
|
|
#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(state);
|
|
Synchronize(UpdateState);
|
|
if(pay!=0)
|
|
Synchronize(UpdateCaption);
|
|
}
|
|
validator->endPay();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void ValidatorThread::Stop()
|
|
{
|
|
bStop=true;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
//Ïðîâåðêà ñîñòîÿíèÿ áëîêèðîâêà èíòåðôåéñà åñëè èä¸ò ïðè¸ì äåíåã
|
|
void __fastcall ValidatorThread::UpdateState()
|
|
{
|
|
|
|
//TODO îïëàòèë äåíþæêó ïîòîì çàñóíóë ëåâóþ ëèáî íå äîêîíöà çàñóíóë íå îáíîâëÿåòñÿ êíîïêà îïëàòèòü!!!
|
|
if(state==0x15)
|
|
{
|
|
frmMain->gbtnJCheck->Enabled=false;
|
|
frmMain->gbtnPCheck->Enabled=false;
|
|
}else
|
|
if(state==0x19 || state==0x81)
|
|
{
|
|
if(frmMain->sum!=0)
|
|
{
|
|
frmMain->gbtnJCheck->Enabled=true;
|
|
frmMain->gbtnPCheck->Enabled=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=dModule->language->Values["npay"]+" "+IntToStr(frmMain->sum)+"òã.";
|
|
|
|
//Äîáàâëÿþ ê ñóììå âûäåëåííîé óñëóãè
|
|
TService* s=NULL;
|
|
for(int i=0;i<dModule->LService->Count;i++)
|
|
{
|
|
if(((TService*)dModule->LService->Items[i])->select)
|
|
{
|
|
s=(TService*)dModule->LService->Items[i];
|
|
break;
|
|
}
|
|
}
|
|
if(s!=NULL)
|
|
{
|
|
s->sum+=pay;
|
|
s->lblSum->Caption=IntToStr(s->sum);
|
|
}
|
|
|
|
|
|
|
|
try
|
|
{
|
|
//Ñîõðàíÿåì ïëàò¸æ â áàçå äàííûõ
|
|
if(dModule->UserType) //true - Þðåäè÷åñêîå ëèöî
|
|
{
|
|
if(dModule->BalanceType==1) //Çàäîëæåííîñòü ïî õîëîäíîé âîäå
|
|
{
|
|
if(dModule->addPayJuridicalPerson(dModule->UserId, pay, g_printer->getCheckId()+1))
|
|
dModule->OraSession1->Commit();
|
|
else
|
|
{isOk=false; dModule->OraSession1->Rollback();}
|
|
}else
|
|
if(dModule->BalanceType==2) //Çàäîëæåííîñòü ïî êàíàëèçàöèè
|
|
{
|
|
if(dModule->addPayJuridicalPerson(dModule->UserId, pay, g_printer->getCheckId()+1))
|
|
dModule->OraSession1->Commit();
|
|
else
|
|
{isOk=false; dModule->OraSession1->Rollback();}
|
|
}
|
|
}else //false - ôèçè÷åñêîå ëèöî
|
|
{
|
|
TService* ser=dModule->getSelectService();
|
|
if(ser==NULL){isOk=false; dModule->OraSession1->Rollback();}
|
|
else
|
|
{
|
|
if(dModule->BalanceType==1) //Çàäîëæåííîñòü ïî õîëîäíîé âîäå
|
|
{
|
|
if(dModule->addPayPhysicalPerson(dModule->UserId, ser->id, pay, g_printer->getCheckId()+1))
|
|
dModule->OraSession1->Commit();
|
|
else
|
|
{isOk=false; dModule->OraSession1->Rollback();}
|
|
}else
|
|
if(dModule->BalanceType==2) //Çàäîëæåííîñòü ïî êàíàëèçàöèè
|
|
{
|
|
if(dModule->addPayPhysicalPerson(dModule->UserId, ser->id, pay, g_printer->getCheckId()+1))
|
|
dModule->OraSession1->Commit();
|
|
else
|
|
{isOk=false; dModule->OraSession1->Rollback();}
|
|
}
|
|
}
|
|
}
|
|
}catch(...){isOk=false;}
|
|
|
|
//Åñëè íå ñîõðàíèëñÿ â áàçå Îðàêëà òî ñîõðàíÿåì ëîêàëüíî
|
|
if(!isOk)
|
|
{
|
|
if(dModule->BalanceType==1)
|
|
dModule->savePay(1,dModule->UserType,dModule->UserId,ser->id,pay,g_printer->getCheckId()+1); //Õîëîäíàÿ
|
|
else
|
|
if(dModule->BalanceType==2)
|
|
dModule->savePay(2,dModule->UserType,dModule->UserId,ser->id,pay,g_printer->getCheckId()+1); //Êàíàëèçàöèÿ
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|