SMS00202F.cpp 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "ITSDbF.h"
  6. #include "AppGlobalF.h"
  7. #pragma hdrstop
  8. #include "SMS00202F.h"
  9. #include "FrmSmsFailF.h"
  10. #include "FrmSmsGroupF.h"
  11. //---------------------------------------------------------------------------
  12. #pragma package(smart_init)
  13. #pragma link "cxButtons"
  14. #pragma link "cxCalc"
  15. #pragma link "cxClasses"
  16. #pragma link "cxContainer"
  17. #pragma link "cxControls"
  18. #pragma link "cxCustomData"
  19. #pragma link "cxData"
  20. #pragma link "cxDataStorage"
  21. #pragma link "cxDropDownEdit"
  22. #pragma link "cxEdit"
  23. #pragma link "cxFilter"
  24. #pragma link "cxGraphics"
  25. #pragma link "cxGrid"
  26. #pragma link "cxGridCustomTableView"
  27. #pragma link "cxGridCustomView"
  28. #pragma link "cxGridLevel"
  29. #pragma link "cxGridTableView"
  30. #pragma link "cxGroupBox"
  31. #pragma link "cxLookAndFeelPainters"
  32. #pragma link "cxLookAndFeels"
  33. #pragma link "cxMaskEdit"
  34. #pragma link "cxStyles"
  35. #pragma link "cxTextEdit"
  36. #pragma link "dxSkinBlack"
  37. #pragma link "dxSkinBlue"
  38. #pragma link "dxSkinCaramel"
  39. #pragma link "dxSkinCoffee"
  40. #pragma link "dxSkinDarkRoom"
  41. #pragma link "dxSkinDarkSide"
  42. #pragma link "dxSkinFoggy"
  43. #pragma link "dxSkinGlassOceans"
  44. #pragma link "dxSkiniMaginary"
  45. #pragma link "dxSkinLilian"
  46. #pragma link "dxSkinLiquidSky"
  47. #pragma link "dxSkinLondonLiquidSky"
  48. #pragma link "dxSkinMcSkin"
  49. #pragma link "dxSkinMoneyTwins"
  50. #pragma link "dxSkinOffice2007Black"
  51. #pragma link "dxSkinOffice2007Blue"
  52. #pragma link "dxSkinOffice2007Green"
  53. #pragma link "dxSkinOffice2007Pink"
  54. #pragma link "dxSkinOffice2007Silver"
  55. #pragma link "dxSkinOffice2010Black"
  56. #pragma link "dxSkinOffice2010Blue"
  57. #pragma link "dxSkinOffice2010Silver"
  58. #pragma link "dxSkinsCore"
  59. #pragma link "dxSkinscxPCPainter"
  60. #pragma link "dxSkinSeven"
  61. #pragma link "dxSkinSharp"
  62. #pragma link "dxSkinSilver"
  63. #pragma link "dxSkinStardust"
  64. #pragma link "cxGridBandedTableView"
  65. #pragma resource "*.dfm"
  66. TSMS00202 *SMS00202 = NULL;
  67. //---------------------------------------------------------------------------
  68. __fastcall TSMS00202::TSMS00202(TComponent* Owner, TForm *ParentForm)
  69. : TForm(Owner)
  70. {
  71. ITSSkin_Load(this);
  72. //CMM_LoadForm(g_sFormsDir, this);
  73. FFailId = "";
  74. FGropId = "";
  75. FGroupChanged = false;
  76. //cxGroupBox2->PanelStyle->Active = true;
  77. InitCode();
  78. }
  79. //---------------------------------------------------------------------------
  80. void __fastcall TSMS00202::FormClose(TObject *Sender, TCloseAction &Action)
  81. {
  82. CommClose();
  83. //SMS00202 = NULL;
  84. Action = caFree;
  85. }
  86. //---------------------------------------------------------------------------
  87. void __fastcall TSMS00202::CommClose()
  88. {
  89. }
  90. //---------------------------------------------------------------------------
  91. void __fastcall TSMS00202::FormDestroy(TObject *Sender)
  92. {
  93. try
  94. {
  95. }
  96. catch (...)
  97. {
  98. }
  99. }
  100. //---------------------------------------------------------------------------
  101. void __fastcall TSMS00202::FormShow(TObject *Sender)
  102. {
  103. Refresh();
  104. FormInit();
  105. Application->ProcessMessages();
  106. TmrShow->Enabled = true;
  107. }
  108. //---------------------------------------------------------------------------
  109. void __fastcall TSMS00202::FormInit()
  110. {
  111. }
  112. //---------------------------------------------------------------------------
  113. void __fastcall TSMS00202::TmrShowTimer(TObject *Sender)
  114. {
  115. TmrShow->Enabled = false;
  116. Application->ProcessMessages();
  117. DispData();
  118. }
  119. //---------------------------------------------------------------------------
  120. void __fastcall TSMS00202::BtnListAddClick(TObject *Sender)
  121. {
  122. // List Data Add
  123. TWaitCursor crs;
  124. TcxGridTableView *pTvList = TvList2;
  125. TcxDataController *pGDC = pTvList->DataController;
  126. if (pTvList->ViewData->RecordCount <= 0) return;
  127. int nRow = pGDC->FocusedRecordIndex;
  128. if (nRow < 0)
  129. {
  130. Application->MessageBox(L"추가할 대상 SMS 그룹을 먼저 선택하세요", L"SMS 그룹 목록 추가", MB_OK|MB_ICONWARNING|MB_APPLMODAL);
  131. return;
  132. }
  133. FGropId = VarToStr(pGDC->Values[nRow][SColumn02->Index]);
  134. String sName = VarToStr(pGDC->Values[nRow][SColumn03->Index]);
  135. //String sGrade = VarToStr(pGDC->Values[nRow][SColumn04->Index]);
  136. String sDesc = VarToStr(pGDC->Values[nRow][SColumn05->Index]);
  137. String sRegDt = VarToStr(pGDC->Values[nRow][SColumn06->Index]);
  138. int nSelRows = TvList1->Controller->SelectedRowCount;
  139. if (nSelRows <= 0)
  140. {
  141. Application->MessageBox(L"추가할 SMS 발송 장애유형을 선택하세요", L"SMS 그룹 목록 추가", MB_OK|MB_ICONWARNING|MB_APPLMODAL);
  142. return;
  143. }
  144. String sQry;
  145. TADOQuery *pADO = NULL;
  146. sQry = "MERGE INTO TB_SMS_FAIL_GROP_RLTN L \r\n"
  147. "USING (SELECT :p01 AS SMS_GROP_ID, \r\n"
  148. " :p02 AS SMS_FAIL_ID \r\n"
  149. " FROM DUAL \r\n"
  150. " ) M \r\n"
  151. "ON (L.SMS_GROP_ID = M.SMS_GROP_ID \r\n"
  152. "AND L.SMS_FAIL_ID = M.SMS_FAIL_ID) \r\n"
  153. "WHEN NOT MATCHED THEN \r\n"
  154. " INSERT (L.SMS_GROP_ID, \r\n"
  155. " L.SMS_FAIL_ID) \r\n"
  156. " VALUES (M.SMS_GROP_ID, \r\n"
  157. " M.SMS_FAIL_ID) \r\n";
  158. try
  159. {
  160. pADO = new TADOQuery(NULL);
  161. pADO->Close();
  162. pADO->Connection = ITSDb_GetConnection();
  163. ITSDb_SQLText(pADO, sQry);
  164. ITSDb_GetConnection()->BeginTrans();
  165. for (int ii = 0; ii < nSelRows; ii++)
  166. {
  167. int nSelIdx = TvList1->Controller->SelectedRows[ii]->RecordIndex;
  168. String sFailId = TvList1->DataController->Values[nSelIdx][MColumn02->Index];
  169. try
  170. {
  171. ITSDb_SQLBind(pADO, "p01", FGropId);
  172. ITSDb_SQLBind(pADO, "p02", sFailId);
  173. ITSDb_SQLExec(pADO);
  174. }
  175. catch(EDatabaseError &E)
  176. {
  177. ITSDb_GetConnection()->RollbackTrans();
  178. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  179. ShowMessage(String(E.ClassName()) + E.Message);
  180. break;
  181. }
  182. catch(Exception &exception)
  183. {
  184. ITSDb_GetConnection()->RollbackTrans();
  185. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  186. ShowMessage(String(exception.ClassName()) + exception.Message);
  187. break;
  188. }
  189. catch(...)
  190. {
  191. ITSDb_GetConnection()->RollbackTrans();
  192. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  193. ShowMessage("데이터 작업 중에 알수없는 DB 오류가 발생하였습니다.");
  194. break;
  195. }
  196. }
  197. ITSDb_GetConnection()->CommitTrans();
  198. }
  199. __finally
  200. {
  201. if (pADO)
  202. {
  203. pADO->Close();
  204. delete pADO;
  205. }
  206. SelSmsGroupRltnList(FGropId);
  207. }
  208. }
  209. //---------------------------------------------------------------------------
  210. void __fastcall TSMS00202::BtnListDeleteClick(TObject *Sender)
  211. {
  212. // List Data Delete
  213. TWaitCursor crs;
  214. int nSelRows = TvList3->Controller->SelectedRowCount;
  215. if (nSelRows <= 0)
  216. {
  217. Application->MessageBox(L"삭제할 SMS 발송 그룹 정보를 선택하세요", L"SMS 그룹 목록 삭제", MB_OK|MB_ICONWARNING|MB_APPLMODAL);
  218. return;
  219. }
  220. String sQry;
  221. TADOQuery *pADO = NULL;
  222. sQry = "DELETE TB_SMS_FAIL_GROP_RLTN L \r\n"
  223. " WHERE L.SMS_GROP_ID = :p01 \r\n"
  224. " AND L.SMS_FAIL_ID = :p02 \r\n";
  225. try
  226. {
  227. pADO = new TADOQuery(NULL);
  228. pADO->Close();
  229. pADO->Connection = ITSDb_GetConnection();
  230. ITSDb_SQLText(pADO, sQry);
  231. ITSDb_GetConnection()->BeginTrans();
  232. for (int ii = 0; ii < nSelRows; ii++)
  233. {
  234. int nSelIdx = TvList3->Controller->SelectedRows[ii]->RecordIndex;
  235. String sGropId = TvList3->DataController->Values[nSelIdx][RColumn02->Index];
  236. String sFailId = TvList3->DataController->Values[nSelIdx][RColumn04->Index];
  237. try
  238. {
  239. ITSDb_SQLBind(pADO, "p01", sGropId);
  240. ITSDb_SQLBind(pADO, "p02", sFailId);
  241. ITSDb_SQLExec(pADO);
  242. }
  243. catch(EDatabaseError &E)
  244. {
  245. ITSDb_GetConnection()->RollbackTrans();
  246. ShowMessage(String(E.ClassName()) + E.Message);
  247. break;
  248. }
  249. catch(Exception &exception)
  250. {
  251. ITSDb_GetConnection()->RollbackTrans();
  252. ShowMessage(String(exception.ClassName()) + exception.Message);
  253. break;
  254. }
  255. catch(...)
  256. {
  257. ITSDb_GetConnection()->RollbackTrans();
  258. ShowMessage("데이터 작업 중에 알수없는 DB 오류가 발생하였습니다.");
  259. break;
  260. }
  261. }
  262. ITSDb_GetConnection()->CommitTrans();
  263. }
  264. __finally
  265. {
  266. if (pADO)
  267. {
  268. pADO->Close();
  269. delete pADO;
  270. }
  271. SelSmsGroupRltnList(FGropId);
  272. }
  273. }
  274. //---------------------------------------------------------------------------
  275. void __fastcall TSMS00202::BtnInsert1Click(TObject *Sender)
  276. {
  277. String sNewId = "";
  278. try {
  279. if (!GetFailNewId(sNewId)) return;
  280. TFrmSmsFail *pDlg = new TFrmSmsFail(this->Parent);
  281. pDlg->EdId->Text = sNewId;
  282. pDlg->FDbMode = enJobSave;
  283. pDlg->ShowModal();
  284. if (pDlg->FUpdated)
  285. {
  286. FFailId = pDlg->EdId->Text.Trim();
  287. #if 0
  288. String sName = pDlg->EdName->Text.Trim();
  289. String sCallTel = pDlg->EdCallTel->Text.Trim();
  290. String sBackTel = pDlg->EdBackTel->Text.Trim();
  291. String sDesc = pDlg->EdDesc->Text.Trim();
  292. #endif
  293. String sRegDt = pDlg->EdRegDt->Text.Trim();
  294. SelSmsFailList();
  295. CMM_SetGridFocusRow(CxList1, TvList1, FFailId, MColumn02->Index);
  296. }
  297. delete pDlg;
  298. } catch(...) { }
  299. }
  300. //---------------------------------------------------------------------------
  301. void __fastcall TSMS00202::BtnEdit1Click(TObject *Sender)
  302. {
  303. TcxDataController *pGDC = TvList1->DataController;
  304. if (TvList1->ViewData->RecordCount <= 0) return;
  305. int nRow = pGDC->FocusedRecordIndex;
  306. if( nRow < 0 )
  307. {
  308. Application->MessageBox(L"목록에서 장애유형을 선택하세요.", L"SMS 발송 장애유형 등록", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  309. return;
  310. }
  311. FFailId = VarToStr(pGDC->Values[nRow][MColumn02->Index]);
  312. String sFTY = VarToStr(pGDC->Values[nRow][ColFTY->Index]);
  313. String sFFA = VarToStr(pGDC->Values[nRow][ColFFA->Index]);
  314. String sFSS = VarToStr(pGDC->Values[nRow][ColFSS->Index]);
  315. String sHH = VarToStr(pGDC->Values[nRow][ColHH->Index]);
  316. String sDesc = VarToStr(pGDC->Values[nRow][MColumn05->Index]);
  317. String sCYCL = VarToStr(pGDC->Values[nRow][MColumn07->Index]);
  318. String sYN = VarToStr(pGDC->Values[nRow][MColumn09->Index]);
  319. String sRgstDt = VarToStr(pGDC->Values[nRow][MColumn10->Index]);
  320. try {
  321. TFrmSmsFail *pDlg = new TFrmSmsFail(this->Parent);
  322. pDlg->EdId->Text = FFailId;
  323. pDlg->EdFTY->Text = sFTY;
  324. pDlg->EdFFA->Text = sFFA;
  325. pDlg->EdFSS->Text = sFSS;
  326. pDlg->EdHH->Text = sHH;
  327. pDlg->SeCYCL->Value = sCYCL.ToIntDef(1);
  328. pDlg->EdYN->Text = sYN;
  329. pDlg->EdDesc->Text = sDesc;
  330. pDlg->EdRegDt->Text = sRgstDt;
  331. pDlg->FDbMode = enJobEdit;
  332. pDlg->ShowModal();
  333. if (pDlg->FUpdated)
  334. {
  335. FFailId = pDlg->EdId->Text.Trim();
  336. SelSmsFailList();
  337. SelSmsGroupRltnList(FGropId);
  338. CMM_SetGridFocusRow(CxList1, TvList1, FFailId, MColumn02->Index);
  339. }
  340. delete pDlg;
  341. } catch(...) { }
  342. }
  343. //---------------------------------------------------------------------------
  344. void __fastcall TSMS00202::BtnDelete1Click(TObject *Sender)
  345. {
  346. TcxDataController *pGDC = TvList1->DataController;
  347. if (TvList1->ViewData->RecordCount <= 0) return;
  348. int nRow = pGDC->FocusedRecordIndex;
  349. if( nRow < 0 )
  350. {
  351. Application->MessageBox(L"목록에서 장애유형을 선택하세요.", L"SMS 발송 장애유형 삭제", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  352. return;
  353. }
  354. String sId = VarToStr(pGDC->Values[nRow][MColumn02->Index]);
  355. String sFTY = VarToStr(pGDC->Values[nRow][MColumn03->Index]);
  356. String sFFA = VarToStr(pGDC->Values[nRow][MColumn04->Index]);
  357. String sMsg = "";
  358. sMsg += "<<< 장애ID: " + sId + " >>>\r\n";
  359. sMsg += "<<< 시설물 유형: " + sFTY + " >>>\r\n";
  360. sMsg += "<<< 장애 유형: " + sFFA + " >>>\r\n";
  361. sMsg += "<<< 장애유형 정보를 삭제 하시겠습니까? >>>\r\n";
  362. sMsg += "<<< 장애유형-발송그룹 정보가 있는 경우 함께 삭제 됩니다. >>>\r\n";
  363. if (Application->MessageBox(sMsg.c_str(), L"SMS 장애유형 삭제", MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  364. TADOQuery *pADOD = NULL;
  365. String sQryD1, sQryD2;
  366. try
  367. {
  368. sQryD1 = "DELETE TB_SMS_FAIL_GROP_RLTN \r\n"
  369. " WHERE SMS_FAIL_ID = :p01 \r\n";
  370. sQryD2 = "DELETE TB_SMS_FAIL_STUP \r\n"
  371. " WHERE SMS_FAIL_ID = :p01 \r\n";
  372. try
  373. {
  374. pADOD = new TADOQuery(NULL);
  375. pADOD->Close();
  376. pADOD->Connection = ITSDb_GetConnection();
  377. ITSDb_GetConnection()->BeginTrans();
  378. ITSDb_SQLText(pADOD, sQryD1);
  379. ITSDb_SQLBind(pADOD, "p01", sId);
  380. ITSDb_SQLExec(pADOD);
  381. ITSDb_SQLText(pADOD, sQryD2);
  382. ITSDb_SQLBind(pADOD, "p01", sId);
  383. ITSDb_SQLExec(pADOD);
  384. ITSDb_GetConnection()->CommitTrans();
  385. Application->MessageBox(L"SMS 장애유형 정보를 삭제 하였습니다.",
  386. L"SMS 장애유형 삭제", MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  387. FFailId = "";
  388. SelSmsFailList();
  389. SelSmsGroupRltnList(FGropId);
  390. CMM_SetGridFocusRow(CxList1, TvList1, FFailId, MColumn02->Index);
  391. }
  392. catch(EDatabaseError &E)
  393. {
  394. ITSDb_GetConnection()->RollbackTrans();
  395. ShowMessage(String(E.ClassName()) + E.Message);
  396. }
  397. catch(Exception &exception)
  398. {
  399. ITSDb_GetConnection()->RollbackTrans();
  400. ShowMessage(String(exception.ClassName()) + exception.Message);
  401. }
  402. catch(...)
  403. {
  404. ITSDb_GetConnection()->RollbackTrans();
  405. ShowMessage("데이터 작업 중에 알수없는 DB 오류가 발생하였습니다.");
  406. }
  407. }
  408. __finally
  409. {
  410. if (pADOD)
  411. {
  412. pADOD->Close();
  413. delete pADOD;
  414. }
  415. }
  416. }
  417. //---------------------------------------------------------------------------
  418. void __fastcall TSMS00202::BtnInsertGroupClick(TObject *Sender)
  419. {
  420. String sNewId = "";
  421. try {
  422. if (!GetGroupNewId(sNewId)) return;
  423. TFrmSmsGroup *pDlg = new TFrmSmsGroup(this->Parent);
  424. pDlg->EdId->Text = sNewId;
  425. pDlg->FDbMode = enJobSave;
  426. pDlg->ShowModal();
  427. if (pDlg->FUpdated)
  428. {
  429. FGropId = pDlg->EdId->Text;
  430. SelSmsGroupList();
  431. SelSmsGroupRltnList(FGropId);
  432. CMM_SetGridFocusRow(CxList2, TvList2, FGropId, SColumn02->Index);
  433. FGroupChanged = true;
  434. }
  435. delete pDlg;
  436. } catch(...) { }
  437. }
  438. //---------------------------------------------------------------------------
  439. void __fastcall TSMS00202::BtnEditGroupClick(TObject *Sender)
  440. {
  441. TcxDataController *pGDC = TvList2->DataController;
  442. if (TvList2->ViewData->RecordCount <= 0) return;
  443. int nRow = pGDC->FocusedRecordIndex;
  444. if( nRow < 0 )
  445. {
  446. Application->MessageBox(L"목록에서 그룹을 선택하세요.", L"SMS 발송 그룹 등록", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  447. return;
  448. }
  449. FGropId = VarToStr(pGDC->Values[nRow][SColumn02->Index]);
  450. String sName = VarToStr(pGDC->Values[nRow][SColumn03->Index]);
  451. //String sGrade = pGDC->Values[nRow][SColumn04->Index];
  452. String sDesc = VarToStr(pGDC->Values[nRow][SColumn05->Index]);
  453. String sRegDt = VarToStr(pGDC->Values[nRow][SColumn06->Index]);
  454. try {
  455. TFrmSmsGroup *pDlg = new TFrmSmsGroup(this->Parent);
  456. pDlg->FDbMode = enJobEdit;
  457. pDlg->EdId->Text = FGropId;
  458. pDlg->EdName->Text = sName;
  459. pDlg->EdDesc->Text = sDesc;
  460. pDlg->EdRegDt->Text = sRegDt;
  461. pDlg->ShowModal();
  462. if (pDlg->FUpdated)
  463. {
  464. FGropId = pDlg->EdId->Text;
  465. SelSmsGroupList();
  466. SelSmsGroupRltnList(FGropId);
  467. CMM_SetGridFocusRow(CxList2, TvList2, FGropId, SColumn02->Index);
  468. FGroupChanged = true;
  469. }
  470. delete pDlg;
  471. } catch(...) { }
  472. }
  473. //---------------------------------------------------------------------------
  474. void __fastcall TSMS00202::BtnDeleteGroupClick(TObject *Sender)
  475. {
  476. TcxDataController *pGDC = TvList2->DataController;
  477. if (TvList2->ViewData->RecordCount <= 0) return;
  478. int nRow = pGDC->FocusedRecordIndex;
  479. if( nRow < 0 )
  480. {
  481. Application->MessageBox(L"목록에서 그룹을 선택하세요.", L"SMS 발송 그룹 삭제", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  482. return;
  483. }
  484. String sId = VarToStr(pGDC->Values[nRow][SColumn02->Index]);
  485. String sName = VarToStr(pGDC->Values[nRow][SColumn03->Index]);
  486. //String sGrade = VarToStr(pGDC->Values[nRow][SColumn04->Index]);
  487. String sDesc = VarToStr(pGDC->Values[nRow][SColumn05->Index]);
  488. String sRegDt = VarToStr(pGDC->Values[nRow][SColumn06->Index]);
  489. String sMsg = "";
  490. sMsg += "<<< ID: " + sId + " >>>\r\n";
  491. sMsg += "<<< 그룹명: " + sName + " >>>\r\n";
  492. sMsg += "<<< SMS 발송 그룹 정보를 삭제 하시겠습니까? >>>\r\n\r\n";
  493. sMsg += "<<< 연락처-발송그룹 정보가 있는 경우 함께 삭제 됩니다. >>>\r\n";
  494. sMsg += "<<< 장애유형-발송그룹 정보가 있는 경우 함께 삭제 됩니다. >>>\r\n";
  495. if (Application->MessageBox(sMsg.c_str(), L"SMS 발송 그룹 정보 삭제", MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  496. // delete
  497. TADOQuery *pADOD = NULL;
  498. String sQryD1, sQryD2, sQryD3;
  499. try
  500. {
  501. sQryD1 = "DELETE TB_SMS_USER_GROP_RLTN \r\n"
  502. " WHERE SMS_GROP_ID = :p01 \r\n";
  503. sQryD2 = "DELETE TB_SMS_FAIL_GROP_RLTN \r\n"
  504. " WHERE SMS_GROP_ID = :p01 \r\n";
  505. sQryD3 = "DELETE TB_SMS_USER_GROP \r\n"
  506. " WHERE SMS_GROP_ID = :p01 \r\n";
  507. try
  508. {
  509. pADOD = new TADOQuery(NULL);
  510. pADOD->Close();
  511. pADOD->Connection = ITSDb_GetConnection();
  512. ITSDb_GetConnection()->BeginTrans();
  513. ITSDb_SQLText(pADOD, sQryD1);
  514. ITSDb_SQLBind(pADOD, "p01", sId);
  515. ITSDb_SQLExec(pADOD);
  516. ITSDb_SQLText(pADOD, sQryD2);
  517. ITSDb_SQLBind(pADOD, "p01", sId);
  518. ITSDb_SQLExec(pADOD);
  519. ITSDb_SQLText(pADOD, sQryD3);
  520. ITSDb_SQLBind(pADOD, "p01", sId);
  521. ITSDb_SQLExec(pADOD);
  522. ITSDb_GetConnection()->CommitTrans();
  523. Application->MessageBox(L"SMS 발송 그룹 정보를 삭제 하였습니다.",
  524. L"SMS 발송 그룹 정보 삭제", MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  525. FGropId = "";
  526. SelSmsGroupList();
  527. SelSmsGroupRltnList(FGropId);
  528. CMM_SetGridFocusRow(CxList2, TvList2, FGropId, SColumn02->Index);
  529. FGroupChanged = true;
  530. }
  531. catch(EDatabaseError &E)
  532. {
  533. ITSDb_GetConnection()->RollbackTrans();
  534. ShowMessage(String(E.ClassName()) + E.Message);
  535. }
  536. catch(Exception &exception)
  537. {
  538. ITSDb_GetConnection()->RollbackTrans();
  539. ShowMessage(String(exception.ClassName()) + exception.Message);
  540. }
  541. catch(...)
  542. {
  543. ITSDb_GetConnection()->RollbackTrans();
  544. ShowMessage("데이터 작업 중에 알수없는 DB 오류가 발생하였습니다.");
  545. }
  546. }
  547. __finally
  548. {
  549. if (pADOD)
  550. {
  551. pADOD->Close();
  552. delete pADOD;
  553. }
  554. }
  555. }
  556. //---------------------------------------------------------------------------
  557. bool __fastcall TSMS00202::GetFailNewId(String &ANewId)
  558. {
  559. String sQry;
  560. TADOQuery *pADO = NULL;
  561. sQry = "SELECT NVL(MAX(SMS_FAIL_ID), 0) + 1 AS NEWID \r\n"
  562. " FROM TB_SMS_FAIL_STUP \r\n";
  563. ANewId = "";
  564. try
  565. {
  566. try
  567. {
  568. pADO = new TADOQuery(NULL);
  569. pADO->Close();
  570. pADO->Connection = ITSDb_GetConnection();
  571. pADO->SQL->Clear();
  572. pADO->SQL->Text = sQry;
  573. pADO->Open();
  574. ANewId = pADO->FieldByName("NEWID")->AsString;
  575. return true;
  576. }
  577. catch(EDatabaseError &E)
  578. {
  579. throw Exception(String(E.ClassName()) + E.Message);
  580. }
  581. catch(Exception &exception)
  582. {
  583. throw Exception(String(exception.ClassName()) + exception.Message);
  584. }
  585. catch(...)
  586. {
  587. throw Exception("알수없는 DB 오류가 발생하였습니다.");
  588. }
  589. }
  590. __finally
  591. {
  592. if (pADO)
  593. {
  594. pADO->Close();
  595. delete pADO;
  596. }
  597. }
  598. return false;
  599. }
  600. //---------------------------------------------------------------------------
  601. bool __fastcall TSMS00202::GetGroupNewId(String &ANewId)
  602. {
  603. String sQry;
  604. TADOQuery *pADO = NULL;
  605. sQry = "SELECT NVL(MAX(SMS_GROP_ID), 0) + 1 AS NEWID \r\n"
  606. " FROM TB_SMS_USER_GROP \r\n";
  607. ANewId = "";
  608. try
  609. {
  610. try
  611. {
  612. pADO = new TADOQuery(NULL);
  613. pADO->Close();
  614. pADO->Connection = ITSDb_GetConnection();
  615. pADO->SQL->Clear();
  616. pADO->SQL->Text = sQry;
  617. pADO->Open();
  618. ANewId = pADO->FieldByName("NEWID")->AsString;
  619. return true;
  620. }
  621. catch(EDatabaseError &E)
  622. {
  623. throw Exception(String(E.ClassName()) + E.Message);
  624. }
  625. catch(Exception &exception)
  626. {
  627. throw Exception(String(exception.ClassName()) + exception.Message);
  628. }
  629. catch(...)
  630. {
  631. throw Exception("알수없는 DB 오류가 발생하였습니다.");
  632. }
  633. }
  634. __finally
  635. {
  636. if (pADO)
  637. {
  638. pADO->Close();
  639. delete pADO;
  640. }
  641. }
  642. return false;
  643. }
  644. //---------------------------------------------------------------------------
  645. void __fastcall TSMS00202::DispData()
  646. {
  647. FFailId = "";
  648. FGropId = "";
  649. SelSmsFailList();
  650. SelSmsGroupList();
  651. SelSmsGroupRltnList(FGropId);
  652. }
  653. //---------------------------------------------------------------------------
  654. void __fastcall TSMS00202::SelSmsFailList()
  655. {
  656. TSqlCursor sqlCrs;
  657. String sQry;
  658. TADOQuery *pADO = ADOQry;
  659. TcxGridTableView *pTvList = TvList1;
  660. TcxDataController *pGDC = pTvList->DataController;
  661. CMM_ClearGridTableView(pTvList);
  662. sQry = "SELECT A.SMS_FAIL_ID, \r\n"
  663. " A.SMS_FCLT_TYPE, \r\n"
  664. " A.SMS_FAIL_TYPE, \r\n"
  665. " A.SMS_FAIL_EXPL, \r\n"
  666. " A.SMS_SEND_STYL, \r\n"
  667. " A.SEND_CYCL_STYL, \r\n"
  668. " A.SEND_HH_STYL, \r\n"
  669. " A.SEND_YN, \r\n"
  670. " A.RGST_DT \r\n"
  671. " FROM TB_SMS_FAIL_STUP A \r\n"
  672. " ORDER BY A.SMS_FAIL_ID \r\n";
  673. try
  674. {
  675. pADO->Connection = ITSDb_GetConnection();
  676. ITSDb_SQLText(pADO, sQry);
  677. ITSDb_SQLOpen(pADO);
  678. int nRow = 0;
  679. try
  680. {
  681. pTvList->BeginUpdate();
  682. pGDC->RecordCount = pADO->RecordCount;
  683. for( ; !pADO->Eof; pADO->Next(), nRow++)
  684. {
  685. String sId = pADO->FieldByName("SMS_FAIL_ID")->AsString;
  686. String sFTY = pADO->FieldByName("SMS_FCLT_TYPE")->AsString;
  687. String sFFA = pADO->FieldByName("SMS_FAIL_TYPE")->AsString;
  688. String sDesc = pADO->FieldByName("SMS_FAIL_EXPL")->AsString;
  689. String sFSS = pADO->FieldByName("SMS_SEND_STYL")->AsString;
  690. String sCYCL = pADO->FieldByName("SEND_CYCL_STYL")->AsString;
  691. String sHH = pADO->FieldByName("SEND_HH_STYL")->AsString;
  692. String sYN = pADO->FieldByName("SEND_YN")->AsString;
  693. String sRgstDt = pADO->FieldByName("RGST_DT")->AsString;
  694. pGDC->Values[nRow][ColFTY->Index] = sFTY;
  695. pGDC->Values[nRow][ColFFA->Index] = sFFA;
  696. pGDC->Values[nRow][ColFSS->Index] = sFSS;
  697. pGDC->Values[nRow][ColHH->Index ] = sHH;
  698. pGDC->Values[nRow][MColumn02->Index] = sId;
  699. pGDC->Values[nRow][MColumn03->Index] = APP_GetCodeDesc(CbFTY, sFTY);
  700. pGDC->Values[nRow][MColumn04->Index] = APP_GetCodeDesc(CbFFA, sFFA);
  701. pGDC->Values[nRow][MColumn05->Index] = sDesc;
  702. pGDC->Values[nRow][MColumn06->Index] = APP_GetCodeDesc(CbFSS, sFSS);
  703. pGDC->Values[nRow][MColumn07->Index] = sCYCL;
  704. if (sFSS == "FSS03")
  705. { //지정된 시간 발송
  706. TDateTime dt = ITSUtil_StrToDateTime(sHH);;
  707. pGDC->Values[nRow][MColumn08->Index] = dt.FormatString("hh:nn");
  708. }
  709. pGDC->Values[nRow][MColumn09->Index] = sYN;
  710. pGDC->Values[nRow][MColumn10->Index] = ITSUtil_StrToTime(sRgstDt);
  711. }
  712. }
  713. __finally
  714. {
  715. if (pADO)
  716. {
  717. pADO->Close();
  718. }
  719. pTvList->EndUpdate();
  720. //LblRecords->Caption = FormatFloat("##,##0", pGDC->RecordCount) + " 건";
  721. }
  722. }
  723. catch(EDatabaseError &E)
  724. {
  725. throw Exception(String(E.ClassName()) + E.Message);
  726. }
  727. catch(...)
  728. {
  729. throw Exception("알수없는 오류가 발생하였습니다.");
  730. }
  731. }
  732. //---------------------------------------------------------------------------
  733. void __fastcall TSMS00202::SelSmsGroupList()
  734. {
  735. TSqlCursor sqlCrs;
  736. String sQry;
  737. TADOQuery *pADO = ADOQry;
  738. TcxGridTableView *pTvList = TvList2;
  739. TcxDataController *pGDC = pTvList->DataController;
  740. CMM_ClearGridTableView(pTvList);
  741. sQry = "SELECT A.SMS_GROP_ID, \r\n"
  742. " A.SMS_GROP_NM, \r\n"
  743. " A.SMS_GROP_EXPL, \r\n"
  744. " A.RGST_DT \r\n"
  745. " FROM TB_SMS_USER_GROP A \r\n"
  746. " ORDER BY A.SMS_GROP_ID \r\n";
  747. try
  748. {
  749. pADO->Connection = ITSDb_GetConnection();
  750. ITSDb_SQLText(pADO, sQry);
  751. ITSDb_SQLOpen(pADO);
  752. int nRow = 0;
  753. try
  754. {
  755. pTvList->BeginUpdate();
  756. pGDC->RecordCount = pADO->RecordCount;
  757. for( ; !pADO->Eof; pADO->Next(), nRow++)
  758. {
  759. pGDC->Values[nRow][SColumn02->Index] = pADO->FieldByName("SMS_GROP_ID")->AsString;
  760. pGDC->Values[nRow][SColumn03->Index] = pADO->FieldByName("SMS_GROP_NM")->AsString;
  761. pGDC->Values[nRow][SColumn05->Index] = pADO->FieldByName("SMS_GROP_EXPL")->AsString;
  762. pGDC->Values[nRow][SColumn06->Index] = ITSUtil_StrToTime(pADO->FieldByName("RGST_DT")->AsString);
  763. }
  764. }
  765. __finally
  766. {
  767. if (pADO)
  768. {
  769. pADO->Close();
  770. }
  771. pTvList->EndUpdate();
  772. //LblRecords->Caption = FormatFloat("##,##0", pGDC->RecordCount) + " 건";
  773. }
  774. }
  775. catch(EDatabaseError &E)
  776. {
  777. throw Exception(String(E.ClassName()) + E.Message);
  778. }
  779. catch(...)
  780. {
  781. throw Exception("알수없는 오류가 발생하였습니다.");
  782. }
  783. }
  784. //---------------------------------------------------------------------------
  785. void __fastcall TSMS00202::SelSmsGroupRltnList(String AGroupId)
  786. {
  787. TSqlCursor sqlCrs;
  788. String sQry;
  789. TADOQuery *pADO = ADOQry;
  790. TcxGridTableView *pTvList = TvList3;
  791. TcxDataController *pGDC = pTvList->DataController;
  792. CMM_ClearGridTableView(pTvList);
  793. sQry = "SELECT A.SMS_GROP_ID, A.SMS_FAIL_ID, \r\n"
  794. " B.SMS_FCLT_TYPE, \r\n"
  795. " B.SMS_FAIL_TYPE, \r\n"
  796. " B.SMS_FAIL_EXPL, \r\n"
  797. " B.SMS_SEND_STYL, \r\n"
  798. " B.SEND_CYCL_STYL, \r\n"
  799. " B.SEND_HH_STYL, \r\n"
  800. " B.SEND_YN, \r\n"
  801. " B.RGST_DT AS URGST_DT, \r\n"
  802. " C.SMS_GROP_NM, C.SMS_GROP_EXPL, C.RGST_DT AS GRGST_DT \r\n"
  803. " FROM TB_SMS_FAIL_GROP_RLTN A, \r\n"
  804. " TB_SMS_FAIL_STUP B, \r\n"
  805. " TB_SMS_USER_GROP C \r\n"
  806. " WHERE A.SMS_GROP_ID = :p01 \r\n"
  807. " AND A.SMS_GROP_ID = C.SMS_GROP_ID \r\n"
  808. " AND A.SMS_FAIL_ID = B.SMS_FAIL_ID \r\n";
  809. try
  810. {
  811. pADO->Connection = ITSDb_GetConnection();
  812. ITSDb_SQLText(pADO, sQry);
  813. ITSDb_SQLBind(pADO, "p01", AGroupId);
  814. ITSDb_SQLOpen(pADO);
  815. int nRow = 0;
  816. try
  817. {
  818. pTvList->BeginUpdate();
  819. pGDC->RecordCount = pADO->RecordCount;
  820. for( ; !pADO->Eof; pADO->Next(), nRow++)
  821. {
  822. String sId = pADO->FieldByName("SMS_FAIL_ID")->AsString;
  823. String sFTY = pADO->FieldByName("SMS_FCLT_TYPE")->AsString;
  824. String sFFA = pADO->FieldByName("SMS_FAIL_TYPE")->AsString;
  825. String sDesc = pADO->FieldByName("SMS_FAIL_EXPL")->AsString;
  826. String sFSS = pADO->FieldByName("SMS_SEND_STYL")->AsString;
  827. String sCYCL = pADO->FieldByName("SEND_CYCL_STYL")->AsString;
  828. String sHH = pADO->FieldByName("SEND_HH_STYL")->AsString;
  829. String sYN = pADO->FieldByName("SEND_YN")->AsString;
  830. String sRgstDt = pADO->FieldByName("URGST_DT")->AsString;
  831. pGDC->Values[nRow][RColumn02->Index] = pADO->FieldByName("SMS_GROP_ID")->AsString;
  832. pGDC->Values[nRow][RColumn03->Index] = pADO->FieldByName("SMS_GROP_NM")->AsString;
  833. pGDC->Values[nRow][RColumn04->Index] = sId;
  834. pGDC->Values[nRow][RColumn05->Index] = APP_GetCodeDesc(CbFTY, sFTY);
  835. pGDC->Values[nRow][RColumn06->Index] = APP_GetCodeDesc(CbFFA, sFFA);
  836. pGDC->Values[nRow][RColumn07->Index] = sDesc;
  837. pGDC->Values[nRow][RColumn08->Index] = APP_GetCodeDesc(CbFSS, sFSS);
  838. pGDC->Values[nRow][RColumn09->Index] = sYN;
  839. }
  840. }
  841. __finally
  842. {
  843. if (pADO)
  844. {
  845. pADO->Close();
  846. }
  847. pTvList->EndUpdate();
  848. //LblRecords->Caption = FormatFloat("##,##0", pGDC->RecordCount) + " 건";
  849. }
  850. }
  851. catch(EDatabaseError &E)
  852. {
  853. throw Exception(String(E.ClassName()) + E.Message);
  854. }
  855. catch(...)
  856. {
  857. throw Exception("알수없는 오류가 발생하였습니다.");
  858. }
  859. }
  860. //---------------------------------------------------------------------------
  861. void __fastcall TSMS00202::TvList1FocusedRecordChanged(TcxCustomGridTableView *Sender,
  862. TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord,
  863. bool ANewItemRecordFocusingChanged)
  864. {
  865. DispSmsFail();
  866. }
  867. //---------------------------------------------------------------------------
  868. void __fastcall TSMS00202::TvList2FocusedRecordChanged(TcxCustomGridTableView *Sender,
  869. TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord,
  870. bool ANewItemRecordFocusingChanged)
  871. {
  872. DispSmsGroup();
  873. }
  874. //---------------------------------------------------------------------------
  875. void __fastcall TSMS00202::DispSmsFail()
  876. {
  877. BtnDelete1->Enabled = false;
  878. BtnEdit1->Enabled = false;
  879. TcxGridTableView *pTvList = TvList1;
  880. TcxDataController *pGDC = pTvList->DataController;
  881. if (pTvList->ViewData->RecordCount <= 0) return;
  882. int nRow = pGDC->FocusedRecordIndex;
  883. if (nRow < 0) return;
  884. FFailId = VarToStr(pGDC->Values[nRow][MColumn02->Index]);
  885. String sName = VarToStr(pGDC->Values[nRow][MColumn03->Index]);
  886. String sCallTel = VarToStr(pGDC->Values[nRow][MColumn04->Index]);
  887. String sBackTel = VarToStr(pGDC->Values[nRow][MColumn05->Index]);
  888. String sDesc = VarToStr(pGDC->Values[nRow][MColumn06->Index]);
  889. String sRegDt = VarToStr(pGDC->Values[nRow][MColumn07->Index]);
  890. BtnDelete1->Enabled = true;
  891. BtnEdit1->Enabled = true;
  892. }
  893. //---------------------------------------------------------------------------
  894. void __fastcall TSMS00202::DispSmsGroup()
  895. {
  896. BtnDeleteGroup->Enabled = false;
  897. BtnEditGroup->Enabled = false;
  898. TcxGridTableView *pTvList = TvList2;
  899. TcxDataController *pGDC = pTvList->DataController;
  900. if (pTvList->ViewData->RecordCount <= 0) return;
  901. int nRow = pGDC->FocusedRecordIndex;
  902. if (nRow < 0) return;
  903. FGropId = VarToStr(pGDC->Values[nRow][SColumn02->Index]);
  904. String sName = VarToStr(pGDC->Values[nRow][SColumn03->Index]);
  905. //String sGrade = VarToStr(pGDC->Values[nRow][SColumn04->Index]);
  906. String sDesc = VarToStr(pGDC->Values[nRow][SColumn05->Index]);
  907. String sRegDt = VarToStr(pGDC->Values[nRow][SColumn06->Index]);
  908. BtnDeleteGroup->Enabled = true;
  909. BtnEditGroup->Enabled = true;
  910. SelSmsGroupRltnList(FGropId);
  911. }
  912. //---------------------------------------------------------------------------
  913. void __fastcall TSMS00202::InitCode()
  914. {
  915. TItsCode *FCodeFTY;
  916. TItsCode *FCodeFFA;
  917. TItsCode *FCodeFSS;
  918. FCodeFTY = ItsCodeManager->FLists.Find("FTY");
  919. FCodeFFA = ItsCodeManager->FLists.Find("FFA");
  920. FCodeFSS = ItsCodeManager->FLists.Find("FSS");
  921. // 시설물유형
  922. CbFTY->Properties->Items->Clear();
  923. if (FCodeFTY)
  924. {
  925. FOR_STL(TItsSubCode *, pSubCode, FCodeFTY->FSubLists)
  926. {
  927. if (pSubCode->USE_YN == "N") continue;
  928. CbFTY->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  929. }
  930. }
  931. CbFTY->ItemIndex = 0;
  932. // 장애유형
  933. CbFFA->Properties->Items->Clear();
  934. if (FCodeFFA)
  935. {
  936. FOR_STL(TItsSubCode *, pSubCode, FCodeFFA->FSubLists)
  937. {
  938. if (pSubCode->USE_YN == "N") continue;
  939. CbFFA->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  940. }
  941. }
  942. CbFFA->ItemIndex = 0;
  943. // 송신방식
  944. CbFSS->Properties->Items->Clear();
  945. if (FCodeFSS)
  946. {
  947. FOR_STL(TItsSubCode *, pSubCode, FCodeFSS->FSubLists)
  948. {
  949. if (pSubCode->USE_YN == "N") continue;
  950. CbFSS->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  951. }
  952. }
  953. CbFSS->ItemIndex = 0;
  954. }
  955. //---------------------------------------------------------------------------