//--------------------------------------------------------------------------- #include #pragma hdrstop #include "Data.h" #include "SplashForm.h" #include "PassForm.h" #include "IdHTTP.hpp" #include "IdTCPClient.hpp" #include "IdTCPConnection.hpp" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "cxGraphics" #pragma link "cxClasses" #pragma link "cxGridBandedTableView" #pragma link "cxGridCardView" #pragma link "cxGridTableView" #pragma link "cxLookAndFeels" #pragma link "cxStyles" #pragma link "IBCustomDataSet" #pragma link "IBDatabase" #pragma link "IBQuery" #pragma link "IBDatabaseInfo" #pragma link "IBStoredProc" #pragma link "dxmdaset" #pragma resource "*.dfm" TdmData *dmData; //--------------------------------------------------------------------------- TvdMSQL* FMSSQL2015 = 0; //--------------------------------------------------------------------------- TvdMSQL* vdMSQL2015() { if(FMSSQL2015 == 0) FMSSQL2015 = new TvdMSQL; return FMSSQL2015; } //--------------------------------------------------------------------------- TvdMSQL* FMSSQL = 0; //--------------------------------------------------------------------------- TvdMSQL* vdMSQL() { if(FMSSQL == 0) FMSSQL = new TvdMSQL; return FMSSQL; } //--------------------------------------------------------------------------- __fastcall TvdMSQL::TvdMSQL() : FMSQL(NULL) { } //--------------------------------------------------------------------------- __fastcall TvdMSQL::~TvdMSQL() { if(FMSQL) delete FMSQL; } //--------------------------------------------------------------------------- Variant __fastcall TvdMSQL::getField(String _name) { return FMSQL->FieldValues[_name]; } //--------------------------------------------------------------------------- void __fastcall TvdMSQL::Register(TSQLConnection* _db) { //dodajemy reader glowny FMSQL = new TSQLQuery(_db->Owner); FMSQL->SQLConnection = _db; FMSQL->SchemaName = "CDN"; } //--------------------------------------------------------------------------- String __fastcall TvdMSQL::Str(String _name) { return VarToStr(FMSQL->FieldValues[_name]).Trim(); } //--------------------------------------------------------------------------- int __fastcall TvdMSQL::Int(String _name) { return FMSQL->FieldValues[_name].VInteger; } //--------------------------------------------------------------------------- bool __fastcall TvdMSQL::Cursor(String _query) { if(FMSQL->Active) FMSQL->Close(); FMSQL->SQL->Text = _query; if(FMSQL->SQL->Strings[0].UpperCase().Pos("SELECT ") == 1) { try { FMSQL->Open(); FMSQL->First(); return true; } catch(...) { return false; } } else { throw Exception("W zapytaniu brakuje instrukcji SELECT!"); } } //--------------------------------------------------------------------------- bool __fastcall TvdMSQL::CursorTrace() { FMSQL->Next(); return !FMSQL->Eof; } //--------------------------------------------------------------------------- bool __fastcall TvdMSQL::Q(String _sql) { if(FMSQL->Active) FMSQL->Close(); FMSQL->SQL->Text = _sql; if(FMSQL->SQL->Strings[0].UpperCase().Pos("SELECT ") == 1) { try { FMSQL->Open(); return true; } catch(...) { return false; } } else { try { // FMSQL->SQL->Text = "BEGIN TRANSACTION GO " + _sql + " COMMIT"; FMSQL->SQL->Text = _sql; FMSQL->ExecSQL(); return true; } catch(Exception *E) { throw E; } } } //--------------------------------------------------------------------------- TvdSQL* FSQL = 0; //--------------------------------------------------------------------------- TvdSQL* vdSQL(TIBTransaction* _write) { if(FSQL == 0) FSQL = new TvdSQL; FSQL->WriteTransaction = _write; return FSQL; } //--------------------------------------------------------------------------- __fastcall TvdSQL::TvdSQL() : FSQL(NULL), FWriteTransaction(NULL), FDbInfo(NULL) { } //--------------------------------------------------------------------------- __fastcall TvdSQL::~TvdSQL() { if(FWriteTransaction) delete FWriteTransaction; if(FSQL) delete FSQL; if(FDbInfo) delete FDbInfo; } //--------------------------------------------------------------------------- TIBXSQLVAR* __fastcall TvdSQL::getField(String _name) { return FSQL->FieldByName(_name); } //--------------------------------------------------------------------------- void __fastcall TvdSQL::Register(TIBDatabase* _db) { //dodajemy reader glowny FSQL = new TIBSQL(_db->Owner); FSQL->Database = _db; FSQL->Transaction = _db->DefaultTransaction; FReadTransaction = _db->DefaultTransaction; FDefaultWriteTransaction = new TIBTransaction(_db->Owner); FDefaultWriteTransaction->DefaultDatabase = _db; FDefaultWriteTransaction->Params->Add("read_committed"); FDefaultWriteTransaction->Params->Add("rec_version"); FDefaultWriteTransaction->Params->Add("nowait"); FWriteTransaction = FDefaultWriteTransaction; FDbInfo = new TIBDatabaseInfo(_db->Owner); FDbInfo->Database = _db; } //--------------------------------------------------------------------------- bool __fastcall TvdSQL::Q(String _sql) { if(FSQL->Open) FSQL->Close(); FSQL->SQL->Text = _sql; if(FSQL->SQL->Strings[0].UpperCase().Pos("SELECT ") == 1) { FSQL->Transaction = FReadTransaction; if(!FReadTransaction->Active) FReadTransaction->StartTransaction(); try { FSQL->Prepare(); FSQL->ExecQuery(); return FSQL->RecordCount; } catch(...) { return false; } } else { if(FWriteTransaction == NULL) FWriteTransaction = FDefaultWriteTransaction; if(!FWriteTransaction->Active)FWriteTransaction->StartTransaction(); FSQL->Transaction = FWriteTransaction; try { FSQL->Prepare(); FSQL->ExecQuery(); if(FWriteTransaction == FDefaultWriteTransaction && FWriteTransaction->Active) FWriteTransaction->Commit(); FWriteTransaction = FDefaultWriteTransaction; return true; } catch(Exception *E) { if(FWriteTransaction == FDefaultWriteTransaction)FWriteTransaction->Rollback(); FWriteTransaction = FDefaultWriteTransaction; throw E; } } } //--------------------------------------------------------------------------- TDateTime __fastcall TvdSQL::ServerDateTime() { Q("SELECT current_timestamp as T FROM rdb$database"); return F["T"]->AsDateTime; } //--------------------------------------------------------------------------- // showMessage //--------------------------------------------------------------------------- TvdShowMessage* FShowMessage = 0; //--------------------------------------------------------------------------- TvdShowMessage* vdShowMessage() { if(FShowMessage == 0) FShowMessage = new TvdShowMessage(Application->MainForm); return FShowMessage; } //--------------------------------------------------------------------------- __fastcall TvdShowMessage::TvdShowMessage(TComponent* Owner) : FOwner(Owner) { FForm = new TForm(FOwner); FForm->BorderStyle = bsSizeToolWin; FForm->Height = 150; FForm->Width = 300; // FForm->Color = FColor; FForm->AlphaBlend = false; FPanel = new TPanel(FForm); FPanel->Parent = FForm; FPanel->Align = alTop; FPanel->Height = 20; FPanel->Caption = ""; FPanel->BevelOuter = bvNone; TButton *FButton = new TButton(FPanel); FButton->Parent = FPanel; FButton->Width = 50; FButton->Height = 16; FButton->Top = 1; FButton->Left = 9; FButton->Font->Name = "Webdings"; FButton->Font->Size = 12; FButton->Caption = "5"; FButton->OnClick = onClick1; TButton *FButton2 = new TButton(FPanel); FButton2->Parent = FPanel; FButton2->Width = 50; FButton2->Height = 16; FButton2->Left = 60; FButton2->Top = 1; FButton2->Font->Name = "Webdings"; FButton2->Font->Size = 12; FButton2->Caption = "34"; FButton2->OnClick = onClick2; FMemo = new TMemo(FForm); FMemo->Parent = FForm; // FMemo->Font->Color = clWhite; FMemo->Font->Name = "Tahoma"; FMemo->Align = alClient; // FMemo->Color = FColor; // FMemo->BorderStyle = bsNone; FMemo->AlignWithMargins = true; FMemo->Margins->Left = 10; FMemo->Margins->Top = 0; FMemo->Margins->Right = 10; FMemo->Margins->Bottom = 10; // FLabel->Caption = FNapis; // FLabel->Align = alTop; // FLabel->Alignment = taCenter; // FLabel->Layout = tlCenter; FForm->Show(); FForm->Hide(); Application->ProcessMessages(); } //--------------------------------------------------------------------------- void __fastcall TvdShowMessage::onClick1(TObject* Sender) { if(GetKeyState(VK_CONTROL) >= 0) { FForm->Width += FForm->Left/2; FForm->Height += FForm->Top/2; } else { FForm->Width -= FForm->Left/2; FForm->Height -= FForm->Top/2; } FForm->Left = ( (((TForm*)FOwner)->Width - FForm->Width)/2 ) + ((TForm*)FOwner)->Left; FForm->Top = ( (((TForm*)FOwner)->Height - FForm->Height)/2 ) + ((TForm*)FOwner)->Top; } //--------------------------------------------------------------------------- void __fastcall TvdShowMessage::onClick2(TObject* Sender) { if(GetKeyState(VK_CONTROL) >= 0) FForm->Width += FForm->Left/2; else FForm->Width -= FForm->Left/2; FForm->Left = ( (((TForm*)FOwner)->Width - FForm->Width)/2 ) + ((TForm*)FOwner)->Left; // FForm->Top = ( (((TForm*)FOwner)->Height - FForm->Height)/2 ) + ((TForm*)FOwner)->Top; } //--------------------------------------------------------------------------- void __fastcall TvdShowMessage::doOpen(String _caption, bool _modal) { if(_caption.IsEmpty()) FForm->Caption = "Informacja"; else FForm->Caption = _caption; FForm->Left = ( (((TForm*)FOwner)->Width - FForm->Width)/2 ) + ((TForm*)FOwner)->Left; FForm->Top = ( (((TForm*)FOwner)->Height - FForm->Height)/2 ) + ((TForm*)FOwner)->Top; if(_modal) FForm->ShowModal(); else FForm->Show(); FForm->Update(); } //--------------------------------------------------------------------------- void __fastcall TvdShowMessage::Open(String _body, String _caption) { FMemo->Lines->Text = _body; doOpen(_caption, true); } //--------------------------------------------------------------------------- void __fastcall TvdShowMessage::Open(TvdStrings* _list) { FMemo->Lines->Text = _list->Text; doOpen("", true); } //--------------------------------------------------------------------------- // watek 1 //--------------------------------------------------------------------------- TThreadShowForm* FWaitForm = 0; //--------------------------------------------------------------------------- TThreadShowForm* vdWaitForm() { if(FWaitForm == 0) FWaitForm = new TThreadShowForm(Application->MainForm, new TvdShowFormProp); return FWaitForm; } //--------------------------------------------------------------------------- TThreadShowForm* FWaitFormStart = 0; //--------------------------------------------------------------------------- TThreadShowForm* vdWaitFormStart() { if(FWaitFormStart == 0) { TvdShowFormProp* prop = new TvdShowFormProp; prop->FormHeight = 100; prop->FormWidth = 500; FWaitFormStart = new TThreadShowForm(fmSplash, prop); } return FWaitFormStart; } //--------------------------------------------------------------------------- // TvdShowFormProp //--------------------------------------------------------------------------- __fastcall TvdShowFormProp::TvdShowFormProp() : TObject() { CreateSuspended = true; Napis = "Proszę czekać ..."; FormBGColor = TColor(0xFE7052); FormHeight = 150; FormWidth = 350; } //--------------------------------------------------------------------------- __fastcall TvdShowFormProp::~TvdShowFormProp() { } //--------------------------------------------------------------------------- __fastcall TThreadShowForm::TThreadShowForm(TComponent* Owner, TvdShowFormProp* _prop) : TThread(_prop->CreateSuspended), FOwner(Owner), FNapis(_prop->Napis), FColor(_prop->FormBGColor) { this->OnTerminate = onTerminate; FForm = new TForm(FOwner); FForm->BorderStyle = bsNone; FForm->Height = _prop->FormHeight; FForm->Width = _prop->FormWidth; FForm->Color = FColor; FForm->AlphaBlend = false; FLabel = new TLabel(FForm); FLabel->Parent = FForm; FLabel->Font->Color = clWhite; FLabel->Font->Style = TFontStyles() << fsBold; FLabel->Font->Name = "Tahoma"; FLabel->Font->Size = 10; FLabel->AutoSize = false; FLabel->Height = 50; FMemo = new TMemo(FForm); FMemo->Parent = FForm; FMemo->Font->Color = clWhite; FMemo->Font->Name = "Tahoma"; FMemo->Align = alClient; FMemo->Color = FColor; FMemo->BorderStyle = bsNone; FMemo->AlignWithMargins = true; FMemo->Margins->Left = 10; FMemo->Margins->Right = 10; FLabel->Caption = FNapis; FLabel->Align = alTop; FLabel->Alignment = taCenter; FLabel->Layout = tlCenter; FForm->Show(); FForm->Hide(); Application->ProcessMessages(); } //--------------------------------------------------------------------------- void __fastcall TThreadShowForm::doOpen(String _napis, bool _modal) { if(_napis.IsEmpty()) FLabel->Caption = FNapis = "Proszę czekać ..."; else FLabel->Caption = FNapis = _napis; FForm->Left = ( (((TForm*)FOwner)->Width - FForm->Width)/2 ) + ((TForm*)FOwner)->Left; FForm->Top = ( (((TForm*)FOwner)->Height - FForm->Height)/2 ) + ((TForm*)FOwner)->Top; FForm->AlphaBlendValue = 255; FForm->Tag = 1; if(_modal) FForm->ShowModal(); else FForm->Show(); FForm->Update(); Resume(); } //--------------------------------------------------------------------------- void __fastcall TThreadShowForm::Open(String _napis) { doOpen(_napis, false); } //--------------------------------------------------------------------------- void __fastcall TThreadShowForm::Open(TvdStrings* _list, String _napis) { FMemo->Lines->Text = _list->Text; doOpen(_napis, false); } //--------------------------------------------------------------------------- void __fastcall TThreadShowForm::Show(String _text, bool _oneLine) { Screen->Cursor = crHourGlass; if(_oneLine) FForm->Height = 90; FMemo->Lines->Text = _text; doOpen("", false); } //--------------------------------------------------------------------------- void __fastcall TThreadShowForm::OpenModal(String _napis) { doOpen(_napis, true); } //--------------------------------------------------------------------------- void __fastcall TThreadShowForm::Close() { FMemo->Lines->Clear(); Screen->Cursor = crDefault; FForm->Hide(); Suspend(); } //--------------------------------------------------------------------------- void __fastcall TThreadShowForm::onTerminate(System::TObject* Sender) { FForm->Release(); } //--------------------------------------------------------------------------- void __fastcall TThreadShowForm::Delay(int _milisek) { DWord iStart, iStop; int i; iStart = GetTickCount(); do { iStop = GetTickCount(); Application->ProcessMessages(); Sleep(1); i = iStop - iStart; } while (i <= _milisek); } //--------------------------------------------------------------------------- void __fastcall TThreadShowForm::doInExecute() { // FMemo->Update(); } //--------------------------------------------------------------------------- void __fastcall TThreadShowForm::Execute() { FreeOnTerminate = true; while(!Terminated || !Application->Terminated) { Synchronize(TThreadMethod(&doInExecute)); if(FForm->Tag == 0) FForm->AlphaBlendValue += 5; else FForm->AlphaBlendValue -= 5; if(FForm->AlphaBlendValue == 255) FForm->Tag = 1; if(FForm->AlphaBlendValue == 150) FForm->Tag = 0; Delay(50); } } //--------------------------------------------------------------------------- // watek 2 //--------------------------------------------------------------------------- __fastcall TThreadDataSet::TThreadDataSet() : TThread(true) { FreeOnTerminate = true; // OnTerminate = onTerminate; Resume(); } //--------------------------------------------------------------------------- void __fastcall TThreadDataSet::onTerminate(System::TObject* Sender) { // } //--------------------------------------------------------------------------- void __fastcall TThreadDataSet::Delay(int _milisek) { DWord iStart, iStop; int i; iStart = GetTickCount(); do { iStop = GetTickCount(); Application->ProcessMessages(); Sleep(1); i = iStop - iStart; } while (i <= _milisek); } //--------------------------------------------------------------------------- void __fastcall TThreadDataSet::doInExecute() { TMsg msg; if(GetMessage(&msg,0,0,0)) { switch(msg.message) { case WM_OPENDATASET: WMOpen(&msg); break; case WM_EXECUTESQL: WMExec(&msg); break; case WM_CLOSEDATASET: WMClose(&msg); break; } } } //--------------------------------------------------------------------------- void __fastcall TThreadDataSet::Execute() { TMsg msg; PeekMessage(&msg, 0, WM_USER, WM_USER, PM_NOREMOVE); while(!Terminated || !Application->Terminated) { doInExecute(); } } //--------------------------------------------------------------------------- void __fastcall TThreadDataSet::processStart() { // if(FcxGridDBTableView) // { // FcxGridDBTableView->DataController->UpdateItems(false); // } // FDataSet->DisableControls(); // FDataSet->EnableControls(); } //--------------------------------------------------------------------------- void __fastcall TThreadDataSet::processEnd() { if(FcxGridDBTableView) { FDataSet->DisableControls(); FcxGridDBTableView->DataController->DataSource->DataSet = FDataSet; FDataSet->EnableControls(); } } //--------------------------------------------------------------------------- void __fastcall TThreadDataSet::WMOpen(TMsg* _msg) { try { if(_msg->lParam) { FcxGridDBTableView = (TcxGridDBTableView*)_msg->lParam; FDataSet = FcxGridDBTableView->DataController->DataSource->DataSet; FcxGridDBTableView->DataController->DataSource->DataSet = NULL; } else FDataSet = (TDataSet*)_msg->wParam; FDataSet->Open(); } catch(Exception &E) { ShowMessage(E.Message); } Synchronize(TThreadMethod(&processEnd)); } //--------------------------------------------------------------------------- void __fastcall TThreadDataSet::WMExec(TMsg* _msg) { } //--------------------------------------------------------------------------- void __fastcall TThreadDataSet::WMClose(TMsg* _msg) { if(_msg->lParam) { FcxGridDBTableView = (TcxGridDBTableView*)_msg->lParam; FDataSet = FcxGridDBTableView->DataController->DataSource->DataSet; } else FDataSet = (TDataSet*)_msg->wParam; try { FDataSet->Close(); } catch(Exception &E) { ShowMessage(E.Message); } // Queue(TThreadMethod(&processStart)); Synchronize(TThreadMethod(&processStart)); } //--------------------------------------------------------------------------- void __fastcall TThreadDataSet::Open(TDataSet* _ds) { PostThreadMessage(ThreadID, WM_OPENDATASET, Integer(_ds), 0); } //--------------------------------------------------------------------------- void __fastcall TThreadDataSet::Open(TcxGridDBTableView* _grid) { PostThreadMessage(ThreadID, WM_OPENDATASET, Integer(_grid->DataController->DataSet), Integer(_grid)); } //--------------------------------------------------------------------------- void __fastcall TThreadDataSet::Exec(TDataSet* _ds) { PostThreadMessage(ThreadID, WM_EXECUTESQL, Integer(_ds), 0); } //--------------------------------------------------------------------------- void __fastcall TThreadDataSet::Close(TDataSet* _ds) { PostThreadMessage(ThreadID, WM_CLOSEDATASET, Integer(_ds), 0); } //--------------------------------------------------------------------------- void __fastcall TThreadDataSet::Close(TcxGridDBTableView* _grid) { PostThreadMessage(ThreadID, WM_CLOSEDATASET, Integer(_grid->DataController->DataSet), Integer(_grid)); } //--------------------------------------------------------------------------- /* void __fastcall TForm1::FormShow(TObject *Sender) { TMyThread *thrd = new TMyThread(); thrd->OnTerminate = &ThreadTerminated; thrd->Resume(); } void __fastcall TForm1::ThreadTerminated(TObject *Sender) { // thread is finished with its work ... } */ //--------------------------------------------------------------------------- __fastcall TdmData::TdmData(TComponent* Owner) : TDataModule(Owner), FColorList(new TStringList), ParamExt(new TvdStrings), FNazwaColorsTmp(new TvdStrings), FRodzaje(new TvdStrings), FModele(new TvdStrings), FKolory(new TvdStrings), FRodzajeKody(new TvdStrings), FModeleKody(new TvdStrings), FTempy(new TvdStrings) { ParamIni = new TvdStrings(GetCurrentDir() + "//XLAdmin.conf"); if(FileExists(ParamIni->IniFile)) { ParamIni->LoadIniToCDS(); ParamIni->I["Conf::ErrCode"] = 1; SetDbXL(); dbXL->Connected = false; if(ParamIni->Is["XLAdmin::DbHostName"] && ParamIni->Is["XLAdmin::DbPath"]) { dbXL->DatabaseName = ParamIni->S["XLAdmin::DbHostName"] + ":" + ParamIni->S["XLAdmin::DbPath"]; vdSQL()->Register(dbXL); } else ParamIni->I["Conf::ErrCode"] = -5; //brak konfiguracji lokalnej } else ParamIni->I["Conf::ErrCode"] = -3; //brak konfiguracji //zmienne wbudowane ParamIni->S["Conf::AppPath"] = ExcludeTrailingPathDelimiter(ExtractFilePath(ExcludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))))); ParamIni->S["Conf::UpdatePath"] = ParamIni->S["Conf::AppPath"] + "\\Update"; ParamIni->B["Conf::UpdateDostepny"] = false; FColorList->Add("Czarny=Black"); FColorList->Add("Biały=White"); FColorList->Add("Niebieski=Royal"); FColorList->Add("Granatowy=Navy"); FColorList->Add("Błękitny=SkyBlue"); FColorList->Add("Czerwony=Red"); FColorList->Add("Pomarańczowy=Orange"); FColorList->Add("Żółty=Yellow"); FColorList->Add("Zielony=Green"); FColorList->Add("Różowy=Pink"); FColorList->Add("Bordowy=Maroon"); FColorList->Add("Szary=Grey"); ParamExt->Str["PZSQLText"] = dsxPZ->CommandText; // ParamExt->Str["dsxDocSQLText"] = dsxDoc->CommandText; // ParamExt->Str["dsxDocItemSQLText"] = dsxDocItem->CommandText; // ParamExt->Str["dsxKontrahenciSQLText"] = dsxKontrahenci->CommandText; } //--------------------------------------------------------------------------- void __fastcall TdmData::Delay(int _milisek) { DWord iStart, iStop; int i; iStart = GetTickCount(); do { iStop = GetTickCount(); Application->ProcessMessages(); Sleep(1); i = iStop - iStart; } while (i <= _milisek); } //--------------------------------------------------------------------------- void __fastcall TdmData::SetDbXL() { dmData->ZINA->Close(); dmData->ZINA_OLD->Close(); if(ParamIni->Is["Opcje::Uruchom bazę testową"] && ParamIni->B["Opcje::Uruchom bazę testową"]) { if( ParamIni->Is["Testowa baza danych XL::drivername"] && ParamIni->Is["Testowa baza danych XL::HostName"] && ParamIni->Is["Testowa baza danych XL::Database"] && ParamIni->Is["Testowa baza danych XL::User_Name"] && ParamIni->Is["Testowa baza danych XL::Password"] ) { dmData->ZINA->Params->Assign(dmData->ParamIni->GetIniSection("Testowa baza danych XL")); dmData->ZINA_OLD->Params->Assign(dmData->ParamIni->GetIniSection("Testowa baza danych XL")); dmData->ZINA_OLD->Params->Values["Database"] = dmData->ParamIni->GetIniSection("XL bazy danych")->Values["Database1"]; } else ParamIni->I["Conf::ErrCode"] = -102; //brak konfiguracji testowej XL } else { if( ParamIni->Is["Produkcyjna baza danych XL::drivername"] && ParamIni->Is["Produkcyjna baza danych XL::HostName"] && ParamIni->Is["Produkcyjna baza danych XL::Database"] && ParamIni->Is["Produkcyjna baza danych XL::User_Name"] && ParamIni->Is["Produkcyjna baza danych XL::Password"] ) { dmData->ZINA->Params->Assign(dmData->ParamIni->GetIniSection("Produkcyjna baza danych XL")); dmData->ZINA_OLD->Params->Assign(dmData->ParamIni->GetIniSection("Produkcyjna baza danych XL")); dmData->ZINA_OLD->Params->Values["Database"] = dmData->ParamIni->GetIniSection("XL bazy danych")->Values["Database1"]; } else ParamIni->I["Conf::ErrCode"] = -101; //brak konfiguracji produkcyjnej XL } vdMSQL()->Register(dmData->ZINA); vdMSQL2015()->Register(dmData->ZINA_OLD); } //--------------------------------------------------------------------------- bool __fastcall TdmData::DBValidation() { String s("9999999"); if(vdSQL()->Q("select case when max(xlp_tran_numer) is null then 0 else max(xlp_tran_numer) end as max_numer from xl_prowizja")) s = vdSQL()->F["max_numer"]->AsString; } //--------------------------------------------------------------------------- int __fastcall TdmData::vdBinToInt(String _bin) { int v = 0; for (int i = 32; i > 0; i--) { if(_bin[i] == '1') v += Power(2, (double)32-i); } return v; } //--------------------------------------------------------------------------- String __fastcall TdmData::vdIntToBin(unsigned int _val) { String BinStr; BinStr.SetLength(32); for (int i = 1; i <= 32; i++) { if (((_val << (i-1)) >> (32-1)) == 0) BinStr [i] = '0'; else BinStr [i] = '1'; } return BinStr; } //--------------------------------------------------------------------------- String __fastcall TdmData::ConvertUserCrcToBinary(String _user, String _crc) { CLicencja::TvdKrypto *FKrypto = new CLicencja::TvdKrypto(CLicencja::ktYes, CLicencja::kcCrc, CLicencja::khHexChar); FKrypto->KryptoValue = _crc; String ret("00000000000000000000000000000000"); String b = FKrypto->KryptoValue; String a = FKrypto->Value.SubString(1,4); if(FKrypto->Value.SubString(1,4) == _user) ret = vdIntToBin(StrToInt("$"+FKrypto->Value.SubString(5, FKrypto->Value.Length()-4))); return ret; } //--------------------------------------------------------------------------- String __fastcall TdmData::ConvertBinaryToUserCrc(String _user, String _binary) { CLicencja::TvdKrypto *FKrypto = new CLicencja::TvdKrypto(CLicencja::ktYes, CLicencja::kcCrc, CLicencja::khHexChar); FKrypto->Value = _user + IntToHex(vdBinToInt(_binary),1); return FKrypto->KryptoValue; } //--------------------------------------------------------------------------- int __fastcall TdmData::CheckLicencja() { try { dbXL->Connected = true; } catch(...) { ParamIni->I["Conf::ErrCode"] = -4; } try { ZINA->Connected = true; ZINA_OLD->Connected = true; } catch(...) { if(ParamIni->I["Conf::ErrCode"] > -100) ParamIni->I["Conf::ErrCode"] = -100; } if(ParamIni->I["Conf::ErrCode"] != -4) { if(vdSQL()->Q("select ads_mutex, ads_mutex_user, ads_mutex_czas, ads_wersja from ad_system where ads_id=1")) { ParamExt->S["mutex_user"] = vdSQL()->F["ads_mutex_user"]->AsString; ParamExt->S["mutex_czas"] = vdSQL()->F["ads_mutex_czas"]->AsDateTime.FormatString("dd mmm yyyy hh:nn"); ParamIni->S["Conf::SrvVer"] = vdSQL()->F["ads_wersja"]->AsString; bool s = ParamIni->Is["Opcje::Synchronizacja"]; if(s) s = ParamIni->B["Opcje::Synchronizacja"]; else s = true; if(!dmData->ParamIni->B["@@BezMutexu"] && vdSQL()->F["ads_mutex"]->AsString > 0 && s) ParamIni->I["Conf::ErrCode"] = -9; else { TvdAppVersion* ver = new TvdAppVersion(ParamStr(0)); ParamIni->S["Conf::AppVer"] = ver->Value; if(!dmData->ParamIni->B["@@BezWersji"] ) { TvdAppVersion* srv_ver = new TvdAppVersion; srv_ver->Value = ParamIni->S["Conf::SrvVer"]; if(*ver < *srv_ver) { //jesli build programu mniejszy od build serwera to program uruchamia sie do aktualizacji. ParamIni->I["Conf::ErrCode"] = -103; } else { //sprawdzamy aktualizację na stronie TIdHTTP *httpDownloadUpdate = new TIdHTTP(0); TvdStrings* txt = new TvdStrings; txt->Text = httpDownloadUpdate->Get("http://xl.vindsoft.com/XLAdmin-update.txt"); delete httpDownloadUpdate; TvdAppVersion* new_ver = new TvdAppVersion; new_ver->Value = StrReplace(txt->Strings[0],">>>","").Trim(); //jesli zmienił sie build programu na większy to informujemy o nowej wersji i uruchamiamy program normalnie. if(*ver < *new_ver && ParamIni->B["XLAdmin::Poinformuj o aktualizacji"]) vdDialog()->Info("Dostępna jest nowa wersja programu - " + new_ver->Value + "\nProgram można zaktualizować."); } } } } if(ParamIni->I["Conf::ErrCode"] != -9) { int firma = 1; String licencja("?"); if(vdSQL()->Q("select adf_licencja, adf_crc from ad_firma where adf_id="+IntToStr(firma))) licencja = vdSQL()->F["adf_licencja"]->AsString; String aktywacja("?"); if(vdSQL()->Q("select ada_kod from ad_aktywacje where ada_firma="+IntToStr(firma))) aktywacja = vdSQL()->F["ada_kod"]->AsString; if(Licencja) delete Licencja; Licencja = new CLicencja::TvdLicencja(licencja, aktywacja); if(Licencja->LicencjaOk) { if(!Licencja->TypLicencji->CheckDaysToDeadLine(vdSQL()->ServerDateTime())) ParamIni->I["Conf::ErrCode"] = -1; else if((Licencja->TypLicencji->StanowiskaId + 1) < vdSQL()->Info->UserNames->Count) ParamIni->I["Conf::ErrCode"] = -2; else if(!dmData->ParamIni->B["@@BezHasla"]) { fmPass = new TfmPass(this); fmPass->leUser->Text = dmData->ParamIni->S["XLAdmin::User"]; if(fmPass->ShowModal() == mrOk) { dmData->ParamIni->S["Haslo"] = "?"; if(vdSQL()->Q("select adu_haslo from ad_users where adu_login='"+fmPass->leUser->Text+"'")) dmData->ParamIni->S["Haslo"] = vdSQL()->F["adu_haslo"]->AsString; CLicencja::TvdKrypto *FKrypto = new CLicencja::TvdKrypto(CLicencja::ktYes, CLicencja::kcCrc, CLicencja::khHexChar); FKrypto->Value = fmPass->lePassword->Text; //puste PBFLM if(FKrypto->KryptoValue != dmData->ParamIni->S["Haslo"]) ParamIni->I["Conf::ErrCode"] = -7; else dmData->ParamIni->S["XLAdmin::User"] = fmPass->leUser->Text; } else { ParamIni->I["Conf::ErrCode"] = -6; } fmPass->Release(); } } else ParamIni->I["Conf::ErrCode"] = 0; //brak aktywacji } } return ParamIni->I["Conf::ErrCode"]; } //--------------------------------------------------------------------------- String __fastcall TdmData::StanLicencji(int err) { String s("Licencja ważna!"); if(err == 0) s="Brak licencji!"; else if(err == -1) s="Licencja nieaktualna!"; else if(err == -2) s="Licencja stanowiskowa przekroczona!"; else if(err == -3) s="Brak konfiguracji!"; else if(err == -4) s="Nieporawna konfiguracja lokalna!"; else if(err == -5) s="Brak konfiguracji lokalnej!"; else if(err == -6) s="Użytkownik nie podał hasła!"; else if(err == -7) s="Niepoprawne hasło!"; else if(err == -8) //wyłączony przeniesiony do -103 s="Niepoprawna wersja programu!\nAktualizuj do wersji "+ParamIni->S["Conf::SrvVer"]+" na stronie http://xl.vindsoft.com"; else if(err == -9) s="Synchronizacja danych!\nInny użytkownik założył blokadę i synchronizuje dane.\nUruchom program za chwilę."; s+=" ("+ IntToStr(err) +")\nNie można uruchomić wersji produkcyjnej programu !"; return s; } //--------------------------------------------------------------------------- TDateTime __fastcall TdmData::ClarionDate(int _i) { TDateTime date = TDateTime("1800-12-28 00:00:00"); date = double(int(date)+_i); return date; } //--------------------------------------------------------------------------- TDateTime __fastcall TdmData::ClarionTime(int _i) { int clarion = _i; double seki = double(clarion)/86400; int days = int(clarion/86400); seki -= days; int miny = clarion - (days*86400); TDateTime date = TDateTime("1990-01-01 00:00:00"); date = double(int(date)+days) + seki; return date; } //--------------------------------------------------------------------------- String __fastcall TdmData::GetHeadTail(String _in, String _delimeter, String& _tail) { int p = _in.Pos(_delimeter); String head; if(p) { head = _in.SubString(1, p-1); _tail = _in.SubString(p+1, _in.Length()-p+1); } else { head = _in; _tail = ""; } return head; } //--------------------------------------------------------------------------- void __fastcall TdmData::DecodeNewCode(String _newCode, String& _type, String& _rod, String& _mod, String& _kol, String& _roz) { _type = _newCode[1]; _rod = _newCode.SubString(3,3); String tail = _newCode.SubString(7, _newCode.Length()-6); _mod = GetHeadTail(tail, "-", tail); _kol = GetHeadTail(tail, "-", tail); _roz = tail; } //--------------------------------------------------------------------------- void __fastcall TdmData::GetRodzajElement(String _in, String& _rodzaj) { String tail; _rodzaj = GetHeadTail(_in, " ", tail); if(_rodzaj == "Zina") _rodzaj = GetHeadTail(tail, " ", tail); int k = tail.UpperCase().Pos("KR "); if(k) { _rodzaj += " KR"; } else { k = tail.UpperCase().Pos("DR "); if(k) { _rodzaj += " DR"; } else { k = tail.UpperCase().Pos("BR "); if(k) { _rodzaj += " BR"; } } } } //--------------------------------------------------------------------------- void __fastcall TdmData::GetNameElements(String _in, String& _art, String& _mod, String& _kol, String& _roz) { String s(_in); _art = ""; _kol = ""; _roz = ""; _mod = ""; try { if(!s.IsEmpty() && s.Pos(" ")) { s = s.TrimRight(); String r,k,a; int j; //Rozmiar if(s[s.Length()] == ')') { j=1; for(int i = s.Length()-1; i >= 1; i--) { j++; if(s[i] == '(') break; r = String(s[i]) + r; } _roz = r; s = s.SubString(1, s.Length() - j).TrimRight(); _art = s; } //Kolor if(!isdigit(s[s.Length()]) && isalpha(s[s.Length()]) && islower(s[s.Length()])) { j=0; int l=0; String k_sub(""); for(int i = s.Length(); i >= 1; i--) { j++; if(s[i] == '/' || s[i] == '\\') { s[i] = '\\'; FNazwaColorsTmp->Str[IntToStr(++l)] = k_sub; k_sub = ""; } else if(s[i] == ' ') { FNazwaColorsTmp->Str[IntToStr(++l)] = k_sub; break; } else k_sub = String(s[i]) + k_sub; k = String(s[i]) + k; } _kol = k; s = s.SubString(1, s.Length() - j).TrimRight(); _art = s; } //Model if(isdigit(s[s.Length()]) || (isalpha(s[s.Length()]) && isupper(s[s.Length()])) || s[s.Length()] == '+') { j=0; String polskie_znaki("żźćńąśęłó"); for(int i = s.Length(); i >= 1; i--) { j++; if(s[i] == ']' || s[i] == ')' || (isalpha(s[i]) && islower(s[i])) || polskie_znaki.Pos(String(s[i]))) break; a = String(s[i]) + a; } _mod = a.Trim(); //usuwam EXT PRO PROX _mod = StrReplace(_mod, " EXTRA", "!@#$%$#@"); _mod = StrReplace(_mod, " EXT", ""); _mod = StrReplace(_mod, "!@#$%$#@", " EXTRA"); _mod = StrReplace(_mod, " PROX", ""); //wazne zeby PROX przed PRO bo PRO zawiera się w PROX if(_in.Pos(" Piłka ") < 1)_mod = StrReplace(_mod, " PRO", ""); _mod = StrReplace(_mod, "3/4 ", ""); _mod = StrReplace(_mod, "3\\4 ", ""); _mod = _mod.Trim(); //sprawdzam czy na początku modelu występuje Kr Dr Br int k = _mod.Pos("KR "); if(k) { _mod = _mod.SubString(4, _mod.Length()); _art = s.SubString(1, s.Length() - _mod.Length()-1).TrimRight(); } else { k = _mod.Pos("DR "); if(k) { _mod = _mod.SubString(4, _mod.Length()); _art = s.SubString(1, s.Length() - _mod.Length()-1).TrimRight(); } else { k = _mod.Pos("BR "); if(k) { _mod = _mod.SubString(4, _mod.Length()); _art = s.SubString(1, s.Length() - _mod.Length()-1).TrimRight(); } else _art = s; } } } if(_art.IsEmpty()) _art = s; } } catch(...) { throw Exception("--->>>\n"+_in+"\n<<<---"); } } //--------------------------------------------------------------------------- String __fastcall TdmData::ChangeToAngColour(String _kolor) { String k(_kolor); for(int i = 0; i < FColorList->Count; i++) { k = StringReplace(k, FColorList->Names[i], FColorList->Values[FColorList->Names[i]], TReplaceFlags() << rfReplaceAll); } return k; } //--------------------------------------------------------------------------- void __fastcall TdmData::SaveToSemiCSV(TDataSet* _ds, String _fileName, bool _withHeader) { SaveToCSV(_ds, ";", 1, _ds->Fields->Count+1, _fileName, _withHeader); } //--------------------------------------------------------------------------- void __fastcall TdmData::LoadFromCSV(TClientDataSet* _ds, String _delimiter, bool _withHeader) { if(OpenTextFileDialog1->Execute(0)) { if(_ds->Active) _ds->Close(); _ds->CreateDataSet(); TStringList* List = new TStringList; List->LoadFromFile(OpenTextFileDialog1->FileName); String S; for(int i = 0; i < List->Count; i++) { _ds->Append(); S = List->Strings[i]; for(int j = 0; j < _ds->FieldCount ; j++) { if(_ds->Fields->FieldByName(_ds->Fields->Fields[j]->FieldName)->FieldKind == fkData) _ds->Fields->FieldByName(_ds->Fields->Fields[j]->FieldName)->AsString = dmData->GetHeadTail(S,_delimiter, S); } _ds->Post(); } } } //--------------------------------------------------------------------------- void __fastcall TdmData::SaveToCSV(TDataSet* _ds, String _delimiter, int _idStart, int _idEnd, String _fileName, bool _withHeader) { TStringList* List = new TStringList; String S; try { if(_withHeader) { S = ""; for(int i = _idStart; i < _idEnd; i++) { S += _ds->Fields->FieldByNumber(i)->FieldName; if(i < _idEnd) S += _delimiter; } List->Add(S); } for(_ds->First(); !_ds->Eof; _ds->Next()) { S = ""; for(int i = _idStart; i < _idEnd; i++) { S += _ds->Fields->FieldByNumber(i)->AsString; if(i < _idEnd) S += _delimiter; } List->Add(S); } } __finally { List->SaveToFile(_fileName); delete List; } } //--------------------------------------------------------------------------- void __fastcall TdmData::SaveToCSV(TcxGridDBTableView* _ds, String _delimiter, int _idStart, int _idEnd, String _fileName, bool _withHeader) { TStringList* List = new TStringList; String S; int iPos; try { if(_withHeader) { S = ""; for(int i = _idStart; i <= _idEnd; i++) { S += _ds->DataController->DataSet->Fields->FieldByNumber(i+1)->FieldName; if(i < _idEnd) S += _delimiter; } List->Add(S); } for(int i = 0; i < _ds->DataController->FilteredRecordCount; i++) { iPos = _ds->DataController->FilteredRecordIndex[i]; S = ""; for(int i = _idStart; i <= _idEnd; i++) { S += VarToStr(_ds->DataController->Values[iPos][i]) + _delimiter; } List->Add(S); } } __finally { List->SaveToFile(_fileName); delete List; } } //--------------------------------------------------------------------------- String __fastcall TdmData::Lpad(int _i, int _count) { String qq = IntToStr(_i); return StringOfChar('0', _count - qq.Length()) + qq; } //--------------------------------------------------------------------------- String __fastcall TdmData::GTIN13(String _prefix, int _i) { String gtin13(_prefix+Lpad(_i, 12 - _prefix.Length())); int sum=0, mul=1; for(int i = 1; i <= gtin13.Length(); i++) { sum += String(gtin13[i]).ToInt() * mul; if(mul==1) mul = 3; else mul = 1; } int mod10 = (10 - (sum % 10)) % 10; return gtin13 + IntToStr(mod10); } //--------------------------------------------------------------------------- String __fastcall TdmData::transformToGTIN14(int _a, String _gtin13) { int sum=_a*3, mul=1; for(int i = 1; i < _gtin13.Length(); i++) { sum += String(_gtin13[i]).ToInt() * mul; if(mul==1) mul = 3; else mul = 1; } int mod10 = (10 - (sum % 10)) % 10; return IntToStr(_a) + _gtin13.SubString(1,_gtin13.Length()-1) + IntToStr(mod10); } //--------------------------------------------------------------------------- String __fastcall TdmData::convertToFirstCharUpper(String _str) { TStringList* list = new TStringList; String s(_str); while (!s.IsEmpty())list->Add(dmData->GetHeadTail(s," ",s)); for(int i = 0; i < list->Count; i++) if(i==0) s = String(list->Strings[i][1]).UpperCase() + list->Strings[i].SubString(2,list->Strings[i].Length()-1).LowerCase(); else s += " " + String(list->Strings[i][1]).UpperCase() + list->Strings[i].SubString(2,list->Strings[i].Length()-1).LowerCase(); return s; } //--------------------------------------------------------------------------- void __fastcall TdmData::dsxBareCodeCalcFields(TDataSet *DataSet) { //Ean14 DataSet->FieldByName("Ean14")->AsString = transformToGTIN14(1, DataSet->FieldByName("Twr_Ean")->AsString); String art,mod,kol,roz,n=DataSet->FieldByName("Twr_Nazwa")->AsString; try { GetNameElements(n, art, mod, kol, roz); } catch(...) { } DataSet->FieldByName("Art")->AsString = mod; DataSet->FieldByName("Kolor")->AsString = kol; DataSet->FieldByName("Rozmiar")->AsString = roz; } //--------------------------------------------------------------------------- void __fastcall TdmData::dsxPZCalcFields(TDataSet *DataSet) { String art,mod,kol,roz,n=DataSet->FieldByName("Nazwa")->AsString; GetNameElements(n, art, mod, kol, roz); DataSet->FieldByName("Art")->AsString = art; DataSet->FieldByName("Kolor")->AsString = kol; DataSet->FieldByName("Rozmiar")->AsString = roz; } //--------------------------------------------------------------------------- void __fastcall TdmData::CopyToClientDS(TcxGridDBTableView* _grid, TClientDataSet* _ds) { if(_ds->Active) _ds->Close(); _ds->CreateDataSet(); int iPos; TField* f; try { for(int i = 0; i < _grid->DataController->FilteredRecordCount; i++) { iPos = _grid->DataController->FilteredRecordIndex[i]; _ds->Append(); for(int i = 0; i < _grid->DataController->ItemCount; i++) { f = _ds->FindField(_grid->DataController->GetItemFieldName(i)); if(f) _ds->FindField(_grid->DataController->GetItemFieldName(i))->Value = VarToStr(_grid->DataController->Values[iPos][i]); } _ds->Post(); } } __finally { } } //--------------------------------------------------------------------------- void __fastcall TdmData::dsxBilansCalcFields(TDataSet *DataSet) { String art,mod,kol,roz,rod,n=DataSet->FieldByName("Nazwa")->AsString; GetRodzajElement(n, rod); DataSet->FieldByName("Rodzaj")->AsString = rod; GetNameElements(n, art, mod, kol, roz); DataSet->FieldByName("Art")->AsString = art; DataSet->FieldByName("Kolor")->AsString = kol; DataSet->FieldByName("Model")->AsString = mod; } //--------------------------------------------------------------------------- void __fastcall TdmData::dsxMagDokCalcFields(TDataSet *DataSet) { DataSet->FieldByName("DataMod")->AsString = ClarionTime(DataSet->FieldByName("DataM")->AsInteger).FormatString("yyyy-mm-dd"); DataSet->FieldByName("CzasMod")->AsString = ClarionTime(DataSet->FieldByName("DataM")->AsInteger).FormatString("dd-mm-yyyy hh:nn:ss"); DataSet->FieldByName("DataWys")->AsString = ClarionDate(DataSet->FieldByName("DataW")->AsInteger).FormatString("yyyy-mm-dd"); DataSet->FieldByName("WagaMinut")->AsInteger = DataSet->FieldByName("WagaWM")->AsFloat * 3600; } //--------------------------------------------------------------------------- void __fastcall TdmData::dbXLAfterConnect(TObject *Sender) { dtrMagipTransactionRead->StartTransaction(); dtrMagipTransactionWrite->StartTransaction(); } //--------------------------------------------------------------------------- void __fastcall TdmData::LoadDocFromFB() { dsXLV_DOC_TO_COMPARE->Open(); } //--------------------------------------------------------------------------- void __fastcall TdmData::AktualizacjaDB() { // pobiramy crc usera i nazwe usera dmData->ParamIni->S["UserCrc"] = "AAAAA"; if(vdSQL()->Q("select ADU_CRC, ADU_NAZWA from ad_users where ADU_LOGIN ='" + dmData->ParamIni->S["XLAdmin::User"] + "'")) { dmData->ParamIni->S["UserCrc"] = vdSQL()->F["ADU_CRC"]->AsString; dmData->ParamIni->S["UserName"] = vdSQL()->F["ADU_NAZWA"]->AsString; } //określamy uprawnienia dmData->ParamIni->S["Permit"] = dmData->ConvertUserCrcToBinary(dmData->ParamIni->S["XLAdmin::User"], dmData->ParamIni->S["UserCrc"]); if(ParamIni->I["Conf::ErrCode"] > -100) //kody mniejsze niż -100 pozwalaja uruchomic program ale bez bazy XL - należy włączyc silniejsze uprawnienia { //synchronizacja danych bool s = ParamIni->Is["Opcje::Synchronizacja"]; if(s) s = ParamIni->B["Opcje::Synchronizacja"]; else s = false; if(s) { //1.pobieramy najstarszą datę rozliczenia dla niekorekt oraz datę wystawienia dla korekt ParamExt->I["Last_Data_R"] = 999999; ParamExt->I["Now_Data_R"] = 999999; if(vdSQL()->Q("select case when max(xld_doc_data_w_clarion) is null then 0 else max(xld_doc_data_w_clarion) end as xld_doc_data_w_clarion, case when max(xld_doc_data_r_clarion) is null then 0 else max(xld_doc_data_r_clarion) end as xld_doc_data_r_clarion from xl_doc")) { ParamExt->I["Last_Data_R"] = vdSQL()->F["xld_doc_data_r_clarion"]->AsInteger; } if(vdSQL()->Q("select kod from xl_date_clarion('"+Now().FormatString("yyyy-mm-dd")+"')")) { ParamExt->I["Now_Data_R"] = vdSQL()->F["kod"]->AsInteger; } dsxDocCount->Close(); dsxDocCount->ParamByName("datar1")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDocCount->ParamByName("datar2")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDocCount->ParamByName("datar3")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDocCount->ParamByName("datar4")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDocCount->ParamByName("datan1")->AsInteger = ParamExt->I["Now_Data_R"]; dsxDocCount->ParamByName("datan2")->AsInteger = ParamExt->I["Now_Data_R"]; dsxDocCount->Open(); //tworzymy tablice porownan // vdWaitFormStart()->Open("Porównanie danych ..."); // vdWaitFormStart()->Memo->Lines->Clear(); // vdWaitFormStart()->Memo->Lines->Add("Dokumenty zmienione w XL ..."); // LoadDocFromFB(); // vdWaitFormStart()->Close(); } } else { //zmieniamy na takie uprawnienia aby wyłączyc potrzeby komunikacji z XL. if(ParamIni->I["Conf::ErrCode"] == -100) CClasses::vdDialog()->Warning("Niepoprawna konfiguracja XL! ("+ParamIni->S["Conf::ErrCode"]+")\nProgram zostanie uruchomiony z ograniczoną funkcjonalnością."); else if(ParamIni->I["Conf::ErrCode"] == -101) CClasses::vdDialog()->Warning("Brak konfiguracji produkcyjnej XL! ("+ParamIni->S["Conf::ErrCode"]+")\nProgram zostanie uruchomiony z ograniczoną funkcjonalnością."); else if(ParamIni->I["Conf::ErrCode"] == -102) CClasses::vdDialog()->Warning("Brak konfiguracji testowej XL! ("+ParamIni->S["Conf::ErrCode"]+")\nProgram zostanie uruchomiony z ograniczoną funkcjonalnością."); else if(ParamIni->I["Conf::ErrCode"] == -103) CClasses::vdDialog()->Warning("Należy przeprowadzić aktualizację programu! ("+ParamIni->S["Conf::ErrCode"]+")\nProgram zostanie uruchomiony z ograniczoną funkcjonalnością."); dmData->ParamIni->S["Permit"] = "00000000000000000000000000000000"; } } //--------------------------------------------------------------------------- void __fastcall TdmData::dsxDocCountAfterOpen(TDataSet *DataSet) { if(dsxDocCount->FieldByName("COLUMN1")->AsInteger) { String komunikat; komunikat = "Baza danych ["+ParamIni->S["XLAdmin::DbHostName"]+"] nieaktualna.\nOstatnia synchronizacja danych : " + ParamExt->S["mutex_czas"] + " [ " + ParamExt->S["mutex_user"] + " ]"; komunikat += "\n\nCzy chcesz zaktualizować bazę danych ?"; if(vdDialog()->QuestionWar(komunikat)) { vdSQL()->Q("UPDATE AD_SYSTEM SET ADS_MUTEX_USER = '"+ dmData->ParamIni->S["XLAdmin::User"] +"', ADS_MUTEX_CZAS = '"+Now().FormatString("mm-dd-yyyy hh:nn")+"', ADS_MUTEX = 1 WHERE (ADS_ID = 1)"); vdWaitFormStart()->Open("Trwa aktualizacja danych ..."); vdWaitFormStart()->Memo->Lines->Clear(); vdWaitFormStart()->Memo->Lines->Add("Dokumenty ["+dsxDocCount->FieldByName("COLUMN1")->AsString+"] ..."); dsxDoc->Close(); dsxDocItem->Close(); dsxKontrahenci->Close(); dsxDoc->ParamByName("datar1")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDoc->ParamByName("datar2")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDoc->ParamByName("datar3")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDoc->ParamByName("datar4")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDoc->ParamByName("datan1")->AsInteger = ParamExt->I["Now_Data_R"]; dsxDoc->ParamByName("datan2")->AsInteger = ParamExt->I["Now_Data_R"]; dsxDocItem->ParamByName("datar1")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDocItem->ParamByName("datar2")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDocItem->ParamByName("datar3")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDocItem->ParamByName("datar4")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDocItem->ParamByName("datan1")->AsInteger = ParamExt->I["Now_Data_R"]; dsxDocItem->ParamByName("datan2")->AsInteger = ParamExt->I["Now_Data_R"]; ParamExt->I["last_gid_numer"] = 999999; if(vdSQL()->Q("SELECT max(XLK_NUMER) as last_gid_numer FROM XL_KONTRAHENT")) ParamExt->I["last_gid_numer"] = vdSQL()->F["last_gid_numer"]->AsInteger; dsxKontrahenci->ParamByName("last_gid_kontrahent")->AsInteger = ParamExt->I["last_gid_numer"]; //pobieramy ilosci dsxDocItemCount->Close(); dsxDocItemCount->ParamByName("datar1")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDocItemCount->ParamByName("datar2")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDocItemCount->ParamByName("datar3")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDocItemCount->ParamByName("datar4")->AsInteger = ParamExt->I["Last_Data_R"]; dsxDocItemCount->ParamByName("datan1")->AsInteger = ParamExt->I["Now_Data_R"]; dsxDocItemCount->ParamByName("datan2")->AsInteger = ParamExt->I["Now_Data_R"]; dsxDocItemCount->Open(); dsxKontrahenciCount->Close(); dsxKontrahenciCount->ParamByName("last_gid_kontrahent")->AsInteger = ParamExt->I["last_gid_numer"]; dsxKontrahenciCount->Open(); vdWaitFormStart()->Memo->Lines->Add("Pozycje dokumentów ["+dsxDocItemCount->FieldByName("COLUMN1")->AsString+"] ..."); vdWaitFormStart()->Memo->Lines->Add("Kontrahenci ["+dsxKontrahenciCount->FieldByName("COLUMN1")->AsString+"] ..."); dsxDoc->Open(); dsxDocItem->Open(); dsxKontrahenci->Open(); //zapisujemy informacje o aktualizacji vdSQL()->Q("UPDATE AD_SYSTEM SET ADS_MUTEX_USER = '"+ dmData->ParamIni->S["XLAdmin::User"] +"', ADS_MUTEX_CZAS = '"+Now().FormatString("mm-dd-yyyy hh:nn")+"', ADS_MUTEX = 0 WHERE (ADS_ID = 1)"); vdWaitFormStart()->Close(); vdDialog()->Info("Aktualizacja bazy danych przebiegła prawidłowo."); } } } //--------------------------------------------------------------------------- void __fastcall TdmData::dsxKontrahenciAfterOpen(TDataSet *DataSet) { ParamExt->Bool["dsxKontrahenciOpened"] = true; if(!dsXL_Kontrahenci->Transaction->Active) dsXL_Kontrahenci->Transaction->StartTransaction(); dsXL_Kontrahenci->Open(); } //--------------------------------------------------------------------------- void __fastcall TdmData::dsXL_KontrahenciAfterOpen(TDataSet *DataSet) { if(ParamExt->Bool["dsxKontrahenciOpened"]) { int i = 0; dsXL_Kontrahenci->DisableControls(); TLocateOptions Opts; Opts.Clear(); Variant locvalues[1]; for(dsxKontrahenci->First(); !dsxKontrahenci->Eof; dsxKontrahenci->Next(), i++) { locvalues[0] = dsxKontrahenci->FieldByName("Knt_GIDNumer")->Value; // if(!dsXL_Kontrahenci->Locate("XLK_NUMER", VarArrayOf(locvalues, 0), Opts)) // { dsXL_Kontrahenci->Append(); dsXL_Kontrahenci->FieldByName("XLK_NUMER")->Value = locvalues[0]; dsXL_Kontrahenci->FieldByName("XLK_AKRONIM")->Value = dsxKontrahenci->FieldByName("Knt_Akronim")->Value; dsXL_Kontrahenci->FieldByName("XLK_NAZWA")->Value = dsxKontrahenci->FieldByName("Knt_Nazwa")->Value; dsXL_Kontrahenci->FieldByName("XLK_KODP")->Value = dsxKontrahenci->FieldByName("Knt_KodP")->Value; dsXL_Kontrahenci->FieldByName("XLK_MIASTO")->Value = dsxKontrahenci->FieldByName("Knt_Miasto")->Value; dsXL_Kontrahenci->FieldByName("XLK_ULICA")->Value = dsxKontrahenci->FieldByName("Knt_Ulica")->Value; dsXL_Kontrahenci->FieldByName("XLK_NIP")->Value = dsxKontrahenci->FieldByName("Knt_Nip")->Value; dsXL_Kontrahenci->FieldByName("XLK_RABAT")->Value = dsxKontrahenci->FieldByName("Knt_Rabat")->Value; dsXL_Kontrahenci->FieldByName("XLK_AKWIZYTOR")->Value = dsxKontrahenci->FieldByName("Knt_Akwizytor")->Value; dsXL_Kontrahenci->Post(); if(i%100==0) { vdWaitFormStart()->Memo->Lines->Strings[2] = "Kontrahenci ["+dsxKontrahenciCount->FieldByName("COLUMN1")->AsString+"] ... " + IntToStr(i); Application->ProcessMessages(); } // } } dsXL_Kontrahenci->Transaction->Commit(); dsXL_Kontrahenci->Close(); dsxKontrahenci->Close(); ParamExt->Bool["dsxKontrahenciOpened"] = false; vdWaitFormStart()->Memo->Lines->Strings[2] = "Kontrahenci ["+dsxKontrahenciCount->FieldByName("COLUMN1")->AsString+"] Ok "; Application->ProcessMessages(); dsXL_Kontrahenci->EnableControls(); } } //--------------------------------------------------------------------------- void __fastcall TdmData::dsxCeny1CalcFields(TDataSet *DataSet) { if(DataSet->FieldByName("Stan")->AsFloat != 0) DataSet->FieldByName("CenaZNetto")->AsCurrency = DataSet->FieldByName("WartoscNetto")->AsCurrency / DataSet->FieldByName("Stan")->AsFloat; else DataSet->FieldByName("CenaZNetto")->AsCurrency = 0; } //--------------------------------------------------------------------------- void __fastcall TdmData::dsxDocAfterOpen(TDataSet *DataSet) { ParamExt->Bool["dsxDocOpened"] = true; if(!dsXL_Doc->Transaction->Active) dsXL_Doc->Transaction->StartTransaction(); dsXL_Doc->Open(); } //--------------------------------------------------------------------------- void __fastcall TdmData::dsXL_DocAfterOpen(TDataSet *DataSet) { if(ParamExt->Bool["dsxDocOpened"]) { int i = 0; dsXL_Doc->DisableControls(); for(dsxDoc->First(); !dsxDoc->Eof; dsxDoc->Next(), i++) { dsXL_Doc->Append(); for(int j=0; j < dsxDoc->FieldCount; j++) { dsXL_Doc->FieldByName("XLD_"+dsxDoc->Fields->Fields[j]->FieldName)->Value = dsxDoc->Fields->Fields[j]->Value; } dsXL_Doc->Post(); if(i%100==0) { vdWaitFormStart()->Memo->Lines->Strings[0] = "Dokumenty ["+dsxDocCount->FieldByName("COLUMN1")->AsString+"] ... " + IntToStr(i); Application->ProcessMessages(); } } dsXL_Doc->Close(); dsxDoc->Close(); ParamExt->Bool["dsxDocOpened"] = false; vdWaitFormStart()->Memo->Lines->Strings[0] = "Dokumenty ["+dsxDocCount->FieldByName("COLUMN1")->AsString+"] ... Finalizacja"; Application->ProcessMessages(); spFillProwizjaDoc->ExecProc(); vdWaitFormStart()->Memo->Lines->Strings[0] = "Dokumenty ["+dsxDocCount->FieldByName("COLUMN1")->AsString+"] Ok"; dsXL_Doc->Transaction->Commit(); Application->ProcessMessages(); dsXL_Doc->EnableControls(); } } //--------------------------------------------------------------------------- void __fastcall TdmData::dsxDocItemAfterOpen(TDataSet *DataSet) { ParamExt->Bool["dsxDocItemOpened"] = true; if(!dsXL_Doc_Item->Transaction->Active) dsXL_Doc_Item->Transaction->StartTransaction(); dsXL_Doc_Item->Open(); } //--------------------------------------------------------------------------- void __fastcall TdmData::dsXL_Doc_ItemAfterOpen(TDataSet *DataSet) { if(ParamExt->Bool["dsxDocItemOpened"]) { int i = 0; dsXL_Doc_Item->DisableControls(); for(dsxDocItem->First(); !dsxDocItem->Eof; dsxDocItem->Next(), i++) { dsXL_Doc_Item->Append(); for(int j=0; j < dsxDocItem->FieldCount; j++) { dsXL_Doc_Item->FieldByName("XLI_"+dsxDocItem->Fields->Fields[j]->FieldName)->Value = dsxDocItem->Fields->Fields[j]->Value; } dsXL_Doc_Item->Post(); if(i%100==0) { vdWaitFormStart()->Memo->Lines->Strings[1] = "Pozycje dokumentów ["+dsxDocItemCount->FieldByName("COLUMN1")->AsString+"] ... " + IntToStr(i); Application->ProcessMessages(); } } dsXL_Doc_Item->Transaction->Commit(); dsXL_Doc_Item->Close(); dsxDocItem->Close(); ParamExt->Bool["dsxDocItemOpened"] = false; vdWaitFormStart()->Memo->Lines->Strings[1] = "Pozycje dokumentów ["+dsxDocItemCount->FieldByName("COLUMN1")->AsString+"] Ok"; Application->ProcessMessages(); dsXL_Doc_Item->EnableControls(); } } //--------------------------------------------------------------------------- void __fastcall TdmData::dsXLV_DOC_TO_COMPAREAfterOpen(TDataSet *DataSet) { String ins_prefix("INSERT INTO ##FBDOCS (xld_doc_id,xld_doc_numer,xld_doc_typ,xld_doc_data_r,xld_doc_data_r_clarion,xld_doc_wartosc_n,xld_child_id,xld_child_numer,xld_child_wartosc_n) VALUES ("); String tmp; XLQuery->SQL->Clear(); XLQuery->SQL->Add("CREATE TABLE ##FBDOCS (xld_doc_id int,xld_doc_numer varchar(50),xld_doc_typ int,xld_doc_data_r date,xld_doc_data_r_clarion int,xld_doc_wartosc_n numeric(18,2),xld_child_id int,xld_child_numer varchar(50),xld_child_wartosc_n numeric(18,2));"); XLQuery->ExecSQL(true); XLQuery->SQL->Clear(); XLQuery->SQL->Add("CREATE INDEX i1 ON ##FBDOCS (xld_child_id);"); XLQuery->ExecSQL(true); for(DataSet->First(); !DataSet->Eof; DataSet->Next()) { XLQuery->SQL->Clear(); XLQuery->SQL->Add(ins_prefix); XLQuery->SQL->Add(DataSet->FieldByName("xld_doc_id")->AsString+","); XLQuery->SQL->Add("'"+DataSet->FieldByName("xld_doc_numer")->AsString+"',"); XLQuery->SQL->Add(DataSet->FieldByName("xld_doc_typ")->AsString+","); XLQuery->SQL->Add("'"+DataSet->FieldByName("xld_doc_data_r")->AsDateTime.FormatString("yyyy-mm-dd")+"',"); XLQuery->SQL->Add(DataSet->FieldByName("xld_doc_data_r_clarion")->AsString+","); tmp = DataSet->FieldByName("xld_doc_wartosc_n")->AsString; XLQuery->SQL->Add(StrReplace(tmp, ",", ".")+","); XLQuery->SQL->Add(DataSet->FieldByName("xld_child_id")->AsString+","); XLQuery->SQL->Add("'"+DataSet->FieldByName("xld_child_numer")->AsString+"',"); tmp = DataSet->FieldByName("xld_child_wartosc_n")->AsString; XLQuery->SQL->Add(StrReplace(tmp, ",", ".")); XLQuery->SQL->Add(");"); XLQuery->ExecSQL(true); } /* XLQuery->SQL->Clear(); XLQuery->SQL->Add("select"); XLQuery->SQL->Add("d.xld_doc_data_r "); XLQuery->SQL->Add(",d.xld_doc_numer"); XLQuery->SQL->Add(",d.xld_doc_wartosc_n"); XLQuery->SQL->Add(",case when s.TrN_NettoR is null then 0 else s.TrN_NettoR end as xl_doc_wartosc_n"); XLQuery->SQL->Add(",d.xld_child_numer"); XLQuery->SQL->Add(",d.xld_child_wartosc_n"); XLQuery->SQL->Add("from [tempdb].[dbo].##FBDOCS d left join "); XLQuery->SQL->Add("([t1].[CDN].TraNag t inner join [CDN].TraNag s on t.TrN_SpiNumer = s.TrN_GIDNumer)"); XLQuery->SQL->Add("on d.xld_child_id = t.TrN_GIDNumer"); XLQuery->SQL->Add("where xld_doc_typ in (2037,2045) and (s.TrN_NettoR is null or d.xld_doc_wartosc_n != s.TrN_NettoR)"); XLQuery->SQL->Add("union"); XLQuery->SQL->Add("select "); XLQuery->SQL->Add("d.xld_doc_data_r "); XLQuery->SQL->Add(",d.xld_doc_numer"); XLQuery->SQL->Add(",d.xld_doc_wartosc_n"); XLQuery->SQL->Add(",case when t.TrN_NettoR is null then 0 else t.TrN_NettoR end as xl_doc_wartosc_n"); XLQuery->SQL->Add(",d.xld_child_numer"); XLQuery->SQL->Add(",d.xld_child_wartosc_n"); XLQuery->SQL->Add("from [tempdb].[dbo].##FBDOCS d left join [CDN].TraNag t"); XLQuery->SQL->Add("on d.xld_child_id = t.TrN_GIDNumer"); XLQuery->SQL->Add("where xld_doc_typ in (2034,2042) and (t.TrN_NettoR is null or d.xld_doc_wartosc_n != t.TrN_NettoR)"); XLQuery->Open(); */ //ShowMessage(XLQuery->FieldByName("xld_doc_numer")->AsString); } //--------------------------------------------------------------------------- void __fastcall TdmData::dsxDocComparedAfterOpen(TDataSet *DataSet) { //ShowMessage(DataSet->RecordCount); } //--------------------------------------------------------------------------- void __fastcall TdmData::dsXLV_PROWIZJA_DOC_RAPORTCalcFields(TDataSet *DataSet) { DataSet->FieldByName("XLC_PROWIZJA_BRUTTO")->AsCurrency = DataSet->FieldByName("XLC_PROWIZJA_WARTOSC_N")->AsCurrency * 1.23; } //--------------------------------------------------------------------------- void __fastcall TdmData::dsxXL_TowaryCalcFields(TDataSet *DataSet) { String art,mod,kol,roz,rod,n=DataSet->FieldByName("Twr_Nazwa")->AsString; GetRodzajElement(n, rod); DataSet->FieldByName("Twr_RodzajNazwa")->AsString = rod; FNazwaColorsTmp->Clear(); GetNameElements(n, art, mod, kol, roz); DataSet->FieldByName("Twr_ModelNazwa")->AsString = mod; DataSet->FieldByName("Twr_KolorystykaNazwa")->AsString = kol; DataSet->FieldByName("Twr_RozmiarNazwa")->AsString = roz; switch(FNazwaColorsTmp->Count) { case 0: DataSet->FieldByName("Twr_Kolor1Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor2Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor3Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor4Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor3Kod")->AsString = ""; DataSet->FieldByName("Twr_Kolor4Kod")->AsString = ""; break; case 1: DataSet->FieldByName("Twr_Kolor1Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count)]; DataSet->FieldByName("Twr_Kolor2Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor3Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor4Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor3Kod")->AsString = ""; DataSet->FieldByName("Twr_Kolor4Kod")->AsString = ""; break; case 2: DataSet->FieldByName("Twr_Kolor1Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count)]; DataSet->FieldByName("Twr_Kolor2Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count-1)]; DataSet->FieldByName("Twr_Kolor3Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor4Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor3Kod")->AsString = ""; DataSet->FieldByName("Twr_Kolor4Kod")->AsString = ""; break; case 3: DataSet->FieldByName("Twr_Kolor1Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count)]; DataSet->FieldByName("Twr_Kolor2Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count-1)]; DataSet->FieldByName("Twr_Kolor3Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count-2)]; DataSet->FieldByName("Twr_Kolor4Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor3Kod")->AsString = DataSet->FieldByName("Twr_KolorystykaKod")->AsString.SubString(5,2); DataSet->FieldByName("Twr_Kolor4Kod")->AsString = ""; break; case 4: DataSet->FieldByName("Twr_Kolor1Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count)]; DataSet->FieldByName("Twr_Kolor2Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count-1)]; DataSet->FieldByName("Twr_Kolor3Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count-2)]; DataSet->FieldByName("Twr_Kolor4Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count-3)]; DataSet->FieldByName("Twr_Kolor3Kod")->AsString = DataSet->FieldByName("Twr_KolorystykaKod")->AsString.SubString(5,2); DataSet->FieldByName("Twr_Kolor4Kod")->AsString = DataSet->FieldByName("Twr_KolorystykaKod")->AsString.SubString(7,2); break; } DataSet->FieldByName("Twr_TypSymbol")->AsString = DataSet->FieldByName("Twr_Katalog")->AsString.SubString(1,1); DataSet->FieldByName("Twr_StylSymbol")->AsString = DataSet->FieldByName("Twr_Katalog")->AsString.SubString(2,5); DataSet->FieldByName("Twr_RozmiarSymbol")->AsString = DataSet->FieldByName("Twr_Katalog")->AsString.SubString(8,3); DataSet->FieldByName("Twr_StylKod")->AsString = DataSet->FieldByName("Twr_RodzajKod")->AsString + "-" + DataSet->FieldByName("Twr_ModelKod")->AsString; if(kol.Length()>0) DataSet->FieldByName("Twr_StylKod")->AsString = DataSet->FieldByName("Twr_StylKod")->AsString + "-" + DataSet->FieldByName("Twr_KolorystykaKod")->AsString; DataSet->FieldByName("Twr_TypEan")->AsString = DataSet->FieldByName("Twr_Ean")->AsString.SubString(1,3); DataSet->FieldByName("Twr_Utworzono")->AsDateTime = ClarionTime(DataSet->FieldByName("Twr_DataUtworzenia")->AsInteger); dsxXL_TowaryTwr_RodzajId->Value = FRodzajeKody->I[DataSet->FieldByName("Twr_RodzajKod")->AsString]; dsxXL_TowaryTwr_ModelId->Value = FModeleKody->I[DataSet->FieldByName("Twr_ModelKod")->AsString]; } //--------------------------------------------------------------------------- void __fastcall TdmData::dsxXL_TowaryOldCalcFields(TDataSet *DataSet) { String art,mod,kol,roz,rod,n=DataSet->FieldByName("Twr_Nazwa")->AsString; //korekty n = StrReplace(n, "Koszykarski ", ""); n = StrReplace(n, "Koszykarska ", ""); n = StrReplace(n, "\\ ", "\\"); n = StrReplace(n, " \\", "\\"); n = StrReplace(n, "/ ", "/"); n = StrReplace(n, " /", "/"); n = StrReplace(n, "Melanz", "Melange"); n = StrReplace(n, "Ecrie melanż", "EcrieMelanz"); n = StrReplace(n, "Niebieski jea", "NiebieskiJea"); n = StrReplace(n, "Zielony Jas", "ZielonyJas"); n = StrReplace(n, "Niebieski Jas", "NiebieskiJas"); n = StrReplace(n, "Monaco Blue", "MonacoBlue"); n = StrReplace(n, "Nebieski", "Niebieski"); n = StrReplace(n, "WOMAN Poliester", "WOMAN"); n = StrReplace(n, "WOMEN", "WOMAN"); n = StrReplace(n, "WOMAN EXT Poliester", "WOMAN EXT"); n = StrReplace(n, "FIGARO TARNOVIA", "FIGARO GKS TARNOVIA"); n = StrReplace(n, "Granatowy", "Granat"); n = StrReplace(n, "EXELENCE PGN AWAY", "EXELENCE PGN"); n = StrReplace(n, "BALANCE MAN PGN", "BALANCE MAN"); n = StrReplace(n, "PN5x2m", "PN52"); n = StrReplace(n, "Siatka na bramki Biały", "Siatka na bramki PN52B Biały"); n = StrReplace(n, "FO4", "F04"); n = StrReplace(n, "A00334 ", ""); n = StrReplace(n, "A00335", "VBALB-CLB"); n = StrReplace(n, "A00336", "VFM6S50WS"); n = StrReplace(n, "AGL-C8126", "AGL-C22010WB"); n = StrReplace(n, "VMTB-S6045", "TR00045101"); n = StrReplace(n, "VMRT-10F", "VMRT-5F2SC"); n = StrReplace(n, "AGL-CLP6B", "AGH-CLP6B"); n = StrReplace(n, "SIERRA Z-5", "SIERRA Z5"); n = StrReplace(n, "SD-K019", "SDK019"); n = StrReplace(n, "SD-310", "SD310"); n = StrReplace(n, "Jogging Poliester EXT", "JOGGING PO EXT"); n = StrReplace(n, "POGOŃ LS", "PGN LS"); n = StrReplace(n, "Dr t-shirt Poliester", "Dr POLIESTER"); n = StrReplace(n, "LEO 021N", "LEO21"); n = StrReplace(n, "LEO 022N", "LEO22"); n = StrReplace(n, "LEO 023N", "LEO23"); n = StrReplace(n, "LEO 024N", "LEO24"); n = StrReplace(n, "LEO 011N", "LEO11"); n = StrReplace(n, "Turkusowy", "Turkus"); n = StrReplace(n, "Pistacjowy", "Pistacja"); n = StrReplace(n, "Black", "Czarny"); n = StrReplace(n, "Biało", "Biały"); n = StrReplace(n, "Granati", "Granat"); n = StrReplace(n, "/\\", "/"); n = StrReplace(n, "Navy", "Granat"); n = StrReplace(n, "Czarne", "Czarny"); n = StrReplace(n, "EXTCzer", "EXT Czer"); n = StrReplace(n, "Chille", "Chilli"); GetRodzajElement(n, rod); DataSet->FieldByName("Twr_RodzajNazwa")->AsString = rod; FNazwaColorsTmp->Clear(); GetNameElements(n, art, mod, kol, roz); DataSet->FieldByName("Twr_ModelNazwa")->AsString = mod; DataSet->FieldByName("Twr_KolorystykaNazwa")->AsString = kol; DataSet->FieldByName("Twr_RozmiarNazwa")->AsString = roz; //korekty if(rod == "Koszulka") rod = "Koszulka KR"; else if(rod == "Koszula KR") rod = "Koszulka KR"; else if(rod == "Bluza DR") rod = "Bluza"; else if(rod == "Kalesony DR") rod = "Kalesony"; switch(FNazwaColorsTmp->Count) { case 0: DataSet->FieldByName("Twr_Kolor1Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor2Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor3Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor4Nazwa")->AsString = ""; dsxXL_TowaryOldTwr_Kolor1Id->Value = 0; dsxXL_TowaryOldTwr_Kolor2Id->Value = 0; dsxXL_TowaryOldTwr_Kolor3Id->Value = 0; dsxXL_TowaryOldTwr_Kolor4Id->Value = 0; break; case 1: DataSet->FieldByName("Twr_Kolor1Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count)]; DataSet->FieldByName("Twr_Kolor2Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor3Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor4Nazwa")->AsString = ""; dsxXL_TowaryOldTwr_Kolor1Id->Value = FKolory->I[DataSet->FieldByName("Twr_Kolor1Nazwa")->AsString]; dsxXL_TowaryOldTwr_Kolor2Id->Value = 0; dsxXL_TowaryOldTwr_Kolor3Id->Value = 0; dsxXL_TowaryOldTwr_Kolor4Id->Value = 0; break; case 2: DataSet->FieldByName("Twr_Kolor1Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count)]; DataSet->FieldByName("Twr_Kolor2Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count-1)]; DataSet->FieldByName("Twr_Kolor3Nazwa")->AsString = ""; DataSet->FieldByName("Twr_Kolor4Nazwa")->AsString = ""; dsxXL_TowaryOldTwr_Kolor1Id->Value = FKolory->I[DataSet->FieldByName("Twr_Kolor1Nazwa")->AsString]; dsxXL_TowaryOldTwr_Kolor2Id->Value = FKolory->I[DataSet->FieldByName("Twr_Kolor2Nazwa")->AsString]; dsxXL_TowaryOldTwr_Kolor3Id->Value = 0; dsxXL_TowaryOldTwr_Kolor4Id->Value = 0; break; case 3: DataSet->FieldByName("Twr_Kolor1Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count)]; DataSet->FieldByName("Twr_Kolor2Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count-1)]; DataSet->FieldByName("Twr_Kolor3Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count-2)]; DataSet->FieldByName("Twr_Kolor4Nazwa")->AsString = ""; dsxXL_TowaryOldTwr_Kolor1Id->Value = FKolory->I[DataSet->FieldByName("Twr_Kolor1Nazwa")->AsString]; dsxXL_TowaryOldTwr_Kolor2Id->Value = FKolory->I[DataSet->FieldByName("Twr_Kolor2Nazwa")->AsString]; dsxXL_TowaryOldTwr_Kolor3Id->Value = FKolory->I[DataSet->FieldByName("Twr_Kolor3Nazwa")->AsString]; dsxXL_TowaryOldTwr_Kolor4Id->Value = 0; break; case 4: DataSet->FieldByName("Twr_Kolor1Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count)]; DataSet->FieldByName("Twr_Kolor2Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count-1)]; DataSet->FieldByName("Twr_Kolor3Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count-2)]; DataSet->FieldByName("Twr_Kolor4Nazwa")->AsString = FNazwaColorsTmp->Str[StrToInt(FNazwaColorsTmp->Count-3)]; dsxXL_TowaryOldTwr_Kolor1Id->Value = FKolory->I[DataSet->FieldByName("Twr_Kolor1Nazwa")->AsString]; dsxXL_TowaryOldTwr_Kolor2Id->Value = FKolory->I[DataSet->FieldByName("Twr_Kolor2Nazwa")->AsString]; dsxXL_TowaryOldTwr_Kolor3Id->Value = FKolory->I[DataSet->FieldByName("Twr_Kolor3Nazwa")->AsString]; dsxXL_TowaryOldTwr_Kolor4Id->Value = FKolory->I[DataSet->FieldByName("Twr_Kolor4Nazwa")->AsString]; break; } DataSet->FieldByName("Twr_TypSymbol")->AsString = DataSet->FieldByName("Twr_Kod")->AsString.SubString(1,1); DataSet->FieldByName("Twr_StylSymbol")->AsString = DataSet->FieldByName("Twr_Kod")->AsString.SubString(2,5); DataSet->FieldByName("Twr_RozmiarSymbol")->AsString = DataSet->FieldByName("Twr_Kod")->AsString.SubString(8,3); DataSet->FieldByName("Twr_StylNazwa")->AsString = DataSet->FieldByName("Twr_RodzajNazwa")->AsString + " " + DataSet->FieldByName("Twr_ModelNazwa")->AsString; if(kol.Length()>0) DataSet->FieldByName("Twr_StylNazwa")->AsString = DataSet->FieldByName("Twr_StylNazwa")->AsString + " " + kol; dsxXL_TowaryOldTwr_RodzajId->Value = FRodzaje->I[rod]; dsxXL_TowaryOldTwr_ModelId->Value = FModele->I[mod]; } //--------------------------------------------------------------------------- void __fastcall TdmData::ZINA_OLDAfterConnect(TObject *Sender) { FKolory->LoadFromDataSet(dsxVdTwrKolor, "TWK_NAZWA", "TWK_ID"); //dla nazwy FModeleKody->LoadFromDataSet(dsxVdTwrModel, "TWM_KOD", "TWM_ID"); FRodzajeKody->LoadFromDataSet(dsxVdTwrRodzaj, "TWR_KOD", "TWR_ID"); //dla nazwy2015 FModele->LoadFromDataSet(dsxVdTwrModel, "TWM_NAZWA", "TWM_ID"); FRodzaje->LoadFromDataSet(dsxVdTwrRodzaj, "TWR_NAZWA", "TWR_ID"); dsxVdTwrRormiar->Open(); dxMDMiesiace->Open(); } //--------------------------------------------------------------------------- void __fastcall TdmData::dsxVdSprzedazIloscBezGrupCalcFields(TDataSet *DataSet) { // } //---------------------------------------------------------------------------