/// <summary> /// Ejecuta un procedimiento DAL de Simulación Detalle, y el resultado lo recorre para acceder a sus datos y construir /// una lista de tipo SimulacionDetDTO. /// </summary> /// <param name="contrato">Número de Contrato</param> /// <param name="modelos">Lista genérica (string) de modelos de prenda</param> /// <returns>Lista genérica de tipo SimulacionDetDTO con el detalle de la simulación.</returns> public List <SimulacionDetDTO> ListarSimulacionMpDetalle(int contrato, List <string> modelos) { DataTable dtSimulacionDetalle = _simulacionDal.SelectSimulacionDetalleAlternativo(contrato, modelos); var _listSimulacion = new List <SimulacionDetDTO>(); foreach (DataRow fila in dtSimulacionDetalle.Rows) { var SimulacionDTO = new SimulacionDetDTO() { NumContrato = int.Parse(fila["nroContrato"].ToString()), Correlativo = int.Parse(fila["Correlativo"].ToString()), NroSimulacion = fila["codSimulacion"].ToString(), NombreMaquina = fila["Maquina"].ToString(), Color = fila["colorBase"].ToString(), CodProducto = fila["codProducto"].ToString(), DescProducto = fila["Material"].ToString(), Modelo = fila["Modelo"].ToString(), KilosSimulado = decimal.Parse(fila["kilosSimulado"].ToString()), PorSeguridad = decimal.Parse(fila["porAdicional"].ToString()), FechaIngreso = DateTime.Parse(fila["fechaIngreso"].ToString()), HoraIngreso = fila["horaIngreso"].ToString(), Usuario = fila["Usuario"].ToString() }; _listSimulacion.Add(SimulacionDTO); } return(_listSimulacion); }
/// <summary> /// Ejecuta una consulta de inserción en la tabla PSIAA.Simulacion_Detalle. /// </summary> /// <param name="simulacionDetDto">Objeto de tipo SimulacionDetDTO</param> /// <returns>Variable de tipo int con la cantidad de registros ingresados.</returns> public int InsertSimulacionDetalleAlternativo(SimulacionDetDTO simulacionDetDto) { List <SqlParameter> _sqlParam = new List <SqlParameter>(); string query = @" insert into PSIAA.Simulacion_Detalle values( @correlativo, @numcontrato, @numsimulacion, @maquina, @colorbase, @codproducto, @material, @modelo, @kilossimulado, @poradicional, @kilostotales, @fechaingreso, @horaingreso, @usuario )"; _sqlParam.Add(new SqlParameter("@correlativo", SqlDbType.Int) { Value = simulacionDetDto.Correlativo }); _sqlParam.Add(new SqlParameter("@numcontrato", SqlDbType.Int) { Value = simulacionDetDto.NumContrato }); _sqlParam.Add(new SqlParameter("@numsimulacion", SqlDbType.VarChar) { Value = simulacionDetDto.NroSimulacion }); _sqlParam.Add(new SqlParameter("@maquina", SqlDbType.VarChar) { Value = simulacionDetDto.NombreMaquina }); _sqlParam.Add(new SqlParameter("@colorbase", SqlDbType.VarChar) { Value = simulacionDetDto.Color }); _sqlParam.Add(new SqlParameter("@codproducto", SqlDbType.VarChar) { Value = simulacionDetDto.CodProducto }); _sqlParam.Add(new SqlParameter("@material", SqlDbType.VarChar) { Value = simulacionDetDto.DescProducto }); _sqlParam.Add(new SqlParameter("@modelo", SqlDbType.VarChar) { Value = simulacionDetDto.Modelo }); _sqlParam.Add(new SqlParameter("@kilossimulado", SqlDbType.Decimal) { Value = simulacionDetDto.KilosSimulado }); _sqlParam.Add(new SqlParameter("@poradicional", SqlDbType.Decimal) { Value = simulacionDetDto.PorSeguridad }); _sqlParam.Add(new SqlParameter("@kilostotales", SqlDbType.Decimal) { Value = simulacionDetDto.TotalKilos }); _sqlParam.Add(new SqlParameter("@fechaingreso", SqlDbType.Date) { Value = simulacionDetDto.FechaIngreso }); _sqlParam.Add(new SqlParameter("@horaingreso", SqlDbType.VarChar) { Value = simulacionDetDto.HoraIngreso }); _sqlParam.Add(new SqlParameter("@usuario", SqlDbType.VarChar) { Value = simulacionDetDto.Usuario }); return(_trans.ExecuteQuery(query, _sqlParam)); }
/// <summary> /// Ejecuta un procedimiento BLL de Detalle de Contrato agrupado para poder calcular los kilos llamando a otro /// procedimiento BLL (Lanzamiento) de Cálculo de kilos por Contrato. /// Recorre el Detalle del contrato para evaluar si el color tiene combinación o es color entero, para ambos, /// se ejecuta segun sea el caso los procedimientos DAL de Productos por Combinacion y Productos por Color Unitario. /// Con ambos resultados de producto se crea un objeto de tipo SimulacionDetDTO, adjuntando datos de máquina de producción /// y kilos calculados, y se procede a listarlos. /// </summary> /// <param name="contrato">Número de Contrato</param> /// <param name="usuario">Nombre de usuario</param> /// <param name="modelos">Lista genércia (string) de modelos de prenda</param> /// <param name="porAdicional">Porcentaje Adicional al cálculo</param> /// <returns>Lista genérica de tipo SimulacionDetDTO con el Cálculo de Materia Prima.</returns> public List <SimulacionDetDTO> ListarCalculoMateriaPrima(int contrato, string usuario, List <string> modelos, decimal porAdicional) { List <SimulacionDetDTO> listSimulacionCalculo = new List <SimulacionDetDTO>(); List <ContratoDetalleDTO> _listContratoDet = _contratoBll.ListarDetalleContrato(contrato, true); //Filtrar contrato por modelos seleccionados _listContratoDet = _listContratoDet.Where(x => modelos.Contains(x.ModeloAA.Trim())).ToList(); List <MaquinaDTO> _listMaquinas = _maquinaBll.ListarMaquinas(); int item = 0; string modeloAnterior = string.Empty; //Ordenar por Modelo _listContratoDet = _listContratoDet.OrderBy(x => x.ModeloAA).ToList(); //Correlativo de Simulacion int _correlativo = int.Parse(_simulacionDal.CorrelativoSimulacion(contrato)) + 1; foreach (var contratoDet in _listContratoDet) { if (_listContratoDet.IndexOf(contratoDet) == 0) { modeloAnterior = contratoDet.ModeloAA; item = 1; } if (modeloAnterior != contratoDet.ModeloAA) { item = item + 1; modeloAnterior = contratoDet.ModeloAA; } decimal kilos = _lanzamientoBll.CalcularKilosPorContrato(contratoDet); string maquina = _listMaquinas.Find(x => x.Codigo == contratoDet.Linea.Trim()).Abreviacion; string nombreMaquina = _listMaquinas.Find(x => x.Codigo == contratoDet.Linea.Trim()).Nombre; if (contratoDet.CodColor.Trim().Substring(0, 2) == "C0") { List <string[]> productos = ListarProductosCombo(contratoDet.ModeloAA.Trim(), contratoDet.CodColor.Trim()); foreach (string[] prod in productos) { var simulacionDetDesplegado = new SimulacionDetDTO() { NumContrato = contratoDet.Numero, Correlativo = _correlativo, NroSimulacion = contratoDet.Numero.ToString() + maquina + ((char)(item + 64)).ToString(), NombreMaquina = nombreMaquina, Color = contratoDet.CodColor, CodProducto = prod[0], DescProducto = prod[1], Modelo = contratoDet.ModeloAA.Trim(), KilosSimulado = Math.Round(kilos * (decimal.Parse(prod[2]) / 100), 3), PorSeguridad = porAdicional, Usuario = usuario, FechaIngreso = DateTime.Now, HoraIngreso = string.Concat(DateTime.Now.ToString("HH:mm:ss")) }; listSimulacionCalculo.Add(simulacionDetDesplegado); } } else { string[] prodMaterialUni = ProductoColorUnitario(contratoDet.ModeloAA.Trim()); if (prodMaterialUni.Length > 1) { var simulacionDet = new SimulacionDetDTO() { NumContrato = contratoDet.Numero, Correlativo = _correlativo, NroSimulacion = contratoDet.Numero.ToString() + maquina + ((char)(item + 64)).ToString(), NombreMaquina = nombreMaquina, Color = contratoDet.CodColor.Trim(), CodProducto = prodMaterialUni[0] + contratoDet.CodColor.Trim(), DescProducto = prodMaterialUni[1], Modelo = contratoDet.ModeloAA.Trim(), KilosSimulado = kilos, PorSeguridad = porAdicional, Usuario = usuario, FechaIngreso = DateTime.Now, HoraIngreso = string.Concat(DateTime.Now.ToString("HH:mm:ss")) }; listSimulacionCalculo.Add(simulacionDet); } } } //DataTable dt = Helper.ToDataTable(listSimulacionCalculo); return(listSimulacionCalculo.OrderBy(x => x.CodProducto).ToList()); }