196 lines
7.2 KiB
C#
196 lines
7.2 KiB
C#
using System;
|
|
using System.Data;
|
|
using System.Web.UI.WebControls;
|
|
using System.Data.Common;
|
|
using System.Text;
|
|
using System.Net.Mail;
|
|
using Wellan.Data;
|
|
using System.Linq;
|
|
using Newtonsoft.Json;
|
|
using System.Collections.Generic;
|
|
using NPOI.HSSF.Record.Chart;
|
|
|
|
public partial class forms_test_Test : Wellan.Web.UI.WUserControlBase
|
|
{
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
}
|
|
|
|
protected override void OnInit(EventArgs e)
|
|
{
|
|
base.OnInit(e);
|
|
}
|
|
|
|
protected void btnTestHoliday_Click(object sender, EventArgs e)
|
|
{
|
|
//TestHolidayResult.Text = "";
|
|
|
|
//BhrdDAC bhrd = new BhrdDAC();
|
|
//var r1 = bhrd.IsHoliday("00002", new DateTime(2023, 3, 1));
|
|
//var r2 = bhrd.IsHoliday("00002", new DateTime(2023, 3, 2));
|
|
//var r3 = bhrd.IsHoliday("00002", new DateTime(2023, 3, 3));
|
|
//var r4 = bhrd.IsHoliday("00002", new DateTime(2023, 3, 4));
|
|
|
|
//TestHolidayResult.Text = string.Format("2023-03-01 ==> {0}<br>2023-03-02 ==> {1}<br>2023-03-03 ==> {2}<br>2023-03-04 ==> {3}", r1, r2, r3, r4);
|
|
}
|
|
|
|
protected void btnGenRPIRImport_Click(object sender, EventArgs e)
|
|
{
|
|
//GenRPIRImportResult.Text = "";
|
|
//var f = System.IO.File.ReadAllText("D:/TEMP2/員工眷屬加保資料.json");
|
|
//var familyList = JsonConvert.DeserializeObject<FamilyList>(f);
|
|
//GenRPIRImportResult.Text += string.Format("{0}<br>", familyList.Count());
|
|
//foreach (var bpeno in familyList.Keys)
|
|
//{
|
|
// var familys = familyList[bpeno];
|
|
// foreach (var family in familys)
|
|
// {
|
|
// DateTime dt;
|
|
// if (!string.IsNullOrEmpty(family.BIRTHDAY))
|
|
// {
|
|
// if (DateTime.TryParseExact(family.BIRTHDAY, "yyyy-MM-dd"
|
|
// , Wellan.Common.WGuard1.InvariantCulture
|
|
// , System.Globalization.DateTimeStyles.None
|
|
// , out dt))
|
|
// {
|
|
// family.BIRTHDAY = dt.ToString("yyyyMMdd");
|
|
// }
|
|
// else
|
|
// {
|
|
// family.BIRTHDAY = "";
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// family.BIRTHDAY = "";
|
|
// }
|
|
|
|
// if (!string.IsNullOrEmpty(family.START_DATE))
|
|
// {
|
|
|
|
// if (DateTime.TryParseExact(family.START_DATE, "yyyy-MM-dd"
|
|
// , Wellan.Common.WGuard1.InvariantCulture
|
|
// , System.Globalization.DateTimeStyles.None
|
|
// , out dt))
|
|
// {
|
|
// family.START_DATE = dt.ToString("yyyyMMdd");
|
|
// }
|
|
// else
|
|
// {
|
|
// family.START_DATE = "";
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// family.START_DATE = "";
|
|
// }
|
|
|
|
// if (!string.IsNullOrEmpty(family.END_DATE))
|
|
// {
|
|
// if (DateTime.TryParseExact(family.END_DATE, "yyyy-MM-dd"
|
|
// , Wellan.Common.WGuard1.InvariantCulture
|
|
// , System.Globalization.DateTimeStyles.None
|
|
// , out dt))
|
|
// {
|
|
// family.END_DATE = dt.ToString("yyyyMMdd");
|
|
// }
|
|
// else
|
|
// {
|
|
// family.END_DATE = "";
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// family.END_DATE = "";
|
|
// }
|
|
// }
|
|
|
|
// var d0 = familys.Where(x => x.DEDUCT == "0").Count();
|
|
// var d1 = familys.Where(x => x.DEDUCT == "25").Count();
|
|
// var d2 = familys.Where(x => x.DEDUCT == "50").Count();
|
|
// var d3 = familys.Where(x => x.DEDUCT == "100").Count();
|
|
|
|
// var maxRpren = Convert.ToString(Query.ExecuteScalar(string.Format("SELECT MAX(RPREN) FROM RPIR WHERE RPENO='{0}'", bpeno)));
|
|
// var maxRpitm = Convert.ToInt32(Query.ExecuteScalar(string.Format("SELECT ISNULL(MAX(RPITM), 0) FROM RPIB WHERE RPREN='{0}'", maxRpren)));
|
|
// // GenRPIRImportResult.Text += string.Format("{0} {1} {2}<br>", bpeno, maxRpren, maxRpitm);
|
|
|
|
// if (maxRpitm == 0)
|
|
// {
|
|
// GenRPIRImportResult.Text += string.Format("UPDATE RPIR SET RPFMY={1}, RPFM1={2}, RPFM2={3}, RPFM3={4}, RPFMD='{5}' WHERE RPREN='{0}';<br>"
|
|
// , maxRpren, d0, d1, d2, d3, JsonConvert.SerializeObject(familys));
|
|
// }
|
|
// else
|
|
// {
|
|
// GenRPIRImportResult.Text += string.Format("UPDATE RPIB SET RPFMY={2}, RPFM1={3}, RPFM2={4}, RPFM3={5}, RPFMD='{6}' WHERE RPREN='{0}' AND RPITM={1};<br>"
|
|
// , maxRpren, maxRpitm, d0, d1, d2, d3, JsonConvert.SerializeObject(familys));
|
|
// }
|
|
//}
|
|
}
|
|
|
|
protected void testGetRPIR_Click(object sender, EventArgs e)
|
|
{
|
|
GetData getData = new GetData();
|
|
DateTime calcStartDay = new DateTime(2023, 9, 1);
|
|
DateTime calcEndDay = new DateTime(2023, 9, 15);
|
|
DateTime aYYMM = new DateTime(2023, 9, 1);
|
|
int thisMonthDays = 30;
|
|
int thisMonthLaborDays = 0;
|
|
Blif blif = new Blif(aYYMM);
|
|
Blra blra = new Blra(aYYMM);
|
|
|
|
DbConnection conn = Query.NewConnection();
|
|
RPIRRecord rpirRecord = new RPIRRecord();
|
|
|
|
conn.Open();
|
|
DbTransaction tran = conn.BeginTransaction();
|
|
getData.Query = Query;
|
|
DataTable rpir勞保 = getData.GetRPIR(calcStartDay, calcEndDay, "02184", tran, true);
|
|
|
|
DateTime prevStartDay = new DateTime();
|
|
DateTime prevEndDay = new DateTime();
|
|
|
|
foreach (DataRow rpirRow in rpir勞保.Rows)
|
|
{
|
|
rpirRecord.FillRecord(rpirRow);
|
|
DateTime startDay1 = rpirRecord.RPBDT < calcStartDay ? calcStartDay : rpirRecord.RPBDT;
|
|
DateTime endDay1 = (rpirRecord.RPXDT.Ticks == 0) ||
|
|
(aYYMM.Year != rpirRecord.RPXDT.Year || aYYMM.Month != rpirRecord.RPXDT.Month)
|
|
? calcEndDay : rpirRecord.RPXDT;
|
|
|
|
// 勞保費
|
|
blif.Add(rpirRecord.RPAMT, startDay1, endDay1, rpirRecord.GoOut, rpirRecord.RPDIS,
|
|
rpirRecord.RPLIS, rpirRecord.RPOLD, rpirRecord.RPOVR, rpirRecord.RPPTP,
|
|
rpirRecord.RPNAT, ref thisMonthLaborDays);
|
|
|
|
// 勞退提撥
|
|
blra.Add(rpirRecord.RPAMT, startDay1, endDay1, rpirRecord.RPSLA, rpirRecord.RPPTP, thisMonthDays, rpirRecord.RPNAT);
|
|
|
|
prevStartDay = startDay1;
|
|
prevEndDay = endDay1;
|
|
}
|
|
|
|
blif.GetFee();
|
|
blra.GetFee();
|
|
|
|
tran.Rollback();
|
|
conn.Close();
|
|
}
|
|
}
|
|
public class FamilyList: Dictionary<string, List<Family>>
|
|
{
|
|
}
|
|
|
|
public class Family
|
|
{
|
|
public string NAME { get; set; }
|
|
public string BIRTHDAY { get; set; }
|
|
public string IDNO { get; set; }
|
|
public string RELATIONSHIP { get; set; }
|
|
public string DEDUCT { get; set; }
|
|
public string START_DATE { get; set; }
|
|
public string END_DATE { get; set; }
|
|
}
|
|
|
|
|
|
|