// GET: Vouchers/Details/5
        public ActionResult AddVoucher(_Voucher Vouchers)
        {
            try
            {
                string[] D4 = Vouchers.Time.Split('-');
                Vouchers.Time = D4[2] + "/" + D4[1] + "/" + D4[0];
                Voucher v = new Voucher();

                var localtime  = DateTime.Now.ToLocalTime().ToString();
                var time       = localtime.Split(' ');
                var timestamps = time[1].Split(':');
                if (timestamps[0].Count() == 1)
                {
                    timestamps[0] = "0" + timestamps[0];
                }
                if (timestamps[1].Count() == 1)
                {
                    timestamps[1] = "0" + timestamps[1];
                }
                if (timestamps[2].Count() == 1)
                {
                    timestamps[2] = "0" + timestamps[2];
                }
                time[1] = timestamps[0] + ":" + timestamps[1] + ":" + timestamps[2];

                var date = Vouchers.Time + " " + time[1] + " " + time[2];

                DateTime dt = DateTime.ParseExact(date, "dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
                v.Date      = dt;
                v.VoucherNo = Vouchers.VoucherNo;
                v.Notes     = Vouchers.Narration;
                v.Name      = Vouchers.VoucherName;
                var id       = User.Identity.GetUserId();
                var username = db.AspNetUsers.Where(x => x.Id == id).Select(x => x.Name).FirstOrDefault();
                v.CreatedBy = username;
                db.Vouchers.Add(v);
                db.SaveChanges();

                foreach (var item in Vouchers.VoucherDetail)
                {
                    VoucherRecord voucherrecord = new VoucherRecord();

                    var ledgerid = Int32.Parse(item.Code);
                    voucherrecord.LedgerId  = ledgerid;
                    voucherrecord.VoucherId = db.Vouchers.Select(x => x.Id).Max();
                    var debit  = item.Debit;
                    var credit = item.Credit;
                    var amount = 0;
                    if (debit != "" && debit != null)
                    {
                        amount             = Int32.Parse(debit);
                        voucherrecord.Type = "Dr";
                    }
                    else
                    {
                        amount             = Int32.Parse(credit);
                        voucherrecord.Type = "Cr";
                    }
                    voucherrecord.Amount = amount;
                    //if (item.BranchId == 0)
                    //{
                    //    voucherrecord.BranchId = null;
                    //}
                    //else
                    //{
                    //    voucherrecord.BranchId = item.BranchId;
                    //}
                    voucherrecord.Description = item.Transaction;
                    var ledgerrecord = db.Ledgers.Where(x => x.Id == voucherrecord.LedgerId).FirstOrDefault();
                    voucherrecord.CurrentBalance = ledgerrecord.CurrentBalance;
                    //////////////////////////Game/////////////////////
                    var groupid    = ledgerrecord.LedgerGroupId;
                    var ledgerHead = "";
                    if (groupid != null)
                    {
                        var ledgerheadId = db.LedgerGroups.Where(x => x.Id == groupid).Select(x => x.LedgerHeadID).FirstOrDefault();
                        ledgerHead = db.LedgerHeads.Where(x => x.Id == ledgerheadId).Select(x => x.Name).FirstOrDefault();
                    }
                    else
                    {
                        var headid = ledgerrecord.LedgerHeadId;
                        ledgerHead = db.LedgerHeads.Where(x => x.Id == headid).Select(x => x.Name).FirstOrDefault();
                    }

                    if (ledgerHead == "Assets" || ledgerHead == "Expense")
                    {
                        if (voucherrecord.Type == "Cr")
                        {
                            voucherrecord.AfterBalance = ledgerrecord.CurrentBalance - amount;

                            Ledger ledger = db.Ledgers.Where(x => x.Id == voucherrecord.LedgerId).FirstOrDefault();
                            ledger.CurrentBalance = voucherrecord.AfterBalance;
                            db.SaveChanges();
                        }
                        else if (voucherrecord.Type == "Dr")
                        {
                            voucherrecord.AfterBalance = ledgerrecord.CurrentBalance + amount;

                            Ledger ledger = db.Ledgers.Where(x => x.Id == voucherrecord.LedgerId).FirstOrDefault();
                            ledger.CurrentBalance = voucherrecord.AfterBalance;
                            db.SaveChanges();
                        }
                    }
                    else if (ledgerHead == "Equity" || ledgerHead == "Liabilities" || ledgerHead == "Income")
                    {
                        if (voucherrecord.Type == "Cr")
                        {
                            voucherrecord.AfterBalance = ledgerrecord.CurrentBalance + amount;

                            Ledger ledger = db.Ledgers.Where(x => x.Id == voucherrecord.LedgerId).FirstOrDefault();
                            ledger.CurrentBalance = voucherrecord.AfterBalance;
                            db.SaveChanges();
                        }
                        else if (voucherrecord.Type == "Dr")
                        {
                            voucherrecord.AfterBalance = ledgerrecord.CurrentBalance - amount;

                            Ledger ledger = db.Ledgers.Where(x => x.Id == voucherrecord.LedgerId).FirstOrDefault();
                            ledger.CurrentBalance = voucherrecord.AfterBalance;
                            db.SaveChanges();
                        }
                    }
                    db.VoucherRecords.Add(voucherrecord);
                    db.SaveChanges();
                }


                var result = "yes";
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                var result = "No";
                ViewBag.Error = e.Message;
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult AddCashVoucher(_Voucher Vouchers)
        {
            try
            {
                var LeadgerAdminDrawer = db.Ledgers.Where(x => x.Name == "Admin Drawer").FirstOrDefault();

                decimal?CurrentBalanceOfAdminDrawer = LeadgerAdminDrawer.CurrentBalance;

                decimal Total = Convert.ToDecimal(Vouchers.uppertotal);

                if (CurrentBalanceOfAdminDrawer > Total)
                {
                    string[] D4 = Vouchers.Time.Split('-');
                    Vouchers.Time = D4[2] + "/" + D4[1] + "/" + D4[0];
                    Voucher v = new Voucher();

                    var localtime  = DateTime.Now.ToLocalTime().ToString();
                    var time       = localtime.Split(' ');
                    var timestamps = time[1].Split(':');
                    if (timestamps[0].Count() == 1)
                    {
                        timestamps[0] = "0" + timestamps[0];
                    }
                    if (timestamps[1].Count() == 1)
                    {
                        timestamps[1] = "0" + timestamps[1];
                    }
                    if (timestamps[2].Count() == 1)
                    {
                        timestamps[2] = "0" + timestamps[2];
                    }
                    time[1] = timestamps[0] + ":" + timestamps[1] + ":" + timestamps[2];

                    var date = Vouchers.Time + " " + time[1] + " " + time[2];

                    //  DateTime dt = //DateTime.ParseExact(date, "dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);

                    v.Date      = GetLocalDateTime.GetLocalDateTimeFunction();
                    v.Notes     = Vouchers.Narration;
                    v.VoucherNo = Vouchers.VoucherNo;
                    v.Name      = Vouchers.VoucherName;
                    var id = User.Identity.GetUserId();
                    v.SessionID = SessionID;

                    var username = db.AspNetUsers.Where(x => x.Id == id).Select(x => x.Name).FirstOrDefault();
                    v.CreatedBy = username;
                    db.Vouchers.Add(v);
                    db.SaveChanges();

                    foreach (Voucher_Detail voucher in Vouchers.VoucherDetail)
                    {
                        VoucherRecord VR  = new VoucherRecord();
                        int           idd = Convert.ToInt32(voucher.Code);

                        var     Ledger               = db.Ledgers.Where(x => x.Id == idd).FirstOrDefault();
                        decimal?CurrentBlance        = Ledger.CurrentBalance;
                        decimal?AfterBalanceOfLedger = CurrentBlance + Convert.ToDecimal(voucher.Credit);
                        VR.LedgerId           = idd;
                        VR.Type               = "Dr";
                        VR.Amount             = Convert.ToDecimal(voucher.Credit);
                        VR.CurrentBalance     = CurrentBlance;
                        VR.AfterBalance       = AfterBalanceOfLedger;
                        VR.VoucherId          = v.Id;
                        VR.Description        = voucher.Transaction;
                        Ledger.CurrentBalance = AfterBalanceOfLedger;

                        db.VoucherRecords.Add(VR);
                        db.SaveChanges();
                    }

                    var LeadgerAdminDrawer1 = db.Ledgers.Where(x => x.Name == "Admin Drawer").FirstOrDefault();

                    decimal?CurrentBalanceOfAdminDrawer1 = LeadgerAdminDrawer1.CurrentBalance;


                    decimal?      AfterBalanceOfAdminDrawer1 = CurrentBalanceOfAdminDrawer1 - Convert.ToDecimal(Vouchers.uppertotal);
                    VoucherRecord voucherRecord1             = new VoucherRecord();

                    voucherRecord1.LedgerId            = LeadgerAdminDrawer.Id;
                    voucherRecord1.Type                = "Cr";
                    voucherRecord1.Amount              = Convert.ToDecimal(Vouchers.uppertotal);
                    voucherRecord1.CurrentBalance      = CurrentBalanceOfAdminDrawer;
                    voucherRecord1.AfterBalance        = AfterBalanceOfAdminDrawer1;
                    voucherRecord1.VoucherId           = v.Id;
                    voucherRecord1.Description         = "Expense Credited";
                    LeadgerAdminDrawer1.CurrentBalance = AfterBalanceOfAdminDrawer1;

                    db.VoucherRecords.Add(voucherRecord1);
                    db.SaveChanges();

                    var result = "yes";
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    var result = "No";
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }
            }
            catch
            {
            }


            return(RedirectToAction("Cash"));
        }