public void execute(Planificacion planificacion, int sumaBloqueActual, int bloqueActual, HojaBultos bulto)
        {
            var cantidadParaCompletarElBloque = planificacion.datos.capacidadXHora - sumaBloqueActual;

            if (cantidadParaCompletarElBloque > bulto.cantidadRestante)
            {
                var hojaBloques = new MyHojaBloques()
                {
                    bloque = bloqueActual,
                    capaBulto =bulto.numeroSeccion+"-"+ bulto.numeroBultos + bulto.capaCorte,
                    cantidad = bulto.cantidadRestante,
                    corte = bulto.codigoCorte,
                    seccion = bulto.numeroSeccion,
                    serie = bulto.serie,
                    color = planificacion.datos.color,
                    semana = planificacion.datos.semana,
                    year = planificacion.datos.year,
                    tallaCompleta = bulto.tallaCompleta

                };

                bulto.cantidadRestante = 0;
                planificacion.add(hojaBloques);

                isExecute = true;
            }
        }
예제 #2
0
        public void runRules(Planificacion planificacion)
        {
            _actualizarValoresRestantes.execute(planificacion);
            _verificarSerieConsecutiva.execute(planificacion);
            _yaSeEncuetraCompletado.execute(planificacion);

            planificar(planificacion);
        }
예제 #3
0
        public void execute(Planificacion planificacion)
        {
            var sum = planificacion.bloques.Where(x => x.bloque == 44).Sum(x => x.cantidad);

           if (sum == planificacion.datos.capacidadXHora)
           {
               throw new Exception("La planificación esta completa.");
           }
        }
 public void execute(Planificacion planificacion)
 {
     var bulto =planificacion.bultos.Where(x => x.cantidadRestante != 0).ToList()[0];
     var ultimo = planificacion.bloques.LastOrDefault(x => x.serie != 0);
     
     if (ultimo != null && ultimo.serie + 1 != bulto.serie)
     {
         throw new Exception(bulto.codigoCorte + " con serie incorrecta");
     }
 }
예제 #5
0
        private int getBloque(Planificacion planificacion)
        {
            if (!planificacion.bloques.Any()) return 1;
            var miBloque = planificacion.bloques.LastOrDefault().bloque;

            var sum = planificacion.bloques.Where(x => x.bloque == miBloque).Sum(x => x.cantidad);
            if (sum == planificacion.datos.capacidadXHora)
            {
                miBloque = miBloque + 1;
            }
            return miBloque;
        }
 public void execute(Planificacion planificacion)
 {
     foreach (var bloque in planificacion.bloques)
     {
         foreach (var bulto in planificacion.bultos)
         {
             if (bloque.capaBulto == bulto.capaCorte && bloque.seccion == bulto.numeroSeccion)
             {
                 bulto.cantidadRestante = bulto.cantidadRestante - bloque.cantidad;
             }
         }
     }
 }
예제 #7
0
        public IEnumerable<MyHojaBloques> getPlanificacion(Planificacion planificacion)
        {

            planificacion.bultos =
                _contexto.CortesDisponiblesParaPlanificar_vws.Where(x => x.codigoCorte == planificacion.datos.corte)
                         .Select(x => Mapper.DynamicMap<HojaBultos>(x))
                         .ToList()
                         .OrderBy(x => x.serie)
                         .ToList();

            _strategyCaller.runRules(planificacion);



            return planificacion.bloques;
        }
예제 #8
0
        private void planificar(Planificacion planificacion, bool continuar = true)
        {
            var vaAContinuar = true;
            if (planificacion.bultos.Count(x => x.cantidadRestante > 0) == 0 || continuar == false)
            {

            }
            else
            {   var bloqueAUtilizar = getBloque(planificacion);
                
                if (bloqueAUtilizar >44)
                {
                    vaAContinuar = false;
                }
                else
                {
                    var bulto = planificacion.bultos.Where(x => x.cantidadRestante > 0).ToList()[0];
                 
                    var sum = planificacion.bloques.Where(x => x.bloque == bloqueAUtilizar).Sum(x => x.cantidad);

                    if (sum < planificacion.datos.capacidadXHora)
                    {
                       // var cantidadParaCompletarElBloque = planificacion.datos.capacidadXHora - sum;

                        foreach (var strategy in _strategies)
                        {
                            strategy.execute(planificacion,sum,bloqueAUtilizar,bulto);
                            if (strategy.isExecute) break;

                        }

                        foreach (var strategy in _strategies)
                        {
                            strategy.isExecute = false;
                        }
                    }

                }
                planificar(planificacion, vaAContinuar);
            }
        }
예제 #9
0
 protected bool Equals(Planificacion other)
 {
     return bloques.Equals(other.bloques) && datos.Equals(other.datos);
 }
예제 #10
0
        public JsonResult agregarAPlanificacion(ModelHojaBloques model, IEnumerable<MyHojaBloques> bloques)
        {
            string mensajeEnviado = "";
            bool isCreado = true;
           

            IEnumerable<MyHojaBloques> nuevosBloques = null;
            var planificacion = new Planificacion();
            planificacion.bloques = bloques == null ? new List<MyHojaBloques>() : bloques.ToList();
            planificacion.datos = model;
            try
            {
                nuevosBloques = _repositorio.getPlanificacion(planificacion);
            }
            catch (Exception ex)
            {

                mensajeEnviado = "Error: " + ex.Message;
                isCreado = false;
            }
            finally
            {
                if (isCreado)
                    mensajeEnviado = planificacion.mensaje;
            }


            return Json(new {success = isCreado, mensaje = mensajeEnviado, listaBloques = nuevosBloques});
        }
예제 #11
0
        private void planificar(Planificacion planificacion, bool continuar = true)
        {
            var vf = false;
            var vaAContinuar = true;
            if (planificacion.bultos.Count(x => x.cantidadRestante > 0) == 0 || continuar == false)
            {

            }
            else
            {
                var bulto = planificacion.bultos.Where(x => x.cantidadRestante > 0).ToList()[0];

                int bloqueAUtilizar = getBloque(planificacion);
                if (bloqueAUtilizar > 44)
                {
                    vaAContinuar = false;
                }
                else
                {

                    var sum = planificacion.bloques.Where(x => x.bloque == bloqueAUtilizar).Sum(x => x.cantidad);

                    if (sum < planificacion.datos.capacidadXHora)
                    {
                        var cantidadParaCompletarElBloque = planificacion.datos.capacidadXHora - sum;

                        if (cantidadParaCompletarElBloque == bulto.cantidadRestante)
                        {

                            var hojaBloques = new MyHojaBloques()
                            {
                                bloque = bloqueAUtilizar,
                                capaBulto = bulto.capaCorte,
                                cantidad = cantidadParaCompletarElBloque,
                                corte = bulto.codigoCorte,
                                seccion = bulto.numeroSeccion,
                                serie = bulto.serie

                            };
                            bulto.cantidadRestante = 0;
                            planificacion.add(hojaBloques);
                            vf = true;
                        }


                        if (cantidadParaCompletarElBloque > bulto.cantidadRestante && vf == false)
                        {

                            var hojaBloques = new MyHojaBloques()
                                {
                                    bloque = bloqueAUtilizar,
                                    capaBulto = bulto.capaCorte,
                                    cantidad = bulto.cantidadRestante,
                                    corte = bulto.codigoCorte,
                                    seccion = bulto.numeroSeccion,
                                    serie = bulto.serie

                                };
                            bulto.cantidadRestante = 0;
                            planificacion.add(hojaBloques);
                            vf = true;
                        }

                        if (cantidadParaCompletarElBloque < bulto.cantidadRestante && vf == false)
                        {
                            var hojaBloques = new MyHojaBloques()
                                {
                                    bloque = bloqueAUtilizar,
                                    capaBulto = bulto.capaCorte,
                                    cantidad = cantidadParaCompletarElBloque,
                                    corte = bulto.codigoCorte,
                                    seccion = bulto.numeroSeccion,
                                    serie = bulto.serie

                                };
                            bulto.cantidadRestante = bulto.cantidadRestante - cantidadParaCompletarElBloque;
                            planificacion.add(hojaBloques);
                        }

                    }

                }
                planificar(planificacion,vaAContinuar);
            }
        }
예제 #12
0
        private Planificacion getPlanificacion()
        {
            var planificacion = new Planificacion();
            planificacion.datos = new ModelHojaBloques(){capacidadXHora = 30,corte = "FAS-039",semana = 1,year = 2012,color = "rojo"};
            planificacion.bloques = new List<MyHojaBloques>()
                {
                    new MyHojaBloques(){bloque = 1,seccion = 1,capaBulto = "A",cantidad = 30,color = "Verde",corte = "FAS-039",serie = 6236,semana = 1,tallaCompleta = "(150-33) 2/3",year = 2012}
                   // new HojaBloques(){bloque = 1,seccion = 1,capaBulto = "B",cantidad = 24,color = "Verde",corte = "FAS-039",serie = 6237,semana = 1,tallaCompleta = "(150-33) 2/3",year = 2012},


                };
            planificacion.bultos =new List<HojaBultos>()
                {
                    new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 1,capaCorte = "A",tallaCompleta = "(150-33) 2/3",cantidadRestante = 36,serie = 6236},
                    new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 1,capaCorte = "B",tallaCompleta = "(150-33) 2/3",cantidadRestante = 36,serie = 6237},
                    new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 1,capaCorte = "C",tallaCompleta = "(150-33) 2/3",cantidadRestante = 36,serie = 6238},
                    new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 2,capaCorte = "B",tallaCompleta = "(155-35) 4/5",cantidadRestante = 36,serie = 6260},
                    new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 2,capaCorte = "C",tallaCompleta = "(155-35) 4/5",cantidadRestante = 36,serie = 6261},
                    new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 3,capaCorte = "C",tallaCompleta = "(175-33) 2/3",cantidadRestante = 36,serie = 6270},
                    new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 4,capaCorte = "C",tallaCompleta = "(155-33) 2/3",cantidadRestante = 20,serie = 6272},
                    new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 5,capaCorte = "C",tallaCompleta = "(145-33) 2/3",cantidadRestante = 5,serie = 6279},
             
                    new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 1,capaCorte = "A",tallaCompleta = "(155-33) 2/3",cantidadRestante = 36,serie = 6239},
                    new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 1,capaCorte = "B",tallaCompleta = "(155-33) 2/3",cantidadRestante = 36,serie = 6240},
                    new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 1,capaCorte = "C",tallaCompleta = "(155-33) 2/3",cantidadRestante = 36,serie = 6241},
                    new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 2,capaCorte = "B",tallaCompleta = "(160-33) 2/3",cantidadRestante = 36,serie = 6262},
                    new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 2,capaCorte = "C",tallaCompleta = "(160-33) 2/3",cantidadRestante = 36,serie = 6263},
                    new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 3,capaCorte = "C",tallaCompleta = "(180-35) 4/5",cantidadRestante = 36,serie = 6271},
                    new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 4,capaCorte = "C",tallaCompleta = "(160-33) 2/3",cantidadRestante = 20,serie = 6273},
                    new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 5,capaCorte = "C",tallaCompleta = "(145-33) 2/3",cantidadRestante = 5,serie = 6280},
                  
                };


            return planificacion;
        }