PRK0010MF.cpp 71 KB

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