Exemplo n.º 1
0
        /// <summary>
        /// Recorre el detalle de lanzamiento para ejecutar el procedimiento DAL de Insert Lanzamiento Detalle.
        /// Agrupa el detalle de lanzamiento para generar una lista de tipo LanzamientoCabDTO, para recorrerla junto al
        /// compuesto de lanzamiento en el caso haya datos, e ir llamando al procedimiento DAL de Insert Lanzamiento Compuesto
        /// por cada objeto de tipo LanzamientoCompDTO creado.
        /// </summary>
        /// <param name="listLanzamientoDet">Lista genérica de tipo LanzamientoDetDTO con el detalle del lanzamiento</param>
        /// <param name="listMaterialPorColor">Lista genérica de tipo MaterialPorColorDTO con el compuesto del lanzamiento</param>
        /// <param name="_user">Nombre de Usuario</param>
        /// <returns>Variable de tipo int con el conteo de ingresos realizados.</returns>
        public int IngresarLanzamiento(List <LanzamientoDetDTO> listLanzamientoDet, List <MaterialPorColorDTO> listMaterialPorColor, string _user)
        {
            int nroRegistros = 0;

            foreach (LanzamientoDetDTO det in listLanzamientoDet)
            {
                if (_lanzamientoDal.InsertLanzamientoDet(det) > 0)
                {
                    nroRegistros++;
                }
            }
            List <LanzamientoCabDTO> listLanzamientoCab = listLanzamientoDet
                                                          .GroupBy(x => x.NumLanzamiento)
                                                          .Select(g => new LanzamientoCabDTO
            {
                NumDocumento   = g.Max(x => x.NumDocumento),
                NumLanzamiento = g.Key,
                Fecha          = g.Max(x => x.FechaIngreso),
                Usuario        = g.Max(x => x.Usuario)
            }).ToList();

            foreach (LanzamientoCabDTO cab in listLanzamientoCab)
            {
                _lanzamientoDal.InsertLanzamientoCab(cab);
            }
            //Evaluar si hay colores combinados agregados
            if (listMaterialPorColor.Count > 0)
            {
                //Agrupar LanzamientoDetalle por Orden
                var AgrupadoOrdenLanzDet = from data in listLanzamientoDet.AsEnumerable()
                                           group data by new
                {
                    orden = data.Orden,
                } into grupo
                    select new
                {
                    NumDocumento   = grupo.Max(x => x.NumDocumento),
                    NumLanzamiento = grupo.Max(x => x.NumLanzamiento),
                    Orden          = grupo.Key.orden,
                    Maquina        = grupo.Max(x => x.Maquina),
                    Color          = grupo.Max(x => x.Color),
                    Modelo         = grupo.Max(x => x.Modelo),
                    CodProducto    = grupo.Max(x => x.CodProducto),
                    FechaIngreso   = grupo.Max(x => x.FechaIngreso),
                    HoraIngreso    = grupo.Max(x => x.HoraIngreso),
                    FechaSolicitud = grupo.Max(x => x.FechaSolicitud)
                };
                //Agrupar LanzamientoDetalle por Color y Sumar pesos para Lanzamiento Compuesto
                var AgrupadoColorLanzDet = from ld in listLanzamientoDet.AsEnumerable()
                                           group ld by new
                {
                    color = ld.Color
                } into grupo
                    select new
                {
                    color = grupo.Key.color,
                    kilos = grupo.Sum(x => x.KilosTot)
                };

                foreach (var item in AgrupadoOrdenLanzDet)
                {
                    int secuencia = 1;
                    var listFiltroMaterialPorColor = listMaterialPorColor.Where(x => x.ColorBase == item.Color).ToList();

                    var kilosPorColor = AgrupadoColorLanzDet
                                        .FirstOrDefault(x => x.color == item.Color).kilos.ToString();

                    foreach (MaterialPorColorDTO matCol in listFiltroMaterialPorColor)
                    {
                        decimal            calculoKilos = (decimal.Parse(kilosPorColor) / 100) * matCol.Porcentaje;
                        LanzamientoCompDTO lanzComp     = new LanzamientoCompDTO()
                        {
                            NumContrato           = item.NumDocumento,
                            NumLanzamiento        = item.NumLanzamiento,
                            Orden                 = item.Orden,
                            Maquina               = char.Parse(item.Maquina),
                            Color                 = matCol.Color,
                            Calidad               = matCol.Calidad,
                            Secuencia             = secuencia,
                            Modelo                = item.Modelo,
                            CodProducto           = matCol.CodProducto,
                            Usuario               = _user,
                            FechaIngreso          = item.FechaIngreso,
                            FechaAtencion         = item.FechaSolicitud,
                            HoraIngreso           = item.HoraIngreso,
                            CodProductoSolicitado = item.CodProducto,
                            Porcentaje            = matCol.Porcentaje,
                            Kilos                 = Math.Round(calculoKilos, 6)
                        };
                        //Insertar Lanzamiento Compuesto en BD
                        _lanzamientoDal.InsertLanzamientoComp(lanzComp);
                        secuencia++;
                    }
                }
            }
            return(nroRegistros);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Ejecuta una consulta de sinserción en la tabla Lanzamiento_Compuesto.
        /// </summary>
        /// <param name="_lanzComp">Objeto LanzamientoCompDTO</param>
        /// <returns>Variable de tipo int con la cantidad de registros ingresados.</returns>
        public int InsertLanzamientoComp(LanzamientoCompDTO _lanzComp)
        {
            List <SqlParameter> _sqlParam = new List <SqlParameter>();

            string query = @"
                insert into Lanzamiento_Compuesto(
	                almacen, tipo_movimiento, numero_documento, No_Lanzamiento, Orden, contrato, Color, Calidad, secuencia,
	                grupo_talla, modelo, Cod_Producto, kilos9, unidmin, jornal, usuario, fecha_ingreso, hora_ingreso, 
                    costohora, Cod_Producto_Solicitado, Kilos, Porcentaje, Fecha_Solicitud, Fecha_Atencion
                )
                values(
	                0, 'LAN', @NumContrato, @NumLanzamiento, @Orden, @Maquina, @Color, @Calidad, @Secuencia, 
                    '', @Modelo, @CodProducto, 0, 0, 0, @Usuario, convert(date, @FechaIngreso), @HoraIngreso, 
                    0, @CodProductoSol, @Kilos, @Porcentaje, convert(date, @FechaSolicitud), convert(date, @FechaAtencion)
                )";

            _sqlParam.Add(new SqlParameter("@NumContrato", SqlDbType.Int)
            {
                Value = _lanzComp.NumContrato
            });
            _sqlParam.Add(new SqlParameter("@NumLanzamiento", SqlDbType.SmallInt)
            {
                Value = _lanzComp.NumLanzamiento
            });
            _sqlParam.Add(new SqlParameter("@Orden", SqlDbType.VarChar)
            {
                Value = _lanzComp.Orden
            });
            _sqlParam.Add(new SqlParameter("@Maquina", SqlDbType.Char)
            {
                Value = _lanzComp.Maquina
            });
            _sqlParam.Add(new SqlParameter("@Color", SqlDbType.VarChar)
            {
                Value = _lanzComp.Color
            });
            _sqlParam.Add(new SqlParameter("@Calidad", SqlDbType.VarChar)
            {
                Value = _lanzComp.Calidad
            });
            _sqlParam.Add(new SqlParameter("@Secuencia", SqlDbType.SmallInt)
            {
                Value = _lanzComp.Secuencia
            });
            _sqlParam.Add(new SqlParameter("@Modelo", SqlDbType.VarChar)
            {
                Value = _lanzComp.Modelo
            });
            _sqlParam.Add(new SqlParameter("@CodProducto", SqlDbType.VarChar)
            {
                Value = _lanzComp.CodProducto
            });
            _sqlParam.Add(new SqlParameter("@Usuario", SqlDbType.VarChar)
            {
                Value = _lanzComp.Usuario
            });
            _sqlParam.Add(new SqlParameter("@FechaIngreso", SqlDbType.DateTime)
            {
                Value = _lanzComp.FechaIngreso
            });
            _sqlParam.Add(new SqlParameter("@HoraIngreso", SqlDbType.VarChar)
            {
                Value = _lanzComp.HoraIngreso
            });
            _sqlParam.Add(new SqlParameter("@CodProductoSol", SqlDbType.VarChar)
            {
                Value = _lanzComp.CodProductoSolicitado
            });
            _sqlParam.Add(new SqlParameter("@Kilos", SqlDbType.Float)
            {
                Value = _lanzComp.Kilos
            });
            _sqlParam.Add(new SqlParameter("@Porcentaje", SqlDbType.Real)
            {
                Value = _lanzComp.Porcentaje
            });
            _sqlParam.Add(new SqlParameter("@FechaSolicitud", SqlDbType.DateTime)
            {
                Value = _lanzComp.FechaAtencion
            });
            _sqlParam.Add(new SqlParameter("@FechaAtencion", SqlDbType.DateTime)
            {
                Value = _lanzComp.FechaAtencion
            });

            return(_trans.ExecuteQuery(query, _sqlParam));
        }