public ActionResult EditKontrak(AdminUangJalan model, string Keterangan)
        {
            Context.SalesOrder dbitem = RepoSalesOrder.FindByPK(model.IdSalesOrder.Value);
            Context.SalesOrderKontrakListSo sokontrak = dbitem.SalesOrderKontrak.SalesOrderKontrakListSo.Where(d => d.Id == int.Parse(model.ListIdSo)).FirstOrDefault();
            int jumSo = dbitem.SalesOrderKontrak.SalesOrderKontrakListSo.Where(d => d.IdAdminUangJalan == sokontrak.IdAdminUangJalan && d.IsBatalTruck != true).Count();

            Context.BatalOrder     batalOrder = new Context.BatalOrder();
            Context.AdminUangJalan dbauj      = sokontrak.AdminUangJalan;

            //cek status na
            if (sokontrak.Status == "dispatched")
            {
                Context.SettlementBatal dbsettlement = new Context.SettlementBatal();
                //ambil data
                dbsettlement.IdSalesOrder = model.IdSalesOrder;
                dbsettlement.IdSoKontrak  = model.ListIdSo;
                if (dbauj.AdminUangJalanUangTf.Any(d => d.Keterangan == "Tunai"))
                {
                    dbsettlement.KasDiterima = dbauj.AdminUangJalanUangTf.Where(d => d.Keterangan == "Tunai").FirstOrDefault().JumlahTransfer / jumSo;
                }
                if (dbauj.AdminUangJalanUangTf.Any(d => d.Keterangan.Contains("Transfer")))
                {
                    dbsettlement.TransferDiterima = dbauj.AdminUangJalanUangTf.Where(d => d.Keterangan.Contains("Transfer")).Sum(t => t.JumlahTransfer) / jumSo;
                }
                dbsettlement.SolarDiterima = dbauj.AdminUangJalanVoucherSpbu.Sum(s => s.Value) / jumSo;
                dbsettlement.KapalDiterima = dbauj.AdminUangJalanVoucherKapal.Sum(s => s.Value) / jumSo;
                dbsettlement.JenisBatal    = "Batal Truk";
                dbsettlement.IdDriver      = sokontrak.Driver1Id;
                RepoSettBatal.save(dbsettlement, UserPrincipal.id, "Batal Truk");
            }
            else if (sokontrak.Status == "admin uang jalan")
            {
                foreach (Context.AdminUangJalanUangTf dbUang in dbauj.AdminUangJalanUangTf)
                {
                    dbUang.Value = dbUang.Value / jumSo * (jumSo - 1);
                    RepoSalesOrder.saveUangTf(dbUang);
                }
            }

            foreach (var trukItem in dbitem.SalesOrderKontrak.SalesOrderKontrakTruck.Where(d => d.DataTruckId == sokontrak.IdDataTruck).ToList())
            {
                trukItem.DataTruckId = null;
                trukItem.IdDriver1   = null;
                trukItem.IdDriver2   = null;
            }
            sokontrak.IsProses     = false;
            sokontrak.Urutan       = 0;
            sokontrak.IsBatalTruck = true;
            sokontrak.IdDataTruck  = null;
            sokontrak.Driver1Id    = null;
            sokontrak.Driver2Id    = null;
            sokontrak.Status       = "draft planning";

            batalOrder.IdSalesOrder = dbitem.Id;
            batalOrder.IdSoKontrak  = model.ListIdSo;
            batalOrder.Keterangan   = Keterangan;
            batalOrder.ModifiedDate = DateTime.Now;
            batalOrder.IsBatalTruk  = true;

            RepoSalesOrder.save(dbitem);
            RepoBatalOrder.save(batalOrder, UserPrincipal.id);

            ViewBag.status = "batal order";
            return(RedirectToAction("index", "ListOrder"));
        }