PRK0010MF.cpp 70 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "AppGlobalF.h"
  6. #include "CDSCodeF.h"
  7. #include "CDSFacilityF.h"
  8. #include "ITSMapF.h"
  9. #include "ITS_OPLibF.h"
  10. #pragma hdrstop
  11. #include "PRK0010MF.h"
  12. #include "PRK0011MF.h"
  13. #include "PRK0012MF.h"
  14. #include "PRK0013MF.h"
  15. #include "PRK0014MF.h"
  16. //---------------------------------------------------------------------------
  17. #pragma package(smart_init)
  18. #pragma link "cxButtons"
  19. #pragma link "cxCheckBox"
  20. #pragma link "cxClasses"
  21. #pragma link "cxContainer"
  22. #pragma link "cxControls"
  23. #pragma link "cxCustomData"
  24. #pragma link "cxData"
  25. #pragma link "cxDataStorage"
  26. #pragma link "cxDropDownEdit"
  27. #pragma link "cxEdit"
  28. #pragma link "cxFilter"
  29. #pragma link "cxGraphics"
  30. #pragma link "cxGrid"
  31. #pragma link "cxGridCustomTableView"
  32. #pragma link "cxGridCustomView"
  33. #pragma link "cxGridLevel"
  34. #pragma link "cxGridTableView"
  35. #pragma link "cxGroupBox"
  36. #pragma link "cxLabel"
  37. #pragma link "cxLookAndFeelPainters"
  38. #pragma link "cxLookAndFeels"
  39. #pragma link "cxMaskEdit"
  40. #pragma link "cxSpinEdit"
  41. #pragma link "cxSplitter"
  42. #pragma link "cxStyles"
  43. #pragma link "cxTextEdit"
  44. #pragma link "cxTimeEdit"
  45. #pragma link "dxSkinBlack"
  46. #pragma link "dxSkinBlue"
  47. #pragma link "dxSkinsCore"
  48. #pragma link "dxSkinscxPCPainter"
  49. #pragma link "FRAME_OpenMapF"
  50. #pragma link "dxSkinMcSkin"
  51. #pragma link "cxCalc"
  52. #pragma resource "*.dfm"
  53. TPRK0010M *PRK0010M = NULL;
  54. //---------------------------------------------------------------------------
  55. void TPRK0010M_MapCallback(TObject *ASender, const String AFunc, const String AArgs, const bool AFirst)
  56. {
  57. try
  58. {
  59. if (!PRK0010M) return;
  60. PRK0010M->OpenMapCallback(ASender, AFunc, AArgs, AFirst);
  61. }
  62. catch(Exception &exception)
  63. {
  64. }
  65. }
  66. //---------------------------------------------------------------------------
  67. __fastcall TPRK0010M::TPRK0010M(TComponent* Owner)
  68. : TForm(Owner)
  69. {
  70. ITSSkin_Load(this);
  71. CMM_LoadForm(g_sFormsDir, this);
  72. Position = poOwnerFormCenter;
  73. FUpdate= false;
  74. FTitle = "주차장 관리";
  75. m_pGDC = TvList->DataController;
  76. MapStart = false;
  77. FLayerIdx = LyrTp_Park;
  78. FRAMEOpenMap1->LayerIdx = FLayerIdx;
  79. FRAMEOpenMap1->MapCallbackFunc = TPRK0010M_MapCallback;
  80. EditMode = false;
  81. }
  82. //---------------------------------------------------------------------------
  83. void __fastcall TPRK0010M::CommClose()
  84. {
  85. try
  86. {
  87. //CMM_SaveForm(g_sFormsDir, this);
  88. }
  89. catch(...)
  90. {
  91. }
  92. }
  93. //---------------------------------------------------------------------------
  94. void __fastcall TPRK0010M::FormShow(TObject *Sender)
  95. {
  96. Refresh();
  97. FRAMEOpenMap1->OpenMap();
  98. TcxComboBox *pCombo = NULL;
  99. // 주차장 입출구 형태
  100. pCombo = PRK_PLCE_ENTRC_EXTTY;
  101. pCombo->Properties->Items->Clear();
  102. TItsCode *pCode = ItsCodeManager->FLists.Find("PRKEX");
  103. if (pCode)
  104. {
  105. FOR_STL(TItsSubCode *, pSubCode, pCode->FSubLists)
  106. {
  107. if (pSubCode->USE_YN == "N") continue;
  108. pCombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  109. }
  110. }
  111. pCombo->ItemIndex = 0;
  112. // 주차형식
  113. pCombo = PARKING_TY;
  114. pCombo->Properties->Items->Clear();
  115. pCode = ItsCodeManager->FLists.Find("PRKTY");
  116. if (pCode)
  117. {
  118. FOR_STL(TItsSubCode *, pSubCode, pCode->FSubLists)
  119. {
  120. if (pSubCode->USE_YN == "N") continue;
  121. pCombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  122. }
  123. }
  124. pCombo->ItemIndex = 0;
  125. // 이용형태
  126. pCombo = PARKING_US;
  127. pCombo->Properties->Items->Clear();
  128. pCode = ItsCodeManager->FLists.Find("PRKUS");
  129. if (pCode)
  130. {
  131. FOR_STL(TItsSubCode *, pSubCode, pCode->FSubLists)
  132. {
  133. if (pSubCode->USE_YN == "N") continue;
  134. pCombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  135. }
  136. }
  137. pCombo->ItemIndex = 0;
  138. // 급지구분
  139. pCombo = AR_LEVEL_SE;
  140. pCombo->Properties->Items->Clear();
  141. pCode = ItsCodeManager->FLists.Find("PRKSE");
  142. if (pCode)
  143. {
  144. FOR_STL(TItsSubCode *, pSubCode, pCode->FSubLists)
  145. {
  146. if (pSubCode->USE_YN == "N") continue;
  147. pCombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  148. }
  149. }
  150. pCombo->ItemIndex = 0;
  151. // 주차 부제 시행여부
  152. pCombo = NO_DRV_DAY_OPERTN_AT;
  153. pCombo->Properties->Items->Clear();
  154. pCode = ItsCodeManager->FLists.Find("PRKOP");
  155. if (pCode)
  156. {
  157. FOR_STL(TItsSubCode *, pSubCode, pCode->FSubLists)
  158. {
  159. if (pSubCode->USE_YN == "N") continue;
  160. pCombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  161. }
  162. }
  163. pCombo->ItemIndex = 0;
  164. // 주차요금 정산 방식
  165. pCombo = PARKING_CHRGE_EXCCLC_MTHD;
  166. pCombo->Properties->Items->Clear();
  167. pCode = ItsCodeManager->FLists.Find("PRKPT");
  168. if (pCode)
  169. {
  170. FOR_STL(TItsSubCode *, pSubCode, pCode->FSubLists)
  171. {
  172. if (pSubCode->USE_YN == "N") continue;
  173. pCombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  174. }
  175. }
  176. pCombo->ItemIndex = 0;
  177. // 주차예약 시행여부
  178. pCombo = PARKING_RESVE_OPERTN_AT;
  179. pCombo->Properties->Items->Clear();
  180. pCode = ItsCodeManager->FLists.Find("PRKRV");
  181. if (pCode)
  182. {
  183. FOR_STL(TItsSubCode *, pSubCode, pCode->FSubLists)
  184. {
  185. if (pSubCode->USE_YN == "N") continue;
  186. pCombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  187. }
  188. }
  189. pCombo->ItemIndex = 0;
  190. FormInit();
  191. ChangeEditMode(1);
  192. TmrShow->Enabled = true;
  193. }
  194. //---------------------------------------------------------------------------
  195. void __fastcall TPRK0010M::FormInit()
  196. {
  197. int ii;
  198. PRK_PLCE_NMBR->Text = "";
  199. PRK_PLCE_MANAGE_NO->Text = "";
  200. PRK_PLCE_STTUS_VER->Text = "";
  201. PRK_PLCE_NM->Text = "";
  202. PRK_PLCE_ADRES->Text = "";
  203. PRK_PLCE_INSTL_DE->Text = "";
  204. PRK_PLCE_ABL_DE->Text = "";
  205. PRK_PLCE_ENTRC_NM->Text = "";
  206. PRK_PLCE_ENTRC_LA->Value = 0;
  207. PRK_PLCE_ENTRC_LO->Value = 0;
  208. //PRK_PLCE_IMAGE_DATA N BLOB Y 주차장 구조 이미지 - 주차장 구조 이미지 데이터
  209. try {
  210. PRK_PLCE_IMAGE_DATA->Picture->Bitmap->FreeImage();
  211. PRK_PLCE_IMAGE_DATA->Picture->Bitmap = NULL;
  212. } catch(Exception &e) {
  213. }
  214. PRK_PLCE_IMAGE_TYPE->Text = "";
  215. PRK_PLCE_IMAGE_DC->Text = "";
  216. SYS_NE->Text = "";
  217. PARKING_CNTRL_SYS_INSTL_DE->Text = "";
  218. RELATION_LAW_AND_ORDINANCES->Text = "";
  219. // 이용가능 차량유형
  220. PRK_AVAIL_CARTYPE->Text = "";
  221. for (int ii = 0; ii <= 6; ii++) {
  222. TcxCheckBox *pCheckBox = (TcxCheckBox*)FindComponent("PRK_AVAIL_CARTYPE"+String(ii));
  223. if (pCheckBox) {
  224. pCheckBox->Checked = false;
  225. }
  226. }
  227. PRK_CMPRT_CO->Value = 0;
  228. COLCT_DEVICE_INSTL_AT->Checked = false;
  229. MASTER_CONTROLLER->Value = 0;
  230. SLAVE_CONTROLLER->Value = 0;
  231. COLCT_DEVICE_QTY->Value = 0;
  232. // 주차구획 단위정보 수집장치 정보
  233. COLCT_DEVICE_KND->Text = "";
  234. for (int ii = 0; ii <= 5; ii++) {
  235. TcxCheckBox *pCheckBox = (TcxCheckBox*)FindComponent("COLCT_DEVICE_KND"+String(ii));
  236. if (pCheckBox) {
  237. pCheckBox->Checked = false;
  238. }
  239. }
  240. COLCT_DEVICE_INSTL_DE->Text = "";
  241. CRM_PRV_CCTV_INSTL_AT->Checked = false;
  242. CRM_PRV_CCTV_INSTL_CO->Value = 0;
  243. //AObj->VMS_DSPL_NM;
  244. PRK_PLCE_OPR_VER->Text = "";
  245. CMPT_INST_NM->Text = "";
  246. OPER_DEPT_NM->Text = "";
  247. OPER_PERSON_NM->Text = "";
  248. OPER_CTT_PC_TEL->Text = "";
  249. OPER_CTT_PC_EMAIL->Text = "";
  250. OPERTN_BS_FREE_TIME->Text = "";
  251. OPN_CODE->Checked = false;
  252. // 주차요금 지불수단
  253. PARKING_CHRGE_PYMNT_MN->Text = "";
  254. for (int ii = 1; ii <= 8; ii++) {
  255. TcxCheckBox *pCheckBox = (TcxCheckBox*)FindComponent("PARKING_CHRGE_PYMNT_MN"+String(ii));
  256. if (pCheckBox) {
  257. pCheckBox->Checked = false;
  258. }
  259. }
  260. PARTCLR_MATTER->Text = "";
  261. // 전용주차구역정보
  262. for (int ii = 0; ii <= 7; ii++) {
  263. TcxSpinEdit *pEdit = (TcxSpinEdit*)FindComponent("VHCTY_AR_SE"+String(ii));
  264. if (pEdit) {
  265. pEdit->Value = 0;
  266. }
  267. }
  268. // 주차요금
  269. PARKING_CHRGE_BS_TIME->Value = 0;
  270. PARKING_CHRGE_BS_CHRGE->Value = 0;
  271. PARKING_CHRGE_ADIT_UNIT_TIME->Value = 0;
  272. PARKING_CHRGE_ADIT_UNIT_CHRGE->Value = 0;
  273. TcxComboBox *pCombo = NULL;
  274. // 주차장 입출구 형태
  275. pCombo = PRK_PLCE_ENTRC_EXTTY;
  276. pCombo->ItemIndex = 0;
  277. // 주차형식
  278. pCombo = PARKING_TY;
  279. pCombo->ItemIndex = 0;
  280. // 이용형태
  281. pCombo = PARKING_US;
  282. pCombo->ItemIndex = 0;
  283. // 급지구분
  284. pCombo = AR_LEVEL_SE;
  285. pCombo->ItemIndex = 0;
  286. // 주차 부제 시행여부
  287. pCombo = NO_DRV_DAY_OPERTN_AT;
  288. pCombo->ItemIndex = 0;
  289. // 주차요금 정산 방식
  290. pCombo = PARKING_CHRGE_EXCCLC_MTHD;
  291. pCombo->ItemIndex = 0;
  292. // 주차예약 시행여부
  293. pCombo = PARKING_RESVE_OPERTN_AT;
  294. pCombo->ItemIndex = 0;
  295. FChrges.Clear();
  296. FScheds.Clear();
  297. FFlrs.Clear();
  298. FPrvs.Clear();
  299. FNewDb = false;
  300. }
  301. //---------------------------------------------------------------------------
  302. void __fastcall TPRK0010M::TmrShowTimer(TObject *Sender)
  303. {
  304. TmrShow->Enabled = false;
  305. UpdateList();
  306. }
  307. //---------------------------------------------------------------------------
  308. void __fastcall TPRK0010M::BtnCloseClick(TObject *Sender)
  309. {
  310. Close();
  311. }
  312. //---------------------------------------------------------------------------
  313. void __fastcall TPRK0010M::FormClose(TObject *Sender, TCloseAction &Action)
  314. {
  315. CommClose();
  316. PRK0010M = NULL;
  317. Action = caFree;
  318. }
  319. //---------------------------------------------------------------------------
  320. void __fastcall TPRK0010M::FormCloseQuery(TObject *Sender, bool &CanClose)
  321. {
  322. if (FUpdate)
  323. {
  324. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  325. }
  326. }
  327. //---------------------------------------------------------------------------
  328. void __fastcall TPRK0010M::DisplayInfo(TPrkPlce* AObj, bool AMoveObj/*=true*/)
  329. {
  330. FormInit();
  331. if (!AObj) return;
  332. if (AMoveObj)
  333. {
  334. sJs.printf(L"selectLayerObject(%d, '%s', %d)", FLayerIdx, AObj->CTLR_NMBR.c_str(), FRAMEOpenMap1->MapZoom);
  335. FRAMEOpenMap1->ExecScript(sJs);
  336. }
  337. if (AObj->FOPR->FChrges.Size() == 0) {
  338. PrkPlceManager->LoadFromDbOprChrge(AObj);
  339. }
  340. if (AObj->FOPR->FScheds.Size() == 0) {
  341. PrkPlceManager->LoadFromDbOprSched(AObj);
  342. }
  343. if (AObj->FFlrs.Size() == 0) {
  344. PrkPlceManager->LoadFromDbFlr(AObj);
  345. }
  346. if (AObj->FPrvs.Size() == 0) {
  347. PrkPlceManager->LoadFromDbPrv(AObj);
  348. }
  349. if (AObj->FDevs.Size() == 0) {
  350. //PrkPlceManager->LoadFromDbDev(AObj);
  351. }
  352. FChrges.Clear();
  353. FOR_STL(TPrkPlceOprChrge*, pTmpChrge, AObj->FOPR->FChrges) {
  354. TPrkPlceOprChrge* pChrge = new TPrkPlceOprChrge();
  355. pChrge->PRK_PLCE_NMBR = pTmpChrge->PRK_PLCE_NMBR;
  356. pChrge->CHRGE = pTmpChrge->CHRGE;
  357. pChrge->PARKING_CHRGE_BS_TIME = pTmpChrge->PARKING_CHRGE_BS_TIME;
  358. pChrge->PARKING_CHRGE_BS_CHRGE = pTmpChrge->PARKING_CHRGE_BS_CHRGE;
  359. pChrge->PARKING_CHRGE_ADIT_UNIT_TIME = pTmpChrge->PARKING_CHRGE_ADIT_UNIT_TIME;
  360. pChrge->PARKING_CHRGE_ADIT_UNIT_CHRGE = pTmpChrge->PARKING_CHRGE_ADIT_UNIT_CHRGE;
  361. FChrges.Push(pChrge->CHRGE, pChrge);
  362. }
  363. FScheds.Clear();
  364. FOR_STL(TPrkPlceOprSched*, pTmpSched, AObj->FOPR->FScheds) {
  365. TPrkPlceOprSched* pSched = new TPrkPlceOprSched();
  366. pSched->PRK_PLCE_NMBR = pTmpSched->PRK_PLCE_NMBR;
  367. pSched->SCHED = pTmpSched->SCHED;
  368. pSched->OPERTN_START_TIME = pTmpSched->OPERTN_START_TIME;
  369. pSched->OPERTN_END_TIME = pTmpSched->OPERTN_END_TIME;
  370. pSched->PARKING_CHRGE_LEVY_AT = pTmpSched->PARKING_CHRGE_LEVY_AT;
  371. FScheds.Push(pSched->SCHED, pSched);
  372. }
  373. FFlrs.Clear();
  374. FOR_STL(TPrkPlceFlr*, pTmpFlr, AObj->FFlrs) {
  375. TPrkPlceFlr* pFlr = new TPrkPlceFlr();
  376. pFlr->PRK_PLCE_NMBR = pTmpFlr->PRK_PLCE_NMBR;
  377. pFlr->FLR_NO = pTmpFlr->FLR_NO;
  378. pFlr->FLR_PRK_CMPRT_CO = pTmpFlr->FLR_PRK_CMPRT_CO;
  379. //pFlr->FLR_REMNDR_PRK_CMPRT_CO = pTmpFlr->FLR_REMNDR_PRK_CMPRT_CO;
  380. //pFlr->DATA_COLCT_TIME = pTmpFlr->DATA_COLCT_TIME;
  381. FFlrs.Push(pFlr->FLR_NO, pFlr);
  382. }
  383. FPrvs.Clear();
  384. FOR_STL(TPrkPlcePrv*, pTmpPrv, AObj->FPrvs) {
  385. TPrkPlcePrv* pPrv = new TPrkPlcePrv();
  386. pPrv->PRK_PLCE_NMBR = pTmpPrv->PRK_PLCE_NMBR;
  387. pPrv->VHCTY_AR_SE = pTmpPrv->VHCTY_AR_SE;
  388. pPrv->VHCTY_AR_PRK_CMPRT_CO = pTmpPrv->VHCTY_AR_PRK_CMPRT_CO;
  389. //pPrv->VHCTY_AR_REMNDR_PRK_CMPRT_CO = pTmpPrv->VHCTY_AR_REMNDR_PRK_CMPRT_CO;
  390. FPrvs.Push(pPrv->VHCTY_AR_SE, pPrv);
  391. }
  392. PRK_PLCE_NMBR->Text = AObj->CTLR_NMBR;
  393. PRK_PLCE_MANAGE_NO->Text = AObj->CTLR_ID;
  394. PRK_PLCE_STTUS_VER->Text = AObj->PRK_PLCE_STTUS_VER;
  395. PRK_PLCE_NM->Text = AObj->NAME;
  396. PRK_PLCE_ADRES->Text = AObj->ISTL_LCTN_ADDR;
  397. PRK_PLCE_INSTL_DE->Text = AObj->PRK_PLCE_INSTL_DE;
  398. PRK_PLCE_ABL_DE->Text = AObj->PRK_PLCE_ABL_DE;
  399. PRK_PLCE_ENTRC_NM->Text = AObj->PRK_PLCE_ENTRC_NM;
  400. PRK_PLCE_ENTRC_LA->Value = StrToFloatDef(AObj->Y_CRDN, 0);
  401. PRK_PLCE_ENTRC_LO->Value = StrToFloatDef(AObj->X_CRDN, 0);
  402. CMM_SetComboBoxItem(PRK_PLCE_ENTRC_EXTTY, AObj->PRK_PLCE_ENTRC_EXTTY);
  403. CMM_SetComboBoxItem(PARKING_TY, AObj->PARKING_TY);
  404. CMM_SetComboBoxItem(PARKING_US, AObj->PARKING_US);
  405. CMM_SetComboBoxItem(AR_LEVEL_SE, AObj->AR_LEVEL_SE);
  406. //PRK_PLCE_IMAGE_DATA N BLOB Y 주차장 구조 이미지 - 주차장 구조 이미지 데이터
  407. PRK_PLCE_IMAGE_TYPE->Text = AObj->PRK_PLCE_IMAGE_TYPE;
  408. PRK_PLCE_IMAGE_DC->Text = AObj->PRK_PLCE_IMAGE_DC;
  409. SYS_NE->Text = AObj->SYS_NE;
  410. PARKING_CNTRL_SYS_INSTL_DE->Text = AObj->PARKING_CNTRL_SYS_INSTL_DE;
  411. RELATION_LAW_AND_ORDINANCES->Text = AObj->RELATION_LAW_AND_ORDINANCES;
  412. // 이용가능 차량유형
  413. PRK_AVAIL_CARTYPE->Text = AObj->PRK_AVAIL_CARTYPE;
  414. for (int ii = 0; ii <= 6; ii++) {
  415. String sCheck = AObj->PRK_AVAIL_CARTYPE.SubString(ii+1, 1);
  416. TcxCheckBox *pCheckBox = (TcxCheckBox*)FindComponent("PRK_AVAIL_CARTYPE"+String(ii));
  417. if (pCheckBox) {
  418. pCheckBox->Checked = sCheck == "1" ? true : false;
  419. }
  420. }
  421. PRK_CMPRT_CO->Value = AObj->PRK_CMPRT_CO;
  422. COLCT_DEVICE_INSTL_AT->Checked = AObj->COLCT_DEVICE_INSTL_AT == 1 ? true : false;
  423. MASTER_CONTROLLER->Value = AObj->MASTER_CONTROLLER;
  424. SLAVE_CONTROLLER->Value = AObj->SLAVE_CONTROLLER;
  425. COLCT_DEVICE_QTY->Value = AObj->COLCT_DEVICE_QTY;
  426. //COLCT_DEVICE_KND N VARCHAR2(6) Y 주차구획 단위정보 수집장치 정보 - 주차정보 수집장치 종류 - 아래 유형 조합해서 생성됌 - 예시) 지자기설치 시 (010000), 영상/레이더 혼합 설치시(101000)
  427. // 주차구획 단위정보 수집장치 정보
  428. COLCT_DEVICE_KND->Text = AObj->COLCT_DEVICE_KND;
  429. for (int ii = 0; ii <= 5; ii++) {
  430. String sCheck = AObj->COLCT_DEVICE_KND.SubString(ii+1, 1);
  431. TcxCheckBox *pCheckBox = (TcxCheckBox*)FindComponent("COLCT_DEVICE_KND"+String(ii));
  432. if (pCheckBox) {
  433. pCheckBox->Checked = sCheck == "1" ? true : false;
  434. }
  435. }
  436. COLCT_DEVICE_INSTL_DE->Text = AObj->COLCT_DEVICE_INSTL_DE;
  437. CRM_PRV_CCTV_INSTL_AT->Checked = AObj->CRM_PRV_CCTV_INSTL_AT == 1 ? true : false;
  438. CRM_PRV_CCTV_INSTL_CO->Value = AObj->CRM_PRV_CCTV_INSTL_CO;
  439. CMM_SetComboBoxItem(PIS_TYPE, AObj->TYPE_CD);
  440. AObj->VMS_DSPL_NM;
  441. PRK_PLCE_OPR_VER->Text = AObj->FOPR->PRK_PLCE_OPR_VER;
  442. CMPT_INST_NM->Text = AObj->FOPR->CMPT_INST_NM;
  443. OPER_DEPT_NM->Text = AObj->FOPR->OPER_DEPT_NM;
  444. OPER_PERSON_NM->Text = AObj->FOPR->OPER_PERSON_NM;
  445. OPER_CTT_PC_TEL->Text = AObj->FOPR->OPER_CTT_PC_TEL;
  446. OPER_CTT_PC_EMAIL->Text = AObj->FOPR->OPER_CTT_PC_EMAIL;
  447. CMM_SetComboBoxItem(NO_DRV_DAY_OPERTN_AT, AObj->FOPR->NO_DRV_DAY_OPERTN_AT);
  448. OPERTN_BS_FREE_TIME->Text = AObj->FOPR->OPERTN_BS_FREE_TIME;
  449. OPN_CODE->Checked = AObj->FOPR->OPN_CODE == 1 ? true : false;
  450. CMM_SetComboBoxItem(PARKING_CHRGE_EXCCLC_MTHD, AObj->FOPR->PARKING_CHRGE_EXCCLC_MTHD);
  451. //PARKING_CHRGE_PYMNT_MN N VARCHAR2(8) Y 주차요금 지불수단 - 아래 유형 조합해서 생성됌 - 예시) 현금/신용카드 혼합결제 시 (11000000), 핀테크 결제 시 (00000100), 1: 현금, 2: 신용카드, 3: 교통카드, 4: 전자지불(하이패스), 5: 휴대폰소액결제, 6: 핀테크(OO페이), 7: MaaS 통합결제, 9: 기타
  452. // 주차요금 지불수단
  453. PARKING_CHRGE_PYMNT_MN->Text = AObj->FOPR->PARKING_CHRGE_PYMNT_MN;
  454. for (int ii = 1; ii <= 8; ii++) {
  455. String sCheck = AObj->FOPR->PARKING_CHRGE_PYMNT_MN.SubString(ii, 1);
  456. TcxCheckBox *pCheckBox = (TcxCheckBox*)FindComponent("PARKING_CHRGE_PYMNT_MN"+String(ii));
  457. if (pCheckBox) {
  458. pCheckBox->Checked = sCheck == "1" ? true : false;
  459. }
  460. }
  461. CMM_SetComboBoxItem(PARKING_RESVE_OPERTN_AT, AObj->FOPR->PARKING_RESVE_OPERTN_AT);
  462. PARTCLR_MATTER->Text = AObj->FOPR->PARTCLR_MATTER;
  463. // 전용주차구역정보
  464. FOR_STL(TPrkPlcePrv*, pPrv, FPrvs) {
  465. TcxSpinEdit *pArSe = (TcxSpinEdit*)FindComponent("VHCTY_AR_SE"+String(pPrv->VHCTY_AR_SE));
  466. if (pArSe) {
  467. pArSe->Value = pPrv->VHCTY_AR_PRK_CMPRT_CO;
  468. }
  469. }
  470. // 주차요금
  471. TPrkPlceOprChrge* pChrge = FChrges.Find(1); // 일반요금
  472. if (pChrge) {
  473. PARKING_CHRGE_BS_TIME->Value = pChrge->PARKING_CHRGE_BS_TIME;
  474. PARKING_CHRGE_BS_CHRGE->Value = pChrge->PARKING_CHRGE_BS_CHRGE;
  475. PARKING_CHRGE_ADIT_UNIT_TIME->Value = pChrge->PARKING_CHRGE_ADIT_UNIT_TIME;
  476. PARKING_CHRGE_ADIT_UNIT_CHRGE->Value = pChrge->PARKING_CHRGE_ADIT_UNIT_CHRGE;
  477. }
  478. // 운영시간
  479. // 층정보
  480. //////////
  481. LoadPrkPlceImage(AObj->CTLR_NMBR);
  482. ChangeEditMode(3);
  483. }
  484. //---------------------------------------------------------------------------
  485. void __fastcall TPRK0010M::UpdateList()
  486. {
  487. CMM_ClearGridTableView(TvList);
  488. int nRow = 0;
  489. try
  490. {
  491. TvList->BeginUpdate();
  492. TItsSubCode *pSubCode;
  493. try
  494. {
  495. PrkPlceManager->FLists.Lock();
  496. FOR_STL(TPrkPlce*, pObj, PrkPlceManager->FLists)
  497. {
  498. if (pObj->DEL_YN != "N") continue;
  499. nRow = m_pGDC->AppendRecord();
  500. m_pGDC->Values[nRow][ColumnSel->Index] = false; //선택
  501. m_pGDC->Values[nRow][Column00->Index] = "-"; //편집
  502. m_pGDC->Values[nRow][Column01->Index] = pObj->CTLR_NMBR;
  503. m_pGDC->Values[nRow][Column11->Index] = pObj->CTLR_ID;
  504. m_pGDC->Values[nRow][Column04->Index] = pObj->NAME;
  505. m_pGDC->Values[nRow][Column10->Index] = pObj->PRK_CMPRT_CO;
  506. // 층정보
  507. String sFlrs = "";
  508. FOR_STL(TPrkPlceFlr*, pFlr, pObj->FFlrs)
  509. {
  510. if (sFlrs == "") {
  511. sFlrs = pFlr->FLR_NO;
  512. } else {
  513. sFlrs += ", " + pFlr->FLR_NO;
  514. }
  515. }
  516. m_pGDC->Values[nRow][Column12->Index] = sFlrs;
  517. m_pGDC->Values[nRow][Column13->Index] = "사용";
  518. m_pGDC->Values[nRow][Column99->Index] = (int)pObj;
  519. }
  520. }
  521. __finally
  522. {
  523. PrkPlceManager->FLists.UnLock();
  524. }
  525. }
  526. __finally
  527. {
  528. TvList->EndUpdate();
  529. TvList->DataController->GotoFirst();
  530. TvList->DataController->FocusedRecordIndex = 0;
  531. //CxList->SetFocus();
  532. }
  533. }
  534. //---------------------------------------------------------------------------
  535. void __fastcall TPRK0010M::UpdateIcon()
  536. {
  537. if (!FRAMEOpenMap1->MapStart) return;
  538. sJs.printf(L"removeLayerObject(%d)", FLayerIdx);
  539. FRAMEOpenMap1->ExecScript(sJs);
  540. String arrObj = "";
  541. String sTemp;
  542. PrkPlceManager->FLists.Lock();
  543. try
  544. {
  545. FOR_STL(TPrkPlce*, pObj, PrkPlceManager->FLists)
  546. {
  547. if (pObj->DEL_YN == "Y") continue;
  548. if (arrObj != "") arrObj += "|";
  549. sTemp.printf(L"%s,%s,%s,%.6f,%.6f,0,0,0,0", pObj->CTLR_NMBR.c_str(), pObj->CTLR_ID.c_str(), pObj->NAME.c_str(), pObj->X_CRDN, pObj->Y_CRDN);
  550. arrObj += sTemp;
  551. }
  552. }
  553. __finally
  554. {
  555. PrkPlceManager->FLists.UnLock();
  556. if (arrObj != "")
  557. {
  558. sJs.printf(L"addFacility(%d, '%s')", FLayerIdx, arrObj.c_str());
  559. FRAMEOpenMap1->ExecScript(sJs);
  560. }
  561. }
  562. }
  563. //---------------------------------------------------------------------------
  564. void __fastcall TPRK0010M::BtnEditClick(TObject *Sender)
  565. {
  566. String sId = PRK_PLCE_NMBR->Text;
  567. TPrkPlce *pObj = PrkPlceManager->FLists.Find(sId);
  568. FNewDb = false;
  569. if (BtnEdit->Caption == FrmLang->lblEdit->Caption)//"편집")
  570. {
  571. //편집모드 시작
  572. ChangeEditMode(0);
  573. if (pObj)
  574. {
  575. //시설물아이콘을 편집아이콘으로 변경
  576. //function editFacilityObject(ALyrIdx, ANmbr, AComm(0:오류-편집,1:정상), AEdit(편집모드:1-편집,0-편집취소))
  577. sJs.printf(L"editFacilityObject(%d, %s, 1, 1)", FLayerIdx, pObj->CTLR_NMBR.c_str());
  578. FRAMEOpenMap1->ExecScript(sJs);
  579. }
  580. }
  581. else
  582. {
  583. //편집모드 취소
  584. ChangeEditMode(1);
  585. if (pObj)
  586. {
  587. CMM_SetGridRow(CxList, TvList, sId, Column01->Index);
  588. DisplayInfo(pObj, false);
  589. //추가 모드에서 취소하는 경우 지도에 신규로 추가한 객체를 찾아서 삭제해 주는것 보다
  590. //새롭게 다시 그리자
  591. UpdateIcon();
  592. }
  593. else
  594. {
  595. //객체가 없는 경우는 추가 모드에서 취소한 경우임
  596. sJs.printf(L"removeFacilityObject(%d, %s)", FLayerIdx, sId.c_str());
  597. FRAMEOpenMap1->ExecScript(sJs);
  598. }
  599. }
  600. }
  601. //---------------------------------------------------------------------------
  602. void __fastcall TPRK0010M::ChangeEditMode(int AEdit)
  603. {
  604. bool bEnabled = false;
  605. switch(AEdit)
  606. {
  607. case 0: //편집버튼클릭
  608. {
  609. BtnEdit->Enabled = true;
  610. BtnInsert->Enabled = false;
  611. BtnDelete->Enabled = false;
  612. BtnSave->Enabled = true;
  613. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  614. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  615. }
  616. break;
  617. case 1: //편집[취소]버튼클릭
  618. {
  619. FormInit(); //화면을 모두 지운다.
  620. BtnEdit->Enabled = false;
  621. BtnInsert->Enabled = true;
  622. BtnDelete->Enabled = false;
  623. BtnSave->Enabled = false;
  624. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  625. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  626. bEnabled = true;
  627. }
  628. break;
  629. case 2: //추가
  630. {
  631. BtnEdit->Enabled = true;
  632. BtnInsert->Enabled = false;
  633. BtnDelete->Enabled = false;
  634. BtnSave->Enabled = true;
  635. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  636. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  637. }
  638. break;
  639. case 3: //수정모드
  640. {
  641. BtnEdit->Enabled = true;
  642. BtnInsert->Enabled = true;
  643. BtnDelete->Enabled = true;
  644. BtnSave->Enabled = false;
  645. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  646. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  647. bEnabled = true;
  648. }
  649. break;
  650. }
  651. if (AEdit == 0 || AEdit == 2)
  652. {
  653. CxList->Enabled = false;
  654. GrpInfo->Enabled = true;
  655. }
  656. else
  657. {
  658. CxList->Enabled = true;
  659. GrpInfo->Enabled = false;
  660. }
  661. //PnlEdit->Enabled = EditMode;
  662. }
  663. //---------------------------------------------------------------------------
  664. void __fastcall TPRK0010M::BtnInsertClick(TObject *Sender)
  665. {
  666. FormInit();
  667. //신규아이디를 얻어와서 화면을 초기화한다.
  668. int nNmbr, nId;
  669. if (!PrkPlceManager->GetNextPrkNmbr(nNmbr, nId))
  670. {
  671. Application->MessageBox(L"새로운 주차장 정보를 생성하지 못하였습니다.\r\n프로그램 종료후에 다시 시도해 보세요.",
  672. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  673. return;
  674. }
  675. PRK_PLCE_NMBR->Text = String(nNmbr);
  676. PRK_PLCE_ENTRC_LA->Value = FRAMEOpenMap1->CenterX;
  677. PRK_PLCE_ENTRC_LO->Value = FRAMEOpenMap1->CenterY;
  678. PRK_PLCE_ENTRC_LA->Value = FRAMEOpenMap1->CenterX;
  679. PRK_PLCE_ENTRC_LO->Value = FRAMEOpenMap1->CenterY;
  680. //지도에 새로운 시설물 아이콘 추가하면서 편집모드로 변경
  681. String arrObj = "";
  682. arrObj.printf(L"%d,New,New,%.6f,%.6f,0", nNmbr, FRAMEOpenMap1->CenterX, FRAMEOpenMap1->CenterY);
  683. sJs.printf(L"addFacilityObject(%d, '%s')", FLayerIdx, arrObj.c_str());
  684. FRAMEOpenMap1->ExecScript(sJs);
  685. ChangeEditMode(2);
  686. FNewDb = true;
  687. }
  688. //---------------------------------------------------------------------------
  689. void __fastcall TPRK0010M::BtnDeleteClick(TObject *Sender)
  690. {
  691. if (!FRAMEOpenMap1->MapStart) return;
  692. int nIdx = m_pGDC->FocusedRecordIndex;
  693. if (nIdx < 0) return;
  694. String sId = PRK_PLCE_NMBR->Text;
  695. if (sId.IsEmpty())
  696. {
  697. Application->MessageBox(L"삭제할 주차장정보를 목록에서 선택하세요.\r\n목록에서 더블클릭하여 선택합니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  698. return;
  699. }
  700. String sMsg;
  701. sMsg = "ID: " + sId;
  702. sMsg+= "\r\n선택하신 주차장 정보를 삭제하시겠습니까?";
  703. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  704. TPrkPlce *pObj = PrkPlceManager->FLists.Find(sId);
  705. if (pObj)
  706. {
  707. if (PrkPlceManager->DeletePrkPlce(pObj))
  708. {
  709. pObj->DEL_YN = "Y";
  710. UpdateList();
  711. UpdateIcon();
  712. }
  713. Application->MessageBox(L"주차장 정보삭제\r\n주차장 정보를 삭제 하였습니다.",
  714. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  715. FormInit();
  716. ChangeEditMode(1);
  717. UpdateIcon();
  718. }
  719. }
  720. //---------------------------------------------------------------------------
  721. void __fastcall TPRK0010M::BtnSaveClick(TObject *Sender)
  722. {
  723. if (PRK_PLCE_NMBR->Text.IsEmpty() ||
  724. PRK_PLCE_MANAGE_NO->Text.Trim().IsEmpty() ||
  725. PRK_PLCE_NM->Text.Trim().IsEmpty() ||
  726. PRK_PLCE_ENTRC_LA->Value == 0 ||
  727. PRK_PLCE_ENTRC_LO->Value == 0 ||
  728. PIS_TYPE->ItemIndex < 0 )
  729. {
  730. Application->MessageBox(L"[*]항목은 필수 입력 항목입니다.\r\n모두 입력후 진행해 주세요.",
  731. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  732. return;
  733. }
  734. String sNmbr = PRK_PLCE_NMBR->Text;
  735. int nNmbr = sNmbr.ToInt();
  736. String sId = PRK_PLCE_MANAGE_NO->Text.Trim();
  737. PrkPlceManager->FLists.Lock();
  738. FOR_STL(TPrkPlce*, pTmpObj, PrkPlceManager->FLists)
  739. {
  740. if (pTmpObj->DEL_YN == "Y") continue;
  741. if (pTmpObj->CTLR_NMBR == sNmbr) continue; //자기자신
  742. if (pTmpObj->CTLR_ID == sId)
  743. {
  744. Application->MessageBox(L"주차장 ID가 이미 사용 중입니다. 주차장 ID를 확인하세요.",
  745. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  746. return;
  747. }
  748. }
  749. PrkPlceManager->FLists.UnLock();
  750. TPrkPlce *pObj;
  751. if (FNewDb)
  752. pObj = new TPrkPlce();
  753. else
  754. pObj = PrkPlceManager->FLists.Find(sNmbr);
  755. if (pObj)
  756. {
  757. pObj->CTLR_NMBR = PRK_PLCE_NMBR->Text;
  758. pObj->CTLR_ID = PRK_PLCE_MANAGE_NO->Text;
  759. pObj->PRK_PLCE_STTUS_VER = PRK_PLCE_STTUS_VER->Text;
  760. pObj->NAME = PRK_PLCE_NM->Text;
  761. pObj->VMS_DSPL_NM = pObj->NAME;
  762. pObj->ISTL_LCTN_ADDR = PRK_PLCE_ADRES->Text;
  763. pObj->PRK_PLCE_INSTL_DE = PRK_PLCE_INSTL_DE->Text;
  764. pObj->PRK_PLCE_ABL_DE = PRK_PLCE_ABL_DE->Text;
  765. pObj->PRK_PLCE_ENTRC_NM = PRK_PLCE_ENTRC_NM->Text;
  766. pObj->Y_CRDN = PRK_PLCE_ENTRC_LA->Value;
  767. pObj->X_CRDN = PRK_PLCE_ENTRC_LO->Value;
  768. pObj->PRK_PLCE_ENTRC_EXTTY = APP_GetCode(PRK_PLCE_ENTRC_EXTTY).ToIntDef(0);
  769. pObj->PARKING_TY = APP_GetCode(PARKING_TY).ToIntDef(0);
  770. pObj->PARKING_US = APP_GetCode(PARKING_US).ToIntDef(0);
  771. pObj->AR_LEVEL_SE = APP_GetCode(AR_LEVEL_SE).ToIntDef(0);
  772. //pObj->PRK_PLCE_IMAGE_DATA = PRK_PLCE_IMAGE_DATA;
  773. pObj->PRK_PLCE_IMAGE_TYPE = PRK_PLCE_IMAGE_TYPE->Text.ToIntDef(0);
  774. pObj->PRK_PLCE_IMAGE_DC = PRK_PLCE_IMAGE_DC->Text;
  775. pObj->SYS_NE = SYS_NE->Text;
  776. pObj->PARKING_CNTRL_SYS_INSTL_DE = PARKING_CNTRL_SYS_INSTL_DE->Text;
  777. pObj->RELATION_LAW_AND_ORDINANCES = RELATION_LAW_AND_ORDINANCES->Text;
  778. // 이용가능 차량유형
  779. String prkAvailCarType = "";
  780. for (int ii = 0; ii <= 6; ii++) {
  781. TcxCheckBox *pCheckBox = (TcxCheckBox*)FindComponent("PRK_AVAIL_CARTYPE"+String(ii));
  782. if (pCheckBox) {
  783. prkAvailCarType += pCheckBox->Checked ? "1" : "0";
  784. }
  785. }
  786. pObj->PRK_AVAIL_CARTYPE = prkAvailCarType;
  787. pObj->PRK_CMPRT_CO = PRK_CMPRT_CO->Value;
  788. pObj->COLCT_DEVICE_INSTL_AT = COLCT_DEVICE_INSTL_AT->Checked ? 1 : 0;
  789. pObj->MASTER_CONTROLLER = MASTER_CONTROLLER->Value;
  790. pObj->SLAVE_CONTROLLER = SLAVE_CONTROLLER->Value;
  791. pObj->COLCT_DEVICE_QTY = COLCT_DEVICE_QTY->Value;
  792. // 주차구획 단위정보 수집장치 정보
  793. String colctDeviceKnd = "";
  794. for (int ii = 0; ii <= 5; ii++) {
  795. TcxCheckBox *pCheckBox = (TcxCheckBox*)FindComponent("COLCT_DEVICE_KND"+String(ii));
  796. if (pCheckBox) {
  797. colctDeviceKnd += pCheckBox->Checked ? "1" : "0";
  798. }
  799. }
  800. pObj->COLCT_DEVICE_KND = colctDeviceKnd;
  801. pObj->COLCT_DEVICE_INSTL_DE = COLCT_DEVICE_INSTL_DE->Text;
  802. pObj->CRM_PRV_CCTV_INSTL_AT = CRM_PRV_CCTV_INSTL_AT->Checked ? 1 : 0;
  803. pObj->CRM_PRV_CCTV_INSTL_CO = CRM_PRV_CCTV_INSTL_CO->Value;
  804. if (pObj->INFO_CREATE_TIME == "") {
  805. pObj->INFO_CREATE_TIME = Now().FormatString("YYYYMMDDHHNNSS");
  806. }
  807. pObj->TYPE_CD = APP_GetCode(PIS_TYPE);
  808. pObj->ISTL_LCTN_NM = pObj->NAME;
  809. pObj->X_CRDN = pObj->X_CRDN;
  810. pObj->Y_CRDN = pObj->Y_CRDN;
  811. pObj->DEL_YN = "N";
  812. pObj->Completed = true;
  813. pObj->MEM_DEL = "N";
  814. // 운영정보 설정
  815. pObj->FOPR->PRK_PLCE_NMBR = pObj->CTLR_NMBR;
  816. pObj->FOPR->PRK_PLCE_OPR_VER = PRK_PLCE_OPR_VER->Text;
  817. pObj->FOPR->CMPT_INST_NM = CMPT_INST_NM->Text;
  818. pObj->FOPR->OPER_DEPT_NM = OPER_DEPT_NM->Text;
  819. pObj->FOPR->OPER_PERSON_NM = OPER_PERSON_NM->Text;
  820. pObj->FOPR->OPER_CTT_PC_TEL = OPER_CTT_PC_TEL->Text;
  821. pObj->FOPR->OPER_CTT_PC_EMAIL = OPER_CTT_PC_EMAIL->Text;
  822. pObj->FOPR->NO_DRV_DAY_OPERTN_AT = APP_GetCode(NO_DRV_DAY_OPERTN_AT).ToIntDef(0);
  823. pObj->FOPR->OPERTN_BS_FREE_TIME = OPERTN_BS_FREE_TIME->Text;
  824. pObj->FOPR->OPN_CODE = OPN_CODE->Checked ? 1 : 0;
  825. pObj->FOPR->PARKING_CHRGE_EXCCLC_MTHD = APP_GetCode(PARKING_CHRGE_EXCCLC_MTHD).ToIntDef(0);
  826. // // 주차요금 지불수단
  827. String sChrgePymnt = "";
  828. for (int ii = 1; ii <= 8; ii++) {
  829. TcxCheckBox *pCheckBox = (TcxCheckBox*)FindComponent("PARKING_CHRGE_PYMNT_MN"+String(ii));
  830. if (pCheckBox) {
  831. sChrgePymnt += pCheckBox->Checked ? "1" : "0";
  832. }
  833. }
  834. pObj->FOPR->PARKING_CHRGE_PYMNT_MN = sChrgePymnt;
  835. pObj->FOPR->PARKING_RESVE_OPERTN_AT = APP_GetCode(PARKING_RESVE_OPERTN_AT).ToIntDef(0);
  836. pObj->FOPR->PARTCLR_MATTER = PARTCLR_MATTER->Text;
  837. if (pObj->FOPR->INFO_CREATE_TIME == "") {
  838. pObj->FOPR->INFO_CREATE_TIME = Now().FormatString("YYYYMMDDHHNNSS");
  839. }
  840. // 전용주차구역정보
  841. for (int ii = 0; ii <= 7; ii++) {
  842. int VHCTY_AR_PRK_CMPRT_CO = 0;
  843. TcxSpinEdit *pEdit = (TcxSpinEdit*)FindComponent("VHCTY_AR_SE"+String(ii));
  844. if (pEdit) {
  845. VHCTY_AR_PRK_CMPRT_CO = pEdit->Value;
  846. }
  847. TPrkPlcePrv *pPrv = pObj->FPrvs.Find(ii);
  848. if (pPrv) {
  849. pPrv->VHCTY_AR_PRK_CMPRT_CO = VHCTY_AR_PRK_CMPRT_CO;
  850. }
  851. else {
  852. pPrv = new TPrkPlcePrv();
  853. pPrv->PRK_PLCE_NMBR = pObj->CTLR_NMBR;
  854. pPrv->VHCTY_AR_SE = ii;
  855. pPrv->VHCTY_AR_PRK_CMPRT_CO = VHCTY_AR_PRK_CMPRT_CO;
  856. pPrv->VHCTY_AR_REMNDR_PRK_CMPRT_CO = 0;
  857. pObj->FPrvs.Push(pPrv->VHCTY_AR_SE, pPrv);
  858. }
  859. }
  860. bool bResult;
  861. if (FNewDb)
  862. {
  863. bResult = PrkPlceManager->InsertPrkPlce(pObj);
  864. if (bResult)
  865. {
  866. PrkPlceManager->FLists.Push(sNmbr, pObj);
  867. }
  868. }
  869. else
  870. {
  871. bResult = PrkPlceManager->UpdatePrkPlce(pObj);
  872. }
  873. if (bResult)
  874. {
  875. UpdatePrkPlceImage(pObj);
  876. MergePrkPlcePrv(pObj);
  877. MergePrkPlceFlr(pObj);
  878. MergePrkPlceFlrDev(pObj);
  879. MergePrkPlceOprChrge(pObj);
  880. MergePrkPlceOprSched(pObj);
  881. Application->MessageBox(FrmLang->lblDbSave->Caption.c_str(),//L"주차장 정보저장\r\n주차장 정보를 저장 하였습니다.",
  882. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  883. FUpdate = true;
  884. UpdateList();
  885. UpdateIcon();
  886. CMM_SetGridRow(CxList, TvList, sNmbr, Column01->Index);
  887. DisplayInfo(pObj, true);
  888. }
  889. }
  890. }
  891. //---------------------------------------------------------------------------
  892. void __fastcall TPRK0010M::OpenMapCallback(TObject *ASender, const String AFunc, const String AArgs, const bool AFirst)
  893. {
  894. try
  895. {
  896. if (AFirst)
  897. {
  898. //지도를 편집모드로 변경
  899. sJs.printf(L"setEditMode(%d, 1)", FLayerIdx);
  900. FRAMEOpenMap1->ExecScript(sJs);
  901. //시설물아이콘 등록
  902. UpdateIcon();
  903. sJs.printf(L"extentLayer(%d)", FLayerIdx);
  904. FRAMEOpenMap1->ExecScript(sJs);
  905. return;
  906. }
  907. if (AFunc.Pos("onfacilitydragend"))
  908. {
  909. TStringList *pStringList = new TStringList;
  910. pStringList->CommaText = AArgs;
  911. try
  912. {
  913. String sNmbr = pStringList->Strings[0];
  914. String sCenterLat = pStringList->Strings[1];
  915. String sCenterLng = pStringList->Strings[2];
  916. PRK_PLCE_ENTRC_LA->Value = sCenterLat.ToDouble();
  917. PRK_PLCE_ENTRC_LO->Value = sCenterLng.ToDouble();
  918. }
  919. catch(Exception &e)
  920. {
  921. }
  922. delete pStringList;
  923. }
  924. }
  925. catch(Exception &exception)
  926. {
  927. }
  928. }
  929. //---------------------------------------------------------------------------
  930. void __fastcall TPRK0010M::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  931. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  932. {
  933. if (!ACellViewInfo) return;
  934. int nRow = TvList->DataController->FocusedRecordIndex;
  935. if( nRow <= -1 )
  936. return;
  937. int nMemPtr = TvList->DataController->Values[nRow][Column99->Index];
  938. TPrkPlce* pObj = (TPrkPlce*)nMemPtr;
  939. DisplayInfo(pObj, true);
  940. }
  941. //---------------------------------------------------------------------------
  942. void __fastcall TPRK0010M::BtnPRK_PLCE_IMAGE_DATAClick(TObject *Sender)
  943. {
  944. String sId = PRK_PLCE_NMBR->Text;
  945. TPrkPlce *pObj = PrkPlceManager->FLists.Find(sId);
  946. if (pObj == NULL) {
  947. return;
  948. }
  949. TPRK0011M *pSelForm = NULL;
  950. try
  951. {
  952. try {
  953. pSelForm = new TPRK0011M(this, PRK_PLCE_IMAGE_DATA, PRK_PLCE_IMAGE_TYPE->Text);
  954. pSelForm->ShowModal();
  955. if (pSelForm->FSelected)
  956. {
  957. try {
  958. PRK_PLCE_IMAGE_DATA->Picture->Bitmap->FreeImage();
  959. PRK_PLCE_IMAGE_DATA->Picture->Bitmap = NULL;
  960. PRK_PLCE_IMAGE_DATA->Picture->Assign(pSelForm->PRK_PLCE_IMAGE_DATA->Picture);
  961. PRK_PLCE_IMAGE_TYPE->Text = pSelForm->FPRK_PLCE_IMAGE_TYPE;
  962. } catch(Exception &e) {}
  963. }
  964. } catch(...) { }
  965. }
  966. __finally
  967. {
  968. if (pSelForm) delete pSelForm;
  969. }
  970. }
  971. //---------------------------------------------------------------------------
  972. void __fastcall TPRK0010M::BtnOPR_CHRGEClick(TObject *Sender)
  973. {
  974. String sId = PRK_PLCE_NMBR->Text;
  975. TPrkPlce *pObj = PrkPlceManager->FLists.Find(sId);
  976. if (pObj == NULL) {
  977. return;
  978. }
  979. TPRK0012M *pSelForm = NULL;
  980. try
  981. {
  982. try {
  983. pSelForm = new TPRK0012M(this, pObj);
  984. FOR_STL(TPrkPlceOprChrge*, pChrge, FChrges) {
  985. TcxSpinEdit *pBsTime = (TcxSpinEdit*)pSelForm->FindComponent("BS_TIME" + String(pChrge->CHRGE));
  986. TcxSpinEdit *pBsChrge = (TcxSpinEdit*)pSelForm->FindComponent("BS_CHRGE" + String(pChrge->CHRGE));
  987. TcxSpinEdit *pAddTime = (TcxSpinEdit*)pSelForm->FindComponent("ADIT_UNIT_TIME" + String(pChrge->CHRGE));
  988. TcxSpinEdit *pAddChrge = (TcxSpinEdit*)pSelForm->FindComponent("ADIT_UNIT_CHRGE" + String(pChrge->CHRGE));
  989. if (pBsTime) pBsTime->Value = pChrge->PARKING_CHRGE_BS_TIME;
  990. if (pBsChrge) pBsChrge->Value = pChrge->PARKING_CHRGE_BS_CHRGE;
  991. if (pAddTime) pAddTime->Value = pChrge->PARKING_CHRGE_ADIT_UNIT_TIME;
  992. if (pAddChrge) pAddChrge->Value = pChrge->PARKING_CHRGE_ADIT_UNIT_CHRGE;
  993. }
  994. pSelForm->ShowModal();
  995. if (pSelForm->FSelected)
  996. {
  997. FChrges.Clear();
  998. for (int ii = 1; ii <= 4; ii++) {
  999. TcxSpinEdit *pBsTime = (TcxSpinEdit*)pSelForm->FindComponent("BS_TIME" + String(ii));
  1000. TcxSpinEdit *pBsChrge = (TcxSpinEdit*)pSelForm->FindComponent("BS_CHRGE" + String(ii));
  1001. TcxSpinEdit *pAddTime = (TcxSpinEdit*)pSelForm->FindComponent("ADIT_UNIT_TIME" + String(ii));
  1002. TcxSpinEdit *pAddChrge = (TcxSpinEdit*)pSelForm->FindComponent("ADIT_UNIT_CHRGE" + String(ii));
  1003. if (pBsTime && pBsChrge && pAddTime && pAddChrge) {
  1004. if (pBsTime->Value > 0 || pBsChrge->Value > 0 || pAddTime->Value > 0 || pAddChrge->Value > 0) {
  1005. TPrkPlceOprChrge* pChrge = new TPrkPlceOprChrge();
  1006. pChrge->PRK_PLCE_NMBR = sId;
  1007. pChrge->CHRGE = ii;
  1008. pChrge->PARKING_CHRGE_BS_TIME = pBsTime->Value;
  1009. pChrge->PARKING_CHRGE_BS_CHRGE = pBsChrge->Value;
  1010. pChrge->PARKING_CHRGE_ADIT_UNIT_TIME = pAddTime->Value;
  1011. pChrge->PARKING_CHRGE_ADIT_UNIT_CHRGE = pAddChrge->Value;
  1012. FChrges.Push(pChrge->CHRGE, pChrge);
  1013. if (ii == 1) // 일반요금
  1014. {
  1015. PARKING_CHRGE_BS_TIME->Value = pChrge->PARKING_CHRGE_BS_TIME;
  1016. PARKING_CHRGE_BS_CHRGE->Value = pChrge->PARKING_CHRGE_BS_CHRGE;
  1017. PARKING_CHRGE_ADIT_UNIT_TIME->Value = pChrge->PARKING_CHRGE_ADIT_UNIT_TIME;
  1018. PARKING_CHRGE_ADIT_UNIT_CHRGE->Value = pChrge->PARKING_CHRGE_ADIT_UNIT_CHRGE;
  1019. }
  1020. }
  1021. }
  1022. }
  1023. }
  1024. } catch(...) { }
  1025. }
  1026. __finally
  1027. {
  1028. if (pSelForm) delete pSelForm;
  1029. }
  1030. }
  1031. //---------------------------------------------------------------------------
  1032. void __fastcall TPRK0010M::BtnOPR_SCHEDClick(TObject *Sender)
  1033. {
  1034. String sId = PRK_PLCE_NMBR->Text;
  1035. TPrkPlce *pObj = PrkPlceManager->FLists.Find(sId);
  1036. if (pObj == NULL) {
  1037. return;
  1038. }
  1039. TPRK0013M *pSelForm = NULL;
  1040. try
  1041. {
  1042. try {
  1043. pSelForm = new TPRK0013M(this, pObj);
  1044. TItsCode *pCode = ItsCodeManager->FLists.Find("PRKCH");
  1045. if (pCode)
  1046. {
  1047. for (int ii = 1; ii <= 8; ii++) {
  1048. TcxComboBox *pCombo = (TcxComboBox*)pSelForm->FindComponent("CHRGE_LEVY_AT" + String(ii));
  1049. if (pCombo) {
  1050. pCombo->Properties->Items->Clear();
  1051. FOR_STL(TItsSubCode *, pSubCode, pCode->FSubLists)
  1052. {
  1053. if (pSubCode->USE_YN == "N") continue;
  1054. pCombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  1055. }
  1056. pCombo->ItemIndex = pCode->FSubLists.Size() - 1;
  1057. }
  1058. }
  1059. }
  1060. FOR_STL(TPrkPlceOprSched*, pSched, FScheds) {
  1061. TcxTextEdit *pStartTime = (TcxTextEdit*)pSelForm->FindComponent("START_TIME" + String(pSched->SCHED));
  1062. TcxTextEdit *pEndTime = (TcxTextEdit*)pSelForm->FindComponent("END_TIME" + String(pSched->SCHED));
  1063. TcxComboBox *pLevyAt = (TcxComboBox*)pSelForm->FindComponent("CHRGE_LEVY_AT" + String(pSched->SCHED));
  1064. if (pStartTime) pStartTime->Text = pSched->OPERTN_START_TIME;
  1065. if (pEndTime) pEndTime->Text = pSched->OPERTN_END_TIME;
  1066. if (pLevyAt) CMM_SetComboBoxItem(pLevyAt, pSched->PARKING_CHRGE_LEVY_AT);
  1067. }
  1068. pSelForm->ShowModal();
  1069. if (pSelForm->FSelected)
  1070. {
  1071. FScheds.Clear();
  1072. for (int ii = 1; ii <= 8; ii++) {
  1073. TcxTextEdit *pStartTime = (TcxTextEdit*)pSelForm->FindComponent("START_TIME" + String(ii));
  1074. TcxTextEdit *pEndTime = (TcxTextEdit*)pSelForm->FindComponent("END_TIME" + String(ii));
  1075. TcxComboBox *pLevyAt = (TcxComboBox*)pSelForm->FindComponent("CHRGE_LEVY_AT" + String(ii));
  1076. if (pStartTime && pEndTime && pLevyAt) {
  1077. String sLevyAt = APP_GetCode(pLevyAt);
  1078. if (sLevyAt == "9") {
  1079. continue; // 사용안함
  1080. }
  1081. TPrkPlceOprSched* pSched = new TPrkPlceOprSched();
  1082. pSched->PRK_PLCE_NMBR = sId;
  1083. pSched->SCHED = ii;
  1084. pSched->OPERTN_START_TIME = pStartTime->Text;
  1085. pSched->OPERTN_END_TIME = pEndTime->Text;
  1086. pSched->PARKING_CHRGE_LEVY_AT = sLevyAt.ToIntDef(0);
  1087. FScheds.Push(pSched->SCHED, pSched);
  1088. }
  1089. }
  1090. }
  1091. } catch(...) { }
  1092. }
  1093. __finally
  1094. {
  1095. if (pSelForm) delete pSelForm;
  1096. }
  1097. }
  1098. //---------------------------------------------------------------------------
  1099. void __fastcall TPRK0010M::BtnFLR_NOClick(TObject *Sender)
  1100. {
  1101. String sId = PRK_PLCE_NMBR->Text;
  1102. TPrkPlce *pObj = PrkPlceManager->FLists.Find(sId);
  1103. if (pObj == NULL) {
  1104. return;
  1105. }
  1106. TPRK0014M *pSelForm = NULL;
  1107. try
  1108. {
  1109. try {
  1110. pSelForm = new TPRK0014M(this, pObj);
  1111. CMM_ClearGridTableView(pSelForm->TvFlrNo);
  1112. int nRow = 0;
  1113. try
  1114. {
  1115. TcxDataController *pGDC = pSelForm->TvFlrNo->DataController;
  1116. pSelForm->TvFlrNo->BeginUpdate();
  1117. FOR_STL(TPrkPlceFlr*, pObj, FFlrs)
  1118. {
  1119. nRow = pGDC->AppendRecord();
  1120. pGDC->Values[nRow][pSelForm->Col02->Index] = pObj->FLR_NO;
  1121. pGDC->Values[nRow][pSelForm->Col03->Index] = pObj->FLR_PRK_CMPRT_CO;
  1122. }
  1123. }
  1124. __finally
  1125. {
  1126. pSelForm->TvFlrNo->EndUpdate();
  1127. pSelForm->TvFlrNo->DataController->GotoFirst();
  1128. pSelForm->TvFlrNo->DataController->FocusedRecordIndex = 0;
  1129. }
  1130. pSelForm->ShowModal();
  1131. if (pSelForm->FSelected)
  1132. {
  1133. FFlrs.Clear();
  1134. try {
  1135. pSelForm->TvFlrNo->BeginUpdate();
  1136. for (int ii = 0; ii < pSelForm->TvFlrNo->DataController->RecordCount; ii++)
  1137. {
  1138. String sFlrNo = VarToStr(pSelForm->TvFlrNo->DataController->Values[ii][pSelForm->Col02->Index]);
  1139. String sFlrNoCo = VarToStr(pSelForm->TvFlrNo->DataController->Values[ii][pSelForm->Col03->Index]);
  1140. TPrkPlceFlr* pFlr = new TPrkPlceFlr();
  1141. pFlr->PRK_PLCE_NMBR = sId;
  1142. pFlr->FLR_NO = sFlrNo;
  1143. pFlr->FLR_PRK_CMPRT_CO = sFlrNoCo.ToIntDef(0);
  1144. FFlrs.Push(pFlr->FLR_NO, pFlr);
  1145. }
  1146. }
  1147. __finally
  1148. {
  1149. pSelForm->TvFlrNo->EndUpdate();
  1150. }
  1151. }
  1152. } catch(...) { }
  1153. }
  1154. __finally
  1155. {
  1156. if (pSelForm) delete pSelForm;
  1157. }
  1158. }
  1159. //---------------------------------------------------------------------------
  1160. void __fastcall TPRK0010M::LoadPrkPlceImage(String APrkNmbr)
  1161. {
  1162. String sQry;
  1163. TADOQuery *pADO = NULL;
  1164. try {
  1165. PRK_PLCE_IMAGE_DATA->Picture->Bitmap->FreeImage();
  1166. PRK_PLCE_IMAGE_DATA->Picture->Bitmap = NULL;
  1167. } catch(Exception &e) {}
  1168. sQry = "SELECT PRK_PLCE_IMAGE_TYPE, \r\n"
  1169. " PRK_PLCE_IMAGE_DATA \r\n"
  1170. " FROM TB_PRK_PLCE \r\n"
  1171. " WHERE PRK_PLCE_NMBR = :p01 \r\n";
  1172. try
  1173. {
  1174. try
  1175. {
  1176. pADO = new TADOQuery(NULL);
  1177. pADO->Close();
  1178. pADO->Connection = ITSDb_GetConnection();
  1179. ITSDb_SQLText(pADO, sQry);
  1180. ITSDb_SQLBind(pADO, "p01", APrkNmbr);
  1181. ITSDb_SQLOpen(pADO);
  1182. for( ; !pADO->Eof; pADO->Next())
  1183. {
  1184. int PRK_PLCE_IMAGE_TYPE = pADO->FieldByName("PRK_PLCE_IMAGE_TYPE")->AsInteger;
  1185. TMemoryStream *pImgStream = new TMemoryStream();
  1186. pImgStream->LoadFromStream(pADO->CreateBlobStream(pADO->FieldByName("PRK_PLCE_IMAGE_DATA"), bmRead));
  1187. AssignPrkPlceImage(PRK_PLCE_IMAGE_TYPE, pImgStream);
  1188. }
  1189. }
  1190. catch(EDatabaseError &E)
  1191. {
  1192. DBERRORMSG("TPRK0010M::LoadPrkPlceImage", String(E.ClassName()), E.Message, sQry);
  1193. throw Exception(String(E.ClassName()) + E.Message);
  1194. }
  1195. catch(Exception &e)
  1196. {
  1197. DBERRORMSG("TPRK0010M::LoadPrkPlceImage", String(e.ClassName()), e.Message, sQry);
  1198. throw Exception(String(e.ClassName()) + e.Message);
  1199. }
  1200. }
  1201. __finally
  1202. {
  1203. if (pADO)
  1204. {
  1205. pADO->Close();
  1206. delete pADO;
  1207. }
  1208. }
  1209. }
  1210. //---------------------------------------------------------------------------
  1211. bool __fastcall TPRK0010M::AssignPrkPlceImage(int AImageType, TMemoryStream *AImgStream)
  1212. {
  1213. if (AImgStream == NULL || AImgStream->Size <= 30) {
  1214. return false;
  1215. }
  1216. try {
  1217. try {
  1218. if (AImageType == 3) {
  1219. TdxPNGImage *img = new TdxPNGImage;
  1220. img->LoadFromStream(AImgStream);
  1221. PRK_PLCE_IMAGE_DATA->Picture->Bitmap->Assign(img);
  1222. PRK_PLCE_IMAGE_DATA->Picture->Bitmap->PixelFormat = pf24bit;
  1223. SAFE_DELETE(img);
  1224. }
  1225. else
  1226. if (AImageType == 2) {
  1227. TJPEGImage *img = new TJPEGImage();
  1228. img->LoadFromStream(AImgStream);
  1229. PRK_PLCE_IMAGE_DATA->Picture->Bitmap->Assign(img);
  1230. PRK_PLCE_IMAGE_DATA->Picture->Bitmap->PixelFormat = pf24bit;
  1231. SAFE_DELETE(img);
  1232. }
  1233. else
  1234. if (AImageType == 0) {
  1235. Graphics::TBitmap *img = new Graphics::TBitmap;
  1236. img->LoadFromStream(AImgStream);
  1237. PRK_PLCE_IMAGE_DATA->Picture->Bitmap->Assign(img);
  1238. SAFE_DELETE(img);
  1239. }
  1240. else {
  1241. return false;
  1242. }
  1243. } catch(Exception &e) {
  1244. return false;
  1245. }
  1246. } __finally {
  1247. SAFE_DELETE(AImgStream);
  1248. }
  1249. return true;
  1250. }
  1251. //---------------------------------------------------------------------------
  1252. bool __fastcall TPRK0010M::UpdatePrkPlceImage(TPrkPlce *AObj)
  1253. {
  1254. String sQry;
  1255. TADOQuery *pADO = NULL;
  1256. TMemoryStream *dataStream = new TMemoryStream();
  1257. PRK_PLCE_IMAGE_DATA->Picture->Bitmap->SaveToStream(dataStream);
  1258. if (dataStream == NULL || dataStream->Size <= 32) {
  1259. return true;
  1260. }
  1261. sQry = "UPDATE TB_PRK_PLCE \r\n"
  1262. " SET PRK_PLCE_IMAGE_DATA = :p02 \r\n"
  1263. " WHERE PRK_PLCE_NMBR = :p01 \r\n";
  1264. try
  1265. {
  1266. try
  1267. {
  1268. pADO = new TADOQuery(NULL);
  1269. pADO->Close();
  1270. pADO->Connection = ITSDb_GetConnection();
  1271. ITSDb_SQLText(pADO, sQry);
  1272. ITSDb_SQLBind(pADO, "p01", AObj->CTLR_NMBR);
  1273. pADO->Parameters->ParamByName("p02")->LoadFromStream(dataStream, ftBlob);
  1274. pADO->ExecSQL();
  1275. return true;
  1276. }
  1277. catch(EDatabaseError &E)
  1278. {
  1279. DBERRORMSG("TPRK0010M::UpdatePrkPlceImage", String(E.ClassName()), E.Message, sQry);
  1280. throw Exception(String(E.ClassName()) + E.Message);
  1281. }
  1282. catch(Exception &e)
  1283. {
  1284. DBERRORMSG("TPRK0010M::UpdatePrkPlceImage", String(e.ClassName()), e.Message, sQry);
  1285. throw Exception(String(e.ClassName()) + e.Message);
  1286. }
  1287. }
  1288. __finally
  1289. {
  1290. if (pADO)
  1291. {
  1292. pADO->Close();
  1293. delete pADO;
  1294. }
  1295. if (dataStream) delete dataStream;
  1296. dataStream = NULL;
  1297. }
  1298. return false;
  1299. }
  1300. //---------------------------------------------------------------------------
  1301. bool __fastcall TPRK0010M::MergePrkPlcePrv(TPrkPlce *AObj)
  1302. {
  1303. String sQry;
  1304. TADOQuery *pADO = NULL;
  1305. sQry = "MERGE INTO TB_PRK_PLCE_PRV L \r\n"
  1306. "USING (SELECT \r\n"
  1307. " :p01 AS PRK_PLCE_NMBR, \r\n"
  1308. " :p02 AS VHCTY_AR_SE, \r\n"
  1309. " :p03 AS VHCTY_AR_PRK_CMPRT_CO, \r\n"
  1310. " 0 AS VHCTY_AR_REMNDR_PRK_CMPRT_CO \r\n"
  1311. " FROM DUAL) M \r\n"
  1312. " ON (L.PRK_PLCE_NMBR = M.PRK_PLCE_NMBR \r\n"
  1313. " AND L.VHCTY_AR_SE = M.VHCTY_AR_SE ) \r\n"
  1314. "WHEN MATCHED THEN \r\n"
  1315. " UPDATE SET \r\n"
  1316. " L.VHCTY_AR_PRK_CMPRT_CO = M.VHCTY_AR_PRK_CMPRT_CO \r\n"
  1317. "WHEN NOT MATCHED THEN \r\n"
  1318. " INSERT ( \r\n"
  1319. " PRK_PLCE_NMBR, \r\n"
  1320. " VHCTY_AR_SE, \r\n"
  1321. " VHCTY_AR_PRK_CMPRT_CO, \r\n"
  1322. " VHCTY_AR_REMNDR_PRK_CMPRT_CO ) \r\n"
  1323. " VALUES ( \r\n"
  1324. " M.PRK_PLCE_NMBR, \r\n"
  1325. " M.VHCTY_AR_SE, \r\n"
  1326. " M.VHCTY_AR_PRK_CMPRT_CO, \r\n"
  1327. " M.VHCTY_AR_REMNDR_PRK_CMPRT_CO ) \r\n";
  1328. try
  1329. {
  1330. try
  1331. {
  1332. pADO = new TADOQuery(NULL);
  1333. pADO->Close();
  1334. pADO->Connection = ITSDb_GetConnection();
  1335. pADO->SQL->Clear();
  1336. pADO->SQL->Text = sQry;
  1337. FOR_STL(TPrkPlcePrv*, pPrv, AObj->FPrvs) {
  1338. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_NMBR;
  1339. pADO->Parameters->ParamByName("p02")->Value = pPrv->VHCTY_AR_SE;
  1340. pADO->Parameters->ParamByName("p03")->Value = pPrv->VHCTY_AR_PRK_CMPRT_CO;
  1341. pADO->ExecSQL();
  1342. }
  1343. return true;
  1344. }
  1345. catch(EDatabaseError &E)
  1346. {
  1347. DBERRORMSG("TPRK0010M::MergePrkPlcePrv", String(E.ClassName()), E.Message, sQry);
  1348. throw Exception(String(E.ClassName()) + E.Message);
  1349. }
  1350. catch(Exception &e)
  1351. {
  1352. DBERRORMSG("TPRK0010M::MergePrkPlcePrv", String(e.ClassName()), e.Message, sQry);
  1353. throw Exception(String(e.ClassName()) + e.Message);
  1354. }
  1355. }
  1356. __finally
  1357. {
  1358. if (pADO)
  1359. {
  1360. pADO->Close();
  1361. delete pADO;
  1362. }
  1363. }
  1364. return false;
  1365. }
  1366. //---------------------------------------------------------------------------
  1367. bool __fastcall TPRK0010M::MergePrkPlceFlr(TPrkPlce *AObj)
  1368. {
  1369. String sQry;
  1370. TADOQuery *pADO = NULL;
  1371. try
  1372. {
  1373. try
  1374. {
  1375. pADO = new TADOQuery(NULL);
  1376. pADO->Close();
  1377. pADO->Connection = ITSDb_GetConnection();
  1378. pADO->SQL->Clear();
  1379. String sDelIds = "";
  1380. FOR_STL(TPrkPlceFlr*, pFlr, FFlrs)
  1381. {
  1382. if (sDelIds == "") {
  1383. sDelIds = "'" + pFlr->FLR_NO + "'";
  1384. } else {
  1385. sDelIds += ", '" + pFlr->FLR_NO + "'";
  1386. }
  1387. }
  1388. if (sDelIds == "") {
  1389. sQry = "DELETE TB_PRK_PLCE_FLR \r\n"
  1390. " WHERE PRK_PLCE_NMBR = :p01 \r\n";
  1391. }
  1392. else {
  1393. sQry = "DELETE TB_PRK_PLCE_FLR \r\n"
  1394. " WHERE PRK_PLCE_NMBR = :p01 \r\n"
  1395. " AND FLR_NO NOT IN (" + sDelIds + ")\r\n";
  1396. }
  1397. pADO->SQL->Text = sQry;
  1398. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_NMBR;
  1399. pADO->ExecSQL();
  1400. sQry = "MERGE INTO TB_PRK_PLCE_FLR L \r\n"
  1401. "USING (SELECT :p01 AS PRK_PLCE_NMBR, \r\n"
  1402. " :p02 AS FLR_NO, \r\n"
  1403. " :p03 AS FLR_PRK_CMPRT_CO \r\n"
  1404. " FROM DUAL) M \r\n"
  1405. " ON (L.PRK_PLCE_NMBR = M.PRK_PLCE_NMBR \r\n"
  1406. " AND L.FLR_NO = M.FLR_NO) \r\n"
  1407. "WHEN MATCHED THEN \r\n"
  1408. " UPDATE SET L.FLR_PRK_CMPRT_CO = M.FLR_PRK_CMPRT_CO \r\n"
  1409. "WHEN NOT MATCHED THEN \r\n"
  1410. " INSERT (PRK_PLCE_NMBR, \r\n"
  1411. " FLR_NO, \r\n"
  1412. " FLR_PRK_CMPRT_CO, \r\n"
  1413. " FLR_REMNDR_PRK_CMPRT_CO ) \r\n"
  1414. " VALUES (M.PRK_PLCE_NMBR, \r\n"
  1415. " M.FLR_NO, \r\n"
  1416. " M.FLR_PRK_CMPRT_CO, \r\n"
  1417. " 0 ) \r\n";
  1418. pADO->SQL->Text = sQry;
  1419. FOR_STL(TPrkPlceFlr*, pFlr, FFlrs)
  1420. {
  1421. pADO->Parameters->ParamByName("p01")->Value = pFlr->PRK_PLCE_NMBR;
  1422. pADO->Parameters->ParamByName("p02")->Value = pFlr->FLR_NO;
  1423. pADO->Parameters->ParamByName("p03")->Value = pFlr->FLR_PRK_CMPRT_CO;
  1424. pADO->ExecSQL();
  1425. }
  1426. AObj->FFlrs.Clear();
  1427. FOR_STL(TPrkPlceFlr*, pTmpFlr, FFlrs) {
  1428. TPrkPlceFlr* pFlr = new TPrkPlceFlr();
  1429. pFlr->PRK_PLCE_NMBR = pTmpFlr->PRK_PLCE_NMBR;
  1430. pFlr->FLR_NO = pTmpFlr->FLR_NO;
  1431. pFlr->FLR_PRK_CMPRT_CO = pTmpFlr->FLR_PRK_CMPRT_CO;
  1432. AObj->FFlrs.Push(pFlr->FLR_NO, pFlr);
  1433. }
  1434. return true;
  1435. }
  1436. catch(EDatabaseError &E)
  1437. {
  1438. DBERRORMSG("TPRK0010M::MergePrkPlceFlr", String(E.ClassName()), E.Message, sQry);
  1439. throw Exception(String(E.ClassName()) + E.Message);
  1440. }
  1441. catch(Exception &e)
  1442. {
  1443. DBERRORMSG("TPRK0010M::MergePrkPlceFlr", String(e.ClassName()), e.Message, sQry);
  1444. throw Exception(String(e.ClassName()) + e.Message);
  1445. }
  1446. }
  1447. __finally
  1448. {
  1449. if (pADO)
  1450. {
  1451. pADO->Close();
  1452. delete pADO;
  1453. }
  1454. }
  1455. return false;
  1456. }
  1457. //---------------------------------------------------------------------------
  1458. bool __fastcall TPRK0010M::MergePrkPlceFlrDev(TPrkPlce *AObj)
  1459. {
  1460. String sQry;
  1461. TADOQuery *pADO = NULL;
  1462. try
  1463. {
  1464. try
  1465. {
  1466. pADO = new TADOQuery(NULL);
  1467. pADO->Close();
  1468. pADO->Connection = ITSDb_GetConnection();
  1469. pADO->SQL->Clear();
  1470. String sDelIds = "";
  1471. FOR_STL(TPrkPlceFlr*, pFlr, FFlrs)
  1472. {
  1473. if (sDelIds == "") {
  1474. sDelIds = "'" + pFlr->FLR_NO + "'";
  1475. } else {
  1476. sDelIds += ", '" + pFlr->FLR_NO + "'";
  1477. }
  1478. }
  1479. sQry = "MERGE INTO TB_PRK_PLCE_FLR_DEV L \r\n"
  1480. "USING (SELECT :p01 AS PRK_PLCE_NMBR, \r\n"
  1481. " :p02 AS FLR_NO, \r\n"
  1482. " :p03 AS DEVICE_ID \r\n"
  1483. " FROM DUAL) M \r\n"
  1484. " ON (L.PRK_PLCE_NMBR = M.PRK_PLCE_NMBR \r\n"
  1485. " AND L.FLR_NO = M.FLR_NO \r\n"
  1486. " AND L.DEVICE_ID = M.DEVICE_ID) \r\n"
  1487. "WHEN NOT MATCHED THEN \r\n"
  1488. " INSERT (PRK_PLCE_NMBR, \r\n"
  1489. " FLR_NO, \r\n"
  1490. " DEVICE_ID ) \r\n"
  1491. " VALUES (M.PRK_PLCE_NMBR, \r\n"
  1492. " M.FLR_NO, \r\n"
  1493. " M.DEVICE_ID ) \r\n";
  1494. pADO->SQL->Text = sQry;
  1495. FOR_STL(TPrkPlceFlr*, pFlr, FFlrs)
  1496. {
  1497. for (int ii = 1; ii <= pFlr->FLR_PRK_CMPRT_CO; ii++) {
  1498. pADO->Parameters->ParamByName("p01")->Value = pFlr->PRK_PLCE_NMBR;
  1499. pADO->Parameters->ParamByName("p02")->Value = pFlr->FLR_NO;
  1500. pADO->Parameters->ParamByName("p03")->Value = ii;
  1501. pADO->ExecSQL();
  1502. }
  1503. }
  1504. return true;
  1505. }
  1506. catch(EDatabaseError &E)
  1507. {
  1508. DBERRORMSG("TPRK0010M::MergePrkPlceFlrDev", String(E.ClassName()), E.Message, sQry);
  1509. throw Exception(String(E.ClassName()) + E.Message);
  1510. }
  1511. catch(Exception &e)
  1512. {
  1513. DBERRORMSG("TPRK0010M::MergePrkPlceFlrDev", String(e.ClassName()), e.Message, sQry);
  1514. throw Exception(String(e.ClassName()) + e.Message);
  1515. }
  1516. }
  1517. __finally
  1518. {
  1519. if (pADO)
  1520. {
  1521. pADO->Close();
  1522. delete pADO;
  1523. }
  1524. }
  1525. return false;
  1526. }
  1527. //---------------------------------------------------------------------------
  1528. bool __fastcall TPRK0010M::MergePrkPlceOprChrge(TPrkPlce *AObj)
  1529. {
  1530. String sQry;
  1531. TADOQuery *pADO = NULL;
  1532. try
  1533. {
  1534. try
  1535. {
  1536. pADO = new TADOQuery(NULL);
  1537. pADO->Close();
  1538. pADO->Connection = ITSDb_GetConnection();
  1539. pADO->SQL->Clear();
  1540. sQry = "DELETE TB_PRK_PLCE_OPR_CHRGE \r\n"
  1541. " WHERE PRK_PLCE_NMBR = :p01 \r\n";
  1542. pADO->SQL->Text = sQry;
  1543. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_NMBR;
  1544. pADO->ExecSQL();
  1545. sQry = "MERGE INTO TB_PRK_PLCE_OPR_CHRGE L \r\n"
  1546. "USING (SELECT \r\n"
  1547. " :p01 AS PRK_PLCE_NMBR, \r\n"
  1548. " :p02 AS CHRGE, \r\n"
  1549. " :p03 AS PARKING_CHRGE_BS_TIME, \r\n"
  1550. " :p04 AS PARKING_CHRGE_BS_CHRGE, \r\n"
  1551. " :p05 AS PARKING_CHRGE_ADIT_UNIT_TIME, \r\n"
  1552. " :p06 AS PARKING_CHRGE_ADIT_UNIT_CHRGE \r\n"
  1553. " FROM DUAL) M \r\n"
  1554. " ON (L.PRK_PLCE_NMBR = M.PRK_PLCE_NMBR) \r\n"
  1555. "WHEN MATCHED THEN \r\n"
  1556. " UPDATE SET \r\n"
  1557. " L.CHRGE = M.CHRGE, \r\n"
  1558. " L.PARKING_CHRGE_BS_TIME = M.PARKING_CHRGE_BS_TIME, \r\n"
  1559. " L.PARKING_CHRGE_BS_CHRGE = M.PARKING_CHRGE_BS_CHRGE, \r\n"
  1560. " L.PARKING_CHRGE_ADIT_UNIT_TIME = M.PARKING_CHRGE_ADIT_UNIT_TIME, \r\n"
  1561. " L.PARKING_CHRGE_ADIT_UNIT_CHRGE = M.PARKING_CHRGE_ADIT_UNIT_CHRGE \r\n"
  1562. "WHEN NOT MATCHED THEN \r\n"
  1563. " INSERT ( \r\n"
  1564. " PRK_PLCE_NMBR, \r\n"
  1565. " CHRGE, \r\n"
  1566. " PARKING_CHRGE_BS_TIME, \r\n"
  1567. " PARKING_CHRGE_BS_CHRGE, \r\n"
  1568. " PARKING_CHRGE_ADIT_UNIT_TIME, \r\n"
  1569. " PARKING_CHRGE_ADIT_UNIT_CHRGE ) \r\n"
  1570. " VALUES ( \r\n"
  1571. " M.PRK_PLCE_NMBR, \r\n"
  1572. " M.CHRGE, \r\n"
  1573. " M.PARKING_CHRGE_BS_TIME, \r\n"
  1574. " M.PARKING_CHRGE_BS_CHRGE, \r\n"
  1575. " M.PARKING_CHRGE_ADIT_UNIT_TIME, \r\n"
  1576. " M.PARKING_CHRGE_ADIT_UNIT_CHRGE ) \r\n";
  1577. pADO->SQL->Text = sQry;
  1578. FOR_STL(TPrkPlceOprChrge*, pChrge, FChrges)
  1579. {
  1580. pADO->Parameters->ParamByName("p01")->Value = pChrge->PRK_PLCE_NMBR;
  1581. pADO->Parameters->ParamByName("p02")->Value = pChrge->CHRGE;
  1582. pADO->Parameters->ParamByName("p03")->Value = pChrge->PARKING_CHRGE_BS_TIME;
  1583. pADO->Parameters->ParamByName("p04")->Value = pChrge->PARKING_CHRGE_BS_CHRGE;
  1584. pADO->Parameters->ParamByName("p05")->Value = pChrge->PARKING_CHRGE_ADIT_UNIT_TIME;
  1585. pADO->Parameters->ParamByName("p06")->Value = pChrge->PARKING_CHRGE_ADIT_UNIT_CHRGE;
  1586. pADO->ExecSQL();
  1587. }
  1588. AObj->FOPR->FChrges.Clear();
  1589. FOR_STL(TPrkPlceOprChrge*, pTmpChrge, FChrges) {
  1590. TPrkPlceOprChrge* pChrge = new TPrkPlceOprChrge();
  1591. pChrge->PRK_PLCE_NMBR = pTmpChrge->PRK_PLCE_NMBR;
  1592. pChrge->CHRGE = pTmpChrge->CHRGE;
  1593. pChrge->PARKING_CHRGE_BS_TIME = pTmpChrge->PARKING_CHRGE_BS_TIME;
  1594. pChrge->PARKING_CHRGE_BS_CHRGE = pTmpChrge->PARKING_CHRGE_BS_CHRGE;
  1595. pChrge->PARKING_CHRGE_ADIT_UNIT_TIME = pTmpChrge->PARKING_CHRGE_ADIT_UNIT_TIME;
  1596. pChrge->PARKING_CHRGE_ADIT_UNIT_CHRGE = pTmpChrge->PARKING_CHRGE_ADIT_UNIT_CHRGE;
  1597. AObj->FOPR->FChrges.Push(pChrge->CHRGE, pChrge);
  1598. }
  1599. return true;
  1600. }
  1601. catch(EDatabaseError &E)
  1602. {
  1603. DBERRORMSG("TPRK0010M::MergePrkPlceOprChrge", String(E.ClassName()), E.Message, sQry);
  1604. throw Exception(String(E.ClassName()) + E.Message);
  1605. }
  1606. catch(Exception &e)
  1607. {
  1608. DBERRORMSG("TPRK0010M::MergePrkPlceOprChrge", String(e.ClassName()), e.Message, sQry);
  1609. throw Exception(String(e.ClassName()) + e.Message);
  1610. }
  1611. }
  1612. __finally
  1613. {
  1614. if (pADO)
  1615. {
  1616. pADO->Close();
  1617. delete pADO;
  1618. }
  1619. }
  1620. return false;
  1621. }
  1622. //---------------------------------------------------------------------------
  1623. bool __fastcall TPRK0010M::MergePrkPlceOprSched(TPrkPlce *AObj)
  1624. {
  1625. String sQry;
  1626. TADOQuery *pADO = NULL;
  1627. try
  1628. {
  1629. try
  1630. {
  1631. pADO = new TADOQuery(NULL);
  1632. pADO->Close();
  1633. pADO->Connection = ITSDb_GetConnection();
  1634. pADO->SQL->Clear();
  1635. sQry = "DELETE TB_PRK_PLCE_OPR_SCHED \r\n"
  1636. " WHERE PRK_PLCE_NMBR = :p01 \r\n";
  1637. pADO->SQL->Text = sQry;
  1638. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_NMBR;
  1639. pADO->ExecSQL();
  1640. sQry = "MERGE INTO TB_PRK_PLCE_OPR_SCHED L \r\n"
  1641. "USING (SELECT \r\n"
  1642. " :p01 AS PRK_PLCE_NMBR, \r\n"
  1643. " :p02 AS SCHED, \r\n"
  1644. " :p03 AS OPERTN_START_TIME, \r\n"
  1645. " :p04 AS OPERTN_END_TIME, \r\n"
  1646. " :p05 AS PARKING_CHRGE_LEVY_AT \r\n"
  1647. " FROM DUAL) M \r\n"
  1648. " ON (L.PRK_PLCE_NMBR = M.PRK_PLCE_NMBR) \r\n"
  1649. "WHEN MATCHED THEN \r\n"
  1650. " UPDATE SET \r\n"
  1651. " L.SCHED = M.SCHED, \r\n"
  1652. " L.OPERTN_START_TIME = M.OPERTN_START_TIME, \r\n"
  1653. " L.OPERTN_END_TIME = M.OPERTN_END_TIME, \r\n"
  1654. " L.PARKING_CHRGE_LEVY_AT = M.PARKING_CHRGE_LEVY_AT \r\n"
  1655. "WHEN NOT MATCHED THEN \r\n"
  1656. " INSERT ( \r\n"
  1657. " PRK_PLCE_NMBR, \r\n"
  1658. " SCHED, \r\n"
  1659. " OPERTN_START_TIME, \r\n"
  1660. " OPERTN_END_TIME, \r\n"
  1661. " PARKING_CHRGE_LEVY_AT ) \r\n"
  1662. " VALUES ( \r\n"
  1663. " M.PRK_PLCE_NMBR, \r\n"
  1664. " M.SCHED, \r\n"
  1665. " M.OPERTN_START_TIME, \r\n"
  1666. " M.OPERTN_END_TIME, \r\n"
  1667. " M.PARKING_CHRGE_LEVY_AT ) \r\n";
  1668. pADO->SQL->Text = sQry;
  1669. FOR_STL(TPrkPlceOprSched*, pSched, FScheds)
  1670. {
  1671. pADO->Parameters->ParamByName("p01")->Value = pSched->PRK_PLCE_NMBR;
  1672. pADO->Parameters->ParamByName("p02")->Value = pSched->SCHED;
  1673. pADO->Parameters->ParamByName("p03")->Value = pSched->OPERTN_START_TIME;
  1674. pADO->Parameters->ParamByName("p04")->Value = pSched->OPERTN_END_TIME;
  1675. pADO->Parameters->ParamByName("p05")->Value = pSched->PARKING_CHRGE_LEVY_AT;
  1676. pADO->ExecSQL();
  1677. }
  1678. AObj->FOPR->FScheds.Clear();
  1679. FOR_STL(TPrkPlceOprSched*, pTmpSched, FScheds) {
  1680. TPrkPlceOprSched* pSched = new TPrkPlceOprSched();
  1681. pSched->PRK_PLCE_NMBR = pTmpSched->PRK_PLCE_NMBR;
  1682. pSched->SCHED = pTmpSched->SCHED;
  1683. pSched->OPERTN_START_TIME = pTmpSched->OPERTN_START_TIME;
  1684. pSched->OPERTN_END_TIME = pTmpSched->OPERTN_END_TIME;
  1685. pSched->PARKING_CHRGE_LEVY_AT = pTmpSched->PARKING_CHRGE_LEVY_AT;
  1686. AObj->FOPR->FScheds.Push(pSched->SCHED, pSched);
  1687. }
  1688. return true;
  1689. }
  1690. catch(EDatabaseError &E)
  1691. {
  1692. DBERRORMSG("TPRK0010M::MergePrkPlceOprSched", String(E.ClassName()), E.Message, sQry);
  1693. throw Exception(String(E.ClassName()) + E.Message);
  1694. }
  1695. catch(Exception &e)
  1696. {
  1697. DBERRORMSG("TPRK0010M::MergePrkPlceOprSched", String(e.ClassName()), e.Message, sQry);
  1698. throw Exception(String(e.ClassName()) + e.Message);
  1699. }
  1700. }
  1701. __finally
  1702. {
  1703. if (pADO)
  1704. {
  1705. pADO->Close();
  1706. delete pADO;
  1707. }
  1708. }
  1709. return false;
  1710. }
  1711. //---------------------------------------------------------------------------