protected void btnExtraSalary_Click(object sender, EventArgs e)
    {
        try
        {
            if (ddlExployeeID.SelectedIndex != 0 && ddlSalaryOfMonth.SelectedIndex != 0)
            {
                ACC_EmployPayRoleSalary employeePayRoleSalay = new ACC_EmployPayRoleSalary();
                employeePayRoleSalay = ACC_EmployPayRoleSalaryManager.GetEmployPayRoleSalaryByEmployeeIDnSalaryOfDate(ddlSalaryOfMonth.SelectedValue, ddlExployeeID.SelectedValue);

                employeePayRoleSalay.SalaryAmount = employeePayRoleSalay.SalaryAmount + decimal.Parse(txtExtraSalary.Text);
                employeePayRoleSalay.UnpaidSalaryAmount = employeePayRoleSalay.UnpaidSalaryAmount + decimal.Parse(txtExtraSalary.Text);
                employeePayRoleSalay.ExtraField1 += "Extra:" + txtExtraSalary.Text;
                employeePayRoleSalay.ExtraField2 = (decimal.Parse(employeePayRoleSalay.ExtraField2) + decimal.Parse(txtExtraSalary.Text)).ToString();
                employeePayRoleSalay.Status = 36;
                ACC_EmployPayRoleSalaryManager.UpdateEmployPayRoleSalary(employeePayRoleSalay);
            }
        }
        catch (Exception ex)
        {
        }
    }
    protected void btnPost_Click(object sender, EventArgs e)
    {
        try
        {
            int newEntry = 0;
            int prevEntry = 0;

            string userID = Profile.card_id;

            List<string> newPostings = new List<string>();
            List<string> prevPostings = new List<string>();
            foreach (GridViewRow row in gvSalaryDetailBreakdown.Rows)
            {
                CheckBox chkBox = (CheckBox)row.FindControl("chkBoxSelect");
                if (chkBox.Checked)
                {
                    HiddenField hfEmployID = (HiddenField)row.FindControl("hfEmployID");
                    Label lblTotalSalary = (Label)row.FindControl("lblTotalSalary");
                    Label lblEmployeeName = (Label)row.FindControl("lblEmployeeName");
                    Label lblPFAmount = (Label)row.FindControl("lblPFAmount");
                    Label lblSecurityAmount = (Label)row.FindControl("lblSecurityAmount");
                    GridView gridViewSalaryBreakdown = (GridView)row.FindControl("gvSalaryOnly");

                    TextBox txtLoanDeduction = (TextBox)row.FindControl("txtLoanDeduction");
                    Label lbGrandTotal = (Label)row.FindControl("lblGrandTotal");

                    ACC_EmployPayRoleSalary paySalary = new ACC_EmployPayRoleSalary();
                    paySalary.AddedBy = userID;
                    paySalary.AddedDate = DateTime.Now;
                    paySalary.UpdatedBy = userID;
                    paySalary.UpdatedDate = DateTime.Now;
                    paySalary.EmployeeID = hfEmployID.Value;
                    paySalary.SalaryAmount = Convert.ToDecimal(lbGrandTotal.Text);
                    paySalary.PaidSalaryAmount = Convert.ToDecimal("0");
                    paySalary.UnpaidSalaryAmount = Convert.ToDecimal(lbGrandTotal.Text);
                    paySalary.Status = 1;
                    paySalary.RowStatusID = 1;
                    paySalary.SalaryOfDate = ddlMonths.SelectedItem.Text + ", " + ddlYears.SelectedValue;

                    string salBreakDownHistory = string.Empty;
                    foreach (GridViewRow salBreakRow in gridViewSalaryBreakdown.Rows)
                    {
                        Label lblDescription = (Label)salBreakRow.FindControl("lblDescription");
                        Label lblSalaryValue = (Label)salBreakRow.FindControl("lblSalaryValue");
                        salBreakDownHistory += lblDescription.Text + ":" + lblSalaryValue.Text+";";
                    }
                    paySalary.ExtraField1 = salBreakDownHistory;
                    paySalary.ExtraField2 = lblTotalSalary.Text.Trim();
                    paySalary.ExtraField3 = string.Empty;
                    paySalary.ExtraField4 = string.Empty;
                    paySalary.ExtraField5 = string.Empty;
                    paySalary.ExtraField6 = string.Empty;
                    paySalary.ExtraField7 = string.Empty;
                    paySalary.ExtraField8 = Convert.ToDecimal(lbGrandTotal.Text).ToString("0.0");
                    paySalary.ExtraField9 = string.Empty;
                    paySalary.ExtraField10 = string.Empty;

                    int insertedID = ACC_EmployPayRoleSalaryManager.InsertEmployPayRoleSalary(paySalary);
                    if (insertedID > 0)
                    {
                        List<HR_ProvidentFundRegister> providentFundRegisterColl = new List<HR_ProvidentFundRegister>();
                        HR_ProvidentFundRegister pfRegister = new HR_ProvidentFundRegister();
                        pfRegister.EmployeeID = hfEmployID.Value;
                        pfRegister.ExtraField1 = insertedID.ToString();
                        pfRegister.PayrollMonthDate = Convert.ToDateTime(DateTime.DaysInMonth(Convert.ToInt32(ddlYears.SelectedValue), Convert.ToInt32(ddlMonths.SelectedValue)) + " " + ddlMonths.SelectedItem.Text + " " + ddlYears.SelectedValue);
                        pfRegister.EPF = Convert.ToDecimal(lblPFAmount.Text);
                        pfRegister.CPF = Convert.ToDecimal(lblPFAmount.Text);
                        pfRegister.ExtraField2 = paySalary.ExtraField8;
                        pfRegister.TotalPFAmount = pfRegister.EPF + pfRegister.CPF;
                        //pfRegister.WithdrawLastDate = Nullable<DateTime>;
                        pfRegister.AddedBy = userID;
                        pfRegister.AddedDate = DateTime.Now;
                        pfRegister.RowStatusID = 1;
                        providentFundRegisterColl.Add(pfRegister);
                        HR_ProvidentFundRegisterManager.InsertHR_ProvidentFundRegister(providentFundRegisterColl);
                        providentFundRegisterColl.Clear();

                        if (Convert.ToDecimal(lblPFAmount.Text) != 0)
                        {
                            ACC_Journal pfACC_Journal = new ACC_Journal();
                            pfACC_Journal.UserID = hfEmployID.Value;
                            pfACC_Journal.Balance = Convert.ToDecimal(lblPFAmount.Text);
                            pfACC_Journal.AddedBy = userID;
                            pfACC_Journal.AddedDate = DateTime.Now;
                            pfACC_Journal.UpdatedBy = userID;
                            pfACC_Journal.UpdateDate = DateTime.Now;
                            pfACC_Journal.EmployPayRoleSalaryID = insertedID;
                            ACC_AccountingCommonManager.ProcessACC_ProvidentFund(hfEmployID.Value, pfACC_Journal);
                        }

                        if (Convert.ToDecimal(lblSecurityAmount.Text) != 0)
                        {
                            ACC_Journal pfACC_Journal = new ACC_Journal();
                            pfACC_Journal.UserID = hfEmployID.Value;
                            pfACC_Journal.Balance = Convert.ToDecimal(lblSecurityAmount.Text);
                            pfACC_Journal.AddedBy = userID;
                            pfACC_Journal.AddedDate = DateTime.Now;
                            pfACC_Journal.UpdatedBy = userID;
                            pfACC_Journal.UpdateDate = DateTime.Now;
                            pfACC_Journal.EmployPayRoleSalaryID = insertedID;
                            ACC_AccountingCommonManager.ProcessACC_SecurityAmount(hfEmployID.Value, pfACC_Journal);
                        }

                        if (txtLoanDeduction.Text.Trim() != string.Empty)
                        {
                            ACC_Journal advSalaryACC_Journal = new ACC_Journal();
                            advSalaryACC_Journal.UserID = hfEmployID.Value;
                            advSalaryACC_Journal.Balance = Convert.ToDecimal(txtLoanDeduction.Text);
                            advSalaryACC_Journal.AddedBy = userID;
                            advSalaryACC_Journal.AddedDate = DateTime.Now;
                            advSalaryACC_Journal.UpdatedBy = userID;
                            advSalaryACC_Journal.UpdateDate = DateTime.Now;
                            advSalaryACC_Journal.SalaryOfDate = paySalary.SalaryOfDate;
                            ACC_AccountingCommonManager.ProcessACC_AdvanceSalary(hfEmployID.Value, advSalaryACC_Journal);
                        }

                        newEntry++;
                        //"<td>" + hfEmployID.Value + "</td>"
                        newPostings.Add("<td>" + lblEmployeeName.Text + "</td>");
                    }
                    else
                    {
                        prevEntry++;
                        //<td>" + hfEmployID.Value + "</td>
                        prevPostings.Add("<td>" + lblEmployeeName.Text + "</td>");
                    }
                }
            }

            litSummary.Text = "<table style=\"width:50%;float:left;\"><tr><td style=\"color:Green;font-weight:bold;\">New Postings</td></tr>";
            foreach (string entity in newPostings)
            {
                litSummary.Text += "<tr>"+entity+"</tr>";
            }
            if (newPostings.Count == 0)
                litSummary.Text += "<td>No New Postings</td>";
            litSummary.Text += "</table>";

            litSummary.Text += "<table style=\"width:50%;float:left;\"><tr><td style=\"color:Green;font-weight:bold;\">Posted Before</td></tr>";
            foreach (string entity in prevPostings)
            {
                litSummary.Text += "<tr>" + entity + "</tr>";
            }
            if (prevPostings.Count == 0)
                litSummary.Text += "<td>No Old Postings</td>";
            litSummary.Text += "</table>";
            string scriptText = "alert('New Entry : " + newEntry.ToString() + " Old Entry : " + prevEntry.ToString() + "');";
            ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "Summary", scriptText, true);
        }
        catch (Exception ex)
        {
            if (ex != null)
            {
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "Error", ex.Message, true);
            }
        }
    }
    protected void btnJournalEntry_Click(object sender, EventArgs e)
    {
        int fulltimesalryJournalID = 0;
        int FeesMasterJournalID = 0;

        List<ACC_Journal> doubleEntry = new List<ACC_Journal>();
        doubleEntry = (List<ACC_Journal>)Session["doubleEntry"];

        List<ACC_Check> checks = new List<ACC_Check>();
        if (Session["checks"] != null) checks = (List<ACC_Check>)Session["checks"];

        List<ACC_CUCCheck> cucChecks = new List<ACC_CUCCheck>();
        if (Session["cucCheck"] != null) cucChecks = (List<ACC_CUCCheck>)Session["cucCheck"];

        ACC_JournalMaster aCC_JournalMaster = new ACC_JournalMaster();
        aCC_JournalMaster.JournalMasterName = "";
        aCC_JournalMaster.AddedBy = Profile.card_id;
        aCC_JournalMaster.AddedDate = DateTime.Now;
        aCC_JournalMaster.UpdatedBy = Profile.card_id;
        aCC_JournalMaster.UpdateDate = DateTime.Now;
        aCC_JournalMaster.RowStatusID = 1;
        aCC_JournalMaster.JournalMasterID = ACC_JournalMasterManager.InsertACC_JournalMaster(aCC_JournalMaster);

        if (doubleEntry != null)
        {
            foreach (ACC_Journal eachJournal in doubleEntry)
            {
                int temp = eachJournal.HeadID;
                string checkno = eachJournal.JournalVoucherNo;

                eachJournal.JournalVoucherNo = Request.QueryString["IsAdmissionFees"] != null ? Request.QueryString["IsAdmissionFees"] : "";
                eachJournal.JournalMasterID = aCC_JournalMaster.JournalMasterID;
                eachJournal.JournalID = ACC_JournalManager.InsertACC_Journal(eachJournal);

                if (eachJournal.AccountID == 17)//fulltime salary
                {
                    fulltimesalryJournalID = eachJournal.JournalID;
                }

                 if (eachJournal.SubBasicAccountID == 20)//student Fees
                {
                    FeesMasterJournalID = eachJournal.JournalID;
                }

                if (checkno != "")
                {
                    foreach (ACC_Check check in checks)
                    {
                        if (checkno == check.CheckNo)
                        {
                            //teamporary we have used the login that
                            //we will keep in the JournalVoucherNo the checkno
                            //then
                            //in the insert script we will update the JournalVoucherNo with the CheckID

                            check.ExtraField3 = eachJournal.JournalID.ToString();
                            ACC_CheckManager.InsertACC_Check(check);
                        }
                    }
                }
                else
                {
                    foreach (ACC_CUCCheck cucCheck in cucChecks)
                    {
                        if (temp == cucCheck.PaytoHeadID)
                        {
                            //cucCheck.PaytoHeadID = eachJournal.JournalID;
                            cucCheck.JournalID = eachJournal.JournalID;
                            ACC_CUCCheckManager.InsertACC_CUCCheck(cucCheck);
                        }
                    }
                }

            }
        }
        if (Session["cucCheck"] != null) Session.Remove("cucCheck");
        if (Session["doubleEntry"] != null) Session.Remove("doubleEntry");
        if (Session["checks"] != null) Session.Remove("checks");

        try
        {
            if (Request.QueryString["CheckID"] != null)
            {
                ACC_Check aCC_Check = new ACC_Check();
                aCC_Check = ACC_CheckManager.GetACC_CheckByCheckID(int.Parse(Request.QueryString["CheckID"]));
                aCC_Check.UpdatedBy = Profile.card_id;
                aCC_Check.UpdateDate = DateTime.Now;
                aCC_Check.RowStatusID = 11;
                bool resutl = ACC_CheckManager.UpdateACC_Check(aCC_Check);
            }
        }
        catch (Exception ex)
        {

        }

        try
        {
            if (Request.QueryString["EmployPayRoleSalaryID"] != null)
            {
                ACC_EmployPayRoleSalary employPayroleSalary = new ACC_EmployPayRoleSalary();

                if (Session["employPayRoleSalary"] != null)
                {
                    employPayroleSalary = (ACC_EmployPayRoleSalary)Session["employPayRoleSalary"];
                    employPayroleSalary.ExtraField6 += ", " + aCC_JournalMaster.JournalMasterID.ToString();
                    employPayroleSalary.ExtraField7 = fulltimesalryJournalID.ToString();
                }
                Session.Remove("employPayRoleSalary");

                bool result = ACC_EmployPayRoleSalaryManager.UpdateEmployPayRoleSalary(employPayroleSalary);
            }
        }
        catch (Exception ex)
        { }

        try
        {
            if (Request.QueryString["FeesID"] != null)
            {
                STD_Fees sTD_FeesUpdate = new STD_Fees();

                sTD_FeesUpdate = STD_FeesManager.GetSTD_FeesByFeesID(int.Parse(Request.QueryString["FeesID"]));
                sTD_FeesUpdate.IsPaid = true;
                sTD_FeesUpdate.SubmitedDate = DateTime.Today.ToString();
                sTD_FeesUpdate.UpdatedBy = Profile.card_id;
                sTD_FeesUpdate.UpdateDate = DateTime.Now;
                sTD_FeesUpdate.RowStatusID = int.Parse("1");
                sTD_FeesUpdate.Remarks = Request.QueryString["Remarks"];
                bool resutl = STD_FeesManager.UpdateSTD_Fees(sTD_FeesUpdate);

                STD_FeesMaster feesMaster = new STD_FeesMaster();
                feesMaster = STD_FeesMasterManager.GetSTD_FeesMasterByFeesMasterID(int.Parse(sTD_FeesUpdate.FeesName));

                feesMaster.ExtraField1 = (decimal.Parse(feesMaster.ExtraField1) + sTD_FeesUpdate.Amount).ToString();//total paid Amount
                feesMaster.ExtraField1 = (decimal.Parse(feesMaster.ExtraField2) - sTD_FeesUpdate.Amount).ToString();//total unpaid Amount

                resutl = STD_FeesMasterManager.UpdateSTD_FeesMaster(feesMaster);
            }
        }
        catch (Exception ex)
        { }
        STD_FeesMaster feesMasterTemp = new STD_FeesMaster();
        try
        {
            if (Request.QueryString["newFeesID"] != null)
            {
                if (Session["feesListUpdate"] != null)
                {
                    List<STD_Fees> feesListUpdate = new List<STD_Fees>();
                    feesListUpdate = (List<STD_Fees>)Session["feesListUpdate"];

                    foreach (STD_Fees item in feesListUpdate)
                    {
                        item.IsPaid = true;
                        STD_FeesManager.UpdateSTD_Fees(item);
                    }
                    Session.Remove("feesListUpdate");
                }
                if (Session["feesMaster"] != null)
                {
                    feesMasterTemp = (STD_FeesMaster)Session["feesMaster"];
                    feesMasterTemp.ExtraField4 = FeesMasterJournalID.ToString();
                    STD_FeesMasterManager.UpdateSTD_FeesMaster(feesMasterTemp);
                    Session.Remove("feesMaster");
                }

                if (Request.QueryString["newFeesID"] != "0")
                {
                    STD_Fees sTD_FeesUpdate = new STD_Fees();

                    sTD_FeesUpdate = STD_FeesManager.GetSTD_FeesByFeesID(int.Parse(Request.QueryString["newFeesID"]));
                    sTD_FeesUpdate.RowStatusID = int.Parse("1");
                    bool resutl = STD_FeesManager.UpdateSTD_Fees(sTD_FeesUpdate);
                }

            }
        }
        catch (Exception ex)
        { }

        if (Request.QueryString["Refund"] != null)
        {
            if (STD_FeesMasterManager.RefundSTD_FeesMaster(hfStudentID.Value))
            {
                lblMessage.Text += "Student Refund Successfull<br/>";
            }
        }

        lblMessage.Text += "Journal Entry Successful. <a href='VoucherPage.aspx?JournalMasterID=" + aCC_JournalMaster.JournalMasterID.ToString() + "&EmployeeID=" + ddlAccountingUserMoney.SelectedValue + "&Amount=" + lblDebit.Text + "' target='_blank'>Click here to Print</a>";
        if (Request.QueryString["AccountID"] != null)
        {
            //if (int.Parse(Request.QueryString["AccountID"]) >= 29 && int.Parse(Request.QueryString["AccountID"]) <= 37)
            if (int.Parse(Request.QueryString["SubBasicAccountID"]) ==20)
            {
                lblMessage.Text += "</br><a  target='_blank' href='FeesInstallment.aspx?StudentCode=" + Request.QueryString["StudentCode"] + "'>Back to Student Fees Search page</a></br><a href='MoneyReceipt.aspx?StudentID=" + hfStudentID.Value + "&Amount=" + lblDebit.Text + "&Remark=" + (chkAddInMoneyReceipt.Checked ? txtRemarks.Text : "") + "&FeesMasterID=" + feesMasterTemp.FeesMasterID.ToString() + "&JournalMasterID=" + aCC_JournalMaster.JournalMasterID.ToString() + "&IsAdmissionFees=" + Request.QueryString["IsAdmissionFees"] + "' target='_blank'>Click here to Print the receipt</a>";
                //lblMessage.Text += "</br><a  target='_blank' href='FeesInstallment.aspx?StudentCode=" + Request.QueryString["StudentCode"] + "'>Back to Student Fees Search page</a></br><a href='../Accounting/MoneyReceipt.aspx?StudentID=" + hfStudentID.Value + "&Amount=" + lblDebit.Text + "&Remark=" + Request.QueryString["Remark"] + "&FeesMasterID=" + feesMasterTemp.FeesMasterID.ToString() + "&JournalMasterID=" + aCC_JournalMaster.JournalMasterID.ToString() + "' target='_blank'>Click here to Print the receipt</a>";
            }
            else
                if (int.Parse(Request.QueryString["AccountID"]) >= 17 && int.Parse(Request.QueryString["AccountID"]) <= 19)
                {
                    lblMessage.Text += "</br><a  target='_blank' href='AccountEmployPayRoleSalary.aspx?EmployeeID=" + Request.QueryString["EmployeeID"] + "'>Back to Sallary posting page</a></br><a href='VoucherPage.aspx?JournalMasterID=" + aCC_JournalMaster.JournalMasterID.ToString() + "&EmployeeID=" + ddlAccountingUser.SelectedValue + "&Amount=" + lblDebit.Text + "&Payto=" + ddlAccountingUser.SelectedItem.Text + "&Purpose=" + Request.QueryString["Purpose"] + "' target='_blank'>Click here to Print the receipt</a>";
                }
        }

        lblMessage.ForeColor = System.Drawing.Color.Green;

        btnJournalEntry.Visible = false;
    }
    protected void btnJournalEntry_Click(object sender, EventArgs e)
    {
        if (Request.QueryString["ID"] != null)
        {
            #region Update preentry process

            HR_Employee employee = new HR_Employee();
            employee.EmployeeID = Convert.ToString(Request.QueryString["ID"]);
            employee.ResignDescription = txtResignDescription.Text.Trim();
            employee.ResignDate = Convert.ToDateTime(txtResignDate.Text.Trim());
            employee.Flag = false;

            string userID = Profile.card_id;
            employee.ModifiedBy = userID;
            employee.ModifiedDate = DateTime.Now;

            HR_ProvidentFundRegister providentFundRegister = new HR_ProvidentFundRegister();
            if (lblEmpPortionFund.Text.Trim() != string.Empty)
            {
                providentFundRegister.EmployeeID = Convert.ToString(Request.QueryString["ID"]);
                providentFundRegister.PayrollMonthDate = DateTime.Now;
                providentFundRegister.WithdrawAmount = Convert.ToDecimal(lblEmpPortionFund.Text.Trim());
                providentFundRegister.WithdrawLastDate = DateTime.Now;
                providentFundRegister.AddedBy = userID;
                providentFundRegister.AddedDate = DateTime.Now;

            }
            bool isUpdate = HR_EmployeeManager.UpdateHR_EmployeeResignInfo(employee);
            if (isUpdate)
            {
                if (providentFundRegister.EmployeeID != string.Empty)
                {
                    HR_ProvidentFundRegisterManager.InsertHR_ProvidentFundRegisterWithdrawAmount(providentFundRegister);
                }
                lblMessage.Text = "Information is saved successfully";
                lblMessage.ForeColor = System.Drawing.Color.Green;
            }

            if (Convert.ToDecimal(txtRemainingSalary.Text) > 0)
            {
                ACC_EmployPayRoleSalary paySalary = new ACC_EmployPayRoleSalary();
                paySalary.AddedBy = userID;
                paySalary.AddedDate = DateTime.Now;
                paySalary.UpdatedBy = userID;
                paySalary.UpdatedDate = DateTime.Now;
                paySalary.EmployeeID = Request.QueryString["ID"];
                paySalary.SalaryAmount = Convert.ToDecimal(txtRemainingSalary.Text);
                paySalary.PaidSalaryAmount = Convert.ToDecimal("0");
                paySalary.UnpaidSalaryAmount = Convert.ToDecimal(txtRemainingSalary.Text);
                paySalary.Status = 35;
                paySalary.RowStatusID = 1;
                paySalary.SalaryOfDate = DateTime.Parse(txtResignDate.Text).ToString("MMMM, yyyy");
                paySalary.ExtraField1 = lblSalaryBreakDown.Text;
                paySalary.ExtraField2 = paySalary.SalaryAmount.ToString("00");
                paySalary.ExtraField3 = string.Empty;
                paySalary.ExtraField4 = string.Empty;
                paySalary.ExtraField5 = string.Empty;
                paySalary.ExtraField6 = string.Empty;
                paySalary.ExtraField7 = string.Empty;
                paySalary.ExtraField8 = string.Empty;
                paySalary.ExtraField9 = string.Empty;
                paySalary.ExtraField10 = string.Empty;

                int insertedID = ACC_EmployPayRoleSalaryManager.InsertEmployPayRoleSalary(paySalary);
            }
            #endregion

            #region Journal entry
            List<ACC_Journal> doubleEntry = new List<ACC_Journal>();
            doubleEntry = (List<ACC_Journal>)Session["doubleEntry"];

            List<ACC_CUCCheck> cucChecks = new List<ACC_CUCCheck>();
            if (Session["cucCheck"] != null) cucChecks = (List<ACC_CUCCheck>)Session["cucCheck"];

            ACC_JournalMaster aCC_JournalMaster = new ACC_JournalMaster();
            aCC_JournalMaster.JournalMasterName = "";
            aCC_JournalMaster.AddedBy = Profile.card_id;
            aCC_JournalMaster.AddedDate = DateTime.Now;
            aCC_JournalMaster.UpdatedBy = Profile.card_id;
            aCC_JournalMaster.UpdateDate = DateTime.Now;
            aCC_JournalMaster.RowStatusID = 1;
            aCC_JournalMaster.JournalMasterID = ACC_JournalMasterManager.InsertACC_JournalMaster(aCC_JournalMaster);

            if (doubleEntry != null)
            {
                foreach (ACC_Journal eachJournal in doubleEntry)
                {
                    int temp = eachJournal.JournalID;
                    string checkno = eachJournal.JournalVoucherNo;

                    eachJournal.JournalVoucherNo = "";
                    eachJournal.JournalMasterID = aCC_JournalMaster.JournalMasterID;
                    eachJournal.JournalID = ACC_JournalManager.InsertACC_Journal(eachJournal);

                    foreach (ACC_CUCCheck cucCheck in cucChecks)
                    {
                        if (temp == cucCheck.PaytoHeadID)
                        {
                            cucCheck.PaytoHeadID = eachJournal.JournalID;
                            ACC_CUCCheckManager.InsertACC_CUCCheck(cucCheck);
                        }
                    }
                }
            }
            if (Session["cucCheck"] != null) Session.Remove("cucCheck");
            if (Session["doubleEntry"] != null) Session.Remove("doubleEntry");

            #endregion
            /*
             * <option value="46">Employee Provident Fund</option>
             * <option value="47" selected="selected">Company Provident Fund</option>
             * <option value="3" selected="selected">Advance Salary</option>
             * <option value="17" selected="selected">Employee(Fulltime) Salary</option>
             * <option value="49" selected="selected">Allowance (Provident Fund)</option>
             */

            decimal advanceSalaryAmount = decimal.Parse(txtAdvanceSalary.Text);
            decimal salaryOfthisMonth = decimal.Parse(txtSalaryOfThisMonth.Text);
            decimal totalJournalEntryMoney = decimal.Parse(txtFinalAmountToWithDraw.Text);
            decimal EPFMoney = decimal.Parse(txtEmpContributionAmount.Text);
            decimal CPFMoney =decimal.Parse(lblEmpPortionFund.Text) - decimal.Parse(txtEmpContributionAmount.Text);

            //CPF need to process
            //Refund CPF
            if (decimal.Parse(lblReturnFundToCompany.Text) > 0)
            {
                processRefundCPF(decimal.Parse(lblReturnFundToCompany.Text));
            }

            #region Advance Salary process

            //advance salary deduction form the fulltime salary
            if (advanceSalaryAmount > 0)
            {
                if (salaryOfthisMonth > 0)
                {
                   if (advanceSalaryAmount <= salaryOfthisMonth)
                    {
                       processAdvanceSalary(advanceSalaryAmount);
                       advanceSalaryAmount = 0;
                       salaryOfthisMonth -= advanceSalaryAmount;
                    }
                    else
                    {
                        processAdvanceSalary(salaryOfthisMonth);
                        salaryOfthisMonth = 0;
                        advanceSalaryAmount -= salaryOfthisMonth;
                    }
                }
            }

            //remaining salary deduction from the Employee Provident fund contribution
            if (advanceSalaryAmount > 0)
            {
                if (EPFMoney > 0)
                {
                    if (advanceSalaryAmount <= EPFMoney)
                    {
                        processAdvanceSalaryFromEPF(advanceSalaryAmount);
                        advanceSalaryAmount = 0;
                        EPFMoney -= advanceSalaryAmount;
                    }
                    else
                    {
                        processAdvanceSalaryFromEPF(EPFMoney);
                        EPFMoney = 0;
                        advanceSalaryAmount -= EPFMoney;
                    }
                }
            }
            bool IsNeedtoCollectMoneyFortheAdvanceSalary = false;
            //remaining salary deduction from the Company Provident fund contribution
            if (advanceSalaryAmount > 0)
            {
                if (CPFMoney > 0)
                {
                    if (advanceSalaryAmount <= CPFMoney)
                    {
                        processAdvanceSalaryFromCPF(advanceSalaryAmount);
                        advanceSalaryAmount = 0;
                        CPFMoney -= advanceSalaryAmount;
                    }
                    else
                    {
                        processAdvanceSalaryFromCPF(EPFMoney);
                        CPFMoney = 0;
                        advanceSalaryAmount -= CPFMoney;
                        IsNeedtoCollectMoneyFortheAdvanceSalary = true;
                    }
                }
            }
            #endregion

            #region Fulltime Salary Process
            if (salaryOfthisMonth > 0)
            {
                processFullTimeSalary(salaryOfthisMonth, aCC_JournalMaster.JournalMasterID);
                totalJournalEntryMoney -= salaryOfthisMonth;
                salaryOfthisMonth = 0;
            }
            #endregion

            #region EPF Process
            if (EPFMoney > 0)
            {
                processEPF(EPFMoney, aCC_JournalMaster.JournalMasterID);
                totalJournalEntryMoney -= EPFMoney;
                EPFMoney = 0;
            }
            #endregion

            #region CPF Process
            if (CPFMoney > 0)
            {
                processCPF(CPFMoney, aCC_JournalMaster.JournalMasterID);
                totalJournalEntryMoney -= CPFMoney;
                CPFMoney = 0;
            }
            #endregion

            if (decimal.Parse(txtSalaryOfThisMonth.Text) > 0)
            {
                DataSet dsHeadUserFulltimeSalary = ACC_HeadUserManager.GetACC_UserByUserIDnUserTypeIDnAccountID(hfEmployeeID.Value, 2, int.Parse(ddlAccountForMoney.SelectedValue));
            }

            //if (IsNeedtoCollectMoneyFortheAdvanceSalary)
            //{
            //    Response.Redirect("");
            //}
            btnJournalEntry.Visible = false;
        }
    }
    public int InsertEmployPayRoleSalary(ACC_EmployPayRoleSalary employPayRoleSalary)
    {
        using (SqlConnection connection = new SqlConnection(this.ConnectionString))
        {
            SqlCommand cmd = new SqlCommand("InsertACC_EmployPayRoleSalary", connection);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@EmployPayRoleSalaryID", SqlDbType.Int).Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@AddedBy", SqlDbType.NVarChar).Value = employPayRoleSalary.AddedBy;
            cmd.Parameters.Add("@AddedDate", SqlDbType.DateTime).Value = employPayRoleSalary.AddedDate;
            cmd.Parameters.Add("@UpdatedBy", SqlDbType.NVarChar).Value = employPayRoleSalary.UpdatedBy;
            cmd.Parameters.Add("@UpdatedDate", SqlDbType.DateTime).Value = employPayRoleSalary.UpdatedDate;
            cmd.Parameters.Add("@EmployeeID", SqlDbType.NVarChar).Value = employPayRoleSalary.EmployeeID;
            cmd.Parameters.Add("@SalaryAmount", SqlDbType.Money).Value = employPayRoleSalary.SalaryAmount;
            cmd.Parameters.Add("@PaidSalaryAmount", SqlDbType.Money).Value = employPayRoleSalary.PaidSalaryAmount;
            cmd.Parameters.Add("@UnpaidSalaryAmount", SqlDbType.Money).Value = employPayRoleSalary.UnpaidSalaryAmount;
            cmd.Parameters.Add("@Status", SqlDbType.Int).Value = employPayRoleSalary.Status;
            cmd.Parameters.Add("@RowStatusID", SqlDbType.Int).Value = employPayRoleSalary.RowStatusID;
            cmd.Parameters.Add("@SalaryOfDate", SqlDbType.NVarChar).Value = employPayRoleSalary.SalaryOfDate;
            cmd.Parameters.Add("@ExtraField1", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField1;
            cmd.Parameters.Add("@ExtraField2", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField2;
            cmd.Parameters.Add("@ExtraField3", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField3;
            cmd.Parameters.Add("@ExtraField4", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField4;
            cmd.Parameters.Add("@ExtraField5", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField5;
            cmd.Parameters.Add("@ExtraField6", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField6;
            cmd.Parameters.Add("@ExtraField7", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField7;
            cmd.Parameters.Add("@ExtraField8", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField8;
            cmd.Parameters.Add("@ExtraField9", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField9;
            cmd.Parameters.Add("@ExtraField10", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField10;
            connection.Open();

            int result = cmd.ExecuteNonQuery();
            return (int)cmd.Parameters["@EmployPayRoleSalaryID"].Value;
        }
    }
    public bool UpdateEmployPayRoleSalary(ACC_EmployPayRoleSalary employPayRoleSalary)
    {
        using (SqlConnection connection = new SqlConnection(this.ConnectionString))
        {
            connection.Open();
            SqlCommand cmd = new SqlCommand("UpdateACC_EmployPayRoleSalary", connection);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@EmployPayRoleSalaryID", SqlDbType.Int).Value = employPayRoleSalary.EmployPayRoleSalaryID;
            cmd.Parameters.Add("@AddedBy", SqlDbType.NVarChar).Value = employPayRoleSalary.AddedBy;
            cmd.Parameters.Add("@AddedDate", SqlDbType.DateTime).Value = employPayRoleSalary.AddedDate;
            cmd.Parameters.Add("@UpdatedBy", SqlDbType.NVarChar).Value = employPayRoleSalary.UpdatedBy;
            cmd.Parameters.Add("@UpdatedDate", SqlDbType.DateTime).Value = employPayRoleSalary.UpdatedDate;
            cmd.Parameters.Add("@EmployeeID", SqlDbType.NVarChar).Value = employPayRoleSalary.EmployeeID;
            cmd.Parameters.Add("@SalaryAmount", SqlDbType.Money).Value = employPayRoleSalary.SalaryAmount;
            cmd.Parameters.Add("@PaidSalaryAmount", SqlDbType.Money).Value = employPayRoleSalary.PaidSalaryAmount;
            cmd.Parameters.Add("@UnpaidSalaryAmount", SqlDbType.Money).Value = employPayRoleSalary.UnpaidSalaryAmount;
            cmd.Parameters.Add("@Status", SqlDbType.Int).Value = employPayRoleSalary.Status;
            cmd.Parameters.Add("@RowStatusID", SqlDbType.Int).Value = employPayRoleSalary.RowStatusID;
            cmd.Parameters.Add("@SalaryOfDate", SqlDbType.NVarChar).Value = employPayRoleSalary.SalaryOfDate;
            cmd.Parameters.Add("@ExtraField1", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField1 == null ? "" : employPayRoleSalary.ExtraField1;
            cmd.Parameters.Add("@ExtraField2", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField2 == null ? "" : employPayRoleSalary.ExtraField2;
            cmd.Parameters.Add("@ExtraField3", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField3 == null ? "" : employPayRoleSalary.ExtraField3;
            cmd.Parameters.Add("@ExtraField4", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField4 == null ? "" : employPayRoleSalary.ExtraField4;
            cmd.Parameters.Add("@ExtraField5", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField5 == null ? "" : employPayRoleSalary.ExtraField5;
            cmd.Parameters.Add("@ExtraField6", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField6 == null ? "" : employPayRoleSalary.ExtraField6;
            cmd.Parameters.Add("@ExtraField7", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField7 == null ? "" : employPayRoleSalary.ExtraField7;
            cmd.Parameters.Add("@ExtraField8", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField8 == null ? "" : employPayRoleSalary.ExtraField8;
            cmd.Parameters.Add("@ExtraField9", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField9 == null ? "" : employPayRoleSalary.ExtraField9;
            cmd.Parameters.Add("@ExtraField10", SqlDbType.NVarChar).Value = employPayRoleSalary.ExtraField10 == null ? "" : employPayRoleSalary.ExtraField10;

            int result = cmd.ExecuteNonQuery();
            return result == 1;
        }
    }
    public ACC_EmployPayRoleSalary GetEmployPayRoleSalaryFromReader(IDataReader reader)
    {
        try
        {
            ACC_EmployPayRoleSalary employPayRoleSalary = new ACC_EmployPayRoleSalary();

            try { employPayRoleSalary.EmployPayRoleSalaryID = (int)reader["EmployPayRoleSalaryID"]; }
            catch (Exception ex) { }
            try { employPayRoleSalary.AddedBy = reader["AddedBy"].ToString(); }
            catch (Exception ex) { }
            try { employPayRoleSalary.AddedDate = (DateTime)reader["AddedDate"]; }
            catch (Exception ex) { }
            try { employPayRoleSalary.UpdatedBy = reader["UpdatedBy"].ToString(); }
            catch (Exception ex) { }
            try { employPayRoleSalary.UpdatedDate = (DateTime)reader["UpdatedDate"]; }
            catch (Exception ex) { }
            try { employPayRoleSalary.EmployeeID = reader["EmployeeID"].ToString(); }
            catch (Exception ex) { }
            try { employPayRoleSalary.SalaryAmount = (decimal)reader["SalaryAmount"]; }
            catch (Exception ex) { }
            try { employPayRoleSalary.PaidSalaryAmount = (decimal)reader["PaidSalaryAmount"]; }
            catch (Exception ex) { }
            try { employPayRoleSalary.UnpaidSalaryAmount = (decimal)reader["UnpaidSalaryAmount"]; }
            catch (Exception ex) { }
            try { employPayRoleSalary.Status = (int)reader["Status"]; }
            catch (Exception ex) { }

            try { employPayRoleSalary.SalaryOfDate = reader["SalaryOfDate"].ToString(); }
            catch (Exception ex) { }
            try
            {
                employPayRoleSalary.RowStatusID = (int)reader["RowStatusID"];
            }
            catch (Exception ex) { }
            try
            {
                employPayRoleSalary.ExtraField1 = reader["ExtraField1"].ToString();
                employPayRoleSalary.ExtraField2 = reader["ExtraField2"].ToString();
                employPayRoleSalary.ExtraField3 = reader["ExtraField3"].ToString();
                employPayRoleSalary.ExtraField4 = reader["ExtraField4"].ToString();
                employPayRoleSalary.ExtraField5 = reader["ExtraField5"].ToString();
                employPayRoleSalary.ExtraField6 = reader["ExtraField6"].ToString();
                employPayRoleSalary.ExtraField7 = reader["ExtraField7"].ToString();
                employPayRoleSalary.ExtraField8 = reader["ExtraField8"].ToString();
                employPayRoleSalary.ExtraField9 = reader["ExtraField9"].ToString();
                employPayRoleSalary.ExtraField10 = reader["ExtraField10"].ToString();
            }
            catch (Exception ex)
            {

            }
            return employPayRoleSalary;
        }
        catch (Exception ex)
        {
            return null;
        }
    }
 public static bool UpdateEmployPayRoleSalary(ACC_EmployPayRoleSalary employPayRoleSalary)
 {
     ACC_EmployPayRoleSalaryProvider sqlEmployPayRoleSalaryProvider = new ACC_EmployPayRoleSalaryProvider();
     return sqlEmployPayRoleSalaryProvider.UpdateEmployPayRoleSalary(employPayRoleSalary);
 }
 public static int InsertEmployPayRoleSalary(ACC_EmployPayRoleSalary employPayRoleSalary)
 {
     ACC_EmployPayRoleSalaryProvider sqlEmployPayRoleSalaryProvider = new ACC_EmployPayRoleSalaryProvider();
     return sqlEmployPayRoleSalaryProvider.InsertEmployPayRoleSalary(employPayRoleSalary);
 }
 public static ACC_EmployPayRoleSalary GetEmployPayRoleSalaryByID(int id)
 {
     ACC_EmployPayRoleSalary employPayRoleSalary = new ACC_EmployPayRoleSalary();
     ACC_EmployPayRoleSalaryProvider sqlEmployPayRoleSalaryProvider = new ACC_EmployPayRoleSalaryProvider();
     employPayRoleSalary = sqlEmployPayRoleSalaryProvider.GetEmployPayRoleSalaryByID(id);
     return employPayRoleSalary;
 }
 public static ACC_EmployPayRoleSalary GetEmployPayRoleSalaryByEmployeeIDnSalaryOfDate(string SalaryOfDate, string EmployeeID)
 {
     ACC_EmployPayRoleSalary employPayRoleSalary = new ACC_EmployPayRoleSalary();
     ACC_EmployPayRoleSalaryProvider sqlEmployPayRoleSalaryProvider = new ACC_EmployPayRoleSalaryProvider();
     employPayRoleSalary = sqlEmployPayRoleSalaryProvider.GetEmployPayRoleSalaryByEmployeeIDnSalaryOfDate(SalaryOfDate, EmployeeID);
     return employPayRoleSalary;
 }