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 DataLibrary; //using Sybase.DataWindow; namespace Saving.Applications.hr { public partial class w_sheet_hr_tax : PageWebSheet, WebSheet { //POSTBACK protected String getCheckprocess; protected String getCheckprocess91; protected String getProcess; protected String getNameId; protected String checkFlag; protected String getProcess91; public void InitJsPostBack() { getCheckprocess = WebUtil.JsPostBack(this, "getCheckprocess"); getCheckprocess91 = WebUtil.JsPostBack(this, "getCheckprocess91"); getProcess = WebUtil.JsPostBack(this, "getProcess"); getProcess91 = WebUtil.JsPostBack(this, "getProcess91"); getNameId = WebUtil.JsPostBack(this, "getNameId"); checkFlag = WebUtil.JsPostBack(this, "checkFlag"); } public void WebSheetLoadBegin() { Literal1.Text = ""; this.ConnectSQLCA(); dw_process.SetTransaction(sqlca); DwMain.SetTransaction(sqlca); DwDetail.SetTransaction(sqlca); if (!IsPostBack) { dw_process.InsertRow(0); DwMain.InsertRow(0); DwDetail.InsertRow(0); } else { try { dw_process.RestoreContext(); DwMain.RestoreContext(); DwDetail.RestoreContext(); } catch (Exception ex) { LtServerMessage.Text = WebUtil.ErrorMessage(ex); } } } public void CheckJsPostBack(string eventArg) { if (eventArg == "getProcess") { JsGetProcess(); } else if (eventArg == "getProcess91") { JsGetProcess91(); } else if (eventArg == "getNameId") { GetNameId(); } else if (eventArg == "checkFlag") { CheckFlag(); } else if (eventArg == "getCheckprocess") { GetCheckProcess(); } else if (eventArg == "getCheckprocess91") { GetCheckProcess91(); } } private void CheckFlag() { } private void GetCheckProcess() { Decimal year_pay = dw_process.GetItemDecimal(1, "year_pay")-543; Decimal month_pay = dw_process.GetItemDecimal(1, "month_pay"); String sqlStr; Sta ta = new Sta(sqlca.ConnectionString); sqlStr = @" SELECT HRNPAYROLL_TAXSET.PAY_YEAR, HRNPAYROLL_TAXSET.PAY_MONTH FROM HRNPAYROLL_TAXSET "; Sdt dt_haverow = ta.Query(sqlStr); if (dt_haverow.Next()) { sqlStr = @" SELECT HRNPAYROLL_TAXSET.PAY_YEAR, HRNPAYROLL_TAXSET.PAY_MONTH FROM HRNPAYROLL_TAXSET WHERE ( HRNPAYROLL_TAXSET.PAY_YEAR ='" + year_pay + @"' ) AND ( HRNPAYROLL_TAXSET.PAY_MONTH = '" + month_pay + @"' ) "; Sdt dt_month = ta.Query(sqlStr); if (dt_month.Next()) { //เขียน javascript คอนเฟิร์ม Literal1.Text = @" "; } else { JsGetProcess(); } } else { GetFProcess(); } } private void JsGetProcess() { try { String seq_tax, taxlist, pre_seq_tax, emplid, sqlStr, sqlStr1, seq_pay, pre_seq_pay, card_id = ""; Decimal setpayroll_amt = 0, payroll_tax = 0, payroll_C23 = 0, payroll_B07 = 0, payroll_S = 0; Decimal C_01 = 0, C_02 = 0, C_03 = 0, C_04 = 0, C_05 = 0, C_06 = 0, C_07 = 0 , C_08 = 0, C_09 = 0, C_10 = 0, C_11 = 0, C_12 = 0, C_13 = 0, C_14 = 0 , C_15 = 0, C_16 = 0, C_17 = 0, C_18 = 0, C_19 = 0, C_20 = 0, C_21 = 0 , C_22 = 0, C_23 = 0; Decimal B_01 = 0, B_02 = 0, B_03 = 0, B_04 = 0, B_05 = 0, B_06 = 0, B_07 = 0; Decimal A_01 = 0, A_02 = 0, A_03 = 0, A_05 = 0, A_06 = 0, A_07 = 0, A_08 = 0 , A_09 = 0, A_10 = 0, A_11 = 0, A_12 = 0, A_13 = 0, A_14 = 0, A_15 = 0, A_16 = 0 , A_17 = 0, A_18 = 0, A_19 = 0, A_20 = 0; Double A_04 = 0; Decimal pay_month, pay_year, salary_lastmonth = 1; Decimal year_pay = dw_process.GetItemDecimal(1, "year_pay") - 543; Decimal month_pay = dw_process.GetItemDecimal(1, "month_pay"); Sta ta = new Sta(sqlca.ConnectionString); sqlStr = @"DELETE FROM HRNPAYROLL_TAXSET WHERE ( HRNPAYROLL_TAXSET.PAY_YEAR =" + year_pay + @" ) AND ( HRNPAYROLL_TAXSET.PAY_MONTH = " + month_pay + @" )"; Sdt dt_delete = ta.Query(sqlStr); Int32 month; if (month_pay == 1) { month = 12; Int32 year = Convert.ToInt32(year_pay) - 1; year_pay = year; } else { month = Convert.ToInt32(month_pay) - 1; } sqlStr = @" SELECT * FROM HRNPAYROLL_TAXSET WHERE ( HRNPAYROLL_TAXSET.PAY_YEAR ='" + year_pay + @"' ) AND ( HRNPAYROLL_TAXSET.PAY_MONTH ='" + month + @"' ) "; Sdt dt_insert = ta.Query(sqlStr); int row_insert = dt_insert.GetRowCount(); sqlStr = @" SELECT EMPLID FROM HRNMLEMPLFILEMAS ORDER BY EMPLID ASC"; Sdt dt_emp = ta.Query(sqlStr); int row_emp = dt_emp.GetRowCount(); for (int j = 0; j < row_emp; j++) { emplid = dt_emp.Rows[j]["EMPLID"].ToString(); // select พนักงาน sqlStr = @" SELECT HRNPAYROLL_SET.EMPLID, HRNPAYROLL_SET.SEQ_PAY, HRNPAYROLL_SET.SETPAYROLL_AMT FROM HRNPAYROLL_SET WHERE HRNPAYROLL_SET.EMPLID ='" + emplid + "' AND HRNPAYROLL_SET.SEQ_PAY ='R01' "; Sdt dt_payorll = ta.Query(sqlStr); int row_payorll = dt_payorll.GetRowCount(); dt_payorll.Next(); try { setpayroll_amt = Convert.ToDecimal(dt_payorll.Rows[0]["SETPAYROLL_AMT"]); } catch { setpayroll_amt = 0; } sqlStr1 = @" SELECT TAXLIST1_AMT FROM HRNPAYROLL_TAXSET WHERE EMPLID ='" + emplid + "' AND SEQ_TAX ='A01' AND PAY_YEAR = '" + year_pay + "'AND PAY_MONTH = '" + month + "' "; Sdt dt_search_salary = ta.Query(sqlStr1); dt_search_salary.Next(); try { salary_lastmonth = dt_search_salary.GetDecimal("TAXLIST1_AMT"); } catch (Exception ex) { LtServerMessage.Text = WebUtil.ErrorMessage(ex); } if (setpayroll_amt == (salary_lastmonth / 12)) { sqlStr1 = @" SELECT * FROM HRNPAYROLL_TAXSET WHERE ( HRNPAYROLL_TAXSET.PAY_YEAR ='" + year_pay + @"' ) AND ( HRNPAYROLL_TAXSET.PAY_MONTH ='" + month + @"' ) AND ( HRNPAYROLL_TAXSET.EMPLID ='" + emplid + @"') ORDER BY SEQ_TAX ASC"; Sdt dt_paylist = ta.Query(sqlStr1); int row_paylist = dt_paylist.GetRowCount(); for (int r = 1; r <= row_paylist; r++) { seq_tax = dt_paylist.Rows[r]["SEQ_TAX"].ToString(); taxlist = dt_paylist.Rows[r]["TAXLIST"].ToString(); emplid = dt_paylist.Rows[r]["EMPLID"].ToString(); pay_year = Convert.ToDecimal(dt_paylist.Rows[r]["PAY_YEAR"]); pay_month = Convert.ToDecimal(dt_paylist.Rows[r]["PAY_MONTH"]); payroll_tax = Convert.ToDecimal(dt_paylist.Rows[r]["TAXLIST1_AMT"]); sqlStr = @" INSERT INTO HRNPAYROLL_TAXSET ( PAY_YEAR, PAY_MONTH, SEQ_TAX, EMPLID, TAXLIST, PAY_DATE, TAXLIST1_AMT, TAXLIST2_AMT, TAXLIST3, TAXLIST_FLAG, ENTRY_ID, ENTRY_DATE ) VALUES (" + year_pay + @", " + month_pay + @", '" + seq_tax + @"', '" + emplid + @"', '" + taxlist + @"', null, " + payroll_tax + @", null, null, null, null, null) "; ta.Exe(sqlStr); } } else { //////////////////////////////////////////////////////////////////////////////// sqlStr = @" SELECT HRNPAYROLL_SET.EMPLID, HRNPAYROLL_SET.SEQ_PAY, HRNPAYROLL_SET.SETPAYROLL_AMT FROM HRNPAYROLL_SET WHERE HRNPAYROLL_SET.EMPLID ='" + emplid + "' AND HRNPAYROLL_SET.SEQ_PAY ='R01' "; Sdt dt_payroll = ta.Query(sqlStr); int row_payroll = dt_payroll.GetRowCount(); dt_payroll.Next(); try { setpayroll_amt = Convert.ToDecimal(dt_payroll.Rows[0]["SETPAYROLL_AMT"]); } catch { setpayroll_amt = 0; } // select HRNPAYROLL_TAXCFG sqlStr = @" SELECT HRNPAYROLL_TAXCFG.SEQ_TAX, HRNPAYROLL_TAXCFG.TAXLIST FROM HRNPAYROLL_TAXCFG ORDER BY HRNPAYROLL_TAXCFG.SEQ_TAX ASC"; Sdt dt = ta.Query(sqlStr); int row = dt.GetRowCount(); for (int i = 0; i < row; i++) { seq_tax = dt.Rows[i]["SEQ_TAX"].ToString(); taxlist = dt.Rows[i]["TAXLIST"].ToString(); pre_seq_tax = WebUtil.Left(seq_tax, 1); /////////////////// ข. รายการเงินที่ได้รับการยกเว้น ////////////////////////////////////////////// if (pre_seq_tax == "B") { card_id = ""; switch (seq_tax) { case "B01": B_01 = 0; payroll_tax = B_01; break; case "B02": B_02 = 0; payroll_tax = B_02; break; case "B03": B_03 = 0; payroll_tax = B_03; break; case "B04": B_04 = 0; payroll_tax = B_04; break; case "B05": B_05 = 0; payroll_tax = B_05; break; case "B06": B_06 = 0; payroll_tax = B_06; break; case "B07": B_07 = B_01 + B_02 + B_03 + B_04 + B_05 + B_06; payroll_tax = B_07; break; } } ////////////////////// ค. รายการลดหย่อนและยกเว้นหลังจากหักค่าใช้จ่าย ///////////////////////////////// else if (pre_seq_tax == "C") { switch (seq_tax) { case "C01": C_01 = 40000; payroll_tax = C_01; card_id = ""; break; case "C02": C_02 = 30000; payroll_tax = C_02; card_id = ""; break; case "C03": C_03 = 0; payroll_tax = C_03; card_id = ""; break; case "C04": C_04 = 0; payroll_tax = C_04; card_id = ""; break; case "C05": C_05 = 0; payroll_tax = C_05; card_id = ""; break; case "C06": C_06 = 0; payroll_tax = C_06; card_id = "000000000000"; break; case "C07": C_07 = 0; payroll_tax = C_07; card_id = "000000000000"; break; case "C08": C_08 = 0; payroll_tax = C_08; card_id = "000000000000"; break; case "C09": C_09 = 0; payroll_tax = C_09; card_id = "000000000000"; break; case "C10": C_10 = 0; payroll_tax = C_10; card_id = ""; break; case "C11": C_11 = 0; payroll_tax = C_11; card_id = "000000000000"; break; case "C12": C_12 = 0; payroll_tax = C_12; card_id = "000000000000"; break; case "C13": C_13 = 0; payroll_tax = C_13; card_id = "000000000000"; break; case "C14": C_14 = 0; payroll_tax = C_14; card_id = "000000000000"; break; case "C15": C_15 = 0; payroll_tax = C_15; card_id = ""; break; case "C16": C_16 = 0; payroll_tax = C_16; card_id = ""; break; case "C17": C_17 = 0; payroll_tax = C_17; card_id = ""; break; case "C18": C_18 = 0; payroll_tax = C_18; card_id = ""; break; case "C19": C_19 = 0; payroll_tax = C_19; card_id = ""; break; case "C20": C_20 = 0; payroll_tax = C_20; card_id = ""; break; case "C21": C_21 = 0; payroll_tax = C_21; card_id = ""; break; case "C22": C_22 = 9000; payroll_tax = C_22; card_id = ""; break; case "C23": C_23 = C_01 + C_02 + C_03 + C_04 + C_05 + C_06 + C_07 + C_08 + C_09 + C_10 + C_11 + C_12 + C_13 + C_14 + C_15 + C_16 + C_17 + C_18 + C_19 + C_20 + C_21 + C_22; payroll_tax = C_23; card_id = ""; break; } } //////////////////////////// ส่วนคู่สมรส ///////////////////////////////////////////////// else if (pre_seq_tax == "D") { card_id = ""; switch (seq_tax) { case "D01": payroll_tax = 0; break; case "D02": payroll_tax = 0; break; case "D03": payroll_tax = 0; break; case "D04": payroll_tax = 0; break; case "D05": payroll_tax = 0; break; case "D06": payroll_tax = 0; break; case "D07": payroll_tax = 0; break; } } sqlStr = @" INSERT INTO HRNPAYROLL_TAXSET ( PAY_YEAR, PAY_MONTH, SEQ_TAX, EMPLID, TAXLIST, PAY_DATE, TAXLIST1_AMT, TAXLIST2_AMT, TAXLIST3, TAXLIST_FLAG, ENTRY_ID, ENTRY_DATE ) VALUES (" + year_pay + @", " + month_pay + @", '" + seq_tax + @"', '" + emplid + @"', '" + taxlist + @"', null, " + payroll_tax + @", null, '" + card_id + @"', null, null, null) "; ta.Query(sqlStr); } ///////////////////ตารางภาษี///////////////////////////// Double min_rate1 = 0, max_rate1 = 0, taxper1 = 0, goss_rate1 = 0; Double min_rate2 = 0, max_rate2 = 0, taxper2 = 0, goss_rate2 = 0; Double min_rate3 = 0, max_rate3 = 0, taxper3 = 0, goss_rate3 = 0; Double min_rate4 = 0, max_rate4 = 0, taxper4 = 0, goss_rate4 = 0; Double min_rate5 = 0, max_rate5 = 0, taxper5 = 0, goss_rate5 = 0; sqlStr = @" SELECT HRNUCFTAX_RATE.MIN_RATE, HRNUCFTAX_RATE.MAX_RATE, HRNUCFTAX_RATE.TAXPER, HRNUCFTAX_RATE.GOSS_RATE FROM HRNUCFTAX_RATE ORDER BY HRNUCFTAX_RATE.MIN_RATE ASC"; Sdt dt_rate = ta.Query(sqlStr); int row_rate = dt_rate.GetRowCount(); // ArrayList tax_rate = new ArrayList(); for (int t = 0; t < row_rate; t++) { try { if (t == 0) { min_rate1 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate1 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper1 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate1 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } else if (t == 1) { min_rate2 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate2 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper2 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate2 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } else if (t == 2) { min_rate3 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate3 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper3 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate3 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } else if (t == 3) { min_rate4 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate4 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper4 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate4 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } else if (t == 4) { min_rate5 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate5 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper5 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate5 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } } catch (Exception ex) { LtServerMessage.Text = WebUtil.ErrorMessage(ex); } } ///////////////////////// ก. การคำนวณภาษี ///////////////////////////////////////////////////// sqlStr = @" SELECT HRNPAYROLL_TAXSET.SEQ_TAX, HRNPAYROLL_TAXSET.TAXLIST1_AMT FROM HRNPAYROLL_TAXSET WHERE ( HRNPAYROLL_TAXSET.PAY_YEAR =" + year_pay + @" ) AND ( HRNPAYROLL_TAXSET.PAY_MONTH = " + month_pay + @" ) AND ( HRNPAYROLL_TAXSET.SEQ_TAX = 'B07' ) AND ( HRNPAYROLL_TAXSET.EMPLID = '" + emplid + "' ) "; Sdt dt_B07 = ta.Query(sqlStr); dt_B07.Next(); sqlStr = @" SELECT HRNPAYROLL_TAXSET.SEQ_TAX, HRNPAYROLL_TAXSET.TAXLIST1_AMT FROM HRNPAYROLL_TAXSET WHERE ( HRNPAYROLL_TAXSET.PAY_YEAR = " + year_pay + @" ) AND ( HRNPAYROLL_TAXSET.PAY_MONTH =" + month_pay + @" ) AND ( HRNPAYROLL_TAXSET.SEQ_TAX = 'C23' ) AND ( HRNPAYROLL_TAXSET.EMPLID ='" + emplid + "') "; Sdt dt_C23 = ta.Query(sqlStr); dt_C23.Next(); payroll_B07 = Convert.ToDecimal(dt_B07.Rows[0]["TAXLIST1_AMT"]); payroll_C23 = Convert.ToDecimal(dt_C23.Rows[0]["TAXLIST1_AMT"]); sqlStr = @" SELECT HRNPAYROLL_TAXSET.SEQ_TAX, HRNPAYROLL_TAXSET.TAXLIST1_AMT FROM HRNPAYROLL_TAXSET WHERE ( HRNPAYROLL_TAXSET.SEQ_TAX LIKE'A%' ) AND ( HRNPAYROLL_TAXSET.EMPLID = '" + emplid + "' ) ORDER BY HRNPAYROLL_TAXSET.SEQ_TAX ASC "; Sdt dt_a = ta.Query(sqlStr); int row_tax = dt_a.GetRowCount(); for (int tax = 0; tax < row_tax; tax++) { seq_tax = dt_a.Rows[tax]["SEQ_TAX"].ToString(); switch (seq_tax) { case "A01": A_01 = setpayroll_amt * 12; payroll_tax = A_01; break; case "A02": A_02 = payroll_B07; payroll_tax = A_02; break; case "A03": A_03 = A_01 - A_02; payroll_tax = A_03; break; case "A04": A_04 = Convert.ToDouble(A_03) * 0.4; payroll_tax = Convert.ToDecimal(A_04); break; case "A05": A_05 = A_03 - Convert.ToDecimal(A_04); payroll_tax = A_05; break; case "A06": A_06 = payroll_C23; payroll_tax = A_06; break; case "A07": A_07 = A_05 - A_06; if (A_07 < 0) { A_07 = 0; } payroll_tax = A_07; break; case "A08": A_08 = 0; payroll_tax = A_08; break; case "A09": A_09 = A_07 - A_08; payroll_tax = A_09; break; case "A10": A_10 = 0; payroll_tax = A_10; break; case "A11": A_11 = A_09 - A_10; payroll_tax = A_11; break; case "A12": //////////////////Check Tax_Rate แบบ Hard Code////////////////// Double rate_amt = Convert.ToDouble(A_11); Double max_level = 0; Double P_amt1 = 0, P_amt2 = 0, P_amt3 = 0, P_amt4 = 0, P_amt5 = 0; Double t_amt1 = 0, t_amt2 = 0, t_amt3 = 0, t_amt4 = 0, t_amt5 = 0; if (rate_amt < min_rate2) { A_12 = 1; //ร้อยละ max_level = max_rate1;//จำนวนสูงสุดของขั้น P_amt1 = max_level;//เงินได้สุทธิแต่ละขั้น t_amt1 = 0;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt1); } else if (rate_amt > max_rate2 || rate_amt < min_rate3) { A_12 = 10; //ร้อยละ P_amt1 = max_rate1; max_level = max_rate2 - max_rate1;//จำนวนสูงสุดของขั้น P_amt2 = rate_amt - P_amt1;//เงินได้สุทธิแต่ละขั้น t_amt2 = P_amt2 * 0.1;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt2 / 12); } else if (rate_amt > max_rate3 || rate_amt < min_rate4) { A_12 = 20; //ร้อยละ P_amt2 = max_rate2; max_level = max_rate3 - max_rate2;//จำนวนสูงสุดของขั้น P_amt3 = rate_amt - P_amt2;//เงินได้สุทธิแต่ละขั้น t_amt3 = P_amt3 * 0.2;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt3 / 12); } else if (rate_amt > max_rate4 || rate_amt < min_rate5) { A_12 = 30; //ร้อยละ P_amt3 = max_rate3; max_level = max_rate4 - max_rate3;//จำนวนสูงสุดของขั้น P_amt4 = rate_amt - P_amt3;//เงินได้สุทธิแต่ละขั้น t_amt4 = P_amt4 * 0.3;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt4 / 12); } else if (rate_amt > max_rate5) { A_12 = 37; //ร้อยละ P_amt4 = max_rate4; max_level = max_rate4 - max_rate5;//จำนวนสูงสุดของขั้น P_amt5 = rate_amt - P_amt4;//เงินได้สุทธิแต่ละขั้น t_amt5 = P_amt5 * 0.37;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt5 / 12); } break; case "A13": A_13 = payroll_tax; break; case "A14": payroll_tax = 0; break; case "A15": payroll_tax = 0; break; case "A16": payroll_tax = 0; break; case "A17": payroll_tax = 0; break; case "A18": payroll_tax = 0; break; case "A19": payroll_tax = 0; break; case "A20": payroll_tax = 0; break; } sqlStr = @" UPDATE HRNPAYROLL_TAXSET SET TAXLIST1_AMT = " + payroll_tax + @" WHERE ( HRNPAYROLL_TAXSET.PAY_YEAR =" + year_pay + @" ) AND ( HRNPAYROLL_TAXSET.PAY_MONTH = " + month_pay + @" ) AND ( HRNPAYROLL_TAXSET.SEQ_TAX ='" + seq_tax + @"' ) AND ( HRNPAYROLL_TAXSET.EMPLID = '" + emplid + "' )"; ta.Exe(sqlStr); } //////////////////////////////////////////////////////////////////////////////// } } LtServerMessage.Text = WebUtil.CompleteMessage("ประมวลผลเสร็จเรียบร้อยแล้ว"); } catch (Exception ex) { LtServerMessage.Text = WebUtil.ErrorMessage(ex); } DwMain.Reset(); DwDetail.Reset(); DwMain.InsertRow(1); DwDetail.InsertRow(1); } private void GetFProcess() { // Set ค่าใหม่ให้กับพนักงานทุกคน // select พนักงาน String sqlStr, emplid, seq_tax, taxlist, pre_seq_tax, card_id = ""; Decimal setpayroll_amt = 0, payroll_tax = 0, payroll_C23 = 0, payroll_B07 = 0, payroll_S = 0; Decimal C_01 = 0, C_02 = 0, C_03 = 0, C_04 = 0, C_05 = 0, C_06 = 0, C_07 = 0 , C_08 = 0, C_09 = 0, C_10 = 0, C_11 = 0, C_12 = 0, C_13 = 0, C_14 = 0 , C_15 = 0, C_16 = 0, C_17 = 0, C_18 = 0, C_19 = 0, C_20 = 0, C_21 = 0 , C_22 = 0, C_23 = 0; Decimal B_01 = 0, B_02 = 0, B_03 = 0, B_04 = 0, B_05 = 0, B_06 = 0, B_07 = 0; Decimal A_01 = 0, A_02 = 0, A_03 = 0, A_05 = 0, A_06 = 0, A_07 = 0, A_08 = 0 , A_09 = 0, A_10 = 0, A_11 = 0, A_12 = 0, A_13 = 0, A_14 = 0, A_15 = 0, A_16 = 0 , A_17 = 0, A_18 = 0, A_19 = 0, A_20 = 0; Double A_04 = 0; Decimal year_pay = dw_process.GetItemDecimal(1, "year_pay")-543; Decimal month_pay = dw_process.GetItemDecimal(1, "month_pay"); Sta ta = new Sta(sqlca.ConnectionString); try{ sqlStr = @" SELECT EMPLID FROM HRNMLEMPLFILEMAS ORDER BY EMPLID ASC"; Sdt dt_emp = ta.Query(sqlStr); int row_emp = dt_emp.GetRowCount(); for (int j = 0; j < row_emp; j++) { emplid = dt_emp.Rows[j]["EMPLID"].ToString(); // select พนักงาน sqlStr = @" SELECT HRNPAYROLL_SET.EMPLID, HRNPAYROLL_SET.SEQ_PAY, HRNPAYROLL_SET.SETPAYROLL_AMT FROM HRNPAYROLL_SET WHERE HRNPAYROLL_SET.EMPLID ='" + emplid + "' AND HRNPAYROLL_SET.SEQ_PAY ='R01' "; Sdt dt_payorll = ta.Query(sqlStr); int row_payorll = dt_payorll.GetRowCount(); dt_payorll.Next(); try { setpayroll_amt = Convert.ToDecimal(dt_payorll.Rows[0]["SETPAYROLL_AMT"]); } catch { setpayroll_amt = 0; } // select HRNPAYROLL_TAXCFG sqlStr = @" SELECT HRNPAYROLL_TAXCFG.SEQ_TAX, HRNPAYROLL_TAXCFG.TAXLIST FROM HRNPAYROLL_TAXCFG ORDER BY HRNPAYROLL_TAXCFG.SEQ_TAX ASC"; Sdt dt = ta.Query(sqlStr); int row = dt.GetRowCount(); for (int i = 0; i < row; i++) { seq_tax = dt.Rows[i]["SEQ_TAX"].ToString(); taxlist = dt.Rows[i]["TAXLIST"].ToString(); pre_seq_tax = WebUtil.Left(seq_tax, 1); /////////////////// ข. รายการเงินที่ได้รับการยกเว้น ////////////////////////////////////////////// if (pre_seq_tax == "B") { card_id = ""; switch (seq_tax) { case "B01": B_01 = 0; payroll_tax = B_01; break; case "B02": B_02 = 0; payroll_tax = B_02; break; case "B03": B_03 = 0; payroll_tax = B_03; break; case "B04": B_04 = 0; payroll_tax = B_04; break; case "B05": B_05 = 0; payroll_tax = B_05; break; case "B06": B_06 = 0; payroll_tax = B_06; break; case "B07": B_07 = B_01 + B_02 + B_03 + B_04 + B_05 + B_06; payroll_tax = B_07; break; } } ////////////////////// ค. รายการลดหย่อนและยกเว้นหลังจากหักค่าใช้จ่าย ///////////////////////////////// else if (pre_seq_tax == "C") { switch (seq_tax) { case "C01": C_01 = 40000; payroll_tax = C_01; card_id = ""; break; case "C02": C_02 = 30000; payroll_tax = C_02; card_id = ""; break; case "C03": C_03 = 0; payroll_tax = C_03; card_id = ""; break; case "C04": C_04 = 0; payroll_tax = C_04; card_id = ""; break; case "C05": C_05 = 0; payroll_tax = C_05; card_id = ""; break; case "C06": C_06 = 0; payroll_tax = C_06; card_id = "000000000000"; break; case "C07": C_07 = 0; payroll_tax = C_07; card_id = "000000000000"; break; case "C08": C_08 = 0; payroll_tax = C_08; card_id = "000000000000"; break; case "C09": C_09 = 0; payroll_tax = C_09; card_id = "000000000000"; break; case "C10": C_10 = 0; payroll_tax = C_10; card_id = ""; break; case "C11": C_11 = 0; payroll_tax = C_11; card_id = "000000000000"; break; case "C12": C_12 = 0; payroll_tax = C_12; card_id = "000000000000"; break; case "C13": C_13 = 0; payroll_tax = C_13; card_id = "000000000000"; break; case "C14": C_14 = 0; payroll_tax = C_14; card_id = "000000000000"; break; case "C15": C_15 = 0; payroll_tax = C_15; card_id = ""; break; case "C16": C_16 = 0; payroll_tax = C_16; card_id = ""; break; case "C17": C_17 = 0; payroll_tax = C_17; card_id = ""; break; case "C18": C_18 = 0; payroll_tax = C_18; card_id = ""; break; case "C19": C_19 = 0; payroll_tax = C_19; card_id = ""; break; case "C20": C_20 = 0; payroll_tax = C_20; card_id = ""; break; case "C21": C_21 = 0; payroll_tax = C_21; card_id = ""; break; case "C22": C_22 = 9000; payroll_tax = C_22; card_id = ""; break; case "C23": C_23 = C_01 + C_02 + C_03 + C_04 + C_05 + C_06 + C_07 + C_08 + C_09 + C_10 + C_11 + C_12 + C_13 + C_14 + C_15 + C_16 + C_17 + C_18 + C_19 + C_20 + C_21 + C_22; payroll_tax = C_23; card_id = ""; break; } } //////////////////////////// ส่วนคู่สมรส ///////////////////////////////////////////////// else if (pre_seq_tax == "D") { card_id = ""; switch (seq_tax) { case "D01": payroll_tax = 0; break; case "D02": payroll_tax = 0; break; case "D03": payroll_tax = 0; break; case "D04": payroll_tax = 0; break; case "D05": payroll_tax = 0; break; case "D06": payroll_tax = 0; break; case "D07": payroll_tax = 0; break; } } sqlStr = @" INSERT INTO HRNPAYROLL_TAXSET ( PAY_YEAR, PAY_MONTH, SEQ_TAX, EMPLID, TAXLIST, PAY_DATE, TAXLIST1_AMT, TAXLIST2_AMT, TAXLIST3, TAXLIST_FLAG, ENTRY_ID, ENTRY_DATE ) VALUES (" + year_pay + @", " + month_pay + @", '" + seq_tax + @"', '" + emplid + @"', '" + taxlist + @"', null, " + payroll_tax + @", null, '" + card_id + @"', null, null, null) "; ta.Query(sqlStr); } ///////////////////ตารางภาษี///////////////////////////// Double min_rate1 = 0, max_rate1 = 0, taxper1 = 0, goss_rate1 = 0; Double min_rate2 = 0, max_rate2 = 0, taxper2 = 0, goss_rate2 = 0; Double min_rate3 = 0, max_rate3 = 0, taxper3 = 0, goss_rate3 = 0; Double min_rate4 = 0, max_rate4 = 0, taxper4 = 0, goss_rate4 = 0; Double min_rate5 = 0, max_rate5 = 0, taxper5 = 0, goss_rate5 = 0; sqlStr = @" SELECT HRNUCFTAX_RATE.MIN_RATE, HRNUCFTAX_RATE.MAX_RATE, HRNUCFTAX_RATE.TAXPER, HRNUCFTAX_RATE.GOSS_RATE FROM HRNUCFTAX_RATE ORDER BY HRNUCFTAX_RATE.MIN_RATE ASC"; Sdt dt_rate = ta.Query(sqlStr); int row_rate = dt_rate.GetRowCount(); // ArrayList tax_rate = new ArrayList(); for (int t = 0; t < row_rate; t++) { try { if (t == 0) { min_rate1 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate1 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper1 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate1 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } else if (t == 1) { min_rate2 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate2 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper2 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate2 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } else if (t == 2) { min_rate3 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate3 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper3 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate3 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } else if (t == 3) { min_rate4 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate4 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper4 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate4 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } else if (t == 4) { min_rate5 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate5 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper5 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate5 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } } catch (Exception ex) { LtServerMessage.Text = WebUtil.ErrorMessage(ex); } } ///////////////////////// ก. การคำนวณภาษี ///////////////////////////////////////////////////// sqlStr = @" SELECT HRNPAYROLL_TAXSET.SEQ_TAX, HRNPAYROLL_TAXSET.TAXLIST1_AMT FROM HRNPAYROLL_TAXSET WHERE ( HRNPAYROLL_TAXSET.PAY_YEAR =" + year_pay + @" ) AND ( HRNPAYROLL_TAXSET.PAY_MONTH = " + month_pay + @" ) AND ( HRNPAYROLL_TAXSET.SEQ_TAX = 'B07' ) AND ( HRNPAYROLL_TAXSET.EMPLID = '" + emplid + "' ) "; Sdt dt_B07 = ta.Query(sqlStr); dt_B07.Next(); sqlStr = @" SELECT HRNPAYROLL_TAXSET.SEQ_TAX, HRNPAYROLL_TAXSET.TAXLIST1_AMT FROM HRNPAYROLL_TAXSET WHERE ( HRNPAYROLL_TAXSET.PAY_YEAR = " + year_pay + @" ) AND ( HRNPAYROLL_TAXSET.PAY_MONTH =" + month_pay + @" ) AND ( HRNPAYROLL_TAXSET.SEQ_TAX = 'C23' ) AND ( HRNPAYROLL_TAXSET.EMPLID ='" + emplid + "') "; Sdt dt_C23 = ta.Query(sqlStr); dt_C23.Next(); payroll_B07 = Convert.ToDecimal(dt_B07.Rows[0]["TAXLIST1_AMT"]); payroll_C23 = Convert.ToDecimal(dt_C23.Rows[0]["TAXLIST1_AMT"]); sqlStr = @" SELECT HRNPAYROLL_TAXSET.SEQ_TAX, HRNPAYROLL_TAXSET.TAXLIST1_AMT FROM HRNPAYROLL_TAXSET WHERE ( HRNPAYROLL_TAXSET.SEQ_TAX LIKE'A%' ) AND ( HRNPAYROLL_TAXSET.EMPLID = '" + emplid + "' ) ORDER BY HRNPAYROLL_TAXSET.SEQ_TAX ASC "; Sdt dt_a = ta.Query(sqlStr); int row_tax = dt_a.GetRowCount(); for (int tax = 0; tax < row_tax; tax++) { seq_tax = dt_a.Rows[tax]["SEQ_TAX"].ToString(); switch (seq_tax) { case "A01": A_01 = setpayroll_amt * 12; payroll_tax = A_01; break; case "A02": A_02 = payroll_B07; payroll_tax = A_02; break; case "A03": A_03 = A_01 - A_02; payroll_tax = A_03; break; case "A04": A_04 = Convert.ToDouble(A_03) * 0.4; payroll_tax = Convert.ToDecimal(A_04); break; case "A05": A_05 = A_03 - Convert.ToDecimal(A_04); payroll_tax = A_05; break; case "A06": A_06 = payroll_C23; payroll_tax = A_06; break; case "A07": A_07 = A_05 - A_06; if (A_07 < 0) { A_07 = 0; } payroll_tax = A_07; break; case "A08": A_08 = 0; payroll_tax = A_08; break; case "A09": A_09 = A_07 - A_08; payroll_tax = A_09; break; case "A10": A_10 = 0; payroll_tax = A_10; break; case "A11": A_11 = A_09 - A_10; payroll_tax = A_11; break; case "A12": //////////////////Check Tax_Rate แบบ Hard Code////////////////// Double rate_amt = Convert.ToDouble(A_11); Double max_level = 0; Double P_amt1 = 0, P_amt2 = 0, P_amt3 = 0, P_amt4 = 0, P_amt5 = 0; Double t_amt1 = 0, t_amt2 = 0, t_amt3 = 0, t_amt4 = 0, t_amt5 = 0; if (rate_amt < min_rate2) { A_12 = 1; //ร้อยละ max_level = max_rate1;//จำนวนสูงสุดของขั้น P_amt1 = max_level;//เงินได้สุทธิแต่ละขั้น t_amt1 = 0;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt1); } else if (rate_amt > max_rate2 || rate_amt < min_rate3) { A_12 = 10; //ร้อยละ P_amt1 = max_rate1; max_level = max_rate2 - max_rate1;//จำนวนสูงสุดของขั้น P_amt2 = rate_amt - P_amt1;//เงินได้สุทธิแต่ละขั้น t_amt2 = P_amt2 * 0.1;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt2 / 12); } else if (rate_amt > max_rate3 || rate_amt < min_rate4) { A_12 = 20; //ร้อยละ P_amt2 = max_rate2; max_level = max_rate3 - max_rate2;//จำนวนสูงสุดของขั้น P_amt3 = rate_amt - P_amt2;//เงินได้สุทธิแต่ละขั้น t_amt3 = P_amt3 * 0.2;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt3 / 12); } else if (rate_amt > max_rate4 || rate_amt < min_rate5) { A_12 = 30; //ร้อยละ P_amt3 = max_rate3; max_level = max_rate4 - max_rate3;//จำนวนสูงสุดของขั้น P_amt4 = rate_amt - P_amt3;//เงินได้สุทธิแต่ละขั้น t_amt4 = P_amt4 * 0.3;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt4 / 12); } else if (rate_amt > max_rate5) { A_12 = 37; //ร้อยละ P_amt4 = max_rate4; max_level = max_rate4 - max_rate5;//จำนวนสูงสุดของขั้น P_amt5 = rate_amt - P_amt4;//เงินได้สุทธิแต่ละขั้น t_amt5 = P_amt5 * 0.37;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt5 / 12); } break; case "A13": A_13 = payroll_tax; break; case "A14": payroll_tax = 0; break; case "A15": payroll_tax = 0; break; case "A16": payroll_tax = 0; break; case "A17": payroll_tax = 0; break; case "A18": payroll_tax = 0; break; case "A19": payroll_tax = 0; break; case "A20": payroll_tax = 0; break; } sqlStr = @" UPDATE HRNPAYROLL_TAXSET SET TAXLIST1_AMT = " + payroll_tax + @" WHERE ( HRNPAYROLL_TAXSET.PAY_YEAR =" + year_pay + @" ) AND ( HRNPAYROLL_TAXSET.PAY_MONTH = " + month_pay + @" ) AND ( HRNPAYROLL_TAXSET.SEQ_TAX ='" + seq_tax + @"' ) AND ( HRNPAYROLL_TAXSET.EMPLID = '" + emplid + "' )"; ta.Exe(sqlStr); } //end for tax }//end for i LtServerMessage.Text = WebUtil.CompleteMessage("ประมวลผลเสร็จเรียบร้อยแล้ว"); } catch (Exception ex) { LtServerMessage.Text = WebUtil.ErrorMessage(ex); } DwMain.Reset(); DwDetail.Reset(); DwMain.InsertRow(1); DwDetail.InsertRow(1); } private void GetCheckProcess91() { String sqlStr; Decimal year_pay = dw_process.GetItemDecimal(1, "year_pay") - 543; Sta ta = new Sta(sqlca.ConnectionString); sqlStr = @" SELECT HRNPAYROLL_TAXSET91.PAY_YEAR, HRNPAYROLL_TAXSET91.PAY_MONTH FROM HRNPAYROLL_TAXSET91 WHERE ( HRNPAYROLL_TAXSET91.PAY_YEAR ='" + year_pay + @"' )"; Sdt dt_year = ta.Query(sqlStr); if (dt_year.Next()) { Literal1.Text = @" "; } else { JsGetProcess91(); } } private void JsGetProcess91() { try { String seq_tax, taxlist, pre_seq_tax, emplid, sqlStr, sqlStr1, seq_pay, pre_seq_pay, card_id = ""; Decimal setpayroll_amt = 0, payroll_tax = 0, payroll_C23 = 0, payroll_B07 = 0, payroll_S = 0; Decimal C_01 = 0, C_02 = 0, C_03 = 0, C_04 = 0, C_05 = 0, C_06 = 0, C_07 = 0 , C_08 = 0, C_09 = 0, C_10 = 0, C_11 = 0, C_12 = 0, C_13 = 0, C_14 = 0 , C_15 = 0, C_16 = 0, C_17 = 0, C_18 = 0, C_19 = 0, C_20 = 0, C_21 = 0 , C_22 = 0, C_23 = 0; Decimal B_01 = 0, B_02 = 0, B_03 = 0, B_04 = 0, B_05 = 0, B_06 = 0, B_07 = 0; Decimal A_01 = 0, A_02 = 0, A_03 = 0, A_05 = 0, A_06 = 0, A_07 = 0, A_08 = 0 , A_09 = 0, A_10 = 0, A_11 = 0, A_12 = 0, A_13 = 0, A_14 = 0, A_15 = 0, A_16 = 0 , A_17 = 0, A_18 = 0, A_19 = 0, A_20 = 0; Double A_04 = 0; Decimal year_pay = dw_process.GetItemDecimal(1, "year_pay") - 543; Sta ta = new Sta(sqlca.ConnectionString); sqlStr = @"DELETE FROM HRNPAYROLL_TAXSET91 WHERE ( HRNPAYROLL_TAXSET91.PAY_YEAR =" + year_pay + @" )"; Sdt dt_delete = ta.Query(sqlStr); sqlStr = @" SELECT EMPLID FROM HRNMLEMPLFILEMAS ORDER BY EMPLID ASC"; Sdt dt_emp = ta.Query(sqlStr); int row_emp = dt_emp.GetRowCount(); for (int j = 0; j < row_emp; j++) { emplid = dt_emp.Rows[j]["EMPLID"].ToString(); sqlStr = @" select sum(taxlist1_amt/12) as salary from hrnpayroll_taxset where seq_tax = 'A01' and pay_month between 1 and 12 and emplid = '" + emplid + "'"; Sdt dt_payroll = ta.Query(sqlStr); int row_payorll = dt_payroll.GetRowCount(); dt_payroll.Next(); try { setpayroll_amt = dt_payroll.GetDecimal("salary"); } catch { setpayroll_amt = 0; } // select HRNPAYROLL_TAXCFG sqlStr = @" SELECT HRNPAYROLL_TAXCFG.SEQ_TAX, HRNPAYROLL_TAXCFG.TAXLIST FROM HRNPAYROLL_TAXCFG ORDER BY HRNPAYROLL_TAXCFG.SEQ_TAX ASC"; Sdt dt = ta.Query(sqlStr); int row = dt.GetRowCount(); for (int i = 0; i < row; i++) { seq_tax = dt.Rows[i]["SEQ_TAX"].ToString(); taxlist = dt.Rows[i]["TAXLIST"].ToString(); pre_seq_tax = WebUtil.Left(seq_tax, 1); /////////////////// ข. รายการเงินที่ได้รับการยกเว้น ////////////////////////////////////////////// if (pre_seq_tax == "B") { card_id = ""; switch (seq_tax) { case "B01": B_01 = 0; payroll_tax = B_01; break; case "B02": B_02 = 0; payroll_tax = B_02; break; case "B03": B_03 = 0; payroll_tax = B_03; break; case "B04": B_04 = 0; payroll_tax = B_04; break; case "B05": B_05 = 0; payroll_tax = B_05; break; case "B06": B_06 = 0; payroll_tax = B_06; break; case "B07": B_07 = B_01 + B_02 + B_03 + B_04 + B_05 + B_06; payroll_tax = B_07; break; } } ////////////////////// ค. รายการลดหย่อนและยกเว้นหลังจากหักค่าใช้จ่าย ///////////////////////////////// else if (pre_seq_tax == "C") { switch (seq_tax) { case "C01": C_01 = 40000; payroll_tax = C_01; card_id = ""; break; case "C02": C_02 = 30000; payroll_tax = C_02; card_id = ""; break; case "C03": C_03 = 0; payroll_tax = C_03; card_id = ""; break; case "C04": C_04 = 0; payroll_tax = C_04; card_id = ""; break; case "C05": C_05 = 0; payroll_tax = C_05; card_id = ""; break; case "C06": C_06 = 0; payroll_tax = C_06; card_id = "000000000000"; break; case "C07": C_07 = 0; payroll_tax = C_07; card_id = "000000000000"; break; case "C08": C_08 = 0; payroll_tax = C_08; card_id = "000000000000"; break; case "C09": C_09 = 0; payroll_tax = C_09; card_id = "000000000000"; break; case "C10": C_10 = 0; payroll_tax = C_10; card_id = ""; break; case "C11": C_11 = 0; payroll_tax = C_11; card_id = "000000000000"; break; case "C12": C_12 = 0; payroll_tax = C_12; card_id = "000000000000"; break; case "C13": C_13 = 0; payroll_tax = C_13; card_id = "000000000000"; break; case "C14": C_14 = 0; payroll_tax = C_14; card_id = "000000000000"; break; case "C15": C_15 = 0; payroll_tax = C_15; card_id = ""; break; case "C16": C_16 = 0; payroll_tax = C_16; card_id = ""; break; case "C17": C_17 = 0; payroll_tax = C_17; card_id = ""; break; case "C18": C_18 = 0; payroll_tax = C_18; card_id = ""; break; case "C19": C_19 = 0; payroll_tax = C_19; card_id = ""; break; case "C20": C_20 = 0; payroll_tax = C_20; card_id = ""; break; case "C21": C_21 = 0; payroll_tax = C_21; card_id = ""; break; case "C22": C_22 = 9000; payroll_tax = C_22; card_id = ""; break; case "C23": C_23 = C_01 + C_02 + C_03 + C_04 + C_05 + C_06 + C_07 + C_08 + C_09 + C_10 + C_11 + C_12 + C_13 + C_14 + C_15 + C_16 + C_17 + C_18 + C_19 + C_20 + C_21 + C_22; payroll_tax = C_23; card_id = ""; break; } } //////////////////////////// ส่วนคู่สมรส ///////////////////////////////////////////////// else if (pre_seq_tax == "D") { card_id = ""; switch (seq_tax) { case "D01": payroll_tax = 0; break; case "D02": payroll_tax = 0; break; case "D03": payroll_tax = 0; break; case "D04": payroll_tax = 0; break; case "D05": payroll_tax = 0; break; case "D06": payroll_tax = 0; break; case "D07": payroll_tax = 0; break; } } sqlStr = @" INSERT INTO HRNPAYROLL_TAXSET91 ( PAY_YEAR, PAY_MONTH, SEQ_TAX, EMPLID, TAXLIST, PAY_DATE, TAXLIST1_AMT, TAXLIST2_AMT, TAXLIST3, TAXLIST_FLAG, ENTRY_ID, ENTRY_DATE ) VALUES (" + year_pay + @", 0, '" + seq_tax + @"', '" + emplid + @"', '" + taxlist + @"', null, " + payroll_tax + @", null, '" + card_id + @"', null, null, null) "; ta.Query(sqlStr); } ///////////////////ตารางภาษี///////////////////////////// Double min_rate1 = 0, max_rate1 = 0, taxper1 = 0, goss_rate1 = 0; Double min_rate2 = 0, max_rate2 = 0, taxper2 = 0, goss_rate2 = 0; Double min_rate3 = 0, max_rate3 = 0, taxper3 = 0, goss_rate3 = 0; Double min_rate4 = 0, max_rate4 = 0, taxper4 = 0, goss_rate4 = 0; Double min_rate5 = 0, max_rate5 = 0, taxper5 = 0, goss_rate5 = 0; sqlStr = @" SELECT HRNUCFTAX_RATE.MIN_RATE, HRNUCFTAX_RATE.MAX_RATE, HRNUCFTAX_RATE.TAXPER, HRNUCFTAX_RATE.GOSS_RATE FROM HRNUCFTAX_RATE ORDER BY HRNUCFTAX_RATE.MIN_RATE ASC"; Sdt dt_rate = ta.Query(sqlStr); int row_rate = dt_rate.GetRowCount(); // ArrayList tax_rate = new ArrayList(); for (int t = 0; t < row_rate; t++) { try { if (t == 0) { min_rate1 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate1 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper1 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate1 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } else if (t == 1) { min_rate2 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate2 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper2 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate2 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } else if (t == 2) { min_rate3 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate3 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper3 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate3 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } else if (t == 3) { min_rate4 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate4 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper4 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate4 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } else if (t == 4) { min_rate5 = Convert.ToDouble(dt_rate.Rows[t]["MIN_RATE"]); max_rate5 = Convert.ToDouble(dt_rate.Rows[t]["MAX_RATE"]); taxper5 = Convert.ToDouble(dt_rate.Rows[t]["TAXPER"]); goss_rate5 = Convert.ToDouble(dt_rate.Rows[t]["GOSS_RATE"]); } } catch (Exception ex) { LtServerMessage.Text = WebUtil.ErrorMessage(ex); } } ///////////////////////// ก. การคำนวณภาษี ///////////////////////////////////////////////////// sqlStr = @" SELECT HRNPAYROLL_TAXSET91.SEQ_TAX, HRNPAYROLL_TAXSET91.TAXLIST1_AMT FROM HRNPAYROLL_TAXSET91 WHERE ( HRNPAYROLL_TAXSET91.PAY_YEAR =" + year_pay + @" ) AND ( HRNPAYROLL_TAXSET91.SEQ_TAX = 'B07' ) AND ( HRNPAYROLL_TAXSET91.EMPLID = '" + emplid + "' ) "; Sdt dt_B07 = ta.Query(sqlStr); dt_B07.Next(); sqlStr = @" SELECT HRNPAYROLL_TAXSET91.SEQ_TAX, HRNPAYROLL_TAXSET91.TAXLIST1_AMT FROM HRNPAYROLL_TAXSET91 WHERE ( HRNPAYROLL_TAXSET91.PAY_YEAR = " + year_pay + @" ) AND ( HRNPAYROLL_TAXSET91.SEQ_TAX = 'C23' ) AND ( HRNPAYROLL_TAXSET91.EMPLID ='" + emplid + "') "; Sdt dt_C23 = ta.Query(sqlStr); dt_C23.Next(); payroll_B07 = Convert.ToDecimal(dt_B07.Rows[0]["TAXLIST1_AMT"]); payroll_C23 = Convert.ToDecimal(dt_C23.Rows[0]["TAXLIST1_AMT"]); sqlStr = @" SELECT HRNPAYROLL_TAXSET91.SEQ_TAX, HRNPAYROLL_TAXSET91.TAXLIST1_AMT FROM HRNPAYROLL_TAXSET91 WHERE ( HRNPAYROLL_TAXSET91.SEQ_TAX LIKE'A%' ) AND ( HRNPAYROLL_TAXSET91.EMPLID = '" + emplid + "' ) ORDER BY HRNPAYROLL_TAXSET91.SEQ_TAX ASC "; Sdt dt_a = ta.Query(sqlStr); int row_tax = dt_a.GetRowCount(); for (int tax = 0; tax < row_tax; tax++) { seq_tax = dt_a.Rows[tax]["SEQ_TAX"].ToString(); switch (seq_tax) { case "A01": A_01 = setpayroll_amt; payroll_tax = A_01; break; case "A02": A_02 = payroll_B07; payroll_tax = A_02; break; case "A03": A_03 = A_01 - A_02; payroll_tax = A_03; break; case "A04": A_04 = Convert.ToDouble(A_03) * 0.4; payroll_tax = Convert.ToDecimal(A_04); break; case "A05": A_05 = A_03 - Convert.ToDecimal(A_04); payroll_tax = A_05; break; case "A06": A_06 = payroll_C23; payroll_tax = A_06; break; case "A07": A_07 = A_05 - A_06; if (A_07 < 0) { A_07 = 0; } payroll_tax = A_07; break; case "A08": A_08 = 0; payroll_tax = A_08; break; case "A09": A_09 = A_07 - A_08; payroll_tax = A_09; break; case "A10": A_10 = 0; payroll_tax = A_10; break; case "A11": A_11 = A_09 - A_10; payroll_tax = A_11; break; case "A12": //////////////////Check Tax_Rate แบบ Hard Code////////////////// Double rate_amt = Convert.ToDouble(A_11); Double max_level = 0; Double P_amt1 = 0, P_amt2 = 0, P_amt3 = 0, P_amt4 = 0, P_amt5 = 0; Double t_amt1 = 0, t_amt2 = 0, t_amt3 = 0, t_amt4 = 0, t_amt5 = 0; if (rate_amt < min_rate2) { A_12 = 1; //ร้อยละ max_level = max_rate1;//จำนวนสูงสุดของขั้น P_amt1 = max_level;//เงินได้สุทธิแต่ละขั้น t_amt1 = 0;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt1); } else if (rate_amt > max_rate2 || rate_amt < min_rate3) { A_12 = 10; //ร้อยละ P_amt1 = max_rate1; max_level = max_rate2 - max_rate1;//จำนวนสูงสุดของขั้น P_amt2 = rate_amt - P_amt1;//เงินได้สุทธิแต่ละขั้น t_amt2 = P_amt2 * 0.1;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt2); } else if (rate_amt > max_rate3 || rate_amt < min_rate4) { A_12 = 20; //ร้อยละ P_amt2 = max_rate2; max_level = max_rate3 - max_rate2;//จำนวนสูงสุดของขั้น P_amt3 = rate_amt - P_amt2;//เงินได้สุทธิแต่ละขั้น t_amt3 = P_amt3 * 0.2;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt3); } else if (rate_amt > max_rate4 || rate_amt < min_rate5) { A_12 = 30; //ร้อยละ P_amt3 = max_rate3; max_level = max_rate4 - max_rate3;//จำนวนสูงสุดของขั้น P_amt4 = rate_amt - P_amt3;//เงินได้สุทธิแต่ละขั้น t_amt4 = P_amt4 * 0.3;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt4); } else if (rate_amt > max_rate5) { A_12 = 37; //ร้อยละ P_amt4 = max_rate4; max_level = max_rate4 - max_rate5;//จำนวนสูงสุดของขั้น P_amt5 = rate_amt - P_amt4;//เงินได้สุทธิแต่ละขั้น t_amt5 = P_amt5 * 0.37;//ภาษีเงินได้ payroll_tax = Convert.ToDecimal(t_amt5); } break; case "A13": A_13 = payroll_tax; break; case "A14": payroll_tax = 0; break; case "A15": payroll_tax = 0; break; case "A16": payroll_tax = 0; break; case "A17": payroll_tax = 0; break; case "A18": payroll_tax = 0; break; case "A19": payroll_tax = 0; break; case "A20": payroll_tax = 0; break; } sqlStr = @" UPDATE HRNPAYROLL_TAXSET91 SET TAXLIST1_AMT = " + payroll_tax + @" WHERE ( HRNPAYROLL_TAXSET91.PAY_YEAR =" + year_pay + @" ) AND ( HRNPAYROLL_TAXSET91.SEQ_TAX ='" + seq_tax + @"' ) AND ( HRNPAYROLL_TAXSET91.EMPLID = '" + emplid + "' )"; ta.Exe(sqlStr); } //end for tax }//end for i LtServerMessage.Text = WebUtil.CompleteMessage("ประมวลผลเสร็จเรียบร้อยแล้ว"); }//end if dt_month catch (Exception ex) { LtServerMessage.Text = WebUtil.ErrorMessage(ex); } DwMain.Reset(); DwDetail.Reset(); DwMain.InsertRow(1); DwDetail.InsertRow(1); } private void GetNameId() { try { Decimal year_pay = dw_process.GetItemDecimal(1, "year_pay")-543; Decimal month_pay = dw_process.GetItemDecimal(1, "month_pay"); String empid = DwMain.GetItemString(1, "empid").Trim(); Sta ta = new Sta(sqlca.ConnectionString); String sqlStr = @" SELECT HRNMLEMPLFILEMAS.EMPLID, HRNMLEMPLFILEMAS.EMPLFIRSNAME, HRNMLEMPLFILEMAS.EMPLLASTNAME FROM HRNMLEMPLFILEMAS WHERE HRNMLEMPLFILEMAS.EMPLID='" + empid + "'"; Sdt dt = ta.Query(sqlStr); dt.Next(); DwMain.SetItemString(1, "emp_name", dt.GetString("EMPLFIRSNAME")); DwMain.SetItemString(1, "emp_lastname", dt.GetString("EMPLLASTNAME")); DwDetail.Retrieve(empid, year_pay, month_pay); } catch { } } public void SaveWebSheet() { try { DwDetail.UpdateData(); LtServerMessage.Text = WebUtil.CompleteMessage("บันทึกข้อมูลสำเร็จ"); } catch (Exception ex) { LtServerMessage.Text = WebUtil.ErrorMessage(ex); } } public void WebSheetLoadEnd() { } } }