private void MapearArticulosEnvases(Envase entidad)
        {
            var drArticulosEnvase = dao.EjecutarConsulta("select * from vacio_art where codigo='" + entidad.Codigo + "'");

            var listaArticulosEnvase = new List <ArticuloEnvase>();

            while (drArticulosEnvase.Read())
            {
                var unidades     = drArticulosEnvase["unidades"].ToString().Trim();
                var codigoArt    = drArticulosEnvase["articulo"].ToString().Trim();
                var valor        = drArticulosEnvase["valor"].ToString().Trim();
                var cargaporfrac = drArticulosEnvase["cargaporfrac"].ToString().Trim();
                var codigoEnvase = drArticulosEnvase["codigo"].ToString().Trim();

                var artEnv = new ArticuloEnvase();

                artEnv.Articulo       = this.BuscarEntidadPorCodigo <Articulo>(codigoArt);
                artEnv.Cantidad       = unidades == "" ? 0 : Int32.Parse(unidades);
                artEnv.PrecioUnitario = valor == "" ? 0 : Decimal.Parse(valor);
                artEnv.Fraccion       = cargaporfrac.Contains("T") ? true : false;
                artEnv.CodigoEnvase   = codigoEnvase;

                listaArticulosEnvase.Add(artEnv);
            }


            listaArticulosEnvase.ForEach(c =>
            {
                if (entidad.Articulos.Any(articulo => articulo.CodigoEnvase == c.CodigoEnvase && articulo.Articulo.Codigo == c.Articulo.Codigo)) //existe y actualizo las props
                {
                    entidad.Articulos.FirstOrDefault(art => art.CodigoEnvase == c.CodigoEnvase && art.Articulo.Codigo == c.Articulo.Codigo).Cantidad       = c.Cantidad;
                    entidad.Articulos.FirstOrDefault(art => art.CodigoEnvase == c.CodigoEnvase && art.Articulo.Codigo == c.Articulo.Codigo).Fraccion       = c.Fraccion;
                    entidad.Articulos.FirstOrDefault(art => art.CodigoEnvase == c.CodigoEnvase && art.Articulo.Codigo == c.Articulo.Codigo).PrecioUnitario = c.PrecioUnitario;
                }
                else
                {
                    entidad.Articulos.Add(c);
                }
            });

            List <ArticuloEnvase> articulosBorrados = new List <ArticuloEnvase>();

            entidad.Articulos.ToList().ForEach(art =>
            {
                if (!listaArticulosEnvase.Any(a => a.CodigoEnvase == art.CodigoEnvase && a.Articulo.Codigo == art.Articulo.Codigo))
                {
                    articulosBorrados.Add(art);
                }
            });

            articulosBorrados.ForEach(artb => entidad.Articulos.Remove(artb));

            drArticulosEnvase.Close();
            drArticulosEnvase.Dispose();
            //dao.Desconectar();
        }
Example #2
0
 public PresentadorArticuloEnvase(ArticuloEnvase DTO)
     : base(DTO)
 {
     this.SetearPresentadores();
 }