From ba717f542ae5767c1b6683a9cccd49af0af9c4fe Mon Sep 17 00:00:00 2001 From: chi Date: Mon, 15 May 2023 11:33:54 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B7=B8=EB=A3=B9=EA=B6=8C=ED=95=9C=EC=97=90?= =?UTF-8?q?=20=EC=97=85=EB=AC=B4=EC=9D=BC=EC=A7=80=ED=8E=B8=EC=A7=91?= =?UTF-8?q?=EC=A0=9C=ED=95=9C=20=EC=B6=94=EA=B0=80,=20=20=ED=95=B4?= =?UTF-8?q?=EB=8B=B9=20=EA=B8=B0=EB=8A=A5=EC=9D=B4=20on=20=EB=90=98?= =?UTF-8?q?=EB=A9=B4=20=EC=97=85=EB=AC=B4=EC=9D=BC=EC=A7=80=207=EC=9D=BC?= =?UTF-8?q?=20=EC=9D=B4=EC=A0=84=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=AA=BB=ED=95=98=EA=B2=8C=20=EB=90=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Project/Properties/AssemblyInfo.cs | 4 +- .../FCM0000/User/fUserGroupDev.Designer.cs | 56 +- SubProject/FCM0000/User/fUserGroupDev.resx | 3 + .../User/fUserGroupPermission.Designer.cs | 28 +- SubProject/FCOMMON/Info.cs | 1 + .../JobReport_/fJobReport_Add.Designer.cs | 27 +- .../FPJ0000/JobReport_/fJobReport_Add.cs | 1669 +++++++++-------- .../FPJ0000/JobReport_/fJobReport_Add.resx | 9 + 8 files changed, 925 insertions(+), 872 deletions(-) diff --git a/Project/Properties/AssemblyInfo.cs b/Project/Properties/AssemblyInfo.cs index 9dd487d..040a05f 100644 --- a/Project/Properties/AssemblyInfo.cs +++ b/Project/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로 // 지정되도록 할 수 있습니다. // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("23.04.28.1450")] -[assembly: AssemblyFileVersion("23.04.28.1450")] +[assembly: AssemblyVersion("23.05.15.1130")] +[assembly: AssemblyFileVersion("23.05.15.1130")] diff --git a/SubProject/FCM0000/User/fUserGroupDev.Designer.cs b/SubProject/FCM0000/User/fUserGroupDev.Designer.cs index 9f26935..5524ad9 100644 --- a/SubProject/FCM0000/User/fUserGroupDev.Designer.cs +++ b/SubProject/FCM0000/User/fUserGroupDev.Designer.cs @@ -30,10 +30,14 @@ { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fUserGroupDev)); - FarPoint.Win.Spread.CellType.TextCellType textCellType1 = new FarPoint.Win.Spread.CellType.TextCellType(); - FarPoint.Win.Spread.CellType.TextCellType textCellType2 = new FarPoint.Win.Spread.CellType.TextCellType(); - FarPoint.Win.Spread.CellType.TextCellType textCellType3 = new FarPoint.Win.Spread.CellType.TextCellType(); - FarPoint.Win.Spread.CellType.NumberCellType numberCellType1 = new FarPoint.Win.Spread.CellType.NumberCellType(); + FarPoint.Win.Spread.CellType.TextCellType textCellType6 = new FarPoint.Win.Spread.CellType.TextCellType(); + FarPoint.Win.Spread.CellType.TextCellType textCellType7 = new FarPoint.Win.Spread.CellType.TextCellType(); + FarPoint.Win.Spread.CellType.TextCellType textCellType8 = new FarPoint.Win.Spread.CellType.TextCellType(); + FarPoint.Win.Spread.CellType.NumberCellType numberCellType2 = new FarPoint.Win.Spread.CellType.NumberCellType(); + FarPoint.Win.Spread.CellType.CheckBoxCellType checkBoxCellType3 = new FarPoint.Win.Spread.CellType.CheckBoxCellType(); + FarPoint.Win.Spread.CellType.CheckBoxCellType checkBoxCellType4 = new FarPoint.Win.Spread.CellType.CheckBoxCellType(); + FarPoint.Win.Spread.CellType.TextCellType textCellType9 = new FarPoint.Win.Spread.CellType.TextCellType(); + FarPoint.Win.Spread.CellType.TextCellType textCellType10 = new FarPoint.Win.Spread.CellType.TextCellType(); this.bs = new System.Windows.Forms.BindingSource(this.components); this.dSUser = new FCM0000.DSUser(); this.taStaff = new FCM0000.dsMSSQLTableAdapters.StaffTableAdapter(); @@ -113,14 +117,14 @@ this.toolStripLabel2, this.tbFind, this.btFind}); - this.bn.Location = new System.Drawing.Point(0, 623); + this.bn.Location = new System.Drawing.Point(0, 570); this.bn.MoveFirstItem = this.bindingNavigatorMoveFirstItem; this.bn.MoveLastItem = this.bindingNavigatorMoveLastItem; this.bn.MoveNextItem = this.bindingNavigatorMoveNextItem; this.bn.MovePreviousItem = this.bindingNavigatorMovePreviousItem; this.bn.Name = "bn"; this.bn.PositionItem = this.bindingNavigatorPositionItem; - this.bn.Size = new System.Drawing.Size(652, 25); + this.bn.Size = new System.Drawing.Size(910, 25); this.bn.TabIndex = 0; this.bn.Text = "bindingNavigator1"; // @@ -166,6 +170,7 @@ // this.bindingNavigatorPositionItem.AccessibleName = "위치"; this.bindingNavigatorPositionItem.AutoSize = false; + this.bindingNavigatorPositionItem.Font = new System.Drawing.Font("맑은 고딕", 9F); this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem"; this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 23); this.bindingNavigatorPositionItem.Text = "0"; @@ -230,6 +235,7 @@ // tbFind // this.tbFind.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tbFind.Font = new System.Drawing.Font("맑은 고딕", 9F); this.tbFind.Name = "tbFind"; this.tbFind.Size = new System.Drawing.Size(100, 25); this.tbFind.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tbFind_KeyDown); @@ -252,7 +258,7 @@ this.toolStripMenuItem1, this.권한설정ToolStripMenuItem}); this.cm1.Name = "cm1"; - this.cm1.Size = new System.Drawing.Size(203, 116); + this.cm1.Size = new System.Drawing.Size(203, 94); // // columnSizeToolStripMenuItem // @@ -299,7 +305,7 @@ this.fpSpread1.Name = "fpSpread1"; this.fpSpread1.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { this.fpSpread1_Sheet1}); - this.fpSpread1.Size = new System.Drawing.Size(652, 623); + this.fpSpread1.Size = new System.Drawing.Size(910, 570); this.fpSpread1.TabIndex = 2; // // fpSpread1_Sheet1 @@ -308,42 +314,50 @@ this.fpSpread1_Sheet1.SheetName = "Sheet1"; // Formulas and custom names must be loaded with R1C1 reference style this.fpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; - this.fpSpread1_Sheet1.ColumnCount = 4; + this.fpSpread1_Sheet1.ColumnCount = 8; this.fpSpread1_Sheet1.ActiveColumnIndex = -1; this.fpSpread1_Sheet1.ActiveRowIndex = -1; this.fpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "부서명"; this.fpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "부서코드"; this.fpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 3).Value = "권한"; this.fpSpread1_Sheet1.ColumnHeader.Rows.Get(0).Height = 38F; - this.fpSpread1_Sheet1.Columns.Get(0).CellType = textCellType1; + this.fpSpread1_Sheet1.Columns.Get(0).CellType = textCellType6; this.fpSpread1_Sheet1.Columns.Get(0).DataField = "dept"; this.fpSpread1_Sheet1.Columns.Get(0).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; this.fpSpread1_Sheet1.Columns.Get(0).Label = "부서명"; this.fpSpread1_Sheet1.Columns.Get(0).VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; this.fpSpread1_Sheet1.Columns.Get(0).Width = 151F; - this.fpSpread1_Sheet1.Columns.Get(1).CellType = textCellType2; + this.fpSpread1_Sheet1.Columns.Get(1).CellType = textCellType7; this.fpSpread1_Sheet1.Columns.Get(1).DataField = "gcode"; this.fpSpread1_Sheet1.Columns.Get(1).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; this.fpSpread1_Sheet1.Columns.Get(1).Label = "부서코드"; this.fpSpread1_Sheet1.Columns.Get(1).VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; this.fpSpread1_Sheet1.Columns.Get(1).Width = 151F; - this.fpSpread1_Sheet1.Columns.Get(2).CellType = textCellType3; + this.fpSpread1_Sheet1.Columns.Get(2).CellType = textCellType8; this.fpSpread1_Sheet1.Columns.Get(2).DataField = "path_kj"; this.fpSpread1_Sheet1.Columns.Get(2).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; this.fpSpread1_Sheet1.Columns.Get(2).VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; this.fpSpread1_Sheet1.Columns.Get(2).Visible = false; this.fpSpread1_Sheet1.Columns.Get(2).Width = 151F; this.fpSpread1_Sheet1.Columns.Get(3).BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); - numberCellType1.DecimalPlaces = 0; - numberCellType1.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.Yes; - numberCellType1.MaximumValue = 2147483647D; - numberCellType1.MinimumValue = -2147483648D; - this.fpSpread1_Sheet1.Columns.Get(3).CellType = numberCellType1; + numberCellType2.DecimalPlaces = 0; + numberCellType2.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.Yes; + numberCellType2.MaximumValue = 2147483647D; + numberCellType2.MinimumValue = -2147483648D; + this.fpSpread1_Sheet1.Columns.Get(3).CellType = numberCellType2; this.fpSpread1_Sheet1.Columns.Get(3).DataField = "permission"; this.fpSpread1_Sheet1.Columns.Get(3).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; this.fpSpread1_Sheet1.Columns.Get(3).Label = "권한"; this.fpSpread1_Sheet1.Columns.Get(3).VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; this.fpSpread1_Sheet1.Columns.Get(3).Width = 88F; + this.fpSpread1_Sheet1.Columns.Get(4).CellType = checkBoxCellType3; + this.fpSpread1_Sheet1.Columns.Get(4).DataField = "advpurchase"; + this.fpSpread1_Sheet1.Columns.Get(5).CellType = checkBoxCellType4; + this.fpSpread1_Sheet1.Columns.Get(5).DataField = "advkisul"; + this.fpSpread1_Sheet1.Columns.Get(6).CellType = textCellType9; + this.fpSpread1_Sheet1.Columns.Get(6).DataField = "managerinfo"; + this.fpSpread1_Sheet1.Columns.Get(7).CellType = textCellType10; + this.fpSpread1_Sheet1.Columns.Get(7).DataField = "devinfo"; this.fpSpread1_Sheet1.DataAutoSizeColumns = false; this.fpSpread1_Sheet1.DataSource = this.bs; this.fpSpread1_Sheet1.RowHeader.Columns.Default.Resizable = false; @@ -353,18 +367,16 @@ // this.ta.ClearBeforeFill = true; // - // fUserGroup + // fUserGroupDev // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(652, 648); + this.ClientSize = new System.Drawing.Size(910, 595); this.ContextMenuStrip = this.cm1; this.Controls.Add(this.fpSpread1); this.Controls.Add(this.bn); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "fUserGroup"; + this.Name = "fUserGroupDev"; this.Text = "사용자 그룹"; this.Load += new System.EventHandler(this.@__Load); ((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit(); diff --git a/SubProject/FCM0000/User/fUserGroupDev.resx b/SubProject/FCM0000/User/fUserGroupDev.resx index a3f7cee..5488722 100644 --- a/SubProject/FCM0000/User/fUserGroupDev.resx +++ b/SubProject/FCM0000/User/fUserGroupDev.resx @@ -123,6 +123,9 @@ 398, 17 + + 398, 17 + 311, 17 diff --git a/SubProject/FCM0000/User/fUserGroupPermission.Designer.cs b/SubProject/FCM0000/User/fUserGroupPermission.Designer.cs index a902c1e..be0b0c8 100644 --- a/SubProject/FCM0000/User/fUserGroupPermission.Designer.cs +++ b/SubProject/FCM0000/User/fUserGroupPermission.Designer.cs @@ -39,6 +39,7 @@ this.checkBox4 = new System.Windows.Forms.CheckBox(); this.checkBox5 = new System.Windows.Forms.CheckBox(); this.checkBox6 = new System.Windows.Forms.CheckBox(); + this.checkBox7 = new System.Windows.Forms.CheckBox(); this.SuspendLayout(); // // c0 @@ -87,9 +88,9 @@ // // button1 // - this.button1.Location = new System.Drawing.Point(14, 247); + this.button1.Location = new System.Drawing.Point(15, 244); this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(136, 44); + this.button1.Size = new System.Drawing.Size(465, 44); this.button1.TabIndex = 1; this.button1.Text = "확인"; this.button1.UseVisualStyleBackColor = true; @@ -120,7 +121,7 @@ // checkBox3 // this.checkBox3.AutoSize = true; - this.checkBox3.Location = new System.Drawing.Point(142, 14); + this.checkBox3.Location = new System.Drawing.Point(153, 14); this.checkBox3.Name = "checkBox3"; this.checkBox3.Size = new System.Drawing.Size(170, 34); this.checkBox3.TabIndex = 4; @@ -131,7 +132,7 @@ // checkBox4 // this.checkBox4.AutoSize = true; - this.checkBox4.Location = new System.Drawing.Point(142, 54); + this.checkBox4.Location = new System.Drawing.Point(153, 54); this.checkBox4.Name = "checkBox4"; this.checkBox4.Size = new System.Drawing.Size(74, 34); this.checkBox4.TabIndex = 5; @@ -142,7 +143,7 @@ // checkBox5 // this.checkBox5.AutoSize = true; - this.checkBox5.Location = new System.Drawing.Point(142, 88); + this.checkBox5.Location = new System.Drawing.Point(153, 88); this.checkBox5.Name = "checkBox5"; this.checkBox5.Size = new System.Drawing.Size(116, 34); this.checkBox5.TabIndex = 6; @@ -153,7 +154,7 @@ // checkBox6 // this.checkBox6.AutoSize = true; - this.checkBox6.Location = new System.Drawing.Point(142, 128); + this.checkBox6.Location = new System.Drawing.Point(153, 128); this.checkBox6.Name = "checkBox6"; this.checkBox6.Size = new System.Drawing.Size(188, 34); this.checkBox6.TabIndex = 7; @@ -161,11 +162,23 @@ this.checkBox6.Text = "업무일지-기술료"; this.checkBox6.UseVisualStyleBackColor = true; // + // checkBox7 + // + this.checkBox7.AutoSize = true; + this.checkBox7.Location = new System.Drawing.Point(153, 165); + this.checkBox7.Name = "checkBox7"; + this.checkBox7.Size = new System.Drawing.Size(209, 34); + this.checkBox7.TabIndex = 8; + this.checkBox7.Tag = "10"; + this.checkBox7.Text = "업무일지-편집제한"; + this.checkBox7.UseVisualStyleBackColor = true; + // // fUserGroupPermission // this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 30F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(344, 297); + this.ClientSize = new System.Drawing.Size(491, 297); + this.Controls.Add(this.checkBox7); this.Controls.Add(this.checkBox6); this.Controls.Add(this.checkBox5); this.Controls.Add(this.checkBox4); @@ -202,5 +215,6 @@ private System.Windows.Forms.CheckBox checkBox4; private System.Windows.Forms.CheckBox checkBox5; private System.Windows.Forms.CheckBox checkBox6; + private System.Windows.Forms.CheckBox checkBox7; } } \ No newline at end of file diff --git a/SubProject/FCOMMON/Info.cs b/SubProject/FCOMMON/Info.cs index 044d99e..f403805 100644 --- a/SubProject/FCOMMON/Info.cs +++ b/SubProject/FCOMMON/Info.cs @@ -29,6 +29,7 @@ namespace FCOMMON menu_docu, menu_logdata, jobreport_kisul, + jobreport_editblock, } public static class info diff --git a/SubProject/FPJ0000/JobReport_/fJobReport_Add.Designer.cs b/SubProject/FPJ0000/JobReport_/fJobReport_Add.Designer.cs index 5f6a6ed..a513b2f 100644 --- a/SubProject/FPJ0000/JobReport_/fJobReport_Add.Designer.cs +++ b/SubProject/FPJ0000/JobReport_/fJobReport_Add.Designer.cs @@ -68,6 +68,7 @@ this.tbProject = new System.Windows.Forms.ComboBox(); this.richTextBoxEx1 = new RichTextBoxEx.RichTextBoxEx(); this.panel1 = new System.Windows.Forms.Panel(); + this.chkManagerAlert = new System.Windows.Forms.CheckBox(); this.tbProjectIndex = new System.Windows.Forms.Button(); this.grpkisul = new System.Windows.Forms.GroupBox(); this.cmb_kisuldiv = new System.Windows.Forms.ComboBox(); @@ -79,7 +80,6 @@ this.tbTag = new System.Windows.Forms.TextBox(); this.ta = new FPJ0000.dsPRJTableAdapters.JobReportTableAdapter(); this.tam = new FPJ0000.dsPRJTableAdapters.TableAdapterManager(); - this.chkManagerAlert = new System.Windows.Forms.CheckBox(); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); hrsLabel = new System.Windows.Forms.Label(); typeLabel = new System.Windows.Forms.Label(); @@ -322,9 +322,10 @@ // btSave // this.btSave.BackColor = System.Drawing.Color.SkyBlue; + this.btSave.Font = new System.Drawing.Font("맑은 고딕", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); this.btSave.Location = new System.Drawing.Point(829, 6); this.btSave.Name = "btSave"; - this.btSave.Size = new System.Drawing.Size(133, 163); + this.btSave.Size = new System.Drawing.Size(151, 163); this.btSave.TabIndex = 28; this.btSave.Text = "확인"; this.btSave.UseVisualStyleBackColor = false; @@ -496,6 +497,17 @@ this.panel1.Size = new System.Drawing.Size(984, 205); this.panel1.TabIndex = 0; // + // chkManagerAlert + // + this.chkManagerAlert.AutoSize = true; + this.chkManagerAlert.Location = new System.Drawing.Point(265, 181); + this.chkManagerAlert.Name = "chkManagerAlert"; + this.chkManagerAlert.Size = new System.Drawing.Size(116, 16); + this.chkManagerAlert.TabIndex = 30; + this.chkManagerAlert.Text = "관리자 메일 알림"; + this.toolTip1.SetToolTip(this.chkManagerAlert, "체크시 업무일지 내용을 관리자에게 메일로 전송합니다.\r\n메일양식에 MA 항목이 등록되어있어야 합니다"); + this.chkManagerAlert.UseVisualStyleBackColor = true; + // // tbProjectIndex // this.tbProjectIndex.Location = new System.Drawing.Point(754, 58); @@ -615,17 +627,6 @@ this.tam.SPMasterTableAdapter = null; this.tam.UpdateOrder = FPJ0000.dsPRJTableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete; // - // chkManagerAlert - // - this.chkManagerAlert.AutoSize = true; - this.chkManagerAlert.Location = new System.Drawing.Point(265, 181); - this.chkManagerAlert.Name = "chkManagerAlert"; - this.chkManagerAlert.Size = new System.Drawing.Size(116, 16); - this.chkManagerAlert.TabIndex = 30; - this.chkManagerAlert.Text = "관리자 메일 알림"; - this.toolTip1.SetToolTip(this.chkManagerAlert, "체크시 업무일지 내용을 관리자에게 메일로 전송합니다.\r\n메일양식에 MA 항목이 등록되어있어야 합니다"); - this.chkManagerAlert.UseVisualStyleBackColor = true; - // // fJobReport_Add // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); diff --git a/SubProject/FPJ0000/JobReport_/fJobReport_Add.cs b/SubProject/FPJ0000/JobReport_/fJobReport_Add.cs index 15c000b..02d96a5 100644 --- a/SubProject/FPJ0000/JobReport_/fJobReport_Add.cs +++ b/SubProject/FPJ0000/JobReport_/fJobReport_Add.cs @@ -9,865 +9,878 @@ using System.Windows.Forms; namespace FPJ0000.JobReport_ { - public partial class fJobReport_Add : Form - { - dsPRJ.JobReportRow dr; - Boolean copyMOde = false; - Boolean bInit = false; - bool ReadMode = false; - public fJobReport_Add(dsPRJ.JobReportRow dr_, Boolean copy = false, Boolean read = false) - { - InitializeComponent(); - dr = dr_; - ReadMode = read; - this.KeyPreview = true; - this.StartPosition = FormStartPosition.CenterScreen; - this.KeyDown += (s1, e1) => - { - if (e1.KeyCode == Keys.Escape) this.Close(); - }; - - foreach (Control ctl in this.panel1.Controls) - { - if (ctl.GetType() == typeof(TextBox) || ctl.GetType() == typeof(ComboBox)) - { - ctl.KeyDown += ctl_KeyDown; - } - } - copyMOde = copy; - this.tbProject.SelectedIndexChanged += tbProject_SelectedIndexChanged; - this.grpkisul.Visible = getKisulInput; - } - - void tbProject_SelectedIndexChanged(object sender, EventArgs e) - { - if (bInit == false || this.tbProject.SelectedIndex < 0) return; - var data = this.tbProject.SelectedValue; - if (data == null) return; - if (data.GetType() == typeof(DataRowView)) - { - var drv = data as DataRowView; - var idx = int.Parse(drv["Code"].ToString()); - tbProjectIndex.Text = idx.ToString(); - tbProject.Tag = tbProject.Text; - Console.WriteLine(string.Format("Project Select #1 {0}:{1}", idx, tbProject.Text)); - } - else - { - var idx = int.Parse(data.ToString()); - tbProjectIndex.Text = idx.ToString(); - tbProject.Tag = tbProject.Text; - Console.WriteLine(string.Format("Project Select #2 {0}:{1}", idx, tbProject.Text)); - } - - } - private bool getKisulInput - { - get - { - return FCOMMON.Util.getBit( - FCOMMON.info.Login.gpermission, - (int)FCOMMON.eGroupPermission.jobreport_kisul); - } - } - private void fJobReport_Add_Load(object sender, EventArgs e) - { - //사용자목록 - this.bs.DataSource = dr; - this.dateTimePicker1.CustomFormat = "yyyy-MM-dd HH:mm.ss"; - this.dateTimePicker2.CustomFormat = "yyyy-MM-dd HH:mm.ss"; - - //해당 사용자에 걸린 프로젝트 목록 가져오기 - var userProject = FCOMMON.DBM.getUserProjectList(FCOMMON.info.Login.nameK); - this.tbProject.DataSource = userProject; - this.tbProject.ValueMember = "Code"; - this.tbProject.DisplayMember = "NameOnly"; - - //상태 - var stateList = FCOMMON.DBM.getCodeTable("12"); - this.cmbState.DisplayMember = "Value"; - this.cmbState.ValueMember = "Value"; - this.cmbState.DataSource = stateList; - this.cmbState.Text = dr.status; - - //요청부서 - var dt_request = FCOMMON.DBM.getCodeTable("13"); - this.cmbRequest.DisplayMember = "Value"; - this.cmbRequest.ValueMember = "Value"; - this.cmbRequest.DataSource = dt_request; - - //패키지 - var dt_package = FCOMMON.DBM.getCodeTable("14"); - this.cmbPackage.DisplayMember = "Value"; - this.cmbPackage.ValueMember = "Value"; - this.cmbPackage.DataSource = dt_package; - - //업무형태 - var dt_type = FCOMMON.DBM.getCodeTable("15","code,memo,svalue"); - this.cmbType.DisplayMember = "Value"; - this.cmbType.ValueMember = "Value"; - this.cmbType.DataSource = dt_type; - - //업무분류 - var dt_process = FCOMMON.DBM.getCodeTable("16", "code,memo,svalue"); - this.cmbProcess.DisplayMember = "Value"; - this.cmbProcess.ValueMember = "Value"; - this.cmbProcess.DataSource = dt_process; - - if (getKisulInput) - { - //기술분류 - var dt_kisuldiv = FCOMMON.DBM.getCodeTable("50"); - this.cmb_kisuldiv.DisplayMember = "Value"; - this.cmb_kisuldiv.ValueMember = "Value"; - this.cmb_kisuldiv.DataSource = dt_kisuldiv; - - //기술레벨 - var dt_kisullv = FCOMMON.DBM.getCodeTable("51"); - this.cmb_kisullv.DisplayMember = "Value"; - this.cmb_kisullv.ValueMember = "Value"; - this.cmb_kisullv.DataSource = dt_kisullv; - } - - //담당자목록 - - var dt_users = FCOMMON.DBM.getUserTable();// getGroupList("name + '(' + id + ')'", "Users", "[level] > 0 and [level] < 10", false, false); - this.cmbUser.DisplayMember = "dispName"; - this.cmbUser.ValueMember = "id"; - this.cmbUser.DataSource = dt_users; - if (FCOMMON.info.Login.level < 5) cmbUser.Enabled = false; - - // tbWW.Text = dr.ww; - dtPdate.Value = DateTime.Parse(dr.pdate); //일자선택 - cmbUser.SelectedValue = dr.uid; - tbProject.Text = dr.projectName; - cmbRequest.SelectedValue = dr.requestpart; - cmbPackage.SelectedValue = dr.package; - cmbType.SelectedValue = dr.type; - cmbProcess.SelectedValue = dr.process; - tbTag.Text = dr.tag; - - if(dr.process.isEmpty() && cmbProcess.SelectedIndex < 0) //기본값을 찾는다 + public partial class fJobReport_Add : Form + { + dsPRJ.JobReportRow dr; + Boolean copyMOde = false; + Boolean bInit = false; + bool ReadMode = false; + public fJobReport_Add(dsPRJ.JobReportRow dr_, Boolean copy = false, Boolean read = false) + { + InitializeComponent(); + dr = dr_; + ReadMode = read; + this.KeyPreview = true; + this.StartPosition = FormStartPosition.CenterScreen; + this.KeyDown += (s1, e1) => { - var dts = dt_process.AsEnumerable().Where(t => t.IsNull("SValue") == false).ToList(); - foreach(var dr in dts) + if (e1.KeyCode == Keys.Escape) this.Close(); + }; + + foreach (Control ctl in this.panel1.Controls) + { + if (ctl.GetType() == typeof(TextBox) || ctl.GetType() == typeof(ComboBox)) { - if (dr["Svalue"].ToString().Equals("O")) - { - cmbProcess.Text = dr["Value"].ToString(); - break; - } + ctl.KeyDown += ctl_KeyDown; } - } + } + copyMOde = copy; + this.tbProject.SelectedIndexChanged += tbProject_SelectedIndexChanged; + this.grpkisul.Visible = getKisulInput; + } - - if (dr.ot > 0) - { - if (dr.ot2 == 0) - { - lbOt2.Text = "관리자 연장/휴일 근무 승인이 완료되지 않았습니다"; - lbOt2.ForeColor = Color.Blue; - lbotReason.Visible = false; - } - else - { - lbOt2.Text = $"승인시간:{dr.ot2}"; - lbotReason.Text = $"사유:{dr.otReason}"; - } - - } - else - { - lbOt2.Visible = false; - lbotReason.Visible = false; - } - - - if (getKisulInput) - { - cmb_kisuldiv.Text = dr.kisuldiv; - cmb_kisullv.Text = dr.kisullv; - textBox1.Text = dr.kisulamt.ToString(); - } - - if (dr.IsotStartNull()) dateTimePicker1.Value = DateTime.Now; - else dateTimePicker1.Value = dr.otStart; - if (dr.IsotEndNull()) dateTimePicker2.Value = DateTime.Now; - else dateTimePicker2.Value = dr.otEnd; - - //if (cmbRequest.Text == "") cmbRequest.Text = "EE1"; - if (cmbPackage.Text == "") cmbPackage.Text = "Common"; - - if (dr.ot != 0) - { - dateTimePicker1.Enabled = true; - dateTimePicker2.Enabled = true; - } - else - { - dateTimePicker1.Enabled = false; - dateTimePicker2.Enabled = false; - } - - //프로젝트 번호 확인(프로젝트번호가 바뀌면 데이터를 업데이트 해준다) - if (dr.IspidxNull()) - { - tbProjectIndex.Tag = -1; - tbProjectIndex.Text = "-1"; - } - else - { - tbProjectIndex.Tag = dr.pidx; - tbProjectIndex.Text = dr.pidx.ToString(); - } - - //신규일때만 사용가능 함 - if (dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Added) chkAutoAdd.Enabled = true; - else chkAutoAdd.Enabled = false; - - - if (string.IsNullOrEmpty(dr.description2)) - { - this.richTextBoxEx1.Text = dr.description; - } - else - { - try - { - this.richTextBoxEx1.Rtf = dr.description2; - } - catch - { - this.richTextBoxEx1.Text = dr.description; - } - } - - this.Show(); - Application.DoEvents(); - - - - var MaxVerstion = FCOMMON.DBM.GetMaxVersion(); - if (string.IsNullOrEmpty(MaxVerstion) == false) - { - var curversion = Application.ProductVersion; - var verchk = curversion.CompareTo(MaxVerstion); - if (verchk < 0) - { - //내버젼이 낮다 - FCOMMON.Util.MsgE("현재 구 버젼을 사용하고 있습니다.\n업데이트를 진행 하고 사용하시기 바랍니다"); - } - } - - - - - if (dr.ot > 0 && dr.ot2 > 0) - { - tbOt.Enabled = false; - FCOMMON.Util.MsgE("휴일/연장 근무시간이 관리자에의해 확정되었으므로 초과시간을 변경할 수 없습니다"); - } - - //if (this.richTextBoxEx1.Text.Trim() != "") - //{ - // this.richTextBoxEx1.Focus(); - //} - //else - //{ - cmbRequest.Focus(); - // tbProject.SelectAll(); - //} - tbProject.Tag = tbProject.Text; - - // if (string.IsNullOrEmpty(richTextBox1.Text)) richTextBox1.Text = dr.description; - - //editor - // ed = new editform.editor(); - //ed.AllowDiscAccess = true; - //ed.WindowTitle = "Quick Edit"; - //ed.StartingFont = new Font("Courier New", 12.0f, FontStyle.Regular); - - //ed.DisplayEditForm(this.panel1); - //ed.AllowRtf = true; - if (ReadMode) - { - panel1.Enabled = false; - this.Text += "(읽기전용)"; - - } - - //신규데이터라면 양식을 처리한다. - if (copyMOde == false && dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Added) - { - //해당 데이터의 메일 양식을 검사해서 데이터를 적용해준다. - var db = new EEEntities(); - var dr0 = db.EETGW_DocuForm.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.cate == "J0").FirstOrDefault(); - if (dr0 != null) - { - richTextBoxEx1.Rtf = dr0.body; - } - db.Dispose(); - } - - - bInit = true; - } - // editform.editor ed; - void ctl_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyCode == Keys.Enter) - { - Control ctl = sender as Control; - string nm = ctl.Name.ToLower(); - string search = ctl.Text.Trim(); - - Console.WriteLine("inner keydown " + nm + ":" + search); - - switch (nm) - { - //case "cmbrequest": - - // //요청자가 마지막으로 입력한 자료의 process 를 찾아서 기입해준다. - // var lastprocess = FCOMMON.DBM.getFirstValue("process", "purchase", "request like '%" + this.cmbUser.Text + "%'", "pdate desc"); - // if (lastprocess != "") cbProcess.Text = lastprocess; - // tbSID.Focus(); - // break; - case "tbdescription": - if (e.Control) - { - btSave.Focus(); - } - break; - case "tbproject": - if (search != "") - { - var f = new fLovProject("%" + search + "%"); - if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) - { - this.tbProject.Text = f.Title; - this.tbProject.Tag = f.Title; - this.tbProjectIndex.Text = f.Index.ToString(); - tbHrs.Focus(); - tbHrs.SelectAll(); - - if (tbProjectIndex.Tag.ToString() != f.Index.ToString() || f.Index == -1) - { - //마지막 데이터를 찾아서 공정등의 정보를 업데이트한다. - var uid = cmbUser.SelectedValue.ToString(); - DataTable lastDt = null; - - if (f.Index != -1) lastDt = FCOMMON.DBM.getLastJobReportData(uid, f.Index); - else lastDt = FCOMMON.DBM.getLastJobReportDatabyProjectName(uid, f.Title); - - if (lastDt != null && lastDt.Rows.Count > 0) - { - var predr = lastDt.Rows[0]; - - if (predr["requestpart"] != DBNull.Value) - this.cmbRequest.Text = predr["requestpart"].ToString(); //190506 - - if (predr["package"] != DBNull.Value) - this.cmbPackage.Text = predr["package"].ToString(); //190506 - - if (predr["type"] != DBNull.Value) - this.cmbType.Text = predr["type"].ToString(); //190506 - - if (predr["process"] != DBNull.Value) - cmbProcess.Text = predr["process"].ToString(); //190506 - } - } - } - else - { - //이름만 사용한다. - tbProjectIndex.Text = "-1"; - cmbRequest.Focus(); - } - } - else - { - FCOMMON.Util.MsgE("프로젝트 혹은 아이템이름은 반드시 입력되어야 합니다."); - var tb = sender as ComboBox; - tb.SelectAll(); - tb.Focus(); - } - break; - - default: - SendKeys.Send("{TAB}"); - break; - } - } - } - private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) - { - FCM0000.fSelectDate f = new FCM0000.fSelectDate(this.dtPdate.Value.ToShortDateString()); - if (f.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; - dtPdate.Value = f.dtSelect; - } - - private void button1_Click(object sender, EventArgs e) - { - this.Invalidate(); - if (tbProject.Text.Trim() == "") - { - FCOMMON.Util.MsgE("프로젝트(아이템) 명칭이 없습니다."); - tbProject.Focus(); - return; - } - - //시작일 마감여부 - var smon = this.dtPdate.Value.ToString("yyyy-MM"); - if (FCOMMON.DBM.GetMagamStatus(smon)) - { - FCOMMON.Util.MsgE("등록일이 속한 월이 마감되었습니다\n마감된 월에는 [추가/변경/삭제] 를 할 수 없습니다"); - return; - } - - - if (cmbType.Text != "휴가" && string.IsNullOrEmpty(this.richTextBoxEx1.Text) == true) - { - FCOMMON.Util.MsgE("진행 내용이 없습니다."); - this.richTextBoxEx1.Focus(); - return; - } - float hour = Single.Parse(tbHrs.Text) + Single.Parse(tbOt.Text); - if (hour == 0) - { - FCOMMON.Util.MsgE("근무시간/초과시간이 입력되지 않았습니다."); - if (tbHrs.Enabled) tbHrs.Focus(); - else tbOt.Focus(); - return; - } - - if(dr.RowState == DataRowState.Added || dr.RowState == DataRowState.Detached ) - { - if(FCOMMON.info.Disable_8hourover) - { - var h = Single.Parse(tbHrs.Text); - if (h > 8) - { - FCOMMON.Util.MsgE("근무시간은 8시간을 초과할 수 없습니다. 초과 근무는 [초과시간] 을 사용하세요"); - tbHrs.Focus(); - tbHrs.SelectAll(); - return; - } - } - } - - if (cmbType.Text.Trim() == "") - { - FCOMMON.Util.MsgE("업무형태를 선택하세요"); - cmbType.Focus(); - return; - } - if (cmbProcess.Text.Trim() == "") - { - FCOMMON.Util.MsgE("업무분류를 선택하세요"); - cmbProcess.Focus(); - return; - } - if (cmbUser.SelectedIndex < 0) - { - FCOMMON.Util.MsgE("담당자가 선택되지 않았습니다."); - cmbUser.Focus(); - return; - } - - if (tbProject.Tag.ToString() != tbProject.Text && tbProjectIndex.Text != "" && tbProjectIndex.Text != "-1") - { - FCOMMON.Util.MsgE("프로젝트가 선택되었으나 이름이 임의 수정되어 프로젝트 연결을 해제 합니다\n\n" + - "잘못된 프로젝트명은 프로젝트 관리화면에서 변경하시기 바랍니다.\n\n" + - "원본 : " + tbProject.Tag.ToString() + "\n" + - "현재 : " + tbProject.Text); - tbProjectIndex.Text = "-1"; - } - - ///휴일체크 - var taQ = new dsQueryTableAdapters.QueriesTableAdapter(); - var freeday = taQ.CheckHoliday(dtPdate.Value.ToShortDateString()); - if (freeday != null && freeday == true) - { - var hrs = float.Parse(tbHrs.Text); - if (hrs > 0) - { - FCOMMON.Util.MsgI("입력일자는 휴일로 등록되어 있습니다.\n\n OT에 해당하면 수정하시기 바랍니다."); - //tbOt.Text = tbHrs.Text; - //dr.hrs = 0; - //tbHrs.Text = "0"; - //tbHrs.Focus(); - //return; - } - } - - if (chkAutoAdd.Checked && (dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Added)) - { - if (tbProjectIndex.Text == "" || tbProjectIndex.Text == "-1") - { - FCOMMON.Util.MsgE("프로젝트 주간내역을 등록하려면 프로젝트가 지정되어야 합니다"); - tbProject.Focus(); - tbProject.SelectAll(); - return; - } - else - { - //190906 - FCOMMON.DBM.addProjectHistory(int.Parse(tbProjectIndex.Text), dtPdate.Value.ToShortDateString(), this.richTextBoxEx1.Text, this.richTextBoxEx1.Rtf); - } - } - - double hrs2 = 0.0; - if (double.TryParse(tbHrs.Text, out hrs2) == false) - { - FCOMMON.Util.MsgE("근무시간을 숫자로 입력하세요"); - tbHrs.Focus(); - tbHrs.SelectAll(); - return; - } - - if (double.TryParse(tbOt.Text, out double ot)) - { - var timeterm = dateTimePicker2.Value - dateTimePicker1.Value; - if ((timeterm.TotalMinutes + 1) * 60 <= ot) - { - FCOMMON.Util.MsgE($"OT시간이 지정된 시간대보다 부족합니다.\nOT시간정보를 확인하세요\n" + - $"\n입력시간범위 : {dateTimePicker1.Value.ToString("HH:mm:ss")}~{dateTimePicker2.Value.ToString("HH:mm:ss")}" + - $"\n입력시간(시) : {timeterm.TotalMinutes * 60}"); - dateTimePicker1.Focus(); - return; - } - - if (ot == 0) - { - dr.SetotNull(); - dr.SetotStartNull(); - dr.SetotEndNull(); - } - else - { - dr.ot = ot; - dr.otStart = dateTimePicker1.Value; - dr.otEnd = dateTimePicker2.Value; - } - } - else - { - dr.SetotNull(); - dr.SetotStartNull(); - dr.SetotEndNull(); - } - - //var MaxVerstion = FCOMMON.DBM.GetMaxVersion(); - //if (string.IsNullOrEmpty(MaxVerstion) == false) - //{ - // var curversion = Application.ProductVersion; - // var verchk = curversion.CompareTo(MaxVerstion); - // if (verchk < 0) - // { - // //내버젼이 낮다 - // FCOMMON.Util.MsgE("현재 구 버젼을 사용하고 있습니다.\n업데이트를 진행 하고 사용하시기 바랍니다"); - // } - //} - ////if(hrs2 > 8) - //{ - // FCOMMON.Util.MsgE("1일 최대근무시간은 8시간을 초과할 수 없습니다\n초과시간을 사용하세요"); - // tbHrs.SelectAll(); - // tbHrs.Focus(); - // return; - //} - - this.dr.uid = this.cmbUser.SelectedValue.ToString(); - this.dr.pdate = dtPdate.Value.ToShortDateString(); - this.dr.status = cmbState.Text; - this.dr.projectName = tbProject.Text; - if (tbProjectIndex.Text != "") dr.pidx = int.Parse(tbProjectIndex.Text); - else dr.SetpidxNull(); - this.dr.requestpart = cmbRequest.Text; - this.dr.package = cmbPackage.Text; - this.dr.type = cmbType.Text; - this.dr.process = cmbProcess.Text; - this.dr.tag = tbTag.Text.Trim(); - - if (getKisulInput) - { - this.dr.kisuldiv = cmb_kisuldiv.Text; - this.dr.kisullv = cmb_kisullv.Text; - this.dr.kisulamt = Decimal.Parse(textBox1.Text); - } - - if (tbHrs.Text != "") this.dr.hrs = double.Parse(tbHrs.Text); - else this.dr.hrs = 0; - - //this.dr.description = richTextBox1.Text.Trim(); - - //MessageBox.Show(richTextBox1.Text); - this.dr.description = richTextBoxEx1.Text; - this.dr.description2 = richTextBoxEx1.Rtf; // ef.DocumentText;// richTextBox1.Rtf; - this.bs.EndEdit(); - - if(chkManagerAlert.Checked) + void tbProject_SelectedIndexChanged(object sender, EventArgs e) + { + if (bInit == false || this.tbProject.SelectedIndex < 0) return; + var data = this.tbProject.SelectedValue; + if (data == null) return; + if (data.GetType() == typeof(DataRowView)) { - var dlg = FCOMMON.Util.MsgQ("관리자 메일을 전송할까요?\n업무일지 작성 내용이 전달 됩니다"); - if(dlg == DialogResult.Yes) + var drv = data as DataRowView; + var idx = int.Parse(drv["Code"].ToString()); + tbProjectIndex.Text = idx.ToString(); + tbProject.Tag = tbProject.Text; + Console.WriteLine(string.Format("Project Select #1 {0}:{1}", idx, tbProject.Text)); + } + else + { + var idx = int.Parse(data.ToString()); + tbProjectIndex.Text = idx.ToString(); + tbProject.Tag = tbProject.Text; + Console.WriteLine(string.Format("Project Select #2 {0}:{1}", idx, tbProject.Text)); + } + + } + private bool getKisulInput + { + get + { + return FCOMMON.Util.getBit( + FCOMMON.info.Login.gpermission, + (int)FCOMMON.eGroupPermission.jobreport_kisul); + } + } + private void fJobReport_Add_Load(object sender, EventArgs e) + { + //사용자목록 + this.bs.DataSource = dr; + this.dateTimePicker1.CustomFormat = "yyyy-MM-dd HH:mm.ss"; + this.dateTimePicker2.CustomFormat = "yyyy-MM-dd HH:mm.ss"; + + //해당 사용자에 걸린 프로젝트 목록 가져오기 + var userProject = FCOMMON.DBM.getUserProjectList(FCOMMON.info.Login.nameK); + this.tbProject.DataSource = userProject; + this.tbProject.ValueMember = "Code"; + this.tbProject.DisplayMember = "NameOnly"; + + //상태 + var stateList = FCOMMON.DBM.getCodeTable("12"); + this.cmbState.DisplayMember = "Value"; + this.cmbState.ValueMember = "Value"; + this.cmbState.DataSource = stateList; + this.cmbState.Text = dr.status; + + //요청부서 + var dt_request = FCOMMON.DBM.getCodeTable("13"); + this.cmbRequest.DisplayMember = "Value"; + this.cmbRequest.ValueMember = "Value"; + this.cmbRequest.DataSource = dt_request; + + //패키지 + var dt_package = FCOMMON.DBM.getCodeTable("14"); + this.cmbPackage.DisplayMember = "Value"; + this.cmbPackage.ValueMember = "Value"; + this.cmbPackage.DataSource = dt_package; + + //업무형태 + var dt_type = FCOMMON.DBM.getCodeTable("15", "code,memo,svalue"); + this.cmbType.DisplayMember = "Value"; + this.cmbType.ValueMember = "Value"; + this.cmbType.DataSource = dt_type; + + //업무분류 + var dt_process = FCOMMON.DBM.getCodeTable("16", "code,memo,svalue"); + this.cmbProcess.DisplayMember = "Value"; + this.cmbProcess.ValueMember = "Value"; + this.cmbProcess.DataSource = dt_process; + + if (getKisulInput) + { + //기술분류 + var dt_kisuldiv = FCOMMON.DBM.getCodeTable("50"); + this.cmb_kisuldiv.DisplayMember = "Value"; + this.cmb_kisuldiv.ValueMember = "Value"; + this.cmb_kisuldiv.DataSource = dt_kisuldiv; + + //기술레벨 + var dt_kisullv = FCOMMON.DBM.getCodeTable("51"); + this.cmb_kisullv.DisplayMember = "Value"; + this.cmb_kisullv.ValueMember = "Value"; + this.cmb_kisullv.DataSource = dt_kisullv; + } + + //담당자목록 + + var dt_users = FCOMMON.DBM.getUserTable();// getGroupList("name + '(' + id + ')'", "Users", "[level] > 0 and [level] < 10", false, false); + this.cmbUser.DisplayMember = "dispName"; + this.cmbUser.ValueMember = "id"; + this.cmbUser.DataSource = dt_users; + if (FCOMMON.info.Login.level < 5) cmbUser.Enabled = false; + + // tbWW.Text = dr.ww; + dtPdate.Value = DateTime.Parse(dr.pdate); //일자선택 + cmbUser.SelectedValue = dr.uid; + tbProject.Text = dr.projectName; + cmbRequest.SelectedValue = dr.requestpart; + cmbPackage.SelectedValue = dr.package; + cmbType.SelectedValue = dr.type; + cmbProcess.SelectedValue = dr.process; + tbTag.Text = dr.tag; + + if (dr.process.isEmpty() && cmbProcess.SelectedIndex < 0) //기본값을 찾는다 + { + var dts = dt_process.AsEnumerable().Where(t => t.IsNull("SValue") == false).ToList(); + foreach (var dr in dts) { - var db = new EEEntities(); - var mf = db.MailForm.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.cate == "MA").FirstOrDefault(); - if (mf != null) - { - try - { - var mbody = new MailData(); - mbody.tolist = maildataupdate(mf.tolist); - mbody.bcc = maildataupdate(mf.bcc); - mbody.cc = maildataupdate(mf.cc); - mbody.project = dr.pidx; - mbody.gcode = FCOMMON.info.Login.gcode; - mbody.cate = mf.cate; - mbody.fromlist = "gw@amkor.co.kr"; - mbody.pdate = DateTime.Now.ToShortDateString(); - mbody.subject = maildataupdate(mf.subject); - mbody.body = maildataupdate(mf.body); - mbody.wuid = FCOMMON.info.Login.no; - mbody.wdate = DateTime.Now; - db.MailData.Add(mbody); - db.SaveChanges(); - } - catch (Exception ex) - { - FCOMMON.Util.MsgE("업무일지 알림 메일 전송 실패" + ex.Message); - } - } - else FCOMMON.Util.MsgE("관리자메일양식 MA가 등록되지 않았습니다. 메일 양식을 확인하세요"); - } - - } - - DialogResult = System.Windows.Forms.DialogResult.OK; - } - - string maildataupdate(string org) - { - if (string.IsNullOrEmpty(org)) return string.Empty; - org = org.Replace("{pname}", tbProject.Text); - org = org.Replace("{pidx}", tbProjectIndex.Text); - org = org.Replace("{sdate}", dtPdate.Value.ToShortDateString()); - org = org.Replace("{edate}", dtPdate.Value.ToShortDateString()); - org = org.Replace("{pdate}", dtPdate.Value.ToShortDateString()); - org = org.Replace("{DATE}", dtPdate.Value.ToShortDateString()); - org = org.Replace("{NAME}", cmbUser.Text); - org = org.Replace("{HR}", tbHrs.Text); - org = org.Replace("{OT}", tbOt.Text); - org = org.Replace("{PROJECT}", tbProject.Text); - org = org.Replace("{REMARK}", richTextBoxEx1.Text); - org = org.Replace("{SENDER}",FCOMMON.info.Login.email); + if (dr["Svalue"].ToString().Equals("O")) + { + cmbProcess.Text = dr["Value"].ToString(); + break; + } + } + } - return org; - } + if (dr.ot > 0) + { + if (dr.ot2 == 0) + { + lbOt2.Text = "관리자 연장/휴일 근무 승인이 완료되지 않았습니다"; + lbOt2.ForeColor = Color.Blue; + lbotReason.Visible = false; + } + else + { + lbOt2.Text = $"승인시간:{dr.ot2}"; + lbotReason.Text = $"사유:{dr.otReason}"; + } + + } + else + { + lbOt2.Visible = false; + lbotReason.Visible = false; + } + + + if (getKisulInput) + { + cmb_kisuldiv.Text = dr.kisuldiv; + cmb_kisullv.Text = dr.kisullv; + textBox1.Text = dr.kisulamt.ToString(); + } + + if (dr.IsotStartNull()) dateTimePicker1.Value = DateTime.Now; + else dateTimePicker1.Value = dr.otStart; + if (dr.IsotEndNull()) dateTimePicker2.Value = DateTime.Now; + else dateTimePicker2.Value = dr.otEnd; + + //if (cmbRequest.Text == "") cmbRequest.Text = "EE1"; + if (cmbPackage.Text == "") cmbPackage.Text = "Common"; + + if (dr.ot != 0) + { + dateTimePicker1.Enabled = true; + dateTimePicker2.Enabled = true; + } + else + { + dateTimePicker1.Enabled = false; + dateTimePicker2.Enabled = false; + } + + //프로젝트 번호 확인(프로젝트번호가 바뀌면 데이터를 업데이트 해준다) + if (dr.IspidxNull()) + { + tbProjectIndex.Tag = -1; + tbProjectIndex.Text = "-1"; + } + else + { + tbProjectIndex.Tag = dr.pidx; + tbProjectIndex.Text = dr.pidx.ToString(); + } + + //신규일때만 사용가능 함 + if (dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Added) chkAutoAdd.Enabled = true; + else chkAutoAdd.Enabled = false; + + + if (string.IsNullOrEmpty(dr.description2)) + { + this.richTextBoxEx1.Text = dr.description; + } + else + { + try + { + this.richTextBoxEx1.Rtf = dr.description2; + } + catch + { + this.richTextBoxEx1.Text = dr.description; + } + } + + this.Show(); + Application.DoEvents(); - private void cmbType_SelectedIndexChanged(object sender, EventArgs e) - { - if (cmbType.Text.Trim() != "" && - cmbType.SelectedIndex >= 0 && - cmbProcess.SelectedIndex < 0 && - cmbUser.SelectedValue != null) - { - //공정을 자동선택해준다. - //마지막 데이터를 찾아서 공정등의 정보를 업데이트한다. - var uid = cmbUser.SelectedValue.ToString(); - var lastDt = FCOMMON.DBM.getLastJobReportData(uid, cmbType.Text.Trim()); - if (lastDt != null && lastDt.Rows.Count > 0) - { - var predr = lastDt.Rows[0];// as dsPRJ.JobReportRow; - if (predr["process"] != DBNull.Value) - cmbProcess.Text = predr["process"].ToString(); //190506 - } - - } - chkform_indexchan(sender, e); - - } - - void chkform_indexchan(object sender, EventArgs e) - { - if (cmbType.Text.Trim() != "" && - cmbType.SelectedIndex >= 0 && String.IsNullOrEmpty(cmbState.Text.Trim()) == false) - { + var MaxVerstion = FCOMMON.DBM.GetMaxVersion(); + if (string.IsNullOrEmpty(MaxVerstion) == false) + { + var curversion = Application.ProductVersion; + var verchk = curversion.CompareTo(MaxVerstion); + if (verchk < 0) + { + //내버젼이 낮다 + FCOMMON.Util.MsgE("현재 구 버젼을 사용하고 있습니다.\n업데이트를 진행 하고 사용하시기 바랍니다"); + } + } - //해당 데이터의 메일 양식을 검사해서 데이터를 적용해준다. - var formname = cmbType.Text.Trim() + "|" + cmbState.Text.Trim(); - var db = new EEEntities(); - - //프로젝트 제목 서포트 - var dr0 = db.EETGW_DocuForm.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.cate == "J2" && t.title == formname).FirstOrDefault(); - if (dr0 != null) - { - var rtx = new RichTextBox(); - rtx.Rtf = dr0.body; - lbTitleTip.Text = rtx.Text; - rtx.Dispose(); - } - else - { - lbTitleTip.Text = "프로젝트가 있다면 해당 프로젝트 명을 입력한 후 Enter 키를 눌러서 연결 해주세요"; - } - - var dr = db.EETGW_DocuForm.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.cate == "J1" && t.title == formname).FirstOrDefault(); - if (dr != null) - { - - if (String.IsNullOrEmpty(this.richTextBoxEx1.Text)) - { - this.richTextBoxEx1.Rtf = dr.body; - } - else - { - //뭔가 자료가 있는가? - var header = string.Empty; - var rt = new RichTextBoxEx.RichTextBoxEx(); - rt.Rtf = dr.body; - if (rt.Text.Length > 10) header = rt.Text.Substring(0, 10).Trim(); - else header = rt.Text.Trim(); - rt.Dispose(); + if (dr.ot > 0 && dr.ot2 > 0) + { + tbOt.Enabled = false; + FCOMMON.Util.MsgE("휴일/연장 근무시간이 관리자에의해 확정되었으므로 초과시간을 변경할 수 없습니다"); + } - if (this.richTextBoxEx1.Text.StartsWith(header) == false) - { - //if (FCOMMON.Util.MsgQ("등록된 작성 양식이 있습니다. 적용할까요?") == DialogResult.Yes) - { - var oldtext = this.richTextBoxEx1.Text; - this.richTextBoxEx1.Rtf = dr.body; - if (String.IsNullOrEmpty(this.richTextBoxEx1.Text) == false) - this.richTextBoxEx1.Text += "\r\n\r\n" + oldtext; + //if (this.richTextBoxEx1.Text.Trim() != "") + //{ + // this.richTextBoxEx1.Focus(); + //} + //else + //{ + cmbRequest.Focus(); + // tbProject.SelectAll(); + //} + tbProject.Tag = tbProject.Text; - //this.richTextBoxEx1.Text += oldtext; + // if (string.IsNullOrEmpty(richTextBox1.Text)) richTextBox1.Text = dr.description; - } - } - } - } + //editor + // ed = new editform.editor(); + //ed.AllowDiscAccess = true; + //ed.WindowTitle = "Quick Edit"; + //ed.StartingFont = new Font("Courier New", 12.0f, FontStyle.Regular); - } - } + //ed.DisplayEditForm(this.panel1); + //ed.AllowRtf = true; + if (ReadMode) + { + panel1.Enabled = false; + this.Text += "(읽기전용)"; + } + else if (dr.RowState != DataRowState.Detached && FCOMMON.info.Login.level < 5) + { + //신규자료가 아니라면 7일간만 편집을 허용한다 + var enableBlock = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.jobreport_editblock); + if(enableBlock) + { + var writedate = DateTime.Now - DateTime.Parse(dr.pdate); + if (writedate.TotalDays > 7) + { + panel1.Enabled = false; + this.Text += "(7일초과)"; + } + } + } - private void dtPdate_ValueChanged(object sender, EventArgs e) - { - var myCI = new System.Globalization.CultureInfo("ko-KR"); - var myCal = myCI.Calendar; - var myCWR = myCI.DateTimeFormat.CalendarWeekRule; - DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek; - var dat = myCal.GetWeekOfYear(dtPdate.Value, myCWR, myFirstDOW); - tbWW.Text = "ww" + dat.ToString(); - UpdateWOrkTime(); + //신규데이터라면 양식을 처리한다. + if (copyMOde == false && dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Added) + { + //해당 데이터의 메일 양식을 검사해서 데이터를 적용해준다. + var db = new EEEntities(); + var dr0 = db.EETGW_DocuForm.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.cate == "J0").FirstOrDefault(); + if (dr0 != null) + { + richTextBoxEx1.Rtf = dr0.body; + } + db.Dispose(); + } - //공휴일이면 시간을 초기화한다. - if (tbHrs.Text == "") tbHrs.Text = "0"; - if (tbOt.Text == "") tbOt.Text = "0"; - float hrs = float.Parse(tbHrs.Text); - //if (dtPdate.Value.DayOfWeek == DayOfWeek.Saturday || dtPdate.Value.DayOfWeek == DayOfWeek.Sunday) - //{ - // tbHrs.Enabled = false; - // if (hrs != 0) - // { - // FCOMMON.Util.MsgI("공휴일에는 근무시간을 입력할 수 없습니다.\n초과시간에 입력하세요.\n\n해당 값은 삭제 됩니다."); - // dr.hrs = 0; - // tbHrs.Text = "0"; - // if (hrs != 8) tbOt.Text = hrs.ToString(); - // tbOt.Focus(); - // } - //} - //else tbHrs.Enabled = true; - } - void UpdateWOrkTime() - { - //이번달 근무시간 및 초과시간 구하기 - if (cmbUser.SelectedValue != null) - { - float work, ot; - int total; - FCOMMON.DBM.getWorkTime(cmbUser.SelectedValue.ToString(), dtPdate.Value.ToString("yyyy-MM"), out work, out total, out ot); - string msg = "금월 근무시간 : {0:N1}h / {1:N0}h, 금월 초과시간 : {2:N1}h"; - lbSummary.Text = string.Format(msg, work, total, ot); - } - else - { - lbSummary.Text = "--"; - } - } - private void cmbUser_SelectedIndexChanged(object sender, EventArgs e) - { - if (cmbUser.SelectedIndex >= 0) - UpdateWOrkTime(); ; - } - private void tbOt_Validated(object sender, EventArgs e) - { - if (double.TryParse(tbOt.Text, out double ot)) - { - if (ot != 0) - { + bInit = true; + } + // editform.editor ed; + void ctl_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + Control ctl = sender as Control; + string nm = ctl.Name.ToLower(); + string search = ctl.Text.Trim(); - dateTimePicker1.Enabled = true; - dateTimePicker2.Enabled = true; + Console.WriteLine("inner keydown " + nm + ":" + search); - //신규데이터라면 자동으로 시간을 설정해준다 - if (dr.RowState == DataRowState.Added || dr.RowState == DataRowState.Detached) - { - if (dateTimePicker1.Value == dateTimePicker2.Value) - { - dateTimePicker1.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd" + " 18:00:00")); - dateTimePicker2.Value = dateTimePicker1.Value.AddHours(ot); - } - } - } - else - { - dateTimePicker1.Enabled = false; - dateTimePicker2.Enabled = false; - } + switch (nm) + { + //case "cmbrequest": - } - else - { - dateTimePicker1.Enabled = false; - dateTimePicker2.Enabled = false; + // //요청자가 마지막으로 입력한 자료의 process 를 찾아서 기입해준다. + // var lastprocess = FCOMMON.DBM.getFirstValue("process", "purchase", "request like '%" + this.cmbUser.Text + "%'", "pdate desc"); + // if (lastprocess != "") cbProcess.Text = lastprocess; + // tbSID.Focus(); + // break; + case "tbdescription": + if (e.Control) + { + btSave.Focus(); + } + break; + case "tbproject": + if (search != "") + { + var f = new fLovProject("%" + search + "%"); + if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + this.tbProject.Text = f.Title; + this.tbProject.Tag = f.Title; + this.tbProjectIndex.Text = f.Index.ToString(); + tbHrs.Focus(); + tbHrs.SelectAll(); - } - } + if (tbProjectIndex.Tag.ToString() != f.Index.ToString() || f.Index == -1) + { + //마지막 데이터를 찾아서 공정등의 정보를 업데이트한다. + var uid = cmbUser.SelectedValue.ToString(); + DataTable lastDt = null; + + if (f.Index != -1) lastDt = FCOMMON.DBM.getLastJobReportData(uid, f.Index); + else lastDt = FCOMMON.DBM.getLastJobReportDatabyProjectName(uid, f.Title); + + if (lastDt != null && lastDt.Rows.Count > 0) + { + var predr = lastDt.Rows[0]; + + if (predr["requestpart"] != DBNull.Value) + this.cmbRequest.Text = predr["requestpart"].ToString(); //190506 + + if (predr["package"] != DBNull.Value) + this.cmbPackage.Text = predr["package"].ToString(); //190506 + + if (predr["type"] != DBNull.Value) + this.cmbType.Text = predr["type"].ToString(); //190506 + + if (predr["process"] != DBNull.Value) + cmbProcess.Text = predr["process"].ToString(); //190506 + } + } + } + else + { + //이름만 사용한다. + tbProjectIndex.Text = "-1"; + cmbRequest.Focus(); + } + } + else + { + FCOMMON.Util.MsgE("프로젝트 혹은 아이템이름은 반드시 입력되어야 합니다."); + var tb = sender as ComboBox; + tb.SelectAll(); + tb.Focus(); + } + break; + + default: + SendKeys.Send("{TAB}"); + break; + } + } + } + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + FCM0000.fSelectDate f = new FCM0000.fSelectDate(this.dtPdate.Value.ToShortDateString()); + if (f.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; + dtPdate.Value = f.dtSelect; + } + + private void button1_Click(object sender, EventArgs e) + { + this.Invalidate(); + if (tbProject.Text.Trim() == "") + { + FCOMMON.Util.MsgE("프로젝트(아이템) 명칭이 없습니다."); + tbProject.Focus(); + return; + } + + //시작일 마감여부 + var smon = this.dtPdate.Value.ToString("yyyy-MM"); + if (FCOMMON.DBM.GetMagamStatus(smon)) + { + FCOMMON.Util.MsgE("등록일이 속한 월이 마감되었습니다\n마감된 월에는 [추가/변경/삭제] 를 할 수 없습니다"); + return; + } + + + if (cmbType.Text != "휴가" && string.IsNullOrEmpty(this.richTextBoxEx1.Text) == true) + { + FCOMMON.Util.MsgE("진행 내용이 없습니다."); + this.richTextBoxEx1.Focus(); + return; + } + float hour = Single.Parse(tbHrs.Text) + Single.Parse(tbOt.Text); + if (hour == 0) + { + FCOMMON.Util.MsgE("근무시간/초과시간이 입력되지 않았습니다."); + if (tbHrs.Enabled) tbHrs.Focus(); + else tbOt.Focus(); + return; + } + + if (dr.RowState == DataRowState.Added || dr.RowState == DataRowState.Detached) + { + if (FCOMMON.info.Disable_8hourover) + { + var h = Single.Parse(tbHrs.Text); + if (h > 8) + { + FCOMMON.Util.MsgE("근무시간은 8시간을 초과할 수 없습니다. 초과 근무는 [초과시간] 을 사용하세요"); + tbHrs.Focus(); + tbHrs.SelectAll(); + return; + } + } + } + + if (cmbType.Text.Trim() == "") + { + FCOMMON.Util.MsgE("업무형태를 선택하세요"); + cmbType.Focus(); + return; + } + if (cmbProcess.Text.Trim() == "") + { + FCOMMON.Util.MsgE("업무분류를 선택하세요"); + cmbProcess.Focus(); + return; + } + if (cmbUser.SelectedIndex < 0) + { + FCOMMON.Util.MsgE("담당자가 선택되지 않았습니다."); + cmbUser.Focus(); + return; + } + + if (tbProject.Tag.ToString() != tbProject.Text && tbProjectIndex.Text != "" && tbProjectIndex.Text != "-1") + { + FCOMMON.Util.MsgE("프로젝트가 선택되었으나 이름이 임의 수정되어 프로젝트 연결을 해제 합니다\n\n" + + "잘못된 프로젝트명은 프로젝트 관리화면에서 변경하시기 바랍니다.\n\n" + + "원본 : " + tbProject.Tag.ToString() + "\n" + + "현재 : " + tbProject.Text); + tbProjectIndex.Text = "-1"; + } + + ///휴일체크 + var taQ = new dsQueryTableAdapters.QueriesTableAdapter(); + var freeday = taQ.CheckHoliday(dtPdate.Value.ToShortDateString()); + if (freeday != null && freeday == true) + { + var hrs = float.Parse(tbHrs.Text); + if (hrs > 0) + { + FCOMMON.Util.MsgI("입력일자는 휴일로 등록되어 있습니다.\n\n OT에 해당하면 수정하시기 바랍니다."); + //tbOt.Text = tbHrs.Text; + //dr.hrs = 0; + //tbHrs.Text = "0"; + //tbHrs.Focus(); + //return; + } + } + + if (chkAutoAdd.Checked && (dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Added)) + { + if (tbProjectIndex.Text == "" || tbProjectIndex.Text == "-1") + { + FCOMMON.Util.MsgE("프로젝트 주간내역을 등록하려면 프로젝트가 지정되어야 합니다"); + tbProject.Focus(); + tbProject.SelectAll(); + return; + } + else + { + //190906 + FCOMMON.DBM.addProjectHistory(int.Parse(tbProjectIndex.Text), dtPdate.Value.ToShortDateString(), this.richTextBoxEx1.Text, this.richTextBoxEx1.Rtf); + } + } + + double hrs2 = 0.0; + if (double.TryParse(tbHrs.Text, out hrs2) == false) + { + FCOMMON.Util.MsgE("근무시간을 숫자로 입력하세요"); + tbHrs.Focus(); + tbHrs.SelectAll(); + return; + } + + if (double.TryParse(tbOt.Text, out double ot)) + { + var timeterm = dateTimePicker2.Value - dateTimePicker1.Value; + if ((timeterm.TotalMinutes + 1) * 60 <= ot) + { + FCOMMON.Util.MsgE($"OT시간이 지정된 시간대보다 부족합니다.\nOT시간정보를 확인하세요\n" + + $"\n입력시간범위 : {dateTimePicker1.Value.ToString("HH:mm:ss")}~{dateTimePicker2.Value.ToString("HH:mm:ss")}" + + $"\n입력시간(시) : {timeterm.TotalMinutes * 60}"); + dateTimePicker1.Focus(); + return; + } + + if (ot == 0) + { + dr.SetotNull(); + dr.SetotStartNull(); + dr.SetotEndNull(); + } + else + { + dr.ot = ot; + dr.otStart = dateTimePicker1.Value; + dr.otEnd = dateTimePicker2.Value; + } + } + else + { + dr.SetotNull(); + dr.SetotStartNull(); + dr.SetotEndNull(); + } + + //var MaxVerstion = FCOMMON.DBM.GetMaxVersion(); + //if (string.IsNullOrEmpty(MaxVerstion) == false) + //{ + // var curversion = Application.ProductVersion; + // var verchk = curversion.CompareTo(MaxVerstion); + // if (verchk < 0) + // { + // //내버젼이 낮다 + // FCOMMON.Util.MsgE("현재 구 버젼을 사용하고 있습니다.\n업데이트를 진행 하고 사용하시기 바랍니다"); + // } + //} + ////if(hrs2 > 8) + //{ + // FCOMMON.Util.MsgE("1일 최대근무시간은 8시간을 초과할 수 없습니다\n초과시간을 사용하세요"); + // tbHrs.SelectAll(); + // tbHrs.Focus(); + // return; + //} + + this.dr.uid = this.cmbUser.SelectedValue.ToString(); + this.dr.pdate = dtPdate.Value.ToShortDateString(); + this.dr.status = cmbState.Text; + this.dr.projectName = tbProject.Text; + if (tbProjectIndex.Text != "") dr.pidx = int.Parse(tbProjectIndex.Text); + else dr.SetpidxNull(); + this.dr.requestpart = cmbRequest.Text; + this.dr.package = cmbPackage.Text; + this.dr.type = cmbType.Text; + this.dr.process = cmbProcess.Text; + this.dr.tag = tbTag.Text.Trim(); + + if (getKisulInput) + { + this.dr.kisuldiv = cmb_kisuldiv.Text; + this.dr.kisullv = cmb_kisullv.Text; + this.dr.kisulamt = Decimal.Parse(textBox1.Text); + } + + if (tbHrs.Text != "") this.dr.hrs = double.Parse(tbHrs.Text); + else this.dr.hrs = 0; + + //this.dr.description = richTextBox1.Text.Trim(); + + //MessageBox.Show(richTextBox1.Text); + this.dr.description = richTextBoxEx1.Text; + this.dr.description2 = richTextBoxEx1.Rtf; // ef.DocumentText;// richTextBox1.Rtf; + this.bs.EndEdit(); + + if (chkManagerAlert.Checked) + { + var dlg = FCOMMON.Util.MsgQ("관리자 메일을 전송할까요?\n업무일지 작성 내용이 전달 됩니다"); + if (dlg == DialogResult.Yes) + { + var db = new EEEntities(); + var mf = db.MailForm.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.cate == "MA").FirstOrDefault(); + if (mf != null) + { + try + { + var mbody = new MailData(); + mbody.tolist = maildataupdate(mf.tolist); + mbody.bcc = maildataupdate(mf.bcc); + mbody.cc = maildataupdate(mf.cc); + mbody.project = dr.pidx; + mbody.gcode = FCOMMON.info.Login.gcode; + mbody.cate = mf.cate; + mbody.fromlist = "gw@amkor.co.kr"; + mbody.pdate = DateTime.Now.ToShortDateString(); + mbody.subject = maildataupdate(mf.subject); + mbody.body = maildataupdate(mf.body); + mbody.wuid = FCOMMON.info.Login.no; + mbody.wdate = DateTime.Now; + db.MailData.Add(mbody); + db.SaveChanges(); + } + catch (Exception ex) + { + FCOMMON.Util.MsgE("업무일지 알림 메일 전송 실패" + ex.Message); + } + } + else FCOMMON.Util.MsgE("관리자메일양식 MA가 등록되지 않았습니다. 메일 양식을 확인하세요"); + } + + } + + DialogResult = System.Windows.Forms.DialogResult.OK; + } + + string maildataupdate(string org) + { + if (string.IsNullOrEmpty(org)) return string.Empty; + org = org.Replace("{pname}", tbProject.Text); + org = org.Replace("{pidx}", tbProjectIndex.Text); + org = org.Replace("{sdate}", dtPdate.Value.ToShortDateString()); + org = org.Replace("{edate}", dtPdate.Value.ToShortDateString()); + org = org.Replace("{pdate}", dtPdate.Value.ToShortDateString()); + org = org.Replace("{DATE}", dtPdate.Value.ToShortDateString()); + org = org.Replace("{NAME}", cmbUser.Text); + org = org.Replace("{HR}", tbHrs.Text); + org = org.Replace("{OT}", tbOt.Text); + org = org.Replace("{PROJECT}", tbProject.Text); + org = org.Replace("{REMARK}", richTextBoxEx1.Text); + org = org.Replace("{SENDER}", FCOMMON.info.Login.email); + + + return org; + } + + + + private void cmbType_SelectedIndexChanged(object sender, EventArgs e) + { + if (cmbType.Text.Trim() != "" && + cmbType.SelectedIndex >= 0 && + cmbProcess.SelectedIndex < 0 && + cmbUser.SelectedValue != null) + { + //공정을 자동선택해준다. + //마지막 데이터를 찾아서 공정등의 정보를 업데이트한다. + var uid = cmbUser.SelectedValue.ToString(); + var lastDt = FCOMMON.DBM.getLastJobReportData(uid, cmbType.Text.Trim()); + if (lastDt != null && lastDt.Rows.Count > 0) + { + var predr = lastDt.Rows[0];// as dsPRJ.JobReportRow; + if (predr["process"] != DBNull.Value) + cmbProcess.Text = predr["process"].ToString(); //190506 + } + + } + chkform_indexchan(sender, e); + + } + + void chkform_indexchan(object sender, EventArgs e) + { + if (cmbType.Text.Trim() != "" && + cmbType.SelectedIndex >= 0 && String.IsNullOrEmpty(cmbState.Text.Trim()) == false) + { + + + //해당 데이터의 메일 양식을 검사해서 데이터를 적용해준다. + var formname = cmbType.Text.Trim() + "|" + cmbState.Text.Trim(); + var db = new EEEntities(); + + //프로젝트 제목 서포트 + var dr0 = db.EETGW_DocuForm.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.cate == "J2" && t.title == formname).FirstOrDefault(); + if (dr0 != null) + { + var rtx = new RichTextBox(); + rtx.Rtf = dr0.body; + lbTitleTip.Text = rtx.Text; + rtx.Dispose(); + } + else + { + lbTitleTip.Text = "프로젝트가 있다면 해당 프로젝트 명을 입력한 후 Enter 키를 눌러서 연결 해주세요"; + } + + var dr = db.EETGW_DocuForm.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.cate == "J1" && t.title == formname).FirstOrDefault(); + if (dr != null) + { + + if (String.IsNullOrEmpty(this.richTextBoxEx1.Text)) + { + this.richTextBoxEx1.Rtf = dr.body; + } + else + { + //뭔가 자료가 있는가? + var header = string.Empty; + + + var rt = new RichTextBoxEx.RichTextBoxEx(); + rt.Rtf = dr.body; + if (rt.Text.Length > 10) header = rt.Text.Substring(0, 10).Trim(); + else header = rt.Text.Trim(); + rt.Dispose(); + + if (this.richTextBoxEx1.Text.StartsWith(header) == false) + { + //if (FCOMMON.Util.MsgQ("등록된 작성 양식이 있습니다. 적용할까요?") == DialogResult.Yes) + { + var oldtext = this.richTextBoxEx1.Text; + this.richTextBoxEx1.Rtf = dr.body; + if (String.IsNullOrEmpty(this.richTextBoxEx1.Text) == false) + this.richTextBoxEx1.Text += "\r\n\r\n" + oldtext; + + //this.richTextBoxEx1.Text += oldtext; + + } + } + } + } + + } + } + + private void dtPdate_ValueChanged(object sender, EventArgs e) + { + var myCI = new System.Globalization.CultureInfo("ko-KR"); + var myCal = myCI.Calendar; + var myCWR = myCI.DateTimeFormat.CalendarWeekRule; + DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek; + var dat = myCal.GetWeekOfYear(dtPdate.Value, myCWR, myFirstDOW); + tbWW.Text = "ww" + dat.ToString(); + UpdateWOrkTime(); + + //공휴일이면 시간을 초기화한다. + if (tbHrs.Text == "") tbHrs.Text = "0"; + if (tbOt.Text == "") tbOt.Text = "0"; + float hrs = float.Parse(tbHrs.Text); + //if (dtPdate.Value.DayOfWeek == DayOfWeek.Saturday || dtPdate.Value.DayOfWeek == DayOfWeek.Sunday) + //{ + // tbHrs.Enabled = false; + // if (hrs != 0) + // { + // FCOMMON.Util.MsgI("공휴일에는 근무시간을 입력할 수 없습니다.\n초과시간에 입력하세요.\n\n해당 값은 삭제 됩니다."); + // dr.hrs = 0; + // tbHrs.Text = "0"; + // if (hrs != 8) tbOt.Text = hrs.ToString(); + // tbOt.Focus(); + // } + //} + //else tbHrs.Enabled = true; + } + void UpdateWOrkTime() + { + //이번달 근무시간 및 초과시간 구하기 + if (cmbUser.SelectedValue != null) + { + float work, ot; + int total; + FCOMMON.DBM.getWorkTime(cmbUser.SelectedValue.ToString(), dtPdate.Value.ToString("yyyy-MM"), out work, out total, out ot); + string msg = "금월 근무시간 : {0:N1}h / {1:N0}h, 금월 초과시간 : {2:N1}h"; + lbSummary.Text = string.Format(msg, work, total, ot); + } + else + { + lbSummary.Text = "--"; + } + } + private void cmbUser_SelectedIndexChanged(object sender, EventArgs e) + { + if (cmbUser.SelectedIndex >= 0) + UpdateWOrkTime(); ; + } + + private void tbOt_Validated(object sender, EventArgs e) + { + if (double.TryParse(tbOt.Text, out double ot)) + { + if (ot != 0) + { + + dateTimePicker1.Enabled = true; + dateTimePicker2.Enabled = true; + + //신규데이터라면 자동으로 시간을 설정해준다 + if (dr.RowState == DataRowState.Added || dr.RowState == DataRowState.Detached) + { + if (dateTimePicker1.Value == dateTimePicker2.Value) + { + dateTimePicker1.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd" + " 18:00:00")); + dateTimePicker2.Value = dateTimePicker1.Value.AddHours(ot); + } + } + } + else + { + dateTimePicker1.Enabled = false; + dateTimePicker2.Enabled = false; + } + + } + else + { + dateTimePicker1.Enabled = false; + dateTimePicker2.Enabled = false; + + } + } private void tbProjectIndex_Click(object sender, EventArgs e) { - if(int.TryParse(tbProjectIndex.Text, out int pidx)) + if (int.TryParse(tbProjectIndex.Text, out int pidx)) { - if (pidx < 1) return; + if (pidx < 1) return; - var ta = new dsPRJTableAdapters.ProjectsTableAdapter(); - var dr = ta.GetbyIDX(pidx).First(); - var f = new fProjectData(dr,false); - f.Show(); - //if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) - //{ - // this.Validate(); - // dr.EndEdit(); - // try - // { - // var cnt = ta.Update(this.dsPRJ.Projects);//.UpdateAll(this.dsMSSQL.Projects); - // dsPRJ.Projects.AcceptChanges(); - // if(cnt != 1) - // { - // FCOMMON.Util.MsgE("저장 실패"); - // } - // } - // catch (Exception ex) - // { - // FCOMMON.Util.MsgE(ex.Message); - // } - //} - } + var ta = new dsPRJTableAdapters.ProjectsTableAdapter(); + var dr = ta.GetbyIDX(pidx).First(); + var f = new fProjectData(dr, false); + f.Show(); + //if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) + //{ + // this.Validate(); + // dr.EndEdit(); + // try + // { + // var cnt = ta.Update(this.dsPRJ.Projects);//.UpdateAll(this.dsMSSQL.Projects); + // dsPRJ.Projects.AcceptChanges(); + // if(cnt != 1) + // { + // FCOMMON.Util.MsgE("저장 실패"); + // } + // } + // catch (Exception ex) + // { + // FCOMMON.Util.MsgE(ex.Message); + // } + //} + } } } } diff --git a/SubProject/FPJ0000/JobReport_/fJobReport_Add.resx b/SubProject/FPJ0000/JobReport_/fJobReport_Add.resx index edf45f6..50bf37e 100644 --- a/SubProject/FPJ0000/JobReport_/fJobReport_Add.resx +++ b/SubProject/FPJ0000/JobReport_/fJobReport_Add.resx @@ -162,6 +162,12 @@ 100, 17 + + 100, 17 + + + 17, 17 + 17, 17 @@ -184,4 +190,7 @@ 226, 17 + + 416, 17 + \ No newline at end of file