You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

544 lines
20 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.Sql;
  6. using System.Data.SqlClient;
  7. using System.Drawing;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Windows.Forms;
  12. using ManagementSystem.Utility;
  13. namespace ManagementSystem
  14. {
  15. public partial class HRDataCorrect : Form
  16. {
  17. //程式內共用物件
  18. string strFrmStatus = ""; //表單狀態
  19. string strActiveUserID = ""; //取得登入作用的使用者帳號
  20. SqlConnection sqlConn = UtilityClass.GetConn(MainForm.strAccountingBookID);
  21. SqlCommand sqlCmd = new SqlCommand();
  22. string strPKey = ""; //程式內的Key值
  23. string strKey = ""; //程式內加密的Key值
  24. public HRDataCorrect()
  25. {
  26. InitializeComponent();
  27. }
  28. #region 自定義程式
  29. private string CheckForm() //確認畫面必填欄位
  30. {
  31. string strResult = "";
  32. return strResult;
  33. }
  34. private void SetupStatus() //畫面載入設定
  35. {
  36. try
  37. {
  38. strActiveUserID = MainForm.strActiveUserID;
  39. strKey = MainForm.strKey;
  40. if (MainForm.strKey == "")
  41. {
  42. //設定Toolbar初始狀態
  43. tsbSave.Enabled = false;
  44. tsbDelete.Enabled = false;
  45. }
  46. //設定畫面初始狀態
  47. GetMemberData();
  48. CleanForm();
  49. CleanToolbar();
  50. LockForm();
  51. }
  52. catch (Exception ex)
  53. {
  54. ErrorHandler.WriteErrorLog("HRDataCorrect.cs", ex);
  55. }
  56. }
  57. private void GetMemberData() //取得成員資料
  58. {
  59. try
  60. {
  61. string strSQL = "Select MemberID, MemberName, IsOutside From OTB_SYS_Members Where Effective = 'Y' And IsNull(IsOutside, 'N') = 'N'";
  62. //進行查詢
  63. dgvHRItem.DataSource = UtilityClass.GetSQLResult(strSQL).Tables["Result"];
  64. Application.DoEvents();
  65. }
  66. catch (Exception ex)
  67. {
  68. ErrorHandler.WriteErrorLog("HRDataCorrect.cs", ex);
  69. }
  70. }
  71. private void LockForm() //限制唯讀物件
  72. {
  73. }
  74. private void UnLockForm() //解除限制唯讀物件
  75. {
  76. }
  77. private void StatusChange(string strStatus) //變更主畫面狀態
  78. {
  79. switch (strStatus.ToUpper())
  80. {
  81. case "NONE":
  82. ((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "";
  83. strFrmStatus = "";
  84. CleanForm();
  85. CleanToolbar();
  86. dgvHRItem.ReadOnly = false;
  87. break;
  88. case "SEARCH":
  89. tsbSearch.Visible = false;
  90. tsbEdit.Enabled = false;
  91. tsbDelete.Enabled = false;
  92. tsbOK.Visible = true;
  93. tsbCancel.Visible = true;
  94. ((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "搜尋";
  95. strFrmStatus = "SEARCH";
  96. break;
  97. case "ADD":
  98. ((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "新增";
  99. strFrmStatus = "ADD";
  100. break;
  101. case "MODIFY":
  102. tsbSearch.Enabled = false;
  103. tsbEdit.Visible = false;
  104. tsbSave.Visible = true;
  105. tsbDelete.Enabled = false;
  106. tsbCancel.Visible = true;
  107. ((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "修改";
  108. strFrmStatus = "MODIFY";
  109. break;
  110. case "DEL":
  111. tsbDelete.Visible = false;
  112. tsbSearch.Enabled = false;
  113. tsbEdit.Enabled = false;
  114. ((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "刪除";
  115. strFrmStatus = "DEL";
  116. break;
  117. }
  118. }
  119. private void CleanToolbar() //清除工具列
  120. {
  121. //設定Toolbar狀態
  122. tsbSearch.Enabled = false;
  123. tsbSearch.Visible = false;
  124. tsbEdit.Enabled = false;
  125. tsbEdit.Visible = false;
  126. tsbDelete.Enabled = false;
  127. tsbDelete.Visible = false;
  128. tsbSave.Visible = false;
  129. tsbOK.Visible = false;
  130. tsbCancel.Visible = false;
  131. }
  132. private void CleanForm() //清除畫面
  133. {
  134. //GetMemberData();
  135. cbStartDate.Checked = false;
  136. cbEndDate.Checked = false;
  137. cbSubject.Checked = false;
  138. txtSubject.Text = "";
  139. txtDescription.Text = "";
  140. cbProjectNumber.Checked = false;
  141. txtProjectNumber.Text = "";
  142. txtEventID.Text = "";
  143. Application.DoEvents();
  144. }
  145. private void AddEven() //新增事件
  146. {
  147. try
  148. {
  149. //本功能無新增功能
  150. }
  151. catch (Exception ex)
  152. {
  153. throw ex;
  154. }
  155. }
  156. private void SaveEven() //儲存事件
  157. {
  158. try
  159. {
  160. StringBuilder sbSQL = new StringBuilder();
  161. switch (tbPage.SelectedTab.Name.ToString())
  162. {
  163. case "tbPage1": //更正工作資料及狀態
  164. string strEventID = txtEventID.Text.Trim();
  165. if (cbProjectNumber.Checked)
  166. sbSQL.AppendLine("Update OTB_MNG_DayWork Set ProjectNumber = '" + txtProjectNumber.Text.Trim() + "', Worktype = 'Prj' Where EventID = '" + strEventID + "';");
  167. if(cbSubject.Checked)
  168. sbSQL.AppendLine("Update OTB_MNG_DayWork Set Subject = '" + txtSubject.Text.Trim() + "', description = '" + txtDescription.Text.Trim() + "' Where EventID = '" + strEventID + "';");
  169. if (cbStartDate.Checked)
  170. sbSQL.AppendLine("Update OTB_MNG_DayWork Set StartDate = '" + dtPickStart.Text.Trim() + "' Where EventID = '" + strEventID + "';");
  171. if (cbEndDate.Checked)
  172. sbSQL.AppendLine("Update OTB_MNG_DayWork Set EndDate = '" + dtPickEnd.Text.Trim() + "' Where EventID = '"+ strEventID + "';");
  173. break;
  174. case "tbPage2": //更正加班資料
  175. sbSQL.AppendLine("Declare @EventID char(36);");
  176. foreach (DataGridViewRow row in dgvDetail1.Rows)
  177. {
  178. if (!UtilityClass.IsExist("Select * from OTB_MNG_DayWork Where UserID = '" + row.Cells["cMemberIDDetail"].Value.ToString() + "' And EndDate ='" + row.Cells["cSignOutTime"].Value.ToString() + "'"))
  179. {
  180. if (row.Cells["cSelected"].Value != null)
  181. {
  182. //查詢卻變更的EventID
  183. sbSQL.AppendLine(" Select Top 1 @EventID = EventID From OTB_MNG_DayWork Where UserID = '" + row.Cells["cMemberIDDetail"].Value.ToString() + "' And convert(varchar,EndDate,23) = '" + row.Cells["cSignOutTime"].Value.ToString().Substring(0, 10) + "' Order By EndDate DESC;");
  184. //進行變更
  185. sbSQL.AppendLine(" Insert Into OTB_MNG_DayWork(OrganizationID, UserID, EventID, Subject, Description, StartDate, EndDate, IsPublic, Skin, Memo, CreateUser, CreateDate, ProjectNumber, Worktype, Comment, WeekPlanID)");
  186. sbSQL.AppendLine(" Select OrganizationID, UserID, NewID() AS EventID, Subject, Description, EndDate AS StartDate, '" + row.Cells["cSignOutTime"].Value.ToString() + "' AS EndDate, IsPublic, Skin, '加班' as Memo, CreateUser,CreateDate, ProjectNumber, Worktype ,Comment, WeekPlanID");
  187. sbSQL.AppendLine(" From OTB_MNG_DayWork Where EventID = @EventID;");
  188. }
  189. }
  190. }
  191. break;
  192. }
  193. using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
  194. {
  195. sqlAdapter.UpdateCommand = new SqlCommand();
  196. sqlAdapter.UpdateCommand.Connection = sqlConn;
  197. sqlAdapter.UpdateCommand.CommandText = sbSQL.ToString();
  198. if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
  199. {
  200. sqlConn.Open();
  201. }
  202. sqlAdapter.UpdateCommand.ExecuteNonQuery();
  203. }
  204. MessageBox.Show("儲存成功", "提示");
  205. StatusChange("None");
  206. LockForm();
  207. }
  208. catch (Exception ex)
  209. {
  210. MessageBox.Show("儲存失敗","提示");
  211. ErrorHandler.WriteErrorLog("HRDataCorrect.cs", ex);
  212. }
  213. }
  214. private void DelEven() //刪除事件
  215. {
  216. StringBuilder sbSQL = new StringBuilder();
  217. try
  218. {
  219. string strEventID = txtEventID.Text.Trim();
  220. //執行Delete命令
  221. sbSQL.Append("Delete From OTB_MNG_DayWork Where EventID = '" + strEventID + "'");
  222. using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
  223. {
  224. sqlAdapter.DeleteCommand = new SqlCommand();
  225. sqlAdapter.DeleteCommand.Connection = sqlConn;
  226. sqlAdapter.DeleteCommand.CommandText = sbSQL.ToString();
  227. if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
  228. {
  229. sqlConn.Open();
  230. }
  231. sqlAdapter.DeleteCommand.ExecuteNonQuery();
  232. }
  233. //執行命令
  234. MessageBox.Show("刪除成功", "提示");
  235. StatusChange("None");
  236. LockForm();
  237. }
  238. catch (Exception ex)
  239. {
  240. ErrorHandler.WriteErrorLog("HRDataCorrect.cs", ex);
  241. }
  242. }
  243. private void GoEvent() //執行事件
  244. {
  245. try
  246. {
  247. StringBuilder strSQL = new StringBuilder("");
  248. switch (strFrmStatus.ToString())
  249. {
  250. case "SEARCH": //搜尋
  251. break;
  252. }
  253. StatusChange("None");
  254. LockForm();
  255. }
  256. catch (Exception ex)
  257. {
  258. ErrorHandler.WriteErrorLog("HRDataCorrect.cs", ex);
  259. }
  260. }
  261. #endregion
  262. #region 事件觸發及問題處理
  263. private void tsbAdd_Click(object sender, EventArgs e)
  264. {
  265. try
  266. {
  267. CleanToolbar();
  268. tsbSearch.Enabled = false;
  269. tsbEdit.Enabled = false;
  270. tsbSave.Visible = true;
  271. CleanForm();
  272. UnLockForm();
  273. StatusChange("ADD");
  274. }
  275. catch (Exception ex)
  276. {
  277. ErrorHandler.WriteErrorLog("HRDataCorrect.cs", ex);
  278. }
  279. }
  280. private void tsbEdit_Click(object sender, EventArgs e)
  281. {
  282. try
  283. {
  284. if (strPKey == "")
  285. {
  286. MessageBox.Show("請先選擇資料", "提示");
  287. return;
  288. }
  289. CleanToolbar();
  290. UnLockForm();
  291. StatusChange("Modify");
  292. }
  293. catch (Exception ex)
  294. {
  295. ErrorHandler.WriteErrorLog("HRDataCorrect.cs", ex);
  296. }
  297. }
  298. private void tsbSave_Click(object sender, EventArgs e)
  299. {
  300. try
  301. {
  302. string strMessage = CheckForm();
  303. if (strMessage == "")
  304. {
  305. this.SaveEven();
  306. //GetMemberData(strPKey);
  307. }
  308. else
  309. {
  310. MessageBox.Show(strMessage,"提示");
  311. }
  312. }
  313. catch (Exception ex)
  314. {
  315. ErrorHandler.WriteErrorLog("HRDataCorrect.cs", ex);
  316. }
  317. }
  318. private void tsbDelete_Click(object sender, EventArgs e)
  319. {
  320. try
  321. {
  322. if (MessageBox.Show("請問您確定要刪除本資料?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
  323. {
  324. this.DelEven();
  325. }
  326. }
  327. catch (Exception ex)
  328. {
  329. ErrorHandler.WriteErrorLog("HRDataCorrect.cs", ex);
  330. }
  331. }
  332. private void tsbSearch_Click(object sender, EventArgs e)
  333. {
  334. try
  335. {
  336. //設定Toolbar狀態
  337. CleanToolbar();
  338. //開放查詢條件
  339. UnLockForm();
  340. //設定畫面物件狀態
  341. CleanForm();
  342. StatusChange("Search");
  343. }
  344. catch (Exception ex)
  345. {
  346. ErrorHandler.WriteErrorLog("HRDataCorrect.cs", ex);
  347. }
  348. }
  349. private void tsbOK_Click(object sender, EventArgs e)
  350. {
  351. try
  352. {
  353. GoEvent();
  354. //還原Toolbar狀態
  355. tsbSearch.Enabled = true;
  356. tsbOK.Visible = false;
  357. //關閉查詢條件
  358. LockForm();
  359. StatusChange("Search");
  360. }
  361. catch (Exception ex)
  362. {
  363. ErrorHandler.WriteErrorLog("HRDataCorrect.cs", ex);
  364. }
  365. }
  366. private void tsbCancel_Click(object sender, EventArgs e)
  367. {
  368. CleanForm();
  369. CleanToolbar();
  370. LockForm();
  371. StatusChange("None");
  372. }
  373. private void HRDataCorrect_Load(object sender, EventArgs e)
  374. {
  375. SetupStatus(); //設定畫面狀態
  376. }
  377. private void tsbExit_Click(object sender, EventArgs e)
  378. {
  379. this.Close();
  380. }
  381. private void tsbClean_Click(object sender, EventArgs e)
  382. {
  383. CleanForm();
  384. }
  385. #endregion
  386. private void dgvHRItem_CellClick(object sender, DataGridViewCellEventArgs e)
  387. {
  388. txtEventID.Text = "";
  389. GetCurrentData();
  390. }
  391. private void GetCurrentData()
  392. {
  393. StringBuilder strSQL = new StringBuilder();
  394. switch (tbPage.SelectedTab.Name.ToString())
  395. {
  396. case "tbPage1":
  397. //更新工作資料及狀態
  398. strSQL.Append(" Select EventID,Subject, description, StartDate, EndDate, ProjectNumber, Worktype From OTB_MNG_DayWork Where 1 = 1 and UserID = '" + (string)dgvHRItem.CurrentRow.Cells["cMemberID"].Value + "' ");
  399. strSQL.Append(" And StartDate Between '" + dpStart.Text.ToString() + " 00:00:00' And '" + dpEnd.Text.ToString() + " 23:59:59'");
  400. strSQL.Append(" Order by StartDate");
  401. //進行查詢
  402. dgvDetail.DataSource = UtilityClass.GetSQLResult(strSQL.ToString()).Tables["Result"];
  403. Application.DoEvents();
  404. break;
  405. case "tbPage2":
  406. //更正加班資料
  407. strSQL.Append(" Select Trim(MemberID) MemberID, convert(varchar,SignTime,120) SignTime, convert(varchar,SignOutTime,120) SignOutTime From OTB_HR_CheckAttendance Where SignID Between '" + dpStart.Text.ToString().Replace("-","") +"' And '" + dpEnd.Text.ToString().Replace("-", "") + "'");
  408. strSQL.Append(" And MemberID = '" + (string)dgvHRItem.CurrentRow.Cells["cMemberID"].Value + "' And SignOutTime is not null And Convert(varchar(50), SignOutTime,108) >= '19:00:00'");
  409. strSQL.Append(" And Not Exists(Select * From OTB_MNG_DayWork Where UserID = '" + (string)dgvHRItem.CurrentRow.Cells["cMemberID"].Value + "' And EndDate > '" + dpEnd.Text.ToString() + " 19:00:00' And convert(varchar, EndDate, 23) = convert(varchar, " + dpEnd.Text.ToString() + ", 23))"); //未填寫加班匯報
  410. dgvDetail1.DataSource = UtilityClass.GetSQLResult(strSQL.ToString()).Tables["Result"];
  411. Application.DoEvents();
  412. break;
  413. }
  414. }
  415. private void btnUpdate_Click(object sender, EventArgs e)
  416. {
  417. SaveEven();
  418. int intNowRow = dgvDetail.Rows.IndexOf(dgvDetail.CurrentRow);
  419. CleanForm();
  420. GetCurrentData();
  421. dgvDetail.Rows[intNowRow].Selected = true;
  422. }
  423. private void btnUpdate1_Click(object sender, EventArgs e)
  424. {
  425. int intSelectedCount = 0;
  426. foreach (DataGridViewRow row in dgvDetail1.Rows)
  427. {
  428. if (row.Cells["cSelected"].Value != null)
  429. {
  430. if ((bool)row.Cells["cSelected"].Value == true)
  431. {
  432. intSelectedCount += 1;
  433. }
  434. }
  435. }
  436. if (intSelectedCount > 0)
  437. {
  438. SaveEven();
  439. CleanForm();
  440. GetCurrentData();
  441. }
  442. }
  443. private void dgvDetail_CellClick(object sender, DataGridViewCellEventArgs e)
  444. {
  445. txtEventID.Text = (string)dgvDetail.CurrentRow.Cells["cEventID"].Value;
  446. dtPickEnd.Value = (DateTime)dgvDetail.CurrentRow.Cells["cEndDate"].Value;
  447. dtPickStart.Value = (DateTime)dgvDetail.CurrentRow.Cells["cStartDate"].Value;
  448. txtProjectNumber.Text = (string)dgvDetail.CurrentRow.Cells["cProjectNumber"].Value;
  449. txtSubject.Text = (string)dgvDetail.CurrentRow.Cells["cSubject"].Value;
  450. txtDescription.Text = (string)dgvDetail.CurrentRow.Cells["cDescription"].Value;
  451. }
  452. private void btnPickProject_Click(object sender, EventArgs e)
  453. {
  454. PickProject pkItemForm = new PickProject();
  455. pkItemForm.txtProjectNumber.Text = txtProjectNumber.Text.Trim();
  456. pkItemForm.strOwnerForm = "HRDataCorrect";
  457. pkItemForm.Owner = this;
  458. pkItemForm.StartPosition = FormStartPosition.CenterParent;
  459. pkItemForm.ShowDialog();
  460. }
  461. public void ReturnProjectInfo(string[] strProjectInfo) //回傳專案資料
  462. {
  463. txtProjectNumber.Text = strProjectInfo[0].ToString();
  464. }
  465. private void btnDEL_Click(object sender, EventArgs e)
  466. {
  467. if (MessageBox.Show("請問是否確認刪除資料?","確認",MessageBoxButtons.YesNo) == DialogResult.Yes)
  468. {
  469. DelEven();
  470. int intNowRow = dgvDetail.Rows.IndexOf(dgvDetail.CurrentRow);
  471. CleanForm();
  472. GetCurrentData();
  473. dgvDetail.Rows[intNowRow].Selected = true;
  474. }
  475. }
  476. }
  477. }