Files
Groupware/SubProject/FBS0000/Holiday/fTimeTransfer.cs
2025-01-08 16:17:34 +09:00

167 lines
6.3 KiB
C#

using FCOMMON;
using NetOffice.Extensions.Invoker;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AR;
using NetOffice.OutlookApi;
namespace FBS0000.Holiday
{
public partial class fTimeTransfer : fBase
{
public fTimeTransfer()
{
InitializeComponent();
Properties.Settings.Default["gwcs"] = FCOMMON.info.CS;
//dtSD.KeyDown += dtSD_KeyDown;
//dtED.KeyDown += dtSD_KeyDown;
}
private void fErrorChk_Load(object sender, EventArgs e)
{
//기본 이번달 설정한다
dtSD.Value = DateTime.Now.AddMonths(-1);
dateTimePicker1.Value = new DateTime(DateTime.Now.Year, 1, 1);
EnsureVisibleAndUsableSize();
}
private void button1_Click(object sender, EventArgs e)
{
//검사버튼
var sd = DateTime.Parse(dtSD.Text);
var stime = new DateTime(sd.Year, 1, 1);
var etime = new DateTime(sd.Year, sd.Month, 1).AddMonths(1).AddDays(-1);
var gcode = FCOMMON.info.Login.gcode;
//var id = FCOMMON.info.Login.no;
var cn = FCOMMON.DBM.getCn();
cn.Open();
var cmd = new System.Data.SqlClient.SqlCommand("", cn);
cmd.Parameters.Add("gcode", SqlDbType.VarChar).Value = gcode;
cmd.Parameters.Add("sd", SqlDbType.VarChar).Value = stime.ToShortDateString();
cmd.Parameters.Add("ed", SqlDbType.VarChar).Value = etime.ToShortDateString();
//근태입력자료확인
cmd.CommandText = "SELECT holyday.uid, Users.name,\r\nsum( Holyday.DrTime) AS Dr," +
" sum(Holyday.CrTime) AS Cr, sum( Holyday.DrTime) - sum(holyday.crtime) as jan" +
" FROM Holyday WITH (NOLOCK)" +
" LEFT OUTER JOIN EETGW_GroupUser WITH (NOLOCK) " +
" ON Holyday.gcode = EETGW_GroupUser.gcode AND Holyday.uid = EETGW_GroupUser.uid " +
" LEFT OUTER JOIN Users WITH (NOLOCK) ON Holyday.uid = Users.id" +
" WHERE (Holyday.gcode = @gcode) AND (Holyday.sdate BETWEEN @sd AND @ed) and EETGW_GroupUser.useUserState = 1 " +
" AND (ISNULL(Holyday.DrTime, 0) + ISNULL(Holyday.CrTime, 0) <> 0)" +
" group by holyday.uid,Users.name" +
" having sum( Holyday.DrTime) - sum(holyday.crtime) <> 0" +
" order by Users.name";
var dar = cmd.ExecuteReader();
this.listView1.Items.Clear();
double sum_dr, sum_cr, sum_jan;
sum_dr = sum_cr = sum_jan = 0.0;
while (dar.Read())
{
var str_uid = dar[0].ToString();
var str_name = dar[1].ToString();
var str_dr = (double)dar[2];
var str_cr = (double)dar[3];
var str_jan = (double)dar[4];
sum_dr += str_dr;
sum_cr += str_cr;
sum_jan += str_jan;
var lv = this.listView1.Items.Add(str_uid);
lv.SubItems.Add(str_name);
lv.SubItems.Add(str_dr.ToString());
lv.SubItems.Add(str_cr.ToString());
lv.SubItems.Add(str_jan.ToString());
lv.Tag = $"{str_uid}|{str_jan}";
lv.Checked = true;
}
var lvsum = this.listView1.Items.Add("Total");
lvsum.SubItems.Add("");
lvsum.SubItems.Add(sum_dr.ToString());
lvsum.SubItems.Add(sum_cr.ToString());
lvsum.SubItems.Add(sum_jan.ToString());
lvsum.Checked = false;
lvsum.BackColor = Color.Gray;
dar.Close();
cn.Dispose();
}
private void button2_Click_1(object sender, EventArgs e)
{
dtSD.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM") + "-01");
}
private void button3_Click(object sender, EventArgs e)
{
var = DateTime.Parse(dtSD.Value.ToString("yyyy-MM") + "-01");
dtSD.Value = .AddMonths(-1);
}
private void button1_Click_1(object sender, EventArgs e)
{
var = DateTime.Parse(dtSD.Value.ToString("yyyy-MM") + "-01");
dtSD.Value = .AddMonths(1);
}
private void button4_Click(object sender, EventArgs e)
{
var chkitems = this.listView1.CheckedItems;
if (chkitems.Count < 1)
{
UTIL.MsgE("등록 가능한 아이템이 없습니다");
return;
}
var ed = dateTimePicker1.Value;
if (UTIL.MsgQ($"{chkitems.Count}건의 자료를 {ed.ToShortDateString()}일자로 등록할까요?\n구분은 '대체'로 입력됩니다") != DialogResult.Yes)
return;
var sumjan = 0.0;
var ta = new dsMSSQLTableAdapters.HolydayTableAdapter();
var dt = new dsMSSQL.HolydayDataTable();
foreach (ListViewItem lv in chkitems)
{
if (lv.Tag == null) continue;
var buf = lv.Tag.ToString().Split('|');
var uid = buf[0];
var jan = double.Parse(buf[1]);
sumjan += jan;
var dr = dt.NewHolydayRow();
dr.DrTime = jan;
dr.sdate = ed;
dr.edate = ed;
dr.uid = uid;
dr.title = "대체이월";
dr.contents = "대체이월";
dr.tag = "iwol";
dr.wuid = FCOMMON.info.Login.no;
dr.wdate = DateTime.Now;
dr.cate = "대체";
dr.iwol = true;
dr.gcode = FCOMMON.info.Login.gcode;
dt.AddHolydayRow(dr);
}
var cnt = ta.Update(dt);
if (cnt > 0)
UTIL.MsgI($"{cnt}건의 자료가 추가 되었습니다");
else UTIL.MsgE("저장된 자료가 없습니다");
}
}
}