public ActionResult DeleteMonthlySalaryVoucher(string id, string strVoucherNo, string dptMonth, string dptVoucherDate, string cash, string editMode)
        {
            DataTable dtbl = new DataTable();

            try
            {
                SalaryVoucherMasterSP  spMaster        = new SalaryVoucherMasterSP();
                SalaryVoucherDetailsSP spDetails       = new SalaryVoucherDetailsSP();
                LedgerPostingSP        spLedgerPosting = new LedgerPostingSP();
                decimal masterId = Convert.ToDecimal(id);
                spMaster.SalaryVoucherMasterDelete(masterId);
                spDetails.SalaryVoucherDetailsDeleteUsingMasterId(masterId);
                int decMonthlyVoucherTypeId = 27;
                spLedgerPosting.LedgerPostDelete(strVoucherNo, Convert.ToDecimal(decMonthlyVoucherTypeId));

                VoucherClear(strVoucherNo, dptVoucherDate, editMode);
                //dtbl = GridFillVoucher(Convert.ToBoolean(editMode), Convert.ToDateTime(dptMonth), strVoucherNo);
                return(Json(new { error = "success" }));
            }
            catch (Exception ex)
            {
                //MessageBox.Show("MSV16:" + ex.Message, "Masterfine", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            return(Json(new { error = "failed" }));
        }
        public void SalaryVoucherDetailsDelete(decimal SalaryVoucherDetailsId)
        {
            SalaryVoucherDetailsSP SPSalaryVoucherDetails = new SalaryVoucherDetailsSP();

            try
            {
                SPSalaryVoucherDetails.SalaryVoucherDetailsDelete(SalaryVoucherDetailsId);
            }
            catch (Exception ex)
            {
                MessageBox.Show("SvBll 6:" + ex.Message, "OpenMiracle", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        public void MonthlySalaryVoucherDetailsAdd(SalaryVoucherDetailsInfo salaryvoucherdetailsinfo)
        {
            SalaryVoucherDetailsSP SPSalaryVoucherDetails = new SalaryVoucherDetailsSP();

            try
            {
                SPSalaryVoucherDetails.MonthlySalaryVoucherDetailsAdd(salaryvoucherdetailsinfo);
            }
            catch (Exception ex)
            {
                MessageBox.Show("SvBll 3:" + ex.Message, "OpenMiracle", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        public int SalaryVoucherDetailsCount(decimal decMasterId)
        {
            int max = 0;
            SalaryVoucherDetailsSP SPSalaryVoucherDetails = new SalaryVoucherDetailsSP();

            try
            {
                max = SPSalaryVoucherDetails.SalaryVoucherDetailsCount(decMasterId);
            }
            catch (Exception ex)
            {
                MessageBox.Show("SvBll 4:" + ex.Message, "OpenMiracle", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            return(max);
        }
        public string CheckWhetherSalaryAlreadyPaid(decimal decEmployeeId, DateTime Month)
        {
            string strName = string.Empty;
            SalaryVoucherDetailsSP SPSalaryVoucherDetails = new SalaryVoucherDetailsSP();

            try
            {
                strName = SPSalaryVoucherDetails.CheckWhetherSalaryAlreadyPaid(decEmployeeId, Month);
            }
            catch (Exception ex)
            {
                MessageBox.Show("SvBll 2:" + ex.Message, "OpenMiracle", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            return(strName);
        }
        public List <DataTable> MonthlySalaryVoucherDetailsViewAll(string strMonth, string Month, string monthYear, bool isEditMode, string strVoucherNoforEdit)
        {
            SalaryVoucherDetailsSP SPSalaryVoucherDetails = new SalaryVoucherDetailsSP();
            List <DataTable>       ListObj = new List <DataTable>();

            try
            {
                ListObj = SPSalaryVoucherDetails.MonthlySalaryVoucherDetailsViewAll(strMonth, Month, monthYear, isEditMode, strVoucherNoforEdit);
            }
            catch (Exception ex)
            {
                MessageBox.Show("SvBll 1:" + ex.Message, "OpenMiracle", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            return(ListObj);
        }
        //-------------Voucher
        public DataTable GridFillVoucher(bool isEditMode, DateTime dtpMonth, string strVoucherNo)
        {
            DataTable dtbl = new DataTable();

            try
            {
                SalaryVoucherDetailsSP spSalaryVoucherDetails = new SalaryVoucherDetailsSP();

                string strMonth     = dtpMonth.ToString("MMMMyyyy");
                string Month        = strMonth.Substring(0, 3);
                string strmonthYear = Convert.ToDateTime(strMonth.ToString()).Year.ToString();
                string monthYear    = Month + " " + strmonthYear;
                dtbl = spSalaryVoucherDetails.MonthlySalaryVoucherDetailsViewAll(strMonth, Month, monthYear, isEditMode, strVoucherNo);
                return(dtbl);
            }
            catch (Exception ex)
            {
                //MessageBox.Show("MSV1:" + ex.Message, "Masterfine", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            return(dtbl);
        }
        /// <summary>
        /// Function for edit
        /// </summary>
        public void EditFunction_MSV(string masterId, string tableData, string editMode)
        {
            try
            {
                List <Object>            dgvMonthlySalary = JsonConvert.DeserializeObject <List <Object> >(tableData);
                JArray                   itemFirst        = (JArray)dgvMonthlySalary[0];
                string                   voucherNo        = Convert.ToString(itemFirst[0]["voucherNo"].Value <string>());
                string                   voucherDate      = Convert.ToString(itemFirst[0]["voucherDate"].Value <string>());
                string                   month            = Convert.ToString(itemFirst[0]["month"].Value <string>());
                string                   cash             = Convert.ToString(itemFirst[0]["cash"].Value <string>());
                string                   totalAmount      = Convert.ToString(itemFirst[0]["totalAmount"].Value <string>());
                string                   narration        = Convert.ToString(itemFirst[0]["narration"].Value <string>());
                SalaryVoucherMasterSP    spMaster         = new SalaryVoucherMasterSP();
                SalaryVoucherMasterInfo  infoMaster       = new SalaryVoucherMasterInfo();
                SalaryVoucherDetailsSP   spDetails        = new SalaryVoucherDetailsSP();
                SalaryVoucherDetailsInfo infoDetails      = new SalaryVoucherDetailsInfo();
                LedgerPostingSP          spLedgerPosting  = new LedgerPostingSP();
                decimal                  masterID         = Convert.ToDecimal(masterId);
                infoMaster.SalaryVoucherMasterId = masterID;
                infoMaster.Date        = Convert.ToDateTime(voucherDate);
                infoMaster.LedgerId    = Convert.ToDecimal(cash);
                infoMaster.Narration   = narration;
                infoMaster.TotalAmount = Convert.ToDecimal(totalAmount);
                bool          isEditMode              = Convert.ToBoolean(editMode);
                VoucherTypeSP spVoucherType           = new VoucherTypeSP();
                int           decMonthlyVoucherTypeId = 27;
                decimal       typeId      = Convert.ToDecimal(decMonthlyVoucherTypeId);
                var           isAutomatic = spVoucherType.CheckMethodOfVoucherNumbering(typeId);
                infoMaster.VoucherNo = voucherNo;
                infoMaster.InvoiceNo = voucherNo;

                infoMaster.Extra1          = string.Empty;
                infoMaster.Extra2          = string.Empty;
                infoMaster.SuffixPrefixId  = Convert.ToDecimal(ViewData["decMonthlySuffixPrefixId"]);
                infoMaster.VoucherTypeId   = typeId;
                infoMaster.FinancialYearId = PublicVariables._decCurrentFinancialYearId;
                infoMaster.Month           = Convert.ToDateTime(month);

                infoDetails.Extra1 = string.Empty;
                infoDetails.Extra2 = string.Empty;

                int inRowCount = dgvMonthlySalary.Count;
                for (int i = 0; i < inRowCount; i++)
                {
                    JArray item = (JArray)dgvMonthlySalary[i];
                    if (item[0]["txtEmployeeId"] != null)
                    {
                        infoDetails.EmployeeId = Convert.ToDecimal(item[0]["txtEmployeeId"].Value <string>());
                    }
                    if (item[0]["txtBonus"] != null)
                    {
                        infoDetails.Bonus = Convert.ToDecimal(item[0]["txtBonus"].Value <string>());
                    }
                    if (item[0]["txtDeduction"] != null)
                    {
                        infoDetails.Deduction = Convert.ToDecimal(item[0]["txtDeduction"].Value <string>());
                    }
                    if (item[0]["txtAdvance"] != null)
                    {
                        infoDetails.Advance = Convert.ToDecimal(item[0]["txtAdvance"].Value <string>());
                    }
                    if (item[0]["txtLop"] != null)
                    {
                        infoDetails.Lop = Convert.ToDecimal(item[0]["txtLop"].Value <string>());
                    }
                    if (item[0]["txtSalary"] != null)
                    {
                        infoDetails.Salary = Convert.ToDecimal(item[0]["txtSalary"].Value <string>());
                    }
                    if (item[0]["cmbStatus"] != null && Convert.ToString(item[0]["cmbStatus"].Value <string>()) == "Paid")
                    {
                        infoDetails.Status = Convert.ToString(item[0]["cmbStatus"].Value <string>());
                    }


                    if (Convert.ToString(item[0]["cmbStatus"].Value <string>()) == "Pending" && Convert.ToString(item[0]["txtMasterId"].Value <string>()) != "0")
                    {
                        decimal SalaryVoucherDetailsId = Convert.ToDecimal(item[0]["txtDetailsId"].Value <string>());
                        spDetails.SalaryVoucherDetailsDelete(SalaryVoucherDetailsId);
                        spMaster.SalaryVoucherMasterEdit(infoMaster);

                        //LedgerUpdate();
                    }

                    if (Convert.ToString(item[0]["cmbStatus"].Value <string>()) == "Paid" && Convert.ToString(item[0]["txtMasterId"].Value <string>()) == "0")
                    {
                        infoDetails.SalaryVoucherMasterId = masterID;
                        spDetails.MonthlySalaryVoucherDetailsAdd(infoDetails);
                        spMaster.SalaryVoucherMasterEdit(infoMaster);

                        //LedgerUpdate();
                    }
                    if (Convert.ToString(item[0]["cmbStatus"].Value <string>()) == "Pending" && Convert.ToString(item[0]["txtMasterId"].Value <string>()) == "0")
                    {
                        spMaster.SalaryVoucherMasterEdit(infoMaster);
                        //LedgerUpdate();
                    }
                }
                if (spDetails.SalaryVoucherDetailsCount(masterID) == 0)
                {
                    spMaster.SalaryVoucherMasterDelete(masterID);
                }
                //GridFillVoucher(isEditMode, Convert.ToDateTime(month), voucherNo);
            }
            catch (Exception ex)
            {
                //MessageBox.Show("MSV8:" + ex.Message, "Masterfine", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        public void SaveFunction_MSV(string tableData, string editMode)
        {
            try
            {
                List <Object>            dgvMonthlySalary = JsonConvert.DeserializeObject <List <Object> >(tableData);
                JArray                   itemFirst        = (JArray)dgvMonthlySalary[0];
                string                   voucherNo        = Convert.ToString(itemFirst[0]["voucherNo"].Value <string>());
                string                   voucherDate      = Convert.ToString(itemFirst[0]["voucherDate"].Value <string>());
                string                   month            = Convert.ToString(itemFirst[0]["month"].Value <string>());
                string                   cash             = Convert.ToString(itemFirst[0]["cash"].Value <string>());
                string                   totalAmount      = Convert.ToString(itemFirst[0]["totalAmount"].Value <string>());
                string                   narration        = Convert.ToString(itemFirst[0]["narration"].Value <string>());
                SalaryVoucherMasterSP    spMaster         = new SalaryVoucherMasterSP();
                SalaryVoucherMasterInfo  infoMaster       = new SalaryVoucherMasterInfo();
                SalaryVoucherDetailsSP   spDetails        = new SalaryVoucherDetailsSP();
                SalaryVoucherDetailsInfo infoDetails      = new SalaryVoucherDetailsInfo();
                DateTime                 dtpMonth         = Convert.ToDateTime(month);
                bool          isEditMode = Convert.ToBoolean(editMode);
                int           decMonthlyVoucherTypeId = 27;
                decimal       typeId        = Convert.ToDecimal(decMonthlyVoucherTypeId);
                VoucherTypeSP spVoucherType = new VoucherTypeSP();
                var           isAutomatic   = spVoucherType.CheckMethodOfVoucherNumbering(typeId);

                //------------------------------- In the case of multi user check whether salary is paying for the sam person ----------------//
                int     inCounts        = dgvMonthlySalary.Count;
                int     incont          = 0;
                decimal decVal          = 0;
                string  strEployeeNames = "";
                for (int i = 0; i < inCounts; i++)
                {
                    JArray item = (JArray)dgvMonthlySalary[i];
                    decVal = Convert.ToDecimal(item[0]["txtEmployeeId"].Value <string>());
                    if (spDetails.CheckWhetherSalaryAlreadyPaid(decVal, dtpMonth) != "0")
                    {
                        strEployeeNames = strEployeeNames + spDetails.CheckWhetherSalaryAlreadyPaid(decVal, dtpMonth) + ",";
                        foreach (char ch in strEployeeNames)
                        {
                            if (ch == ',')
                            {
                                incont++;
                            }
                        }
                        if (incont == 15)
                        {
                            incont          = 0;
                            strEployeeNames = strEployeeNames + Environment.NewLine;
                        }
                    }
                }
                if (spDetails.CheckWhetherSalaryAlreadyPaid(decVal, dtpMonth) != "0")
                {
                    // Messages.InformationMessage("Salary already paid for - " + " " + strEployeeNames);
                    //GridFillVoucher(isEditMode, dtpMonth, voucherNo);
                }
                infoMaster.LedgerId  = Convert.ToDecimal(cash);
                infoMaster.VoucherNo = voucherNo;
                infoMaster.Month     = Convert.ToDateTime(dtpMonth);
                infoMaster.Date      = Convert.ToDateTime(voucherDate);
                infoMaster.Narration = narration;
                infoMaster.InvoiceNo = voucherNo;
                if (totalAmount != string.Empty)
                {
                    infoMaster.TotalAmount = Math.Round(Convert.ToDecimal(totalAmount), PublicVariables._inNoOfDecimalPlaces);
                }
                infoMaster.Extra1          = string.Empty; // Fields not in design//
                infoMaster.Extra2          = string.Empty; // Fields not in design//
                infoMaster.SuffixPrefixId  = Convert.ToDecimal(ViewData["decMonthlySuffixPrefixId"]);
                infoMaster.VoucherTypeId   = typeId;
                infoMaster.FinancialYearId = PublicVariables._decCurrentFinancialYearId;

                int inCount = dgvMonthlySalary.Count;
                int inValue = 0;
                for (int i = 0; i < inCount; i++)
                {
                    JArray item = (JArray)dgvMonthlySalary[i];
                    if (Convert.ToString(item[0]["cmbStatus"].Value <string>()) == "Paid")
                    {
                        inValue++;
                    }
                }
                if (inValue > 0)
                {
                    //-------------------------In the case of Multi-User Check the VoucherNo. again (Max of VoucherNumber )---------------------//
                    DataTable dtbl = new DataTable();
                    decimal   decMasterId = 0;
                    string    strUpdatedVoucherNo = "", strUpdatedInvoiceNo = "";
                    dtbl = spMaster.MonthlySalaryVoucherMasterAddWithIdentity(infoMaster, isAutomatic);
                    foreach (DataRow dr in dtbl.Rows)
                    {
                        decMasterId         = Convert.ToDecimal(dr.ItemArray[0].ToString());
                        strUpdatedVoucherNo = dr.ItemArray[1].ToString();
                        strUpdatedInvoiceNo = dr.ItemArray[2].ToString();
                    }
                    string strVoucherNo = "";
                    string strInvoiceNo = "";
                    if (!isAutomatic)
                    {
                        strVoucherNo = voucherNo;
                    }
                    if (isAutomatic)
                    {
                        if (strUpdatedVoucherNo != "" && Convert.ToDecimal(strUpdatedVoucherNo) != Convert.ToDecimal(voucherNo))
                        {
                            //Messages.InformationMessage("Voucher number changed from  " + strInvoiceNo + "  to  " + strUpdatedInvoiceNo);
                            strVoucherNo = strUpdatedVoucherNo.ToString();
                            strInvoiceNo = strUpdatedInvoiceNo;
                        }
                    }
                    //LedgerPosting(Convert.ToDecimal(cash));
                    infoDetails.Extra1 = string.Empty;
                    infoDetails.Extra2 = string.Empty;
                    infoDetails.SalaryVoucherMasterId = decMasterId;

                    int inRowCount = dgvMonthlySalary.Count;
                    for (int i = 0; i < inRowCount; i++)
                    {
                        JArray item = (JArray)dgvMonthlySalary[i];
                        if (item[0]["txtEmployeeId"] != null)
                        {
                            infoDetails.EmployeeId = Convert.ToDecimal(item[0]["txtEmployeeId"].Value <string>());
                        }
                        if (item[0]["txtBonus"] != null)
                        {
                            infoDetails.Bonus = Convert.ToDecimal(item[0]["txtBonus"].Value <string>());
                        }
                        if (item[0]["txtDeduction"] != null)
                        {
                            infoDetails.Deduction = Convert.ToDecimal(item[0]["txtDeduction"].Value <string>());
                        }
                        if (item[0]["txtAdvance"] != null)
                        {
                            infoDetails.Advance = Convert.ToDecimal(item[0]["txtAdvance"].Value <string>());
                        }
                        if (item[0]["txtLop"] != null)
                        {
                            infoDetails.Lop = Convert.ToDecimal(item[0]["txtLop"].Value <string>());
                        }
                        if (item[0]["txtSalary"] != null)
                        {
                            infoDetails.Salary = Convert.ToDecimal(item[0]["txtSalary"].Value <string>());
                        }
                        if (item[0]["cmbStatus"] != null)
                        {
                            infoDetails.Status = Convert.ToString(item[0]["cmbStatus"].Value <string>()) == "Paid"? "Paid": string.Empty;
                        }
                        if (Convert.ToString(item[0]["cmbStatus"].Value <string>()) == "Paid" && Convert.ToString(item[0]["txtMasterId"].Value <string>()) == "0")
                        {
                            infoDetails.SalaryVoucherMasterId = decMasterId;
                            spDetails.MonthlySalaryVoucherDetailsAdd(infoDetails);
                        }
                    }

                    //GridFillVoucher(isEditMode,dtpMonth, voucherNo);
                    VoucherClear(strVoucherNo, voucherDate, editMode);
                }
                else
                {
                    //Messages.InformationMessage("Can't save without atleast one employee");
                    voucherNo = spMaster.SalaryVoucherMasterGetMax(typeId);
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show("MSV7:" + ex.Message, "Masterfine", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }