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