public bool ValidationTask(string MONumber, string ItemCode, string LotNo, string User)
        {
            OracleHeader oracleH     = entDebagging.Resolve <OracleHeader>().Get(x => x.MoNumber == MONumber);
            TaskTimbang  taskTimbang = entDebagging.Resolve <TaskTimbang>().Get(x => x.OracleHeaderId == oracleH.OracleHeaderId && x.ItemCode == ItemCode && x.LotNo == LotNo);

            //Update User & Terminal
            return(false);
        }
示例#2
0
        public static string GetValue(string GSCode)
        {
            OanTechHelper  entCommon = new OanTechHelper(MyEntities.Common);
            GeneralSetting value     = entCommon.Resolve <GeneralSetting>().Get(x => x.GSCode == GSCode);

            return(value.GSValue.ToString());
        }
        public void PushDataFromOracle(string MONumber)
        {
            List <XSHP_TIMBANG> dataHeader = GetListMOHeader(MONumber);

            foreach (XSHP_TIMBANG x in dataHeader)
            {
                OracleHeader oracleH = new OracleHeader();
                oracleH.MOHeaderId           = x.MO_HEADER_ID;
                oracleH.MOLineId             = x.MO_LINE_ID;
                oracleH.MoNumber             = x.MO_NUMBER;
                oracleH.LineNumber           = x.LINE_NUMBER;
                oracleH.FromSubInventoryCode = x.FROM_SUBINVENTORY_CODE;
                oracleH.ToSubInventoryCode   = x.FROM_SUBINVENTORY_CODE;
                oracleH.DateRequired         = x.DATE_REQUIRED;
                oracleH.SourceType           = x.SOURCE_TYPE;
                oracleH.DocNumber            = x.DOC_NUMBER;
                oracleH.Customer             = x.SHIP_TO;
                oracleH.ShipTo        = x.SHIP_TO;
                oracleH.Requestor     = x.REQUESTOR;
                oracleH.ItemCode      = x.ITEM_CODE;
                oracleH.ItemDesc      = x.ITEM_DESC;
                oracleH.ItemDescAlias = x.ITEM_DESC_ALIAS;
                oracleH.UOM           = x.UOM;
                oracleH.Qty           = x.QTY;
                oracleH.UrutanTuang   = x.URUTAN_TUANG;
                oracleH.QtyPerCharge  = x.QTY_PER_CHARGE;
                oracleH.Activity      = x.ACTIVITY;
                oracleH.CombineL1     = x.COMBINE_LV1;
                oracleH.CombineL2     = x.COMBINE_LV2;
                oracleH.PackingSize   = x.PACKING_SIZE;
                oracleH.SelfLife      = x.SELF_LIFE;
                oracleH.IsTimbang     = x.IS_TIMBANG;
                oracleH.IsClosedCode  = x.IS_CLOSED_CODE;
                oracleH.IsAllergen    = x.IS_ALLERGEN;

                List <XSHP_TIMBANG_ALOKASI> dataDetail = GetListMoAllocation(x.MO_LINE_ID);

                foreach (XSHP_TIMBANG_ALOKASI y in dataDetail)
                {
                    OracleDetail oracleD = new OracleDetail();
                    oracleD.MOHeaderId     = y.MO_HEADER_ID;
                    oracleD.MOLineId       = y.MO_LINE_ID;
                    oracleD.MONumber       = MONumber;
                    oracleD.ItemCode       = y.ITEM_CODE;
                    oracleD.LotNo          = y.LOT_NO;
                    oracleD.LotQty         = y.LOT_QTY;
                    oracleD.ExpirationDate = y.EXPIRATION_DATE;
                    oracleH.OracleDetails.Add(oracleD);
                }

                entWMS.Resolve <OracleHeader>().Add(oracleH);
            }
            entWMS.Save();

            //Update Oracle Flag nya 1
            UpdateOracleStatus(MONumber);
        }
 //ORACLE_1
 public List <string> GetListMO()
 {
     return(entOracle.Resolve <XSHP_TIMBANG>().GetAll(x => x.IS_PROCESSED == false).Select(x => x.MO_NUMBER).Distinct().ToList());
 }
        public ViewResult Index(int?page, string filter, string cFilter, string sortKey, string sortDir, string cSortDir)
        {
            //DEFAULT
            if (sortKey == null && sortDir == null)
            {
                sortKey = ViewBag.SortKey = "GSCode";                                               //yang harus diisi
                sortDir = "ASC";
            }

            //Page
            page = filter == null ? page : 1;
            int pageNumber = page ?? 1;
            int pageSize   = 5;                                                                     //yang harus diisi

            //NEW OR CURRENT --> FILTER & SORT
            filter  = filter == null ? cFilter : filter;
            sortDir = sortDir == null ? cSortDir : sortDir;

            //QUERY
            var query = from a in ent.Resolve <GeneralSetting>().AsQueryable()                       //yang harus dibikin
                        select new
            {
                GeneralSettingId = a.GeneralSettingId,
                GSCode           = a.GSCode,
                GSKey            = a.GSKey,
                GSValue          = a.GSValue
            };

            //CUSTOM FILTER
            if (!string.IsNullOrEmpty(filter))
            {
                query = query.Where(x => x.GSCode.Contains(filter) || x.GSValue.Contains(filter));           //yang harus ditentukan
            }

            //ORDER BY & TOOGLE SORT DIRECTION
            query = query.OrderByField(sortKey, sortDir == "ASC" ? true : false);

            //GET PAGING
            var pagingResult = query.ToPaging(pageNumber, pageSize);

            //Map to VIEW MODEL
            GeneralSettingViewPaging pagingList = new GeneralSettingViewPaging();

            pagingList.Paging = pagingResult;
            pagingList.Data   = new List <GeneralSettingViewModel>();

            foreach (var item in pagingResult)
            {
                GeneralSettingViewModel data = new GeneralSettingViewModel();
                data.GeneralSettingId = item.GeneralSettingId;
                data.GSCode           = item.GSCode;
                data.GSKey            = item.GSKey;
                data.GSValue          = item.GSValue;
                pagingList.Data.Add(data);
            }


            //Ga usah dirubah
            ViewBag.cSortDir = sortDir;                           //buat jaga kondisi sort
            ViewBag.SortDir  = sortDir == "ASC" ? "DESC" : "ASC"; //buat bolak balikin (Toogle)
            ViewBag.SortKey  = sortKey;
            ViewBag.cFilter  = filter;


            ViewBag.FormName = "General Setting";
            return(View(pagingList));
        }
示例#6
0
        public ViewResult DataTable(int?page, string filter, string cFilter, string sortKey, string sortDir, string cSortDir)
        {
            ////PAGING DENGAN 1 Model

            ////Default Sort
            //if (sortKey == null && sortDir == null)
            //{
            //    sortKey = ViewBag.SortKey = "RoleName";
            //    sortDir = "ASC";
            //}

            ////Page, Filter & Sort Dir
            //page = filter == null ? page : 1;
            //int pageNumber = page ?? 1;
            //int pageSize = 5;

            //filter = filter == null ? cFilter : filter;
            //sortDir = sortDir == null ? cSortDir : sortDir;

            ////Query
            //var dataResult = ent.Resolve<Role>().GetQueryableQuery();
            //if (!String.IsNullOrEmpty(filter))
            //{
            //    dataResult = ent.Resolve<Role>().GetQueryableQuery().Where(x => x.RoleName.Contains(filter));
            //}

            ////Order by
            //dataResult = dataResult.OrderByField(sortKey, sortDir == "ASC" ? true : false);

            //ViewBag.cSortDir = sortDir; //buat jaga kondisi sort
            //ViewBag.SortDir = sortDir == "ASC" ? "DESC" : "ASC";  //buat bolak balikin (Toogle)
            //ViewBag.SortKey = sortKey;
            //ViewBag.cFilter = filter;

            //return View(dataResult.ToPaging(pageNumber, pageSize));



            //DEFAULT
            if (sortKey == null && sortDir == null)
            {
                sortKey = ViewBag.SortKey = "RoleName";
                sortDir = "ASC";
            }

            //Page
            page = filter == null ? page : 1;
            int pageNumber = page ?? 1;
            int pageSize   = 5;

            //NEW OR CURRENT --> FILTER & SORT
            filter  = filter == null ? cFilter : filter;
            sortDir = sortDir == null ? cSortDir : sortDir;

            //QUERY
            var query = from a in ent.Resolve <Role>().AsQueryable()
                        select new
            {
                RoleId   = a.RoleId,
                RoleName = a.RoleName,
                Date     = a.DtCrt
            };

            //CUSTOM FILTER
            if (!string.IsNullOrEmpty(filter))
            {
                query = query.Where(x => x.RoleName.Contains(filter));
            }

            //ORDER BY & TOOGLE SORT DIRECTION
            query = query.OrderByField(sortKey, sortDir == "ASC" ? true : false);

            //GET PAGING
            var pagingResult = query.ToPaging(pageNumber, pageSize);

            //Map to VIEW MODEL
            UserRoleViewPaging pagingList = new UserRoleViewPaging();

            pagingList.Paging = pagingResult;
            pagingList.Data   = new List <UserRoleViewModel>();


            //pagingList.Data = pagingResult.Cast<UserRoleViewModel>().ToList();

            //var xx = pagingResult.Select(s => new { RoleId = s.RoleId, RoleName = s.RoleName }).ToList();
            //List<object> data = pagingResult.Cast<object>().ToList();


            //var listFiles = new List<UserRoleViewModel>();
            //listFiles = new BindingList<UserRoleViewModel>(pagingResult);



            ////pagingList.Data = data.ToList();

            ////pagingList.Data = new List<UserRoleViewModel>();

            ////EmployeeViewItem employeeViewItem = Mapper.Map<Employee, Employee>(employee);

            foreach (var item in pagingResult)
            {
                UserRoleViewModel data = new UserRoleViewModel();
                data.RoleId    = item.RoleId;
                data.FirstName = item.RoleName;
                data.LastName  = item.RoleName;
                data.BirthDate = item.Date;
                data.Email     = item.RoleName;
                pagingList.Data.Add(data);
            }

            ViewBag.cSortDir = sortDir;                           //buat jaga kondisi sort
            ViewBag.SortDir  = sortDir == "ASC" ? "DESC" : "ASC"; //buat bolak balikin (Toogle)
            ViewBag.SortKey  = sortKey;
            ViewBag.cFilter  = filter;

            return(View(pagingList));



            //var queryPaged = query.ToPaging(pageNumber, pageSize);

            //List<UserRoleViewModel> listData = new List<UserRoleViewModel>();
            //foreach (var item in queryPaged)
            //{
            //    UserRoleViewModel data = new UserRoleViewModel();
            //    data.RoleId = item.RoleId;
            //    data.FirstName = item.RoleName;
            //    data.LastName = item.RoleName;
            //    data.BirthDate = item.Date;
            //    data.Email = item.RoleName;
            //    listData.Add(data);
            //}

            //return View(queryPaged);
            //var vm = Mapper.Map<IEnumerable<queryPaged>, IEnumerable<UserRoleViewModel>>(queryPaged.ToArray());

            //datanya.listDataViewModel = query.ToPaging(pageNumber, pageSize).ToList();

            //ViewBag.cSortDir = sortDir; //buat jaga kondisi sort
            //ViewBag.SortDir = sortDir == "ASC" ? "DESC" : "ASC";  //buat bolak balikin (Toogle)
            //ViewBag.SortKey = sortKey;
            //ViewBag.cFilter = filter;

            //return View(query.ToPaging(pageNumber, pageSize));

            //query = query.OrderByField(sortKey, sortDir == "ASC" ? true : false);

            //List<PagingUserViewModel> listData = new List<PagingUserViewModel>();
            //var result = query.ToPaging(pageNumber, pageSize)

            //PagingUserViewModel data = null;

            //foreach (var item in result)
            //{
            //    data = new PagingUserViewModel();
            //    data.RoleId = int.Parse(item.RoleId.ToString());
            //    data.FirstName = item.FirstName.ToString();
            //    data.LastName = item.LastName.ToString();
            //    data.BirthDate = DateTime.Parse(item.BirthDate.ToString());
            //    data.Email = item.Email.ToString();
            //    listData.Add(data);
            //}
            //return View(listData);
        }
示例#7
0
 //View untuk melihat Daftar MO, bisa pilih set prioritas
 public List <string> GetListMO()
 {
     //bisa dimodifikasi kebutuhan view nya di depan hanya lihat MO atau yg lain
     return(entPreparation.Resolve <OracleHeader>().GetAll(x => x.IsProcessed == false).Select(x => x.MoNumber).Distinct().ToList());
 }
        public List <Role> GetUserRoleList()
        {
            List <Role> result = entAccountManagement.Resolve <Role>().GetAll().OrderBy(x => x.RoleName).ToList();

            return(result);
        }
        //Function
        private List <Role> GetUserRoleList()
        {
            List <Role> result = ent.Resolve <Role>().GetAll().OrderBy(x => x.RoleName).ToList();

            return(result);
        }
        public ViewResult Index(int?page, string filter, string cFilter, string sortKey, string sortDir, string cSortDir)
        {
            //DEFAULT
            if (sortKey == null && sortDir == null)
            {
                sortKey = ViewBag.SortKey = "TerminalId";                                               //yang harus diisi
                sortDir = "ASC";
            }

            //Page
            page = filter == null ? page : 1;
            int pageNumber = page ?? 1;
            int pageSize   = 5;                                                                     //yang harus diisi

            //NEW OR CURRENT --> FILTER & SORT
            filter  = filter == null ? cFilter : filter;
            sortDir = sortDir == null ? cSortDir : sortDir;

            //QUERY
            var query = from a in ent.Resolve <TerminalConfiguration>().AsQueryable()                       //yang harus dibikin
                        select new
            {
                TerminalId          = a.TerminalId,
                TerminalCategory    = a.TerminalCategory,
                TerminalGroup       = a.TerminalGroup,
                TerminalDescription = a.TerminalDescription,
                TerminalLocation    = a.TerminalLocation,
                IsAllergen          = a.IsAllergen,
                IsActive            = a.IsActive
            };

            //CUSTOM FILTER
            if (!string.IsNullOrEmpty(filter))
            {
                query = query.Where(x => x.TerminalCategory.Contains(filter) || x.TerminalLocation.Contains(filter));           //yang harus ditentukan
            }

            //ORDER BY & TOOGLE SORT DIRECTION
            query = query.OrderByField(sortKey, sortDir == "ASC" ? true : false);

            //GET PAGING
            var pagingResult = query.ToPaging(pageNumber, pageSize);

            //Map to VIEW MODEL
            TerminalConfigurationViewPaging pagingList = new TerminalConfigurationViewPaging();

            pagingList.Paging = pagingResult;
            pagingList.Data   = new List <TerminalConfigurationViewModel>();

            foreach (var item in pagingResult)
            {
                TerminalConfigurationViewModel data = new TerminalConfigurationViewModel();
                data.TerminalId          = item.TerminalId;
                data.TerminalCategory    = item.TerminalCategory;
                data.TerminalDescription = item.TerminalDescription;
                data.TerminalGroup       = item.TerminalGroup;
                data.TerminalLocation    = item.TerminalLocation;
                data.IsAllergen          = item.IsAllergen;
                data.IsActive            = item.IsActive;
                pagingList.Data.Add(data);
            }


            //Ga usah dirubah
            ViewBag.cSortDir = sortDir;                           //buat jaga kondisi sort
            ViewBag.SortDir  = sortDir == "ASC" ? "DESC" : "ASC"; //buat bolak balikin (Toogle)
            ViewBag.SortKey  = sortKey;
            ViewBag.cFilter  = filter;


            ViewBag.FormName = "Terminal Configuration";
            return(View(pagingList));
        }
        public List <GeneralSetting> GetListTerminalId()
        {
            List <GeneralSetting> result = entTerminal.Resolve <GeneralSetting>().GetAll(x => x.GSCode == "TERMINAL_ID").ToList();

            return(result);
        }
示例#12
0
        public void RequestTask(string TerminalId, int UserId)
        {
            Int64  MOQueueId = 0;
            string MONumber  = "";
            //BELUM!! Seharusnya digrouping terlebih dahulu terhadap Nomor MO, dengan default by : First In First Out DAN Skala Prioritas MO, tetapi harus selesai per TASK
            //Ketika Processed jadi TaskTimbang, masukin table QueueMO isinya: MONumber, IsPriority, Sequence, status.

            //1. Pertama cari yang on progress (status = "EXE")
            MOQueue moOnProgress = entTerminal.Resolve <MOQueue>().Get(x => x.Status == "EXE");

            //2. Jika ada yg on Progress maka selesaikan
            if (moOnProgress != null)
            {
                MOQueueId = moOnProgress.MOQueueId;
                MONumber  = moOnProgress.MoNumber;
            }
            else
            {
                //3. Jika ga ada yang sedang dikerjakan, ambil yang prioritas utama, urutan berdasarkan MOQueueId
                MOQueue moPriority = entTerminal.Resolve <MOQueue>().GetAll(x => x.Status == "NEW" && x.IsPriority == true).OrderBy(x => x.MOQueueId).FirstOrDefault();

                if (moPriority != null)
                {
                    MOQueueId = moPriority.MOQueueId;
                    MONumber  = moPriority.MoNumber;
                }
                else
                {
                    //4. Jika ga ada yang prioritas, ambil MO paling pertama masuk FIFO, berdasarkan urutan Execute Date & MOQueueId
                    MOQueue moFifo = entTerminal.Resolve <MOQueue>().GetAll(x => x.Status == "NEW").OrderBy(x => x.ExecuteDate).ThenBy(x => x.MOQueueId).FirstOrDefault();
                    if (moFifo != null)
                    {
                        MOQueueId = moFifo.MOQueueId;
                        MONumber  = moFifo.MoNumber;
                    }
                    else
                    {
                        //Tidak ada MO yang harus dikerjakan
                    }
                }
            }

            if (MONumber != "")
            {
                //IsProcessed True artinya sudah dibentuk TaskTimbang
                List <Int64> listOracleHId = entTerminal.Resolve <OracleHeader>().GetAll(x => x.MoNumber == MONumber && x.IsProcessed == true).Select(x => x.OracleHeaderId).ToList();

                //Cek dulu apakah semua Task Timbang untuk MO Number ini sudah diproses semua atau belum, jika sudah semua TMB atau COM, update MOQueue status jadi COM
                int taskPending = entTerminal.Resolve <TaskTimbang>().GetAll(x => listOracleHId.Contains(x.OracleHeaderId) && x.Status.Contains("PREP")).Count();

                if (taskPending > 0)
                {
                    //Get Semua Data Terminal Configuration Terlebih dahulu
                    List <TerminalConfiguration> listAllTerminal = entTerminal.Resolve <TerminalConfiguration>().GetAll();

                    //Terminal Requester
                    TerminalConfiguration terminal = listAllTerminal.Where(x => x.TerminalId == TerminalId).FirstOrDefault();

                    if (terminal.IsActive)
                    {
                        //Get (Task Allergen / Non Allergen) & sesuai dengan type timbangan (B / K)
                        var listItemPeMO = (from a in entTerminal.Resolve <TaskTimbang>().AsQueryable()
                                            .Where(x => listOracleHId.Contains(x.OracleHeaderId) && x.IsAllergen == terminal.IsAllergen && x.Type == terminal.TerminalCategory)
                                            group a by new { a.ItemCode } into g
                                            orderby g.Count(x => x.ItemCode != null) descending
                                            select new
                        {
                            ItemCode = g.Key.ItemCode,
                            Qty = g.Count(x => x.ItemCode != null),
                            TerminalAssign = g.Count(x => x.TerminalId != null)
                        }).ToList();


                        //var listItemPeMO = (from a in entTerminal.Resolve<TaskTimbang>().AsQueryable()
                        //                .Where(x => listOracleHId.Contains(x.OracleHeaderId) && x.Status == "PREP" && x.IsAllergen == terminal.IsAllergen && x.Type == terminal.TerminalCategory)
                        //                    group a by a.ItemCode into g
                        //                    let qty = g.Count()
                        //                    orderby qty descending
                        //                    select new { ItemCode = g.Key, Qty = qty }).ToList();

                        //jika sudah tidak ada Item lain yang kosong, maka boleh cross Item
                        bool allowCrossItem = listItemPeMO.Where(x => x.TerminalAssign == 0).Count() > 0 ? false : true;


                        //Bagi Task
                        foreach (var item in listItemPeMO)
                        {
                            //Daftar Terminal yang sedang Execute Item Code ini
                            List <TaskTimbang> listTaskTimbangPerItem = entTerminal.Resolve <TaskTimbang>().GetAll(x => x.ItemCode == item.ItemCode.ToString() && x.Type == terminal.TerminalCategory);
                            List <string>      listTerminalActive     = listTaskTimbangPerItem.Where(x => x.ItemCode == item.ItemCode.ToString() && x.TerminalId != null && x.Type == terminal.TerminalCategory && x.Status == "TMB").Select(x => x.TerminalId).Distinct().ToList();
                            List <int?>        terminalGroupActive    = listAllTerminal.Where(x => listTerminalActive.Contains(x.TerminalId)).Select(x => x.TerminalGroup).Distinct().ToList();
                            int taskLeft = listTaskTimbangPerItem.Where(x => x.ItemCode == item.ItemCode.ToString() && x.TerminalId == null && x.Type == terminal.TerminalCategory && x.Status == "PREP").Count();

                            if (taskLeft > 0 && (terminalGroupActive.Contains(terminal.TerminalGroup) || listTerminalActive.Count == 0 || allowCrossItem))
                            {
                                //Masih ada Item tersebut yang belum ditimbang, kasi task yang sama karena 1 group
                                //kasi task sejumlah settingan, perhitungkan juga sisa tasknya jika < n%, kasi semua langsung
                                int taskTimbangCount = int.Parse(GS.GetValue("TASK_TIMBANG_COUNT"));

                                decimal percentage = ((Convert.ToDecimal(taskLeft) - Convert.ToDecimal(taskTimbangCount)) / Convert.ToDecimal(taskTimbangCount) * 100);

                                List <Int64> taskIdToAssign = new List <Int64>();

                                if (percentage < decimal.Parse(GS.GetValue("TASK_LEFT_PERCENTAGE")))
                                {
                                    //Set semua TASK sesuai taskLeft
                                    taskIdToAssign = listTaskTimbangPerItem.Where(x => x.ItemCode == item.ItemCode.ToString() && x.TerminalId == null && x.Status == "PREP").Select(x => x.TaskTimbangId).ToList();
                                }
                                else
                                {
                                    //Set jumlah TASK sesuai taskTimbangCount
                                    taskIdToAssign = listTaskTimbangPerItem.Where(x => x.ItemCode == item.ItemCode.ToString() && x.TerminalId == null && x.Status == "PREP").OrderBy(x => x.Seq).Take(taskTimbangCount).Select(x => x.TaskTimbangId).ToList();
                                }

                                //Update TaskTimbang, assign to Terminal
                                entTerminal.StartTransaction();

                                //update Status MOQueue jadi EXEcute
                                MOQueue queue = entTerminal.Resolve <MOQueue>().Get(x => x.MOQueueId == MOQueueId);
                                queue.Status = "EXE";

                                //Assign Task to Terminal Timbang
                                List <TaskTimbang> taskTimbangToAssign = entTerminal.Resolve <TaskTimbang>().GetAll(x => taskIdToAssign.Contains(x.TaskTimbangId));
                                DateTime           executeDate         = DateTime.Now;

                                taskTimbangToAssign.ForEach(x =>
                                {
                                    x.TerminalId  = terminal.TerminalId;
                                    x.UserId      = UserId;
                                    x.ExecuteDate = executeDate;
                                    x.Status      = "TMB";
                                });

                                entTerminal.Save(TransactionAttribute.Commit);
                                break;
                            }
                        }
                    }
                    else
                    {
                        //ERROR : Terminal Tidak Active
                    }
                }
                else
                {
                    entTerminal.StartTransaction();
                    //update Status MOQueue jadi EXEcute
                    MOQueue queue = entTerminal.Resolve <MOQueue>().Get(x => x.MOQueueId == MOQueueId);
                    queue.Status = "COM";
                    entTerminal.Save(TransactionAttribute.Commit);
                }
            }
        }