chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="fmBSGP.ascx.cs" Inherits="forms_flow_fmBSGP" %>
|
||||
<%@ Register Assembly="WNET" Namespace="Wellan.Web.UI" TagPrefix="cc1" %>
|
||||
<cc1:WLabel ID="WLabel1" runat="server" CssClass="pageTitle">差勤表單簽核人員設定</cc1:WLabel>
|
||||
<asp:CustomValidator ID="cvMessage" runat="server" Display="None"></asp:CustomValidator>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<cc1:WLabel ID="WLabel6" runat="server" TextMessageId="">年度:</cc1:WLabel></td>
|
||||
<td class="dataEditCell">
|
||||
<asp:TextBox ID="txtYY" runat="server" Columns="4"
|
||||
CssClass="textInput1" MaxLength="4"></asp:TextBox><cc1:WButton
|
||||
ID="btnYY" runat="server" AccessKey="Y"
|
||||
CssClass="button" OnClick="btnYY_Click"
|
||||
Text="Y.確定" /></td>
|
||||
<td class="dataEditCell">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<cc1:WLabel ID="WLabel3" runat="server"
|
||||
TextMessageId="">專案:</cc1:WLabel></td>
|
||||
<td class="dataEditCell">
|
||||
<cc1:WDropDownList ID="ddlRPPYN"
|
||||
runat="server" CssClass="textInput1"
|
||||
DataTextField="BPPYM" DataValueField="BPPYN"
|
||||
Width="500px">
|
||||
</cc1:WDropDownList></td>
|
||||
<td class="dataEditCell">
|
||||
<cc1:WButton ID="Next" runat="server"
|
||||
AccessKey="J" CausesValidation="False"
|
||||
CssClass="button" OnClick="Next_Click"
|
||||
Text="J.選擇專案" UseSubmitBehavior="False" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
<asp:Panel ID="Panel1" runat="server" Visible="False">
|
||||
<table cellpadding="4" cellspacing="4" border="0">
|
||||
<tr>
|
||||
<th>
|
||||
<asp:Label ID="Label1" runat="server" Text="簽核人員"></asp:Label>
|
||||
</th>
|
||||
<th>
|
||||
<asp:Label ID="Label2" runat="server" Text="內部人員"></asp:Label>
|
||||
</th>
|
||||
<th>
|
||||
<asp:Label ID="Label3" runat="server" Text="外部人員"></asp:Label>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table cellpadding="4" cellspacing="0"
|
||||
style="margin-bottom:10px">
|
||||
<tr>
|
||||
<th style="text-align:center; width:36px">
|
||||
(1)<br /><br />第<br /><br />一<br /><br />關
|
||||
</th>
|
||||
<td valign="top">
|
||||
<asp:ListBox ID="lbLVL1" runat="server" Rows="8"
|
||||
Width="140px" SelectionMode="Multiple"></asp:ListBox>
|
||||
</td>
|
||||
<td>
|
||||
<asp:ImageButton ID="btnIn1" runat="server"
|
||||
ImageUrl="~/picture/arrow_left.png"
|
||||
onclick="btnMoveIn_Click" />
|
||||
<br />
|
||||
<br />
|
||||
<asp:ImageButton ID="btnOut1" runat="server"
|
||||
ImageUrl="~/picture/arrow_right.png"
|
||||
onclick="btnMoveOut_Click" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="3"></td></tr>
|
||||
<tr>
|
||||
<th style="text-align:center;">
|
||||
(2)<table style="width:100%; text-align:center"><tr><td>長<br /><br />官<br /><br />關</td><td>︵<br />請<br />假<br />超<br />過<br />三<br />日<br />︶</td></tr></table>
|
||||
</th>
|
||||
<td valign="top">
|
||||
<asp:ListBox ID="lbLVL2" runat="server" Rows="8"
|
||||
Width="140px" SelectionMode="Multiple"></asp:ListBox>
|
||||
</td>
|
||||
<td>
|
||||
<asp:ImageButton ID="btnIn2" runat="server"
|
||||
ImageUrl="~/picture/arrow_left.png"
|
||||
onclick="btnMoveIn_Click" />
|
||||
<br />
|
||||
<br />
|
||||
<asp:ImageButton ID="btnOut2" runat="server"
|
||||
ImageUrl="~/picture/arrow_right.png"
|
||||
onclick="btnMoveOut_Click" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="3"></td></tr>
|
||||
<tr>
|
||||
<th style="text-align:center;">
|
||||
(3)<br /><br />第<br /><br />二<br /><br />關
|
||||
</th>
|
||||
<td valign="top">
|
||||
<asp:ListBox ID="lbLVL3" runat="server" Rows="8"
|
||||
Width="140px" SelectionMode="Multiple"></asp:ListBox>
|
||||
</td>
|
||||
<td>
|
||||
<asp:ImageButton ID="btnIn3" runat="server"
|
||||
ImageUrl="~/picture/arrow_left.png"
|
||||
onclick="btnMoveIn_Click" />
|
||||
<br />
|
||||
<br />
|
||||
<asp:ImageButton ID="btnOut3" runat="server"
|
||||
ImageUrl="~/picture/arrow_right.png"
|
||||
onclick="btnMoveOut_Click" style="height: 32px" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<asp:Button ID="btnClear1" runat="server"
|
||||
onclick="btnClear_Click" Text="清除選取" />
|
||||
<br />
|
||||
<asp:ListBox ID="lbBPSN" runat="server" Width="140px"
|
||||
Rows="30" SelectionMode="Multiple"></asp:ListBox>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<asp:Button ID="btnClear2" runat="server"
|
||||
onclick="btnClear_Click" Text="清除選取" />
|
||||
<br />
|
||||
<asp:ListBox ID="lbBPAP" runat="server" Width="140px"
|
||||
Rows="30" SelectionMode="Multiple"></asp:ListBox>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</asp:Panel>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,248 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Configuration;
|
||||
using System.Collections.Generic;
|
||||
using System.Web;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.UI.WebControls.WebParts;
|
||||
using System.Web.UI.HtmlControls;
|
||||
using System.Text;
|
||||
using Wellan.Data;
|
||||
using Wellan.Common;
|
||||
|
||||
public partial class forms_flow_fmBSGP : Wellan.Web.UI.WUserControlBase
|
||||
{
|
||||
private BpapDAC bpabDao;
|
||||
private BsgpDAC bsgpDao;
|
||||
private string _RPPYN;
|
||||
private int _YY;
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
_RPPYN = WDAC.GetStringValue(ViewState["RPPYN"]);
|
||||
_YY = WDAC.GetInt32Value(ViewState["YY"]);
|
||||
|
||||
if (_YY > 0)
|
||||
{
|
||||
txtYY.Text = _YY.ToString();
|
||||
ListItem item = ddlRPPYN.Items.FindByValue(_RPPYN);
|
||||
if (item != null)
|
||||
item.Selected = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
txtYY.Focus();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnInit(EventArgs e)
|
||||
{
|
||||
base.OnInit(e);
|
||||
bpabDao = new BpapDAC(Query);
|
||||
bsgpDao = new BsgpDAC(Query);
|
||||
}
|
||||
|
||||
private void BindListBox(bool clear)
|
||||
{
|
||||
if (lbBPSN.Items.Count == 0)
|
||||
{
|
||||
DataTable bpsnData = GetListData("BPSN",
|
||||
String.Format("BPEDY IS NULL AND BPDPT IN {0} AND EXISTS (SELECT RANUM FROM RASN WHERE RAPYN IN ('103JYB00001', '103TYB00001') AND RANUM=BPENO AND RAEDT IS NULL)", PublicVariable.InnerDepartment));
|
||||
|
||||
foreach (DataRow r in bpsnData.Rows)
|
||||
{
|
||||
string bpeno = WDAC.GetStringValue(r["BPENO"]);
|
||||
string bpnme = WDAC.GetStringValue(r["BPNME"]);
|
||||
lbBPSN.Items.Add(new ListItem(bpeno + " " + bpnme, bpeno));
|
||||
}
|
||||
}
|
||||
|
||||
if (lbBPAP.Items.Count == 0)
|
||||
{
|
||||
DataTable bpapData = bpabDao.SelectAll();
|
||||
|
||||
foreach (DataRow r in bpapData.Rows)
|
||||
{
|
||||
string bpeno = WDAC.GetStringValue(r["BPENO"]);
|
||||
string bpnme = WDAC.GetStringValue(r["BPNME"]);
|
||||
lbBPAP.Items.Add(new ListItem(bpeno + " " + bpnme, bpeno));
|
||||
}
|
||||
}
|
||||
|
||||
if (clear || lbLVL1.Items.Count == 0)
|
||||
{
|
||||
DataTable t1 = bsgpDao.SelectByLevel(_RPPYN, "差勤", 1);
|
||||
lbLVL1.Items.Clear();
|
||||
|
||||
foreach (DataRow r in t1.Rows)
|
||||
{
|
||||
string eno = WDAC.GetStringValue(r["BSENO"]);
|
||||
string nme = WDAC.GetStringValue(r["BSNME"]);
|
||||
lbLVL1.Items.Add(new ListItem(eno + " " + nme, eno));
|
||||
}
|
||||
}
|
||||
|
||||
if (clear || lbLVL2.Items.Count == 0)
|
||||
{
|
||||
DataTable t1 = bsgpDao.SelectByLevel(_RPPYN, "差勤", 2);
|
||||
lbLVL2.Items.Clear();
|
||||
|
||||
foreach (DataRow r in t1.Rows)
|
||||
{
|
||||
string eno = WDAC.GetStringValue(r["BSENO"]);
|
||||
string nme = WDAC.GetStringValue(r["BSNME"]);
|
||||
lbLVL2.Items.Add(new ListItem(eno + " " + nme, eno));
|
||||
}
|
||||
}
|
||||
|
||||
if (clear || lbLVL3.Items.Count == 0)
|
||||
{
|
||||
DataTable t1 = bsgpDao.SelectByLevel(_RPPYN, "差勤", 3);
|
||||
lbLVL3.Items.Clear();
|
||||
|
||||
foreach (DataRow r in t1.Rows)
|
||||
{
|
||||
string eno = WDAC.GetStringValue(r["BSENO"]);
|
||||
string nme = WDAC.GetStringValue(r["BSNME"]);
|
||||
lbLVL3.Items.Add(new ListItem(eno + " " + nme, eno));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 加入群組
|
||||
protected void btnMoveIn_Click(object sender, ImageClickEventArgs e)
|
||||
{
|
||||
if (!CheckProjectRight())
|
||||
return;
|
||||
|
||||
int bslvl;
|
||||
switch ((sender as Control).ID)
|
||||
{
|
||||
case "btnIn1":
|
||||
bslvl = 1;
|
||||
break;
|
||||
case "btnIn2":
|
||||
bslvl = 2;
|
||||
break;
|
||||
case "btnIn3":
|
||||
bslvl = 3;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (ListItem itm in lbBPSN.Items)
|
||||
{
|
||||
if (itm.Selected)
|
||||
bsgpDao.InsertOne(_RPPYN, "差勤", bslvl, itm.Value, UserId);
|
||||
itm.Selected = false;
|
||||
}
|
||||
|
||||
foreach (ListItem itm in lbBPAP.Items)
|
||||
{
|
||||
if (itm.Selected)
|
||||
bsgpDao.InsertOne(_RPPYN, "差勤", bslvl, itm.Value, UserId);
|
||||
itm.Selected = false;
|
||||
}
|
||||
|
||||
BindListBox(true);
|
||||
}
|
||||
|
||||
// 移出群組
|
||||
protected void btnMoveOut_Click(object sender, ImageClickEventArgs e)
|
||||
{
|
||||
if (!CheckProjectRight())
|
||||
return;
|
||||
|
||||
int bslvl;
|
||||
ListBox lb;
|
||||
switch ((sender as Control).ID)
|
||||
{
|
||||
case "btnOut1":
|
||||
bslvl = 1;
|
||||
lb = lbLVL1;
|
||||
break;
|
||||
case "btnOut2":
|
||||
bslvl = 2;
|
||||
lb = lbLVL2;
|
||||
break;
|
||||
case "btnOut3":
|
||||
bslvl = 3;
|
||||
lb = lbLVL3;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (ListItem itm in lb.Items)
|
||||
{
|
||||
if (itm.Selected)
|
||||
bsgpDao.DeleteOne(_RPPYN, "差勤", bslvl, itm.Value);
|
||||
itm.Selected = false;
|
||||
}
|
||||
|
||||
BindListBox(true);
|
||||
}
|
||||
|
||||
protected void btnYY_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!Int32.TryParse(txtYY.Text.Trim(), out _YY))
|
||||
{
|
||||
cvMessage.IsValid = false;
|
||||
cvMessage.ErrorMessage = "請輸入正確的年度";
|
||||
return;
|
||||
}
|
||||
|
||||
ddlRPPYN.DataSource = new BpaaDAC().GetBpaa(_YY + WGuard1.CY11);
|
||||
ddlRPPYN.DataBind();
|
||||
|
||||
ViewState["YY"] = _YY;
|
||||
_RPPYN = "";
|
||||
ViewState["RPPYN"] = "";
|
||||
Panel1.Visible = false;
|
||||
}
|
||||
|
||||
protected void Next_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!CheckProjectRight())
|
||||
return;
|
||||
|
||||
_RPPYN = ddlRPPYN.SelectedValue;
|
||||
ViewState["RPPYN"] = _RPPYN;
|
||||
|
||||
Panel1.Visible = true;
|
||||
BindListBox(true);
|
||||
}
|
||||
|
||||
protected void btnClear_Click(object sender, EventArgs e)
|
||||
{
|
||||
switch ((sender as Control).ID)
|
||||
{
|
||||
case "btnClear1":
|
||||
lbBPSN.ClearSelection();
|
||||
break;
|
||||
case "btnClear2":
|
||||
lbBPAP.ClearSelection();
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
protected bool CheckProjectRight()
|
||||
{
|
||||
// 檢查此使用者是否有權限處理這個專案
|
||||
BprmDAC bprm = new BprmDAC(Query);
|
||||
if (!bprm.GetRight(ddlRPPYN.SelectedValue, UserId))
|
||||
{
|
||||
//MultiView1.Visible = false;
|
||||
cvMessage.ErrorMessage = "對不起,你沒有處理這個專案的權限!";
|
||||
cvMessage.IsValid = false;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,913 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Configuration;
|
||||
using System.Collections;
|
||||
using System.Web;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.UI.WebControls.WebParts;
|
||||
using System.Web.UI.HtmlControls;
|
||||
using System.Data.Common;
|
||||
using Wellan.Data;
|
||||
using Wellan.Common;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Drawing;
|
||||
using System.Net.Mail;
|
||||
using System.Transactions;
|
||||
|
||||
/// <summary>
|
||||
/// 人員出缺勤紀錄 (員工自行輸入)
|
||||
/// 請假處理
|
||||
/// 加班處理
|
||||
/// 電話費處理
|
||||
/// 油料費處理
|
||||
/// 差勤處理
|
||||
/// </summary>
|
||||
public partial class forms_manager_fmRpar : Wellan.Web.UI.WUserControlBase
|
||||
{
|
||||
private string _RPPYN = "";
|
||||
private int _YY = 0;
|
||||
private string select =
|
||||
@"SELECT TRDAT, TRMOD, TRUSR, RPREN, RPNUM, RAITM, RPCNM, RPPYN, RPRDT, RPEDT, RPTYP,
|
||||
RPFTR, RPDOC, RPRSN, RPAGM, RPPLC, APPNO, RPAPP, RPAPD, RPAPU, RPADT, RPAPN,
|
||||
RPANO, RPAGT, RPRTM, RPETM, RPUST, RPFPC, RPFAD, RPKMS,
|
||||
FLOOR(RPTCT / 60) AS RPTCT, RPTCT - FLOOR(RPTCT / 60) * 60 AS RPTMT,
|
||||
FLOOR(RPTC1 / 60) AS RPTC1, RPTC1 - FLOOR(RPTC1 / 60) * 60 AS RPTM1,
|
||||
FLOOR(RPTC2 / 60) AS RPTC2, RPTC2 - FLOOR(RPTC2 / 60) * 60 AS RPTM2,
|
||||
FLOOR(RPTC3 / 60) AS RPTC3, RPTC3 - FLOOR(RPTC3 / 60) * 60 AS RPTM3 ";
|
||||
private string from = " FROM RPAR ";
|
||||
private FormView RPARForm;
|
||||
private Panel RPARPanel;
|
||||
private string rparType;
|
||||
private BpsnDAC bpsnDao;
|
||||
private RparDAC rparDao;
|
||||
private DbConnection conn;
|
||||
private string oldRPTYP;
|
||||
private BhrdDAC bhrdDao;
|
||||
private RpadDAC rpadDao;
|
||||
private RyerDAC ryerDao;
|
||||
private string _RPREN;
|
||||
private string _RPSTP;
|
||||
private string _RPEDP;
|
||||
private GetData _getData;
|
||||
private DateTime 關帳日期;
|
||||
private int 可用補休;
|
||||
private int 可用特休;
|
||||
private TimeCalc timeCalc = new TimeCalc();
|
||||
private bool 時數計算至小時;
|
||||
|
||||
public bool 可編輯
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public string 單號
|
||||
{
|
||||
get { return _RPREN; }
|
||||
set { _RPREN = value; }
|
||||
}
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
_RPREN = WDAC.GetStringValue(ViewState["RPREN"]);
|
||||
_RPSTP = WDAC.GetStringValue(ViewState["RPSTP"]);
|
||||
_RPEDP = WDAC.GetStringValue(ViewState["RPEDP"]);
|
||||
//if (IsPostBack)
|
||||
//{
|
||||
// gvRPAD.DataBind();
|
||||
//}
|
||||
}
|
||||
|
||||
protected override void OnInit(EventArgs e)
|
||||
{
|
||||
base.OnInit(e);
|
||||
dsRPARForm.ConnectionString = ConnectionString;
|
||||
dsRPAR_RPTYP.ConnectionString = ConnectionString;
|
||||
|
||||
bpsnDao = new BpsnDAC(Query);
|
||||
rparDao = new RparDAC(Query);
|
||||
bhrdDao = new BhrdDAC(Query);
|
||||
rpadDao = new RpadDAC(Query);
|
||||
ryerDao = new RyerDAC(Query);
|
||||
|
||||
/*
|
||||
_RPPYN = WDAC.GetStringValue(ViewState["RPPYN"]);
|
||||
if (_RPPYN == null || _RPPYN.Length == 0)
|
||||
{
|
||||
_RPPYN = bpsnDao.GetCurrentProject(UserId);
|
||||
if (_RPPYN == null || _RPPYN.Length == 0)
|
||||
_RPPYN = "000000001";
|
||||
ViewState["RPPYN"] = _RPPYN;
|
||||
}
|
||||
*/
|
||||
|
||||
rparType = GetStringParam("type");
|
||||
dsRPAR_RPTYP.SelectParameters["BSCLS"].DefaultValue = rparType + "%";
|
||||
_YY = GetIntParam("YY");
|
||||
|
||||
// 取得時數計算至小時
|
||||
_getData = new GetData();
|
||||
_getData.Query = Query;
|
||||
BPAARecord bpaaRecord = new BPAARecord();
|
||||
DataTable bpaa = _getData.GetBPAA_BPPYN(_RPPYN);
|
||||
if (bpaa.Rows.Count == 0)
|
||||
{
|
||||
cvMessage.IsValid = false;
|
||||
cvMessage.ErrorMessage = "無此專案";
|
||||
return;
|
||||
}
|
||||
bpaaRecord.FillRecord(bpaa.Rows[0]);
|
||||
// 關帳日期 = bpaaRecord.BPMSD.AddMonths(1).AddDays(-1);
|
||||
時數計算至小時 = bpaaRecord.BPOTT == "1";
|
||||
|
||||
// 取得上下班時間、午休時間設定資料
|
||||
//上班時間 = WGuard1.WSetR("UNRPARTIME", 1);
|
||||
//下班時間 = WGuard1.WSetR("UNRPARTIME", 2);
|
||||
//午休開始 = WGuard1.WSetR("UNRPARTIME", 3);
|
||||
//午休結束 = WGuard1.WSetR("UNRPARTIME", 4);
|
||||
//上班分鐘數 = TimeCalc.計算分鐘數(上班時間, 下班時間) - TimeCalc.計算分鐘數(午休開始, 午休結束);
|
||||
//午休分鐘數 = TimeCalc.計算分鐘數(午休開始, 午休結束);
|
||||
|
||||
// 補休時數
|
||||
GetHours(DateTime.UtcNow.AddHours(8).Date);
|
||||
|
||||
Search();
|
||||
}
|
||||
|
||||
// 查詢動作
|
||||
private new void Search()
|
||||
{
|
||||
switch (rparType)
|
||||
{
|
||||
case RPAR_TYPE.T0_請假:
|
||||
RPARForm = RPARForm0;
|
||||
RPARPanel = Panel1;
|
||||
break;
|
||||
case RPAR_TYPE.T1_加班:
|
||||
RPARForm = RPARForm1;
|
||||
RPARPanel = Panel2;
|
||||
break;
|
||||
case RPAR_TYPE.T3_出差:
|
||||
RPARForm = RPARForm3;
|
||||
RPARPanel = Panel3;
|
||||
break;
|
||||
}
|
||||
RPARForm.Visible = true;
|
||||
RPARPanel.Visible = true;
|
||||
|
||||
dsRPARForm.SelectCommand = select + from + " WHERE RPREN=@RPREN ";
|
||||
}
|
||||
|
||||
private new void CalcFields(SqlDataSourceCommandEventArgs e)
|
||||
{
|
||||
// 藉由人員編號以及日期,找出相應的派遣紀錄,填入相關欄位
|
||||
/*
|
||||
DbCommand cmd = Query.NewCommand("SELECT TOP 1 RAITM, RACNM, RAPYN FROM RASN WHERE RANUM=@RPNUM AND ((RASDT <= @RPRDT AND RAEDT >= @RPRDT) OR (RASDT <= @RPRDT AND RAEDT IS NULL)) ORDER BY RAITM");
|
||||
cmd.Parameters.Add(Query.NewParameter("RPNUM", UserId));
|
||||
cmd.Parameters.Add(Query.NewParameter("RPRDT", e.Command.Parameters["@RPRDT"].Value));
|
||||
DataTable rasn = Query.Select(cmd);
|
||||
if (rasn.Rows.Count > 0)
|
||||
{
|
||||
e.Command.Parameters["@RAITM"].Value = rasn.Rows[0]["RAITM"];
|
||||
e.Command.Parameters["@RPCNM"].Value = rasn.Rows[0]["RACNM"];
|
||||
e.Command.Parameters["@RPPYN"].Value = rasn.Rows[0]["RAPYN"];
|
||||
}
|
||||
*/
|
||||
|
||||
// 電話費、油料費,填入類別
|
||||
/*
|
||||
if (rparType.StartsWith("2"))
|
||||
e.Command.Parameters["@RPTYP"].Value = rparType;
|
||||
*/
|
||||
|
||||
// 取出計算需要的資料
|
||||
string rpnum = e.Command.Parameters["@RPNUM"].Value.ToString();
|
||||
string rptyp = e.Command.Parameters["@RPTYP"].Value.ToString();
|
||||
int rptct = Convert.ToInt32(e.Command.Parameters["@RPTCT"].Value);
|
||||
int rpftr = Convert.ToInt32(e.Command.Parameters["@RPFTR"].Value);
|
||||
DateTime rprdt = Convert.ToDateTime(e.Command.Parameters["@RPRDT"].Value);
|
||||
GetData calc = new GetData();
|
||||
calc.Query = Query;
|
||||
int bpsrm;
|
||||
int bpp02;
|
||||
double bpbft;
|
||||
double bpaft;
|
||||
double bphol;
|
||||
string bpovr;
|
||||
string bplve;
|
||||
string bpott;
|
||||
|
||||
// 取得月薪、伙食津貼、前二加班比率、後二加班比率、假日加班比率、加班費公式、請假扣款公式
|
||||
calc.GetRASN_Date_Bppyn_Bpeno_Overwork_Rate(
|
||||
rprdt, _RPPYN, rpnum, out bpsrm, out bpp02, out bpbft, out bpaft, out bphol, out bpovr, out bplve, out bpott);
|
||||
|
||||
e.Command.Parameters["@RPADT"].Value = DateTime.UtcNow.AddHours(8).Date;
|
||||
e.Command.Parameters["@RPAPN"].Value = "2";
|
||||
|
||||
string 起時;
|
||||
string 迄時;
|
||||
switch (rparType)
|
||||
{
|
||||
case RPAR_TYPE.T0_請假: // 請假,要計算缺勤扣款與請假時數
|
||||
// 計算請假時數
|
||||
DateTime rpedt = Convert.ToDateTime(e.Command.Parameters["@RPEDT"].Value);
|
||||
起時 = e.Command.Parameters["@RPRTM"].Value.ToString();
|
||||
迄時 = e.Command.Parameters["@RPETM"].Value.ToString();
|
||||
|
||||
rptct = timeCalc.計算請假總時數(rpnum, rprdt, rpedt, 起時, 迄時, rptyp, bpott == "1");
|
||||
e.Command.Parameters["@RPTCT"].Value = rptct;
|
||||
|
||||
// 計算請假扣款
|
||||
Absent absent = new Absent();
|
||||
absent.bpsrm = bpsrm;
|
||||
absent.bpp02 = bpp02;
|
||||
absent.Formula = bplve;
|
||||
// e.Command.Parameters["@RPFTR"].Value = absent.Add(rptyp, rptct);
|
||||
e.Command.Parameters["@RPFTR"].Value = absent.Add(rpnum, rptyp, rprdt, rpedt, 起時, 迄時, rprdt, rpedt, bpott == "1");
|
||||
|
||||
// 若請假 >= 3 天,要批三關
|
||||
/*
|
||||
if ((rpedt.Date - rprdt.Date).Days + 1 >= 3)
|
||||
e.Command.Parameters["@RPAPN"].Value = "3";
|
||||
*/
|
||||
break;
|
||||
case RPAR_TYPE.T1_加班: // 加班,要計算加班費與前二、後二、假日加班時數
|
||||
// 計算加班時數
|
||||
起時 = e.Command.Parameters["@RPRTM"].Value.ToString();
|
||||
迄時 = e.Command.Parameters["@RPETM"].Value.ToString();
|
||||
|
||||
rptct = timeCalc.計算加班時數(rpnum, rprdt, 起時, 迄時, RPAR_TYPE.休息日加班(rptyp));
|
||||
e.Command.Parameters["@RPTCT"].Value = rptct;
|
||||
|
||||
// 計算加班費以及前二、後二、假日加班時數
|
||||
int RPTC1 = WDAC.GetInt32Value(e.Command.Parameters["@RPTC1"].Value) * 60;
|
||||
int RPTC2 = WDAC.GetInt32Value(e.Command.Parameters["@RPTC2"].Value) * 60;
|
||||
int RPTC3 = WDAC.GetInt32Value(e.Command.Parameters["@RPTC3"].Value) * 60;
|
||||
int RPTC4 = WDAC.GetInt32Value(e.Command.Parameters["@RPTC4"].Value) * 60;
|
||||
int RPTC5 = WDAC.GetInt32Value(e.Command.Parameters["@RPTC5"].Value) * 60;
|
||||
e.Command.Parameters["@RPTC1"].Value = RPTC1;
|
||||
e.Command.Parameters["@RPTC2"].Value = RPTC2;
|
||||
e.Command.Parameters["@RPTC3"].Value = RPTC3;
|
||||
e.Command.Parameters["@RPTC4"].Value = RPTC4;
|
||||
e.Command.Parameters["@RPTC5"].Value = RPTC5;
|
||||
if (rptct < RPTC1 + RPTC2 + RPTC3 + RPTC4 + RPTC5)
|
||||
{
|
||||
cvMessage.IsValid = false;
|
||||
cvMessage.ErrorMessage = "各項時數之和 不可大於 加班時數!";
|
||||
e.Cancel = true;
|
||||
}
|
||||
|
||||
ExtraWork extraWork = new ExtraWork();
|
||||
extraWork.Add(rptyp, rprdt, rptct, bpsrm, bpp02, bpbft, bpaft, bphol, bpovr, bpott, RPTC1, RPTC2, RPTC3, RPTC4, RPTC5);
|
||||
e.Command.Parameters["@RPFTR"].Value =
|
||||
extraWork.RPTA1 + extraWork.RPTA2 + extraWork.RPTA3 + extraWork.RPTA4 + extraWork.RPTA5;
|
||||
e.Command.Parameters["@RPTA1"].Value = extraWork.RPTA1;
|
||||
e.Command.Parameters["@RPTA2"].Value = extraWork.RPTA2;
|
||||
e.Command.Parameters["@RPTA3"].Value = extraWork.RPTA3;
|
||||
e.Command.Parameters["@RPTA4"].Value = extraWork.RPTA4;
|
||||
e.Command.Parameters["@RPTA5"].Value = extraWork.RPTA5;
|
||||
e.Command.Parameters["@RPUST"].Value = 0;
|
||||
|
||||
break;
|
||||
case RPAR_TYPE.T3_出差:
|
||||
rpedt = Convert.ToDateTime(e.Command.Parameters["@RPEDT"].Value);
|
||||
起時 = e.Command.Parameters["@RPRTM"].Value.ToString();
|
||||
迄時 = e.Command.Parameters["@RPETM"].Value.ToString();
|
||||
rptct = timeCalc.計算差旅時數(rpnum, rprdt, rpedt, 起時, 迄時);
|
||||
e.Command.Parameters["@RPTCT"].Value = rptct;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected void dsRPARForm_Updating(object sender, SqlDataSourceCommandEventArgs e)
|
||||
{
|
||||
CalcFields(e);
|
||||
if (e.Cancel)
|
||||
return;
|
||||
|
||||
conn = Query.NewConnection(Query.ConnectionString);
|
||||
conn.Open();
|
||||
tran = conn.BeginTransaction();
|
||||
try
|
||||
{
|
||||
e.Command.Connection = conn;
|
||||
e.Command.Transaction = tran;
|
||||
|
||||
_RPREN = WDAC.GetStringValue(e.Command.Parameters["@RPREN"].Value);
|
||||
string 新類別 = WDAC.GetStringValue(e.Command.Parameters["@RPTYP"].Value);
|
||||
DateTime 新日期 = WDAC.GetDateTimeValue(e.Command.Parameters["@RPRDT"].Value);
|
||||
int 新時數 = WDAC.GetInt32Value(e.Command.Parameters["@RPTCT"].Value);
|
||||
|
||||
// 如果是請假
|
||||
if (rparType == RPAR_TYPE.T0_請假)
|
||||
{
|
||||
// 舊資料如果是補休,要取消沖補休
|
||||
if (oldRPTYP == RPAR_TYPE.T00_補休)
|
||||
{
|
||||
rparDao.取消沖補休(tran, _RPREN);
|
||||
}
|
||||
|
||||
// 舊資料如果是特休,要取消沖特休
|
||||
if (oldRPTYP == RPAR_TYPE.T01_特休)
|
||||
{
|
||||
ryerDao.取消沖特休(tran, _RPREN);
|
||||
}
|
||||
|
||||
// 新資料如果是補休,要沖補休
|
||||
if (新類別 == RPAR_TYPE.T00_補休)
|
||||
{
|
||||
e.Command.Parameters["@RPDOC"].Value =
|
||||
rparDao.沖補休(tran, _RPREN, UserId, 新日期, 新時數);
|
||||
}
|
||||
|
||||
// 新資料如果是特休,要沖特休
|
||||
if (新類別 == RPAR_TYPE.T01_特休)
|
||||
{
|
||||
ryerDao.沖特休(UserId, 新日期.Year, 新時數, tran);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
tran.Rollback();
|
||||
tran = null;
|
||||
e.Cancel = true;
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
protected void dsRPARForm_Updated(object sender, SqlDataSourceStatusEventArgs e)
|
||||
{
|
||||
if (tran != null)
|
||||
{
|
||||
tran.Commit();
|
||||
tran = null;
|
||||
}
|
||||
|
||||
if (conn != null && conn.State == ConnectionState.Open)
|
||||
{
|
||||
conn.Close();
|
||||
conn.Dispose();
|
||||
conn = null;
|
||||
}
|
||||
}
|
||||
|
||||
protected void RPARForm_ItemCommand(object sender, FormViewCommandEventArgs e)
|
||||
{
|
||||
switch (e.CommandName)
|
||||
{
|
||||
case "Cancel":
|
||||
Search();
|
||||
RPARForm.ChangeMode(FormViewMode.ReadOnly);
|
||||
RPARForm_ModeChanged(sender, e);
|
||||
break;
|
||||
case "Detail": // 差旅費
|
||||
pnlRPAD.Visible = !pnlRPAD.Visible;
|
||||
|
||||
if (pnlRPAD.Visible)
|
||||
{
|
||||
_RPREN = WDAC.GetStringValue(e.CommandArgument);
|
||||
ViewState["RPREN"] = _RPREN;
|
||||
_RPSTP = bpsnDao.GetCurrentSite(UserId);
|
||||
if (_RPSTP.EndsWith("站") || _RPSTP.EndsWith("台"))
|
||||
_RPSTP = _RPSTP.Substring(0, _RPSTP.Length - 1);
|
||||
ViewState["RPSTP"] = _RPSTP;
|
||||
_RPEDP = (RPARForm.FindControl("lbRPAR_RPPLC") as ITextControl).Text;
|
||||
ViewState["RPEDP"] = _RPEDP;
|
||||
txtRPSTP.Text = _RPSTP;
|
||||
txtRPEDP.Text = _RPEDP;
|
||||
gvRPAD.DataBind();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected void RPARForm_ModeChanged(object sender, EventArgs e)
|
||||
{
|
||||
switch (RPARForm.CurrentMode)
|
||||
{
|
||||
case FormViewMode.Edit:
|
||||
pnlRPAD.Visible = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected void RPARForm_ModeChanging(object sender, FormViewModeEventArgs e)
|
||||
{
|
||||
OldMode = (sender as FormView).CurrentMode;
|
||||
}
|
||||
|
||||
private void GetHours(DateTime rprdt)
|
||||
{
|
||||
可用補休 = rparDao.Get可用補休(UserId, rprdt);
|
||||
可用特休 = ryerDao.Get可用特休(UserId, rprdt.Year, rprdt.Month, rprdt.Day);
|
||||
lb可用補休.Text = (可用補休 / 60).ToString();
|
||||
lb可用特休.Text = (可用特休 / 60).ToString();
|
||||
}
|
||||
|
||||
protected void RPARForm_DataBound(object sender, EventArgs e)
|
||||
{
|
||||
switch (RPARForm.CurrentMode)
|
||||
{
|
||||
case FormViewMode.Edit:
|
||||
(RPARForm.FindControl("lbRPAR_RPNUM") as ITextControl).Text = UserId;
|
||||
(RPARForm.FindControl("lbRPAR_RPNUMX") as ITextControl).Text = UserName;
|
||||
|
||||
RegisterCalendarEvent(RPARForm, "btnRPAR_RPRDT_DATE", "txtRPAR_RPRDT");
|
||||
RegisterCalendarEvent(RPARForm, "btnRPAR_RPEDT_DATE", "txtRPAR_RPEDT");
|
||||
RegisterLookupEvent(RPARForm, "btnRPAR_RPAGT_WQRY", "txtRPAR_RPAGT",
|
||||
"txtRPAR_RPAGT,txtRPAR_RPAGM", "BPSNEML",
|
||||
"EXISTS (SELECT RANUM FROM RASN WHERE RAPYN='" + _RPPYN + "' AND RANUM=BPENO)",
|
||||
false);
|
||||
|
||||
SetClientFocus(RPARForm, "txtRPAR_RPRDT");
|
||||
break;
|
||||
case FormViewMode.ReadOnly:
|
||||
if (rparType == RPAR_TYPE.T3_出差 && pnlRPAD.Visible)
|
||||
{
|
||||
_RPEDP = (RPARForm.FindControl("lbRPAR_RPPLC") as ITextControl).Text;
|
||||
ViewState["RPEDP"] = _RPEDP;
|
||||
txtRPEDP.Text = _RPEDP;
|
||||
}
|
||||
break;
|
||||
}
|
||||
GetHours(DateTime.UtcNow.AddHours(8).Date);
|
||||
}
|
||||
|
||||
protected new bool CheckInput(System.Collections.Specialized.IOrderedDictionary values)
|
||||
{
|
||||
cvMessage.ErrorMessage = "";
|
||||
cvMessage.IsValid = true;
|
||||
//BhrdDAC bhrd = new BhrdDAC();
|
||||
string rptyp = WDAC.GetStringValue(values["RPTYP"]);
|
||||
string rppyn = WDAC.GetStringValue(values["RPPYN"]);
|
||||
string rpnum = WDAC.GetStringValue(values["RPNUM"]);
|
||||
string rpren = WDAC.GetStringValue(values["RPREN"]);
|
||||
|
||||
bool result = true;
|
||||
switch (rparType)
|
||||
{
|
||||
case RPAR_TYPE.T0_請假: // 請假
|
||||
values["RPRDT"] = CheckDate(values["RPRDT"], "請輸入正確的開始日期", ref result, cvMessage);
|
||||
values["RPEDT"] = CheckDate(values["RPEDT"], "請輸入正確的結束日期", ref result, cvMessage);
|
||||
|
||||
DateTime sdt = WDAC.GetDateTimeValue(values["RPRDT"]);
|
||||
DateTime edt = WDAC.GetDateTimeValue(values["RPEDT"]);
|
||||
string stm = WDAC.GetStringValue(values["RPRTM"]);
|
||||
string etm = WDAC.GetStringValue(values["RPETM"]);
|
||||
|
||||
// 關帳
|
||||
if (!CheckCloseAccount(rppyn, sdt, edt))
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "此月份已關帳,不可輸入單據";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
|
||||
// 日期
|
||||
if (result && sdt > edt)
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "開始日期 不可大於 結束日期";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
|
||||
// 時間必須輸入
|
||||
if (stm == "")
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "開始時間必須輸入";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
if (etm == "")
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "結束時間必須輸入";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
if (sdt == edt && stm.CompareTo(etm) > 0)
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "開始時間必須早於結束時間";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
|
||||
// 假日,檢查頭尾是否為假日,但是產假不用檢查
|
||||
if (rptyp != RPAR_TYPE.T05_產假 && bhrdDao.IsHoliday(UserId, sdt))
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += String.Format("{0:yyyy-MM-dd} 是假日,不需請假。", sdt);
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
|
||||
if (rptyp != RPAR_TYPE.T05_產假 && bhrdDao.IsHoliday(UserId, edt))
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += String.Format("{0:yyyy-MM-dd} 是假日,不需請假。", edt);
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
|
||||
// 計算時數
|
||||
int rptct = timeCalc.計算請假總時數(rpnum, sdt, edt, stm, etm, rptyp, 時數計算至小時);
|
||||
|
||||
// 補休時數不足
|
||||
if (rptyp == RPAR_TYPE.T00_補休 && 可用補休 < rptct)
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "補休時數不足!";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
|
||||
// 特休時數不足
|
||||
if (rptyp == RPAR_TYPE.T01_特休 && 可用特休 < rptct)
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "特休時數不足!";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
|
||||
break;
|
||||
case RPAR_TYPE.T1_加班: // 加班
|
||||
values["RPRDT"] = CheckDate(values["RPRDT"], "請輸入正確的日期", ref result, cvMessage);
|
||||
sdt = WDAC.GetDateTimeValue(values["RPRDT"]);
|
||||
edt = WDAC.GetDateTimeValue(values["RPEDT"]);
|
||||
stm = WDAC.GetStringValue(values["RPRTM"]);
|
||||
etm = WDAC.GetStringValue(values["RPETM"]);
|
||||
|
||||
// 計算時數
|
||||
rptct = timeCalc.計算加班時數(UserId, sdt, stm, etm, RPAR_TYPE.休息日加班(rparType));
|
||||
|
||||
// 關帳檢查
|
||||
if (!CheckCloseAccount(rppyn, values["RPRDT"], new DateTime()))
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "此月份已關帳,不可輸入單據";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
|
||||
// 時間必須輸入
|
||||
if (stm == "")
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "開始時間必須輸入";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
if (etm == "")
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "結束時間必須輸入";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
if (sdt == edt && stm.CompareTo(etm) > 0)
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "開始時間必須早於結束時間";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
|
||||
// 檢查休息日加班
|
||||
if (RPAR_TYPE.休息日加班(rptyp))
|
||||
{
|
||||
string message;
|
||||
if (!rparDao.檢查休息日加班(rpnum, sdt, rpren, out message))
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage = message;
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
// 全月加班時數限制 46 小時
|
||||
var ot_time = rparDao.Select當月加班時數(sdt, UserId, rpren) + rptct;
|
||||
if (ot_time > 46 * 60)
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage = "加班日的同月加班時數已超過 46 小時";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
|
||||
// 計算加班時數
|
||||
//rptct = timeCalc.計算加班時數(rpnum, WDAC.GetDateTimeValue(values["RPRDT"]), stm, etm, false);
|
||||
//int 前二 = WDAC.GetInt32Value(values["RPTC1"]) * 60;
|
||||
//int 後二 = WDAC.GetInt32Value(values["RPTC2"]) * 60;
|
||||
//int 假日 = WDAC.GetInt32Value(values["RPTC3"]) * 60;
|
||||
|
||||
//if (rptct < 前二 + 後二 + 假日)
|
||||
//{
|
||||
// result = false;
|
||||
// cvMessage.ErrorMessage = "前二時數 + 後二時數 + 假日時數 不可大於 加班時數!";
|
||||
// cvMessage.IsValid = false;
|
||||
//}
|
||||
break;
|
||||
case RPAR_TYPE.T3_出差: // 差旅
|
||||
values["RPRDT"] = CheckDate(values["RPRDT"], "請輸入正確的開始日期", ref result, cvMessage);
|
||||
values["RPEDT"] = CheckDate(values["RPEDT"], "請輸入正確的結束日期", ref result, cvMessage);
|
||||
sdt = WDAC.GetDateTimeValue(values["RPRDT"]);
|
||||
edt = WDAC.GetDateTimeValue(values["RPEDT"]);
|
||||
stm = WDAC.GetStringValue(values["RPRTM"]);
|
||||
etm = WDAC.GetStringValue(values["RPETM"]);
|
||||
|
||||
// 關帳檢查
|
||||
if (!CheckCloseAccount(rppyn, values["RPRDT"], values["RPEDT"]))
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "此月份已關帳,不可輸入單據";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
|
||||
if (result && Convert.ToDateTime(values["RPRDT"]).CompareTo(values["RPEDT"]) > 0)
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "開始日期 不可大於 結束日期";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
// 時間必須輸入
|
||||
if (stm == "")
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "開始時間必須輸入";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
if (etm == "")
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "結束時間必須輸入";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
if (sdt == edt && stm.CompareTo(etm) > 0)
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "開始時間必須早於結束時間";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
|
||||
if (WDAC.GetStringValue(values["RPPLC"]).Trim().Length == 0)
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "差旅地點必須輸入";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
if (WDAC.GetStringValue(values["RPRSN"]).Trim().Length == 0)
|
||||
{
|
||||
result = false;
|
||||
cvMessage.ErrorMessage += "差旅事由必須輸入";
|
||||
cvMessage.IsValid = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
ProcessCustomValidatorMessage(cvMessage);
|
||||
return result;
|
||||
}
|
||||
|
||||
protected void RPARForm_ItemUpdating(object sender, FormViewUpdateEventArgs e)
|
||||
{
|
||||
if (RPARForm.FindControl("ddlRPAR_RPTYP") != null)
|
||||
e.NewValues["RPTYP"] = (RPARForm.FindControl("ddlRPAR_RPTYP") as DropDownList).SelectedValue;
|
||||
|
||||
e.Cancel = !CheckInput(e.NewValues);
|
||||
|
||||
// 記住舊類別,以便做請補休假的判斷
|
||||
oldRPTYP = WDAC.GetStringValue(e.OldValues["RPTYP"]);
|
||||
}
|
||||
|
||||
protected void RPARForm_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
|
||||
{
|
||||
Search();
|
||||
}
|
||||
|
||||
protected void cvRPTCT_ServerValidate(object source, ServerValidateEventArgs args)
|
||||
{
|
||||
int i;
|
||||
args.IsValid = args.Value != "" && Int32.TryParse(args.Value, out i) && i > 0;
|
||||
}
|
||||
|
||||
protected void cvRPNUM_ServerValidate(object source, ServerValidateEventArgs args)
|
||||
{
|
||||
args.IsValid = args.Value != "" && bpsnDao.IsExist(args.Value, true);
|
||||
}
|
||||
|
||||
protected void btnInsertRPAD_Click(object sender, EventArgs e)
|
||||
{
|
||||
DateTime rpdat;
|
||||
CheckDate(txtRPDAT.Text, out rpdat);
|
||||
|
||||
rpadDao.InsertOne(UserId, _RPREN, txtRPSTP.Text, txtRPEDP.Text,
|
||||
WDAC.GetInt32Value(txtRPF01.Text),
|
||||
WDAC.GetInt32Value(txtRPF02.Text),
|
||||
WDAC.GetInt32Value(txtRPF03.Text),
|
||||
WDAC.GetInt32Value(txtRPF04.Text),
|
||||
WDAC.GetInt32Value(txtRPF05.Text),
|
||||
WDAC.GetInt32Value(txtRPF06.Text),
|
||||
WDAC.GetInt32Value(txtRPF07.Text),
|
||||
WDAC.GetInt32Value(txtRPF08.Text),
|
||||
0,
|
||||
0,
|
||||
rpdat,
|
||||
txtRPVCH.Text,
|
||||
txtRPDOC.Text);
|
||||
|
||||
gvRPAD.DataBind();
|
||||
RPARForm.DataBind();
|
||||
|
||||
txtRPDAT.Text = "";
|
||||
txtRPSTP.Text = _RPSTP;
|
||||
txtRPEDP.Text = _RPEDP;
|
||||
txtRPF01.Text = "";
|
||||
txtRPF02.Text = "";
|
||||
txtRPF03.Text = "";
|
||||
txtRPF04.Text = "";
|
||||
txtRPF05.Text = "";
|
||||
txtRPF06.Text = "";
|
||||
txtRPF07.Text = "";
|
||||
txtRPF08.Text = "";
|
||||
txtRPVCH.Text = "";
|
||||
txtRPDOC.Text = "";
|
||||
}
|
||||
|
||||
protected void dsRpad_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
|
||||
{
|
||||
e.ObjectInstance = rpadDao;
|
||||
}
|
||||
|
||||
protected void dsRpad_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
|
||||
{
|
||||
//_RPREN = WDAC.GetStringValue(ViewState["RPREN"]);
|
||||
e.InputParameters["rpren"] = _RPREN;
|
||||
}
|
||||
|
||||
protected void dsRpad_Updated(object sender, ObjectDataSourceStatusEventArgs e)
|
||||
{
|
||||
RPARForm.DataBind();
|
||||
}
|
||||
|
||||
protected void dsRpad_Deleted(object sender, ObjectDataSourceStatusEventArgs e)
|
||||
{
|
||||
RPARForm.DataBind();
|
||||
}
|
||||
|
||||
protected void btnHideRPAD_Click(object sender, EventArgs e)
|
||||
{
|
||||
pnlRPAD.Visible = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 關帳檢查
|
||||
/// </summary>
|
||||
/// <param name="rprdt">起始日</param>
|
||||
/// <param name="rpedt">結束日</param>
|
||||
/// <returns>True=通過檢查, False=不通過檢查</returns>
|
||||
protected bool CheckCloseAccount(object rppyn, object rprdt, object rpedt)
|
||||
{
|
||||
DateTime rdt = WDAC.GetDateTimeValue(rprdt);
|
||||
DateTime edt = WDAC.GetDateTimeValue(rpedt);
|
||||
|
||||
_getData = new GetData();
|
||||
_getData.Query = Query;
|
||||
BPAARecord bpaaRecord = new BPAARecord();
|
||||
DataTable bpaa = _getData.GetBPAA_BPPYN(WDAC.GetStringValue(rppyn));
|
||||
if (bpaa.Rows.Count == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
bpaaRecord.FillRecord(bpaa.Rows[0]);
|
||||
// 關帳日期 = bpaaRecord.BPMSD.AddMonths(1).AddDays(-1);
|
||||
關帳日期 = bpaaRecord.BPMSD;
|
||||
|
||||
if (edt.Ticks != 0)
|
||||
return (關帳日期 < rdt && 關帳日期 < edt);
|
||||
else
|
||||
return (關帳日期 < rdt);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否可編輯
|
||||
/// </summary>
|
||||
/// <param name="rprdt">起始日</param>
|
||||
/// <param name="rpedt">結束日</param>
|
||||
/// <param name="rpano">已簽核次數</param>
|
||||
/// <returns></returns>
|
||||
protected bool CanEdit(object rppyn, object rprdt, object rpedt, object rpano, object rpapd)
|
||||
{
|
||||
string ano = WDAC.GetStringValue(rpano);
|
||||
DateTime apd = WDAC.GetDateTimeValue(rpapd);
|
||||
return CheckCloseAccount(rppyn, rprdt, rpedt) && (ano == "1") && (apd.Ticks == 0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否可編輯
|
||||
/// </summary>
|
||||
/// <param name="rpren">單號</param>
|
||||
protected bool CanEdit(object rpren)
|
||||
{
|
||||
if (rpren == null)
|
||||
return false;
|
||||
|
||||
RPARList d = rparDao.SelectOne(WDAC.GetStringValue(rpren));
|
||||
if (d.Count > 0)
|
||||
return CanEdit(d[0].RPPYN, d[0].RPRDT, d[0].RPEDT, d[0].RPANO, d[0].RPAPD);
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
protected void dsBSGP_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
|
||||
{
|
||||
e.InputParameters["BSPYN"] = _RPPYN;
|
||||
}
|
||||
|
||||
protected new string GetBPNME(object RPENO)
|
||||
{
|
||||
string rpeno = WDAC.GetStringValue(RPENO);
|
||||
|
||||
if (rpeno.Length > 0 && rpeno.Substring(0, 1) == "Z")
|
||||
{
|
||||
return GetLookup("BPAP", rpeno, "BPNME", "");
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetLookup("BPSN", rpeno, "BPNME", "");
|
||||
}
|
||||
}
|
||||
|
||||
protected void gvRPAD_DataBound(object sender, EventArgs e)
|
||||
{
|
||||
//btnInsertRPAD.Enabled = CanEdit(RPARGrid.SelectedValue);
|
||||
}
|
||||
|
||||
protected void dsRpad_Updating(object sender, ObjectDataSourceMethodEventArgs e)
|
||||
{
|
||||
DateTime rpdat;
|
||||
CheckDate(WDAC.GetStringValue(e.InputParameters["rpdat"]), out rpdat);
|
||||
e.InputParameters["rpdat"] = rpdat;
|
||||
e.InputParameters["rpf09"] = 0;
|
||||
e.InputParameters["rpf10"] = 0;
|
||||
}
|
||||
|
||||
protected void dsBPSE_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
|
||||
{
|
||||
switch (rparType)
|
||||
{
|
||||
case RPAR_TYPE.T1_加班:
|
||||
e.InputParameters["BPTYP"] = "加班";
|
||||
break;
|
||||
case RPAR_TYPE.T3_出差:
|
||||
e.InputParameters["BPTYP"] = "差旅";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected string GetPhraseClientClick(object BPCNT)
|
||||
{
|
||||
string CID = "";
|
||||
switch (rparType)
|
||||
{
|
||||
case RPAR_TYPE.T1_加班:
|
||||
CID = (RPARForm1.FindControl("txtRPAR_RPDOC") as Control).ClientID;
|
||||
break;
|
||||
case RPAR_TYPE.T3_出差:
|
||||
CID = (RPARForm3.FindControl("txtRPAR_RPDOC") as Control).ClientID;
|
||||
break;
|
||||
}
|
||||
if (CID.Length > 0)
|
||||
return String.Format("javascript:FillMessage(\"{0}\", \"{1}\");return false;", CID, BPCNT);
|
||||
else
|
||||
return "javascript:return false;";
|
||||
}
|
||||
|
||||
protected string Get關卡名稱(object RPANO, object RPAPN)
|
||||
{
|
||||
string rpano = WDAC.GetStringValue(RPANO);
|
||||
string rpapn = WDAC.GetStringValue(RPAPN);
|
||||
|
||||
if (rpano == "1")
|
||||
return "第 1 關";
|
||||
else if ((rpano == "2" && rpapn == "2") || (rpano == "3" && rpapn == "3"))
|
||||
return "第 2 關";
|
||||
else if (rpano == "3" && rpapn == "2")
|
||||
return "長官關";
|
||||
else if (rpano == "D")
|
||||
return "抽單";
|
||||
else
|
||||
return rpano;
|
||||
}
|
||||
|
||||
protected void dsRPARForm_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
|
||||
{
|
||||
e.Command.Parameters["RPREN"].Value = _RPREN;
|
||||
}
|
||||
|
||||
protected string GetAttachLink(string RPREN)
|
||||
{
|
||||
return RparDAC.GetAttachLink(RPREN, Page);
|
||||
//string f = string.Format("{0}\\{1}.jpg", Server.MapPath("~/UploadedPicture/RPAR_ATTACHMENT"), RPREN);
|
||||
|
||||
//if (File.Exists(f))
|
||||
// return string.Format("<a href='{0}{1}.jpg' target='_blank'>附件檢視</a>",
|
||||
// ResolveClientUrl("~/UploadedPicture/RPAR_ATTACHMENT/"), RPREN);
|
||||
//else
|
||||
// return "無附件";
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user