using System;
using CoreSavingLibrary;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
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.Xml.Linq;
using Sybase.DataWindow;
using DataLibrary;
using CoreSavingLibrary.WcfNDivavg;
using System.Web.Services.Protocols;
using System.Globalization;
namespace Saving.Applications.divavg
{
public partial class w_sheet_divsrv_opr_slip : PageWebSheet, WebSheet
{
//ประกาศตัวแปร
#region Variable
private DwThDate tDw_main;
private n_divavgClient DivavgService;
private String pbl = "divsrv_opr_slip.pbl";
protected String postNewClear;
protected String postInit;
protected String postRefresh;
protected String postInitMemberNo;
protected String postSlipDate;
protected String postDeldetail;
protected String app;
protected String gid;
protected String rid;
protected String pdf;
protected String ireport_obj;
public String outputProcess = "";
DateTime idtm_lastDate, idtm_activedate;
CultureInfo th = System.Globalization.CultureInfo.GetCultureInfo("th-TH");
#endregion
//============================================
#region Websheet Members
public void InitJsPostBack()
{
//ประกาศฟังก์ชันการใช้วันที่
tDw_main = new DwThDate(Dw_main, this);
tDw_main.Add("slip_date", "slip_tdate");
//=========================
postNewClear = WebUtil.JsPostBack(this, "postNewClear");
postInit = WebUtil.JsPostBack(this, "postInit");
postRefresh = WebUtil.JsPostBack(this, "postRefresh");
postInitMemberNo = WebUtil.JsPostBack(this, "postInitMemberNo");
postSlipDate = WebUtil.JsPostBack(this, "postSlipDate");
postDeldetail = WebUtil.JsPostBack(this, "postDeldetail");
}
public void WebSheetLoadBegin()
{
if (!IsPostBack)
{
this.ConnectSQLCA();
JspostNewClear();
of_activeworkdate();
idtm_activedate = Convert.ToDateTime(HdActiveDate.Value);
Dw_main.SetItemDateTime(1, "operate_date", idtm_activedate);
Dw_main.SetItemDateTime(1, "slip_date", idtm_activedate);
if (idtm_activedate != state.SsWorkDate)
{
LtServerMessage.Text = WebUtil.WarningMessage("ระบบได้ทำการปิดสิ้นวันแล้ว ระบบจะทำการเปลี่ยนวันที่เป็น " + idtm_activedate.ToString("dd/MM/yyyy", th));
}
}
else
{
this.RestoreContextDw(Dw_main);
this.RestoreContextDw(Dw_detail);
}
}
public void CheckJsPostBack(string eventArg)
{
// Event ที่เกิดจาก JavaScript
switch (eventArg)
{
case "postNewClear":
JspostNewClear();
break;
case "postInit":
JspostInit();
break;
case "postRefresh":
break;
case "postInitMemberNo":
JspostInitMemberNo();
break;
case "postSlipDate":
tDw_main.Thai2EngAllRow();
DateTime ldtm_slipdate = Dw_main.GetItemDate(1, "slip_date");
idtm_lastDate = Convert.ToDateTime(HdLastDate.Value);
idtm_activedate = Convert.ToDateTime(HdActiveDate.Value);
if (ldtm_slipdate < idtm_activedate)
{
LtServerMessage.Text = WebUtil.ErrorMessage("ไม่อนุญาตให้วันที่จ่ายปันผล - เฉลี่ยคืน " + ldtm_slipdate.ToString("dd/MM/yyyy", th) + " น้อยกว่าวันทำการ " + idtm_activedate.ToString("dd/MM/yyyy", th) + " กรุณาตรวจสอบ");
Dw_main.SetItemDateTime(1, "slip_date", idtm_lastDate);
return;
}
//ตรวจสอบวันที่ป้อน ว่าเป็นวันทำการหรือไม่
Boolean status = wcf.NCommon.of_isworkingdate(state.SsWsPass, ldtm_slipdate);
if (status == false)
{
LtServerMessage.Text = WebUtil.ErrorMessage("วันที่จ่ายปันผล - เฉลี่ยคืน " + ldtm_slipdate.ToString("dd/MM/yyyy", th) + " ไม่ใช่วันทำการ กรุณาตรวจสอบ");
Dw_main.SetItemDateTime(1, "slip_date", idtm_lastDate);
return;
}
HdLastDate.Value = Convert.ToString(ldtm_slipdate);
break;
case "postDeldetail":
decimal payout_payment = 0;
int row = Convert.ToInt32(Hdrow.Value);
Dw_detail.DeleteRow(row);
for(int i = 1; i<= Dw_detail.RowCount; i++)
{
payout_payment += Dw_detail.GetItemDecimal(i, "item_payment");
}
Dw_main.SetItemDecimal(1, "payout_payment", payout_payment);
break;
}
}
//function บันทึกข้อมูล
public void SaveWebSheet()
{
//เช็คลิ้นชักกรณีจ่ายเงินสด
Boolean lbl_fin = of_checkfin();
if (lbl_fin == false)
{
return;
}
try
{
DivavgService = wcf.NDivavg;
str_divsrv_oper astr_divsrv_oper = new str_divsrv_oper();
astr_divsrv_oper.xml_main = Dw_main.Describe("DataWindow.Data.XML");
astr_divsrv_oper.xml_detail = Dw_detail.Describe("DataWindow.Data.XML");
int result = DivavgService.of_save_slip(state.SsWsPass, ref astr_divsrv_oper);
if (result == 1)
{
LtServerMessage.Text = WebUtil.CompleteMessage("บันทึกข้อมูลเสร็จเรียบร้อยแล้ว");
Print(state.SsCoopControl);
JspostNewClear();
}
}
catch (SoapException ex)
{
LtServerMessage.Text = WebUtil.ErrorMessage(WebUtil.SoapMessage(ex));
}
catch (Exception ex)
{
LtServerMessage.Text = WebUtil.ErrorMessage(ex.Message);
}
}
public void WebSheetLoadEnd()
{
// Retrieve DropDown
DwUtil.RetrieveDDDW(Dw_detail, "methpaytype_code", pbl, null);
DwUtil.RetrieveDDDW(Dw_detail, "moneytype_code", pbl, null);
DwUtil.RetrieveDDDW(Dw_detail, "expense_bank", pbl, null);
// แปลงค่าวันที่จาก Eng เป็น Thai
tDw_main.Eng2ThaiAllRow();
Dw_main.SaveDataCache();
Dw_detail.SaveDataCache();
}
#endregion
// function InitData
private void JspostInit()
{
try
{
String member_no = Dw_main.GetItemString(1, "member_no");
member_no = WebUtil.MemberNoFormat(member_no);
Dw_main.SetItemString(1, "member_no", member_no);
DivavgService = wcf.NDivavg;
str_divsrv_oper astr_divsrv_oper = new str_divsrv_oper();
astr_divsrv_oper.xml_main = Dw_main.Describe("DataWindow.Data.XML");
astr_divsrv_oper.xml_detail = Dw_detail.Describe("DataWindow.Data.XML");
int result = DivavgService.of_init_slip(state.SsWsPass, ref astr_divsrv_oper);
if (result == 1)
{
Dw_main.Reset();
DwUtil.ImportData(astr_divsrv_oper.xml_main, Dw_main, tDw_main, FileSaveAsType.Xml);
Dw_detail.Reset();
DwUtil.ImportData(astr_divsrv_oper.xml_detail, Dw_detail, null, FileSaveAsType.Xml);
}
}
catch (SoapException ex)
{
LtServerMessage.Text = WebUtil.ErrorMessage(WebUtil.SoapMessage(ex));
}
catch (Exception ex)
{
LtServerMessage.Text = WebUtil.ErrorMessage(ex.Message);
}
}
// ฟังก์ชัน Load หน้าจอแรก
private void JspostNewClear()
{
Dw_main.Reset();
Dw_main.InsertRow(0);
Dw_main.SetItemString(1, "coop_id", state.SsCoopId);
Dw_main.SetItemString(1, "entry_id", state.SsUsername);
Dw_main.SetItemDate(1, "entry_date", state.SsWorkDate);
Dw_main.SetItemDateTime(1, "operate_date", state.SsWorkDate);
Dw_main.SetItemDateTime(1, "slip_date", state.SsWorkDate);
String divyear = Hddiv_year.Value.Trim();
if (divyear == "" || divyear == null)
{
JsGetYear();
}
else
{
Dw_main.SetItemString(1, "div_year", divyear);
}
//Dw_main.SetItemString(1, "div_year", Convert.ToString(DateTime.Now.Year + 543));
Dw_detail.Reset();
}
private void JspostInitMemberNo()
{
try
{
String member_no = Hdmember_no.Value.Trim();
Dw_main.SetItemString(1, "member_no", member_no);
member_no = WebUtil.MemberNoFormat(member_no);
Dw_main.SetItemString(1, "member_no", member_no);
DivavgService = wcf.NDivavg;
str_divsrv_oper astr_divsrv_oper = new str_divsrv_oper();
astr_divsrv_oper.xml_main = Dw_main.Describe("DataWindow.Data.XML");
astr_divsrv_oper.xml_detail = Dw_detail.Describe("DataWindow.Data.XML");
int result = DivavgService.of_init_slip(state.SsWsPass, ref astr_divsrv_oper);
if (result == 1)
{
Dw_main.Reset();
DwUtil.ImportData(astr_divsrv_oper.xml_main, Dw_main, tDw_main, FileSaveAsType.Xml);
Dw_detail.Reset();
DwUtil.ImportData(astr_divsrv_oper.xml_detail, Dw_detail, null, FileSaveAsType.Xml);
}
}
catch (SoapException ex)
{
LtServerMessage.Text = WebUtil.ErrorMessage(WebUtil.SoapMessage(ex));
}
catch (Exception ex)
{
LtServerMessage.Text = WebUtil.ErrorMessage(ex.Message);
}
}
private void JsGetYear()
{
int account_year = 0;
try
{
String sql = @"select max(current_year) from yrcfconstant";
Sdt dt = WebUtil.QuerySdt(sql);
if (dt.Next())
{
account_year = int.Parse(dt.GetString("max(current_year)"));
Dw_main.SetItemString(1, "div_year", Convert.ToString(account_year));
}
else
{
sqlca.Rollback();
}
}
catch (Exception ex)
{
account_year = DateTime.Now.Year;
account_year = account_year + 543;
Dw_main.SetItemString(1, "div_year", account_year.ToString());
}
}
///
/// get วันทำการ
///
public void of_activeworkdate()
{
try
{
string sqlStr;
int li_clsdaystatus = 0;
DateTime ldtm_workdate;
Sdt dt;
sqlStr = @" select workdate, closeday_status
from amappstatus
where coop_id = '" + state.SsCoopId + @"'
and application = '" + state.SsApplication + "'";
dt = WebUtil.QuerySdt(sqlStr);
if (dt.Next())
{
ldtm_workdate = dt.GetDate("workdate");
li_clsdaystatus = dt.GetInt32("closeday_status");
if (li_clsdaystatus == 1)
{
int result = wcf.NCommon.of_getnextworkday(state.SsWsPass, state.SsWorkDate, ref idtm_activedate);
HdLastDate.Value = Convert.ToString(idtm_activedate);
HdActiveDate.Value = Convert.ToString(idtm_activedate);
}
else
{
HdLastDate.Value = Convert.ToString(state.SsWorkDate);
HdActiveDate.Value = Convert.ToString(state.SsWorkDate);
}
}
}
catch (Exception ex) { LtServerMessage.Text = WebUtil.ErrorMessage(ex); }
}
///
/// ตรวจสอบการเงิน
///
private Boolean of_checkfin()
{
string moneytype_code = "";
for (int i = 1; i <= Dw_detail.RowCount; i++)
{
moneytype_code = Dw_detail.GetItemString(i, "moneytype_code");
if (moneytype_code == "CSH")
{
i = Dw_detail.RowCount;
break;
}
}
string sqlStr = "";
Sdt dt;
if (moneytype_code == "CSH")
{
//เช็คว่าวันจ่ายเงินกู้เป็นวันเดียวกันกับวันทำการหรือไม่
idtm_activedate = Convert.ToDateTime(HdActiveDate.Value);
if (state.SsWorkDate != idtm_activedate)
{
this.SetOnLoadedScript("alert('ประเภทการจ่ายเป็นเงินสด ไม่สามารถจ่ายเงินกู้ล่วงหน้าได้ กรุณาตรวจสอบ');");
return false;
}
//เช็คว่าต้องการตรวจสอบการเงินหรือไม่
sqlStr = @"select allpay_atfin from finconstant where coop_id = '" + state.SsCoopControl + "'";
dt = WebUtil.QuerySdt(sqlStr);
if (dt.Next())
{
if (dt.GetInt32("allpay_atfin") == 0)
{
return true;
}
}
//เช็คลิ้นชักการเงิน
try
{
sqlStr = @"select status from fintableusermaster where user_name = {0} and opdatework = {1}";
sqlStr = WebUtil.SQLFormat(sqlStr, state.SsUsername, state.SsWorkDate);
dt = WebUtil.QuerySdt(sqlStr);
if (dt.Next())
{
int status = dt.GetInt32("status");
if (status == 14)
{
this.SetOnLoadedScript("alert('ไม่สามารถทำรายการได้เนื่องจากมีการปิดลิ้นชักไปแล้วของ " + state.SsUsername + "') \n alert('ดึงข้อมูลรายการต่อไป')");
return false;
}
else
{
return true;
}
}
else
{
this.SetOnLoadedScript("alert('ผู้ทำรายกายยังไม่ได้เปิดลิ้นชัก " + state.SsUsername + "') \n alert('ดึงข้อมูลรายการต่อไป')");
return false;
}
}
catch (Exception ex) { LtServerMessage.Text = WebUtil.ErrorMessage(ex); }
}
return true;
}
private void Print(string coopId)
{
switch (coopId)
{
case "020001":
ireport_obj = "r_fin_form_bill_pay_divavg";
String member_no = Dw_main.GetItemString(1, "member_no");
// Printing.PrintIRDivPayPBN(this, member_no, ireport_obj);
break;
case "022001":
string slip_no = "";
string memberNo = Dw_main.GetItemString(1, "member_no");
ireport_obj = "r_divavg_form_bill_pay";
string se = @"select max(payoutslip_no) as payoutslip_no from yrslippayout where member_no = '"+memberNo+"'";
Sdt ta = WebUtil.QuerySdt(se);
if (ta.Next())
{
slip_no = ta.GetString("payoutslip_no");
}
// Printing.IRPrint(this, slip_no, ireport_obj);
break;
}
}
}
}