Example #1
0
        //Metodo usado para calcular el peso base(1 unidad) para Lanzamiento(Planificacion)
        /// <summary>
        /// Ejecuta un procedimiento de cálculo para hallar el peso base en tallas por unidad de un contrato. Este proceso
        /// es usado por el área de Planificación para el lanzamiento de prendas.
        /// </summary>
        /// <param name="_contratoDetalle">Objeto de tipo ContratoDetalleDTO con el detalle del contrato</param>
        /// <returns>Diccionario de tipo (string, decimal) con los pesos por talla.</returns>
        public Dictionary <string, decimal> CalcularPesosBasePorContratoTalla(ContratoDetalleDTO _contratoDetalle)
        {
            Dictionary <string, decimal> dicKilos = new Dictionary <string, decimal>();
            string modelo = _contratoDetalle.ModeloAA;

            for (int x = 0; x < 9; x++)
            {
                string talla = _contratoDetalle.Tallas[x];
                if (talla != "")
                {
                    dicKilos.Add(talla, PesosPorPieza(talla, 1, modelo, 0).Sum());
                }
            }
            return(dicKilos);
        }
Example #2
0
        /// <summary>
        /// Ejecuta un procedimiento de cálculo para hallar el peso correcto por cada modelo/color a lanzar. Este
        /// proceso es usado por el área de Abastecimiento para el cálculo de materia prima.
        /// </summary>
        /// <param name="_contratoDetalle">Objeto de tipo ContratoDetalleDTO con el detalle del contrato</param>
        /// <returns>Variable de tipo decimal con el peso en kilos del contrato.</returns>
        public decimal CalcularKilosPorContrato(ContratoDetalleDTO _contratoDetalle)
        {
            decimal kilosNecesarios = 0;
            string  modelo          = _contratoDetalle.ModeloAA;

            int[] cantAlanzar = _contratoDetalle.Cantidades;

            for (int x = 0; x < cantAlanzar.Length; x++)
            {
                string talla    = _contratoDetalle.Tallas[x];
                int    cantidad = cantAlanzar[x];
                if (cantidad != 0)
                {
                    kilosNecesarios += PesosPorPieza(talla, cantidad, modelo, 0).Sum();
                }
            }
            return(kilosNecesarios);
        }
Example #3
0
        /// <summary>
        /// Ejecuta un procedimiento DAL de Detalle de Contrato y el resultado es agrupado por los siguientes campos:
        /// [numero_contrato, Tipo_Contrato, Cod_Modelo_AA, Cod_Modelo_CLiente, c_codmat, Cod_Producto, c_codcol, Cod_Color_Cliente,
        /// cod_grupo_tallas, talla1, talla2, talla3, talla4, talla5, talla6, talla7, talla8, talla9, Cod_Proveedor, Cod_Proveedor_2,
        /// Linea, Galga, Titulo]
        /// Luego con el resultado agrupado se pobla un objeto de tipo ContratoDetalleDTO.
        /// </summary>
        /// <param name="_contrato">Número de Contrato</param>
        /// <param name="_agrupacion">Flag de Agrupación</param>
        /// <returns>Lista Genérica de tipo ContratoDetalleDTO con los datos del grupo</returns>
        public List <ContratoDetalleDTO> ListarDetalleContrato(int _contrato, bool _agrupacion)
        {
            DataTable dtReturn = _contratoDal.SelectDetalleContrato(_contrato);

            //Linq to DataTable para agrupar el resultado

            if (_agrupacion)
            {
                var dtAgrupado = from cd in dtReturn.AsEnumerable()
                                 group cd by new
                {
                    numero_contrato    = cd.Field <int>("numero_contrato"),
                    Tipo_Contrato      = cd.Field <string>("Tipo_Contrato"),
                    Cod_Modelo_AA      = cd.Field <string>("Cod_Modelo_AA"),
                    Cod_Modelo_Cliente = cd.Field <string>("Cod_Modelo_Cliente"),
                    c_codmat           = cd.Field <string>("c_codmat"),
                    Cod_Producto       = cd.Field <string>("Cod_Producto"),
                    c_codcol           = cd.Field <string>("c_codcol"),
                    Cod_Color_Cliente  = cd.Field <string>("Cod_Color_Cliente"),
                    cod_grupo_tallas   = cd.Field <string>("cod_grupo_tallas"),
                    talla1             = cd.Field <string>("talla1"),
                    talla2             = cd.Field <string>("talla2"),
                    talla3             = cd.Field <string>("talla3"),
                    talla4             = cd.Field <string>("talla4"),
                    talla5             = cd.Field <string>("talla5"),
                    talla6             = cd.Field <string>("talla6"),
                    talla7             = cd.Field <string>("talla7"),
                    talla8             = cd.Field <string>("talla8"),
                    talla9             = cd.Field <string>("talla9"),
                    Cod_Proveedor      = cd.Field <double>("Cod_Proveedor"),
                    Cod_proveeedor_2   = cd.Field <double>("Cod_proveedor_2"),
                    Linea  = cd.Field <string>("Linea"),
                    Galga  = cd.Field <string>("Galga"),
                    Titulo = cd.Field <string>("Titulo")
                } into grupo
                    select new
                {
                    Item               = grupo.Max(x => x.Field <short>("Item")),
                    numero_contrato    = grupo.Key.numero_contrato,
                    Tipo_Contrato      = grupo.Key.Tipo_Contrato,
                    Cod_Modelo_AA      = grupo.Key.Cod_Modelo_AA,
                    Cod_Modelo_Cliente = grupo.Key.Cod_Modelo_Cliente,
                    c_codmat           = grupo.Key.c_codmat,
                    Cod_Producto       = grupo.Key.Cod_Producto,
                    c_codcol           = grupo.Key.c_codcol,
                    Cod_Color_Cliente  = grupo.Key.Cod_Color_Cliente,
                    cod_grupo_tallas   = grupo.Key.cod_grupo_tallas,
                    talla1             = grupo.Key.talla1 == null ? "" : grupo.Key.talla1,
                    talla2             = grupo.Key.talla2 == null ? "" : grupo.Key.talla2,
                    talla3             = grupo.Key.talla3 == null ? "" : grupo.Key.talla3,
                    talla4             = grupo.Key.talla4 == null ? "" : grupo.Key.talla4,
                    talla5             = grupo.Key.talla5 == null ? "" : grupo.Key.talla5,
                    talla6             = grupo.Key.talla6 == null ? "" : grupo.Key.talla6,
                    talla7             = grupo.Key.talla7 == null ? "" : grupo.Key.talla7,
                    talla8             = grupo.Key.talla8 == null ? "" : grupo.Key.talla8,
                    talla9             = grupo.Key.talla9 == null ? "" : grupo.Key.talla9,
                    C1                 = grupo.Sum(x => x.Field <int>("C1")),
                    C2                 = grupo.Sum(x => x.Field <int>("C2")),
                    C3                 = grupo.Sum(x => x.Field <int>("C3")),
                    C4                 = grupo.Sum(x => x.Field <int>("C4")),
                    C5                 = grupo.Sum(x => x.Field <int>("C5")),
                    C6                 = grupo.Sum(x => x.Field <int>("C6")),
                    C7                 = grupo.Sum(x => x.Field <int>("C7")),
                    C8                 = grupo.Sum(x => x.Field <int>("C8")),
                    C9                 = grupo.Sum(x => x.Field <int>("C9")),
                    Precio_Total       = grupo.Sum(x => x.Field <double>("Precio_Total")),
                    Adicional          = grupo.Sum(x => x.Field <Single>("Adicional")),
                    Cod_Proveedor      = grupo.Key.Cod_Proveedor,
                    Cod_Proveedor_2    = grupo.Key.Cod_proveeedor_2,
                    Linea              = grupo.Key.Linea,
                    Galga              = grupo.Key.Galga,
                    Titulo             = grupo.Key.Titulo,
                    Cant_Contramuestra = int.Parse(grupo.Sum(x => x.Field <int?>("Cant_Contramuestra")).Value.ToString()),
                    Peso_Estimado      = double.Parse(grupo.Sum(x => x.Field <double?>("Peso_Estimado")).Value.ToString()),
                    obs1               = grupo.Max(x => x.Field <string>("obs1")).ToString()
                };
                var ans = dtAgrupado.ToList();
                dtReturn = Helper.ToDataTable(ans);
            }

            List <ContratoDetalleDTO> listContratoDetalle = new List <ContratoDetalleDTO>();

            foreach (DataRow dr in dtReturn.Rows)
            {
                object[] tallas     = dr.ItemArray.Skip(10).Take(9).ToArray();
                object[] cantidades = dr.ItemArray.Skip(19).Take(9).ToArray();

                for (int i = 0; i < tallas.Length; i++)
                {
                    if (tallas[i].Equals(DBNull.Value))
                    {
                        tallas[i] = "";
                    }
                }

                ContratoDetalleDTO contratoDetalle = new ContratoDetalleDTO()
                {
                    Item              = int.Parse(dr["Item"].ToString()),
                    Numero            = int.Parse(dr["numero_contrato"].ToString()),
                    Tipo              = dr["Tipo_Contrato"].ToString(),
                    ModeloAA          = dr["Cod_Modelo_AA"].ToString(),
                    ModeloCliente     = dr["Cod_Modelo_Cliente"].ToString(),
                    CodMaterial       = dr["c_codmat"].ToString(),
                    CodProducto       = dr["Cod_Producto"].ToString(),
                    CodColor          = dr["c_codcol"].ToString(),
                    ColorCliente      = dr["Cod_Color_Cliente"].ToString(),
                    GrupoTallas       = dr["cod_grupo_Tallas"].ToString(),
                    Tallas            = tallas.Cast <string>().ToArray(),
                    Cantidades        = cantidades.Cast <int>().ToArray(),
                    PrecioTotal       = float.Parse(dr["Precio_Total"].ToString()),
                    Adicional         = double.Parse(dr["Adicional"].ToString()),
                    CodProveedor      = float.Parse(dr["Cod_Proveedor"].ToString()),
                    CodProveedor2     = float.Parse(dr["Cod_Proveedor_2"].ToString()),
                    Linea             = dr["Linea"].ToString(),
                    Galga             = dr["Galga"].ToString(),
                    Titulo            = dr["Titulo"].ToString(),
                    CantContramuestra = dr["Cant_Contramuestra"].Equals(DBNull.Value) ? 0 : int.Parse(dr["Cant_Contramuestra"].ToString()),
                    PesoEstimado      = dr["Peso_Estimado"].Equals(DBNull.Value) ? 0 : float.Parse(dr["Peso_Estimado"].ToString()),
                    Observaciones     = dr["obs1"].Equals(DBNull.Value) ? "" : dr["Peso_Estimado"].ToString()
                };
                listContratoDetalle.Add(contratoDetalle);
            }
            return(listContratoDetalle);
        }
Example #4
0
        protected void rblColores_SelectedIndexChanged(object sender, EventArgs e)
        {
            List <ContratoDetalleDTO> _listaContratoDetModelo = ((List <ContratoDetalleDTO>)Session["ListaContratoDetModelo"])
                                                                .Where(x => x.CodColor.Equals(rblColores.SelectedValue)).ToList();

            ContratoDetalleDTO _lanzado = new ContratoDetalleDTO
            {
                Cantidades = _lanzamientoBll.ListarCantidadesLanzadas(int.Parse(hidContrato.Value), lblModelo.Text, rblColores.SelectedValue)
            };

            _listaContratoDetModelo.Add(_lanzado);

            gridCantSolicitadas.DataSource = _listaContratoDetModelo;
            gridCantSolicitadas.DataBind();

            //RECORRER GRID PARA EVALUAR CANTIDADES FALTANTES POR LANZAR
            int[] _cantidadesLanzadas    = new int[9];
            int[] _cantidadesSolicitadas = new int[9];
            int   indice = 1;

            foreach (GridViewRow row in gridCantSolicitadas.Rows)
            {
                if (indice == 1)
                {
                    for (int c = 0; c < 9; c++)
                    {
                        _cantidadesSolicitadas[c] += int.Parse(((Label)row.FindControl("lblCant" + (c + 1))).Text);
                    }
                }
                else if (indice == 2)
                {
                    for (int c = 0; c < 9; c++)
                    {
                        _cantidadesLanzadas[c] += int.Parse(((Label)row.FindControl("lblCant" + (c + 1))).Text);
                    }
                    break;
                }
                indice++;
            }

            txtCant1.Text = (int.Parse(_cantidadesSolicitadas[0].ToString()) - int.Parse(_cantidadesLanzadas[0].ToString())).ToString();
            txtCant2.Text = (int.Parse(_cantidadesSolicitadas[1].ToString()) - int.Parse(_cantidadesLanzadas[1].ToString())).ToString();
            txtCant3.Text = (int.Parse(_cantidadesSolicitadas[2].ToString()) - int.Parse(_cantidadesLanzadas[2].ToString())).ToString();
            txtCant4.Text = (int.Parse(_cantidadesSolicitadas[3].ToString()) - int.Parse(_cantidadesLanzadas[3].ToString())).ToString();
            txtCant5.Text = (int.Parse(_cantidadesSolicitadas[4].ToString()) - int.Parse(_cantidadesLanzadas[4].ToString())).ToString();
            txtCant6.Text = (int.Parse(_cantidadesSolicitadas[5].ToString()) - int.Parse(_cantidadesLanzadas[5].ToString())).ToString();
            txtCant7.Text = (int.Parse(_cantidadesSolicitadas[6].ToString()) - int.Parse(_cantidadesLanzadas[6].ToString())).ToString();
            txtCant8.Text = (int.Parse(_cantidadesSolicitadas[7].ToString()) - int.Parse(_cantidadesLanzadas[7].ToString())).ToString();
            txtCant9.Text = (int.Parse(_cantidadesSolicitadas[8].ToString()) - int.Parse(_cantidadesLanzadas[8].ToString())).ToString();

            //Guardar Cantidades Solicitadas en Variable Global, para luego validar
            Session["arrayCantidadesSolicitadas"] = _cantidadesSolicitadas;

            //CALCULAR KILOS NECESARIOS
            int[] cantidadesAlanzar = new int[] { int.Parse(txtCant1.Text), int.Parse(txtCant2.Text), int.Parse(txtCant3.Text),
                                                  int.Parse(txtCant4.Text), int.Parse(txtCant5.Text), int.Parse(txtCant6.Text),
                                                  int.Parse(txtCant7.Text), int.Parse(txtCant8.Text), int.Parse(txtCant9.Text) };

            Dictionary <string, decimal> pesosBase = Session["dicPesosBase"] as Dictionary <string, decimal>;
            decimal pesoFinal = 0;
            int     ind       = 0;

            foreach (string talla in _listaContratoDetModelo[0].Tallas)
            {
                if (talla != "")
                {
                    pesoFinal = pesoFinal + (pesosBase[talla] * cantidadesAlanzar[ind]);
                }
                ind++;
            }
            lblKgNecesarios.Text = pesoFinal.ToString();

            //EVALUAR SI EL COLOR TIENE COMBINACION
            string color = rblColores.SelectedValue.ToString();

            if (color.Substring(0, 2) == "C0")
            {
                //Limpiar grid de Combinaciones
                gridMaterialColor.DataSource = new DataTable();
                gridMaterialColor.DataBind();
                string correlativoCol = color.Substring(1, color.Length - 1);
                gridMaterialColor.DataSource = _hojaCombinacionesBll.ListarColoresCombinacion(lblModelo.Text, correlativoCol.Trim(), decimal.Parse(lblKgNecesarios.Text));
                gridMaterialColor.DataBind();

                btnMaterialColor.Visible = true;
            }
            else
            {
                btnMaterialColor.Visible = false;
            }
            txtMaterial.Text = lblCodMaterial.Text.Trim() + "-HC-" + lblTitulo.Text.Trim() + "-" +
                               rblColores.SelectedValue.ToString().Trim();
        }