示例#1
0
        public string GetDataForSo(int id)
        {
            Context.Rute dbitem = RepoRute.FindByPK(id);
            Rute         model  = new Rute(dbitem);

            return(new JavaScriptSerializer().Serialize(new { data = model }));
        }
示例#2
0
        public ActionResult Edit(int id)
        {
            Context.Rute dbitem    = RepoRute.FindByPK(id);
            Rute         Viewmodel = new Rute(dbitem);

            ViewBag.name = Viewmodel.Kode;
            return(View("Form", Viewmodel));
        }
示例#3
0
        public JsonResult Delete(int id)
        {
            ResponeModel response = new ResponeModel(true);

            Context.Rute dbItem = RepoRute.FindByPK(id);

            RepoRute.delete(dbItem);

            return(Json(response));
        }
示例#4
0
        public String CheckLeadTimeDriver(int id)
        {
            Context.SalesOrder dbso = RepoSalesOrder.FindAll().Where(d =>
                                                                     (d.Status == "save planning" || d.Status == "draft planning" || d.Status == "draft konfirmasi" || d.Status == "save konfirmasi" || d.Status == "dispatched") && (
                                                                         (d.SalesOrderOncallId.HasValue && (d.SalesOrderOncall.Driver1Id == id || d.SalesOrderOncall.Driver2Id == id)) ||
                                                                         (d.SalesOrderPickupId.HasValue && (d.SalesOrderPickup.Driver1Id == id || d.SalesOrderPickup.Driver2Id == id)) ||
                                                                         (d.SalesOrderProsesKonsolidasiId.HasValue && (d.SalesOrderProsesKonsolidasi.Driver1Id == id || d.SalesOrderProsesKonsolidasi.Driver2Id == id)) ||
                                                                         (d.SalesOrderKontrakId.HasValue && (d.SalesOrderKontrak.SalesOrderKontrakTruck.Any(k => k.IdDriver1 == id || k.IdDriver2 == id)))
                                                                         )
                                                                     ).FirstOrDefault();
            List <Context.SalesOrder> soList = RepoSalesOrder.FindAll().Where(d =>
                                                                              (d.Status == "save planning" || d.Status == "draft planning" || d.Status == "draft konfirmasi" || d.Status == "save konfirmasi" || d.Status == "dispatched") && (
                                                                                  (d.SalesOrderOncallId.HasValue && (d.SalesOrderOncall.Driver1Id == id || d.SalesOrderOncall.Driver2Id == id)) ||
                                                                                  (d.SalesOrderPickupId.HasValue && (d.SalesOrderPickup.Driver1Id == id || d.SalesOrderPickup.Driver2Id == id)) ||
                                                                                  (d.SalesOrderProsesKonsolidasiId.HasValue && (d.SalesOrderProsesKonsolidasi.Driver1Id == id || d.SalesOrderProsesKonsolidasi.Driver2Id == id)) ||
                                                                                  (d.SalesOrderKontrakId.HasValue && (d.SalesOrderKontrak.SalesOrderKontrakTruck.Any(k => k.IdDriver1 == id || k.IdDriver2 == id)))
                                                                                  )
                                                                              ).ToList();

            if (dbso != null && dbso.SalesOrderOncallId.HasValue)
            {
                int maxUrutan = soList.Count() > 0 ? RepoSalesOrder.FindAll().Where(d =>
                                                                                    (d.Status == "save planning" || d.Status == "draft planning" || d.Status == "draft konfirmasi" || d.Status == "save konfirmasi" || d.Status == "dispatched") && (
                                                                                        (d.SalesOrderOncallId.HasValue && (d.SalesOrderOncall.Driver1Id == id || d.SalesOrderOncall.Driver2Id == id)) ||
                                                                                        (d.SalesOrderPickupId.HasValue && (d.SalesOrderPickup.Driver1Id == id || d.SalesOrderPickup.Driver2Id == id)) ||
                                                                                        (d.SalesOrderProsesKonsolidasiId.HasValue && (d.SalesOrderProsesKonsolidasi.Driver1Id == id || d.SalesOrderProsesKonsolidasi.Driver2Id == id)) ||
                                                                                        (d.SalesOrderKontrakId.HasValue && (d.SalesOrderKontrak.SalesOrderKontrakTruck.Any(k => k.IdDriver1 == id || k.IdDriver2 == id)))
                                                                                        )
                                                                                    ).Max(d => d.urutan) : 0;
                Context.Rute rute       = RepoSalesOrder.FindRute(dbso.SalesOrderOncall.IdDaftarHargaItem.Value);
                double       wktkrj     = rute.WaktuKerja;
                int          waktuKerja = int.Parse(rute.WaktuKerja.ToString());
                return(new JavaScriptSerializer().Serialize(new {
                    waktupulang = DateTime.Parse(dbso.SalesOrderOncall.TanggalMuat.ToString()).AddDays(waktuKerja).ToString(), orderCount = maxUrutan
                }));
            }
            else if (dbso != null && dbso.SalesOrderKontrakId.HasValue)
            {
                int maxUrutan = soList.Count() > 0 ? RepoSalesOrder.FindAll().Where(d =>
                                                                                    (d.Status == "save planning" || d.Status == "draft planning" || d.Status == "draft konfirmasi" || d.Status == "save konfirmasi" || d.Status == "dispatched") && (
                                                                                        (d.SalesOrderOncallId.HasValue && (d.SalesOrderOncall.Driver1Id == id || d.SalesOrderOncall.Driver2Id == id)) ||
                                                                                        (d.SalesOrderPickupId.HasValue && (d.SalesOrderPickup.Driver1Id == id || d.SalesOrderPickup.Driver2Id == id)) ||
                                                                                        (d.SalesOrderProsesKonsolidasiId.HasValue && (d.SalesOrderProsesKonsolidasi.Driver1Id == id || d.SalesOrderProsesKonsolidasi.Driver2Id == id)) ||
                                                                                        (d.SalesOrderKontrakId.HasValue && (d.SalesOrderKontrak.SalesOrderKontrakTruck.Any(k => k.IdDriver1 == id || k.IdDriver2 == id)))
                                                                                        )
                                                                                    ).Max(d => d.urutan) : 0;
                return(new JavaScriptSerializer().Serialize(new {
                    waktupulang = dbso.SalesOrderKontrak.SalesOrderKontrakListSo.Where(d => d.Driver1Id == id).Select(d => d.MuatDate).Max().ToString(),
                    waktuMuat = dbso.SalesOrderKontrak.SalesOrderKontrakListSo.Where(d => d.Driver1Id == id).Select(d => d.MuatDate).Min().ToString(), orderCount = 0,
                }));
            }
            return(new JavaScriptSerializer().Serialize(new { success = true }));
        }
示例#5
0
        public ActionResult Edit(Rute model)
        {
            if (ModelState.IsValid)
            {
                Context.Rute dbitem = RepoRute.FindByPK(model.Id);
                model.setDb(dbitem);
                RepoRute.save(dbitem);

                return(RedirectToAction("Index"));
            }

            return(View("Form", model));
        }
示例#6
0
        public ActionResult Add(Rute model, string submitBasicData)
        {
            if (ModelState.IsValid)
            {
                Context.Rute dbitem = new Context.Rute();
                model.setDb(dbitem);

                //generate code
                dbitem.Urutan = RepoRute.getUrutan() + 1;
                dbitem.Kode   = RepoRute.generateCode(dbitem.Urutan);

                RepoRute.save(dbitem);

                return(RedirectToAction("Index"));
            }
            return(View("Form", model));
        }
示例#7
0
        public void setDb(Context.Rute dbitem)
        {
            dbitem.CustomerId       = CustomerId;
            dbitem.Kode             = Kode;
            dbitem.Nama             = Nama;
            dbitem.IdAsal           = IdAsal;
            dbitem.IdAreaAsal       = IdAreaAsal;
            dbitem.IdTujuan         = IdTujuan;
            dbitem.IdAreaTujuan     = IdAreaTujuan;
            dbitem.IdMultiDrop      = IdMultiDrop;
            dbitem.Jarak            = Jarak.Value;
            dbitem.WaktuKerja       = WaktuKerja.Value;
            dbitem.WaktuTempuhJam   = WaktuTempuhJam;
            dbitem.WaktuTempuhMenit = WaktuTempuhMenit;
            dbitem.Toleransi        = Toleransi;
            dbitem.IsAreaPulang     = IsAreaPulang;
            dbitem.IsKotaKota       = IsKotaKota;
            dbitem.Keterangan       = Keterangan;

            dbitem.RuteCheckPoint.Clear();

            if (StrListCheckPoint != null)
            {
                RuteCheckPoint[] result = JsonConvert.DeserializeObject <RuteCheckPoint[]>(StrListCheckPoint);

                foreach (RuteCheckPoint item in result)
                {
                    dbitem.RuteCheckPoint.Add(new Context.RuteCheckPoint()
                    {
                        code       = item.code,
                        longitude  = item.longitude,
                        langitude  = item.langitude,
                        radius     = item.radius,
                        alamat     = item.alamat,
                        waktuJam   = item.waktuJam,
                        waktuMenit = item.waktuMenit,
                        toleransi  = item.toleransi,
                        hapus      = item.hapus
                    });
                }
            }
        }
示例#8
0
 public String CheckLeadTime(int id)
 {
     Context.SalesOrder dbso = RepoSalesOrder.FindAll().Where(d =>
                                                              (d.Status == "save planning" || d.Status == "draft planning" || d.Status == "draft konfirmasi" || d.Status == "save konfirmasi" || d.Status == "dispatched") && (
                                                                  (d.SalesOrderOncallId.HasValue && d.SalesOrderOncall.IdDataTruck == id) || (d.SalesOrderPickupId.HasValue && d.SalesOrderPickup.IdDataTruck == id) ||
                                                                  (d.SalesOrderProsesKonsolidasiId.HasValue && d.SalesOrderProsesKonsolidasi.IdDataTruck == id) ||
                                                                  (d.SalesOrderKontrakId.HasValue && d.SalesOrderKontrak.SalesOrderKontrakTruck.Any(k => k.DataTruckId == id))
                                                                  )
                                                              ).FirstOrDefault();
     if (dbso != null && dbso.SalesOrderOncallId.HasValue)
     {
         Context.Rute rute       = RepoSalesOrder.FindRute(dbso.SalesOrderOncall.IdDaftarHargaItem.Value);
         double       wktkrj     = rute.WaktuKerja;
         int          waktuKerja = int.Parse(rute.WaktuKerja.ToString());
         return(new JavaScriptSerializer().Serialize(new {
             waktupulang = DateTime.Parse(dbso.SalesOrderOncall.TanggalMuat.ToString()).AddDays(waktuKerja).ToString(), waktuMuat = DateTime.Parse(dbso.SalesOrderOncall.TanggalMuat.ToString()).ToString()
         }));
     }
     return(null);
 }
示例#9
0
        public Rute(Context.Rute dbitem)
        {
            Id           = dbitem.Id;
            CustomerId   = dbitem.CustomerId;
            strCustomer  = dbitem.CustomerId == null ? "UMUM" : dbitem.Customer.CustomerNama;
            Kode         = dbitem.Kode;
            Nama         = dbitem.Nama;
            IdAsal       = dbitem.IdAsal;
            Asal         = dbitem.LocationAsal.Nama;
            IdAreaAsal   = dbitem.IdAreaAsal;
            AreaAsal     = dbitem.AreaAsal.Nama;
            IdTujuan     = dbitem.IdTujuan;
            Tujuan       = dbitem.LocationTujuan.Nama;
            IdAreaTujuan = dbitem.IdAreaTujuan;
            AreaTujuan   = dbitem.AreaTujuan.Nama;
            if (dbitem.Multidrop != null)
            {
                IdMultiDrop = dbitem.IdMultiDrop;
                MultiDrop   = dbitem.Multidrop.tujuan;
            }
            Jarak            = dbitem.Jarak;
            WaktuKerja       = dbitem.WaktuKerja;
            WaktuTempuhJam   = dbitem.WaktuTempuhJam;
            WaktuTempuhMenit = dbitem.WaktuTempuhMenit;
            string wktjam   = WaktuTempuhJam.HasValue ? WaktuTempuhJam.Value.ToString() : "0";
            string wktmenit = WaktuTempuhMenit.HasValue ? WaktuTempuhMenit.Value.ToString() : "0";

            strWaktuTempuh = wktjam + " Jam " + wktmenit + " menit";
            Toleransi      = dbitem.Toleransi;
            IsAreaPulang   = dbitem.IsAreaPulang;
            IsKotaKota     = dbitem.IsKotaKota;
            Keterangan     = dbitem.Keterangan;

            listCheckPoint = new List <RuteCheckPoint>();

            foreach (Context.RuteCheckPoint item in dbitem.RuteCheckPoint)
            {
                listCheckPoint.Add(new RuteCheckPoint(item));
            }
        }
示例#10
0
        public string Upload(IEnumerable <HttpPostedFileBase> fileRute)
        {
            ResponeModel response = new ResponeModel();

            if (fileRute != null)
            {
                foreach (var file in fileRute)
                {
                    try
                    {
                        using (var package = new ExcelPackage(file.InputStream))
                        {
                            var currentSheet = package.Workbook.Worksheets;
                            var workSheet    = currentSheet.First();
                            var noOfCol      = workSheet.Dimension.End.Column;
                            var noOfRow      = workSheet.Dimension.End.Row;

                            for (int rowIterator = 2; rowIterator <= noOfRow; rowIterator++)
                            {
                                if (workSheet.Cells[rowIterator, 1].Value != null && workSheet.Cells[rowIterator, 2].Value != null &&
                                    workSheet.Cells[rowIterator, 3].Value != null && workSheet.Cells[rowIterator, 4].Value != null &&
                                    workSheet.Cells[rowIterator, 5].Value != null && workSheet.Cells[rowIterator, 7].Value != null)
                                {
                                    int id = 0;
                                    int resId;

                                    if (workSheet.Cells[rowIterator, 14].Value != null)
                                    {
                                        if (int.TryParse(workSheet.Cells[rowIterator, 14].Value.ToString(), out resId))
                                        {
                                            id = resId;
                                        }
                                    }

                                    Context.Rute db = new Context.Rute();
                                    try
                                    {
                                        if (id != 0)
                                        {
                                            db = RepoRute.FindByPK(id);
                                            db.RuteCheckPoint.Clear();
                                        }

                                        //parent
                                        db.Urutan       = RepoRute.getUrutan() + 1;
                                        db.Kode         = RepoRute.generateCode(db.Urutan);
                                        db.Nama         = workSheet.Cells[rowIterator, 1].Value.ToString();
                                        db.IdAsal       = RepoLocation.FindByCode(workSheet.Cells[rowIterator, 2].Value.ToString()).Id;
                                        db.IdAreaAsal   = RepoArea.FindByCode(workSheet.Cells[rowIterator, 3].Value.ToString()).Id;
                                        db.IdTujuan     = RepoLocation.FindByCode(workSheet.Cells[rowIterator, 4].Value.ToString()).Id;
                                        db.IdAreaTujuan = RepoArea.FindByCode(workSheet.Cells[rowIterator, 5].Value.ToString()).Id;
                                        if (workSheet.Cells[rowIterator, 6].Value != null && workSheet.Cells[rowIterator, 6].Value.ToString() != "")
                                        {
                                            db.IdMultiDrop = RepoMultidrop.FindByTujuan(workSheet.Cells[rowIterator, 6].Value.ToString()).Id;
                                        }
                                        db.WaktuKerja = int.Parse(workSheet.Cells[rowIterator, 7].Value.ToString());
                                        if (workSheet.Cells[rowIterator, 8].Value != null)
                                        {
                                            db.Toleransi = int.Parse(workSheet.Cells[rowIterator, 8].Value.ToString());
                                        }
                                        db.IsAreaPulang = workSheet.Cells[rowIterator, 9].Value == null ? false : bool.Parse(workSheet.Cells[rowIterator, 9].Value.ToString());
                                        db.IsKotaKota   = workSheet.Cells[rowIterator, 10].Value == null ? false : bool.Parse(workSheet.Cells[rowIterator, 10].Value.ToString());

                                        // child;
                                        int idx = 0;
                                        for (idx = rowIterator; idx <= noOfRow; idx++)
                                        {
                                            if (workSheet.Cells[idx, 1].Value == null || idx == rowIterator)
                                            {
                                                if (workSheet.Cells[idx, 10].Value != null && workSheet.Cells[idx, 11].Value != null &&
                                                    workSheet.Cells[idx, 12].Value != null && workSheet.Cells[idx, 13].Value != null)
                                                {
                                                    Context.RuteCheckPoint item = new Context.RuteCheckPoint();
                                                    item.longitude = workSheet.Cells[idx, 10].Value.ToString();
                                                    item.langitude = workSheet.Cells[idx, 11].Value.ToString();
                                                    item.radius    = int.Parse(workSheet.Cells[idx, 12].Value.ToString());
                                                    item.toleransi = int.Parse(workSheet.Cells[idx, 13].Value.ToString());
                                                    db.RuteCheckPoint.Add(item);
                                                }
                                            }
                                            else
                                            {
                                                break;
                                            }
                                        }

                                        if (idx != 0)
                                        {
                                            rowIterator = idx - 1;
                                        }

                                        RepoRute.save(db);
                                    }
                                    catch (Exception)
                                    {
                                    }
                                }
                            }
                        }
                        response.Success = true;
                    }
                    catch (Exception e)
                    {
                        response.Success = false;
                        response.Message = e.Message.ToString();
                    }
                }
            }
            return(new JavaScriptSerializer().Serialize(new { Response = response }));
        }
示例#11
0
        public ActionResult EditOncall(SalesOrderOncall model, string btnsave)
        {
            //validasi manual
            bool palid  = true;
            int  urutan = 1;

            if (btnsave != "draft" && model.Status != "draft")
            {
                if (!model.IdDataTruck.HasValue)
                {
                    ModelState.AddModelError("IdDataTruck", "Truk harus diisi.");
                    palid = false;
                }
                if (!model.Driver1Id.HasValue || model.Driver1Id.Value == 0)
                {
                    ModelState.AddModelError("Driver1Id", "Driver harus diisi.");
                    palid = false;
                }
                if (model.Driver1Id != null)
                {
                    Context.Driver                 item = RepoDriver.FindAll().Where(d => d.Id == model.Driver1Id.Value).FirstOrDefault();
                    List <Context.SalesOrder>      dbso = RepoSalesOrder.FindAll().ToList();
                    List <Context.SettlementBatal> dbsb = RepoSettlementBatal.FindAll().Where(s => s.IsProses == false).ToList();
                    Driver             driver           = new Driver(item, dbso, dbsb);
                    Context.SalesOrder dbsoDriver       = RepoSalesOrder.FindAll().Where(d =>
                                                                                         (d.Status == "save" || d.Status == "draft planning" || d.Status == "draft konfirmasi" || d.Status == "save konfirmasi" || d.Status == "dispatched") && (
                                                                                             (d.SalesOrderOncallId.HasValue && (d.SalesOrderOncall.Driver1Id == model.Driver1Id || d.SalesOrderOncall.Driver2Id == model.Driver1Id)) ||
                                                                                             (d.SalesOrderPickupId.HasValue && (d.SalesOrderPickup.Driver1Id == model.Driver1Id || d.SalesOrderPickup.Driver2Id == model.Driver1Id)) ||
                                                                                             (d.SalesOrderProsesKonsolidasiId.HasValue && (d.SalesOrderProsesKonsolidasi.Driver1Id == model.Driver1Id || d.SalesOrderProsesKonsolidasi.Driver2Id == model.Driver1Id))
                                                                                             )
                                                                                         ).FirstOrDefault();
                    if (driver.StatusSo != "Available" && dbsoDriver != null && RepoSalesOrder.FindArea(dbsoDriver.SalesOrderOncall.IdDaftarHargaItem.Value) != "YES")
                    {
                        List <Context.SalesOrder> dbsoDriverList = RepoSalesOrder.FindAll().Where(d =>
                                                                                                  (d.Status == "save" || d.Status == "draft planning" || d.Status == "draft konfirmasi" || d.Status == "save konfirmasi" || d.Status == "dispatched") && (
                                                                                                      (d.SalesOrderOncallId.HasValue && (d.SalesOrderOncall.Driver1Id == model.Driver1Id || d.SalesOrderOncall.Driver2Id == model.Driver1Id)) ||
                                                                                                      (d.SalesOrderPickupId.HasValue && (d.SalesOrderPickup.Driver1Id == model.Driver1Id || d.SalesOrderPickup.Driver2Id == model.Driver1Id)) ||
                                                                                                      (d.SalesOrderProsesKonsolidasiId.HasValue && (d.SalesOrderProsesKonsolidasi.Driver1Id == model.Driver1Id || d.SalesOrderProsesKonsolidasi.Driver2Id == model.Driver1Id))
                                                                                                      )
                                                                                                  ).ToList();
                        urutan = dbsoDriver.urutan + 1;

                        //SO yg sdh jalan
                        Context.Rute rute       = RepoSalesOrder.FindRute(dbsoDriver.SalesOrderOncall.IdDaftarHargaItem.Value);
                        int          waktuKerja = int.Parse(rute.WaktuKerja.ToString());

                        //SO yg sedang diplanning
                        Context.SalesOrder so           = RepoSalesOrder.FindByOnCall(model.SalesOrderId.Value);
                        Context.Rute       rutePlanning = null;
                        if (so != null && so.SalesOrderOncall != null && so.SalesOrderOncall.IdDaftarHargaItem != null)
                        {
                            rutePlanning = RepoSalesOrder.FindRute(so.SalesOrderOncall.IdDaftarHargaItem.Value);
                            int  waktuKerjaPlanning = int.Parse(rutePlanning.WaktuKerja.ToString());
                            bool used_at_that_date  = dbsoDriverList.Any(d =>
                                                                         DateTime.Parse(d.SalesOrderOncall.TanggalMuat.ToString()).AddDays(waktuKerja) >= model.TanggalMuat ||
                                                                         DateTime.Parse(d.SalesOrderOncall.TanggalMuat.ToString()) <= DateTime.Parse(model.TanggalMuat.ToString()).AddDays(waktuKerja)
                                                                         );
                            if (used_at_that_date)
                            {
                                ModelState.AddModelError("Driver1Id", "Driver tidak tersedia, harap pilih driver lain.");
                                palid = false;
                            }
                            else if (urutan > 2 && rutePlanning.IsAreaPulang != true)
                            {
                                ModelState.AddModelError("Driver1Id", "Driver tidak tersedia, harap pilih driver lain.");
                                palid = false;
                            }
                        }
                    }
                }
            }
            if (model.Status == "draft")
            {
                if (model.CommentUser == "" || model.CommentUser == null)
                {
                    ModelState.AddModelError("CommentUser", "Comment harus diisi.");
                    palid = false;
                }
            }
            if (palid)
            {
                Context.SalesOrder dbitem = RepoSalesOrder.FindByPK(model.SalesOrderId.Value);
                dbitem.isReturn  = false;
                dbitem.UpdatedBy = UserPrincipal.id;
                dbitem.urutan    = urutan;
                string act = "";
                if (btnsave != null && btnsave != "")
                {
                    act           = "Draft";
                    dbitem.Status = btnsave;
                }
                else
                {
                    if (model.Status.ToLower() == "save")
                    {
                        act             = "Return";
                        dbitem.isReturn = true;
                    }
                    else
                    {
                        act             = "Submit";
                        dbitem.isReturn = false;
                    }

                    dbitem.Status = model.Status;
                }

                model.setDbOperasional(dbitem.SalesOrderOncall, act, "Operational");
                RepoSalesOrder.save(dbitem);
                RepoAuditrail.savePlanningHistory(dbitem);
                Context.so_mstr   dbptnr = Reposo_mstr.FindByPK(dbitem.SalesOrderOncall.SONumber);
                Context.DataTruck truck  = RepoDataTruck.FindByPK(model.IdDataTruck);
                try
                {
                    dbptnr.so_vehicle = Repocode_mstr.FindByCodeName(truck.VehicleNo).id;
                    Reposo_mstr.UpdateSoMstrVehicle(dbptnr);
                }
                catch (Exception)
                {
                }
                return(RedirectToAction("Index"));
            }
            else
            {
                ViewBag.kondisi  = "planning";
                ViewBag.name     = model.SONumber;
                ViewBag.Title    = "Planning Sales Order Oncall " + model.SONumber;
                ViewBag.PostData = "EditOncall";
                return(View("SalesOrderOncall/FormReadOnly", model));
            }
        }