Ejemplo n.º 1
0
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (!Validaciones())
                return;

            var caracteristicas = new StringBuilder();

            /* int id;
            if (int.TryParse(cboLinea.SelectedValue.ToString(), out id))
            {
                //Validaciones para las caracteristicas segun la linea
                var lineaId = Util.ConvertirEntero(this.cboLinea.SelectedValue);
                var linea = General.GetEntity<Linea>(l => l.LineaID.Equals(lineaId));
                if (linea != null)
                {
                    if (linea.Alto.Equals(true) && this.txtAlto.Text == "")
                        caracteristicas.Append("Alto, ");
                    if (linea.Diametro.Equals(true) && this.txtDiametro.Text == "")
                        caracteristicas.Append("Diametro, ");
                    if (linea.Largo.Equals(true) && this.txtLargo.Text == "")
                        caracteristicas.Append("Largo, ");
                    if (linea.Dientes.Equals(true) && this.txtDientes.Text == "")
                        caracteristicas.Append("Dientes, ");
                    if (linea.Astrias.Equals(true) && this.txtAstrias.Text == "")
                        caracteristicas.Append("Astrias, ");
                    if (linea.Sistema.Equals(true) && Util.ConvertirEntero(this.cboParteSistema.SelectedValue).Equals(1))
                        caracteristicas.Append("Sistema, ");
                    if (linea.Amperaje.Equals(true) && this.txtAmperes.Text == "")
                        caracteristicas.Append("Amperaje, ");
                    if (linea.Voltaje.Equals(true) && this.txtVoltios.Text == "")
                        caracteristicas.Append("Voltaje, ");
                    if (linea.Watts.Equals(true) && this.txtWatts.Text == "")
                        caracteristicas.Append("Watts, ");
                    if (linea.Ubicacion.Equals(true) && Util.ConvertirEntero(this.cboParteUbicacion.SelectedValue).Equals(1))
                        caracteristicas.Append("Ubicacion, ");
                    if (linea.Terminales.Equals(true) && this.txtTerminales.Text == "")
                        caracteristicas.Append("Terminales, ");
                }
            }
            */

            var mensaje = string.Empty;

            if (string.IsNullOrEmpty(caracteristicas.ToString()))
            {
                mensaje = "¿Está seguro de que la información es correcta?";
            }
            else
            {
                mensaje = string.Format("{0}{1}{2}", "Faltan características por llenar, (", caracteristicas.ToString().Substring(0, caracteristicas.ToString().Length - 2), ") ¿Está seguro de que la información es correcta?");
            }

            var res = Util.MensajePregunta(mensaje, GlobalClass.NombreApp);
            if (res == DialogResult.No)
                return;

            object oMotivoFijoCero = null;
            if (this.VerMaxMinFijoCero())
            {
                oMotivoFijoCero = UtilLocal.ObtenerValor("Indica el motivo por el cuál se especificó un MaxMin de cero:", "", MensajeObtenerValor.Tipo.TextoLargo);
                if (oMotivoFijoCero == null)
                    return;
            }

            try
            {
                SplashScreen.Show(new Splash());
                this.btnGuardar.Enabled = false;
                PartePrecio oPartePrecio;
                if (this.EsNuevo)
                {
                    this.oParte = new Parte();
                    oPartePrecio = new PartePrecio();
                }
                else //Modificación
                {
                    oPartePrecio = Datos.GetEntity<PartePrecio>(c => c.ParteID == this.oParte.ParteID && c.Estatus);
                }

                // Se llenan los datos
                oParte.NumeroParte = txtNumeroParte.Text;
                oParte.NombreParte = txtNombreParte.Text;
                oParte.LineaID = Util.Entero(cboLinea.SelectedValue);
                oParte.MarcaParteID = Util.Entero(cboMarca.SelectedValue);
                oParte.SubsistemaID = Util.Entero(cboSubsistema.SelectedValue);
                oParte.ProveedorID = Util.Entero(cboProveedor.SelectedValue);
                oParte.MedidaID = Util.Entero(cboMedida.SelectedValue);
                oParte.ParteEstatusID = Util.Entero(cboEstatus.SelectedValue);
                oParte.AplicaComision = chkAplicaComision.Checked;

                /* Parte.Alto = Util.ConvertirEntero(txtAlto.Text);
                Parte.Largo = Util.ConvertirEntero(txtLargo.Text);
                Parte.Diametro = Util.ConvertirEntero(txtDiametro.Text);
                Parte.Dientes = Util.ConvertirEntero(txtDientes.Text);
                Parte.Astrias = Util.ConvertirEntero(txtAstrias.Text);
                Parte.Amperes = Util.ConvertirEntero(txtAmperes.Text);
                Parte.Voltios = Util.ConvertirEntero(txtVoltios.Text);
                Parte.Watts = Util.ConvertirEntero(txtWatts.Text);
                Parte.Terminales = Util.ConvertirEntero(txtTerminales.Text);
                Parte.Litros = Util.ConvertirEntero(txtLitros.Text);
                */

                oParte.ParteSistemaID = Util.Entero(cboParteSistema.SelectedValue);
                oParte.ParteUbicacionID = Util.Entero(cboParteUbicacion.SelectedValue);

                // Control de Cascos
                this.oParte.EsCasco = (this.cmbEsCascoPara.SelectedValue != null);
                this.oParte.EsCascoPara = (this.oParte.EsCasco.Valor() ? (int?)Util.Entero(this.cmbEsCascoPara.SelectedValue) : null);
                this.oParte.RequiereCascoDe = (this.cmbRequiereCascoDe.SelectedValue == null ? null : (int?)Util.Entero(this.cmbRequiereCascoDe.SelectedValue));
                this.oParte.RequiereDepositoDe = (this.txtRequiereDepositoDe.Tag == null ? null : (int?)Util.Entero(this.txtRequiereDepositoDe.Tag));

                oParte.Es9500 = chk9500.Checked;
                oParte.EsServicio = chkServicio.Checked;

                // Parte.TipoCilindroID = Util.ConvertirEntero(this.cmbCar01.SelectedValue);
                oParte.TipoGarantiaID = Util.Entero(this.cboTipoGarantia.SelectedValue);
                oParte.Etiqueta = this.chkSiEtiqueta.Checked;
                oParte.SoloUnaEtiqueta = this.chkSoloUna.Checked;

                oParte.CodigoBarra = this.txtCodigoBarra.Text;
                oParte.TiempoReposicion = Util.Decimal(this.txtTiempoReposicion.Text);

                oParte.UnidadEmpaque = Util.Decimal(this.txtUnidadEmpaque.Text);
                oParte.AGranel = this.chkAGranel.Checked;
                oParte.EsPar = this.chkEsPar.Checked;

                // Se llenan los datos del precio
                if (oPartePrecio != null)
                {
                    oPartePrecio.Costo = Util.Decimal(txtCosto.Text);
                    oPartePrecio.PorcentajeUtilidadUno = Util.Decimal(txtPorcentaje1.Text);
                    oPartePrecio.PorcentajeUtilidadDos = Util.Decimal(txtPorcentaje2.Text);
                    oPartePrecio.PorcentajeUtilidadTres = Util.Decimal(txtPorcentaje3.Text);
                    oPartePrecio.PorcentajeUtilidadCuatro = Util.Decimal(txtPorcentaje4.Text);
                    oPartePrecio.PorcentajeUtilidadCinco = Util.Decimal(txtPorcentaje5.Text);
                    oPartePrecio.PrecioUno = Util.Decimal(txtPrecio1.Text);
                    oPartePrecio.PrecioDos = Util.Decimal(txtPrecio2.Text);
                    oPartePrecio.PrecioTres = Util.Decimal(txtPrecio3.Text);
                    oPartePrecio.PrecioCuatro = Util.Decimal(txtPrecio4.Text);
                    oPartePrecio.PrecioCinco = Util.Decimal(txtPrecio5.Text);
                }

                // Se guarda la Parte
                if (this.EsNuevo)
                {
                    Guardar.Parte(this.oParte, oPartePrecio);
                }
                else
                {
                    Datos.Guardar<Parte>(this.oParte);
                    Datos.Guardar<PartePrecio>(oPartePrecio);
                }

                // Se mandan guardar las características
                this.GuardarCaracteristicas();

                // Se guardan las existencias y los datos de máximos y mínimos
                foreach (DataGridViewRow row in dgvExistencias.Rows)
                {
                    var sucursalId = Util.Entero(row.Cells["SucursalID"].Value);
                    var parteExistencia = Datos.GetEntity<ParteExistencia>(p => p.ParteID.Equals(oParte.ParteID) && p.SucursalID.Equals(sucursalId));
                    if (parteExistencia != null)
                    {
                        parteExistencia.SucursalID = sucursalId;
                        parteExistencia.Maximo = Util.Entero(row.Cells["Max"].Value);
                        parteExistencia.Minimo = Util.Entero(row.Cells["Min"].Value);
                        // parteExistencia.UnidadEmpaque = Util.ConvertirEntero(row.Cells["UEmp"].Value);
                        parteExistencia.UsuarioID = GlobalClass.UsuarioGlobal.UsuarioID;
                        parteExistencia.FechaModificacion = DateTime.Now;
                        parteExistencia.Estatus = true;
                        parteExistencia.Actualizar = true;
                        Datos.SaveOrUpdate<ParteExistencia>(parteExistencia);
                    }

                    // Se guardan los datos de MaxMin, si fueron modificados
                    bool bMaxMinFijo = Util.Logico(row.Cells["MaxMinFijo"].Value);
                    if (bMaxMinFijo)
                    {
                        var oParteMaxMin = Datos.GetEntity<ParteMaxMin>(q => q.ParteID == oParte.ParteID && q.SucursalID == sucursalId);
                        oParteMaxMin.Fijo = bMaxMinFijo;
                        oParteMaxMin.Maximo = Util.Entero(row.Cells["Max"].Value);
                        oParteMaxMin.Minimo = Util.Entero(row.Cells["Min"].Value);
                        Datos.Guardar<ParteMaxMin>(oParteMaxMin);

                        // Se verifica si fue max min 0, para guardar histórico
                        if (oMotivoFijoCero != null && oParteMaxMin.Maximo == 0 && oParteMaxMin.Minimo == 0)
                        {
                            var oFijoHist = new ParteMaxMinFijoHistorico()
                            {
                                ParteID = this.oParte.ParteID,
                                SucursalID = sucursalId,
                                Fecha = DateTime.Now,
                                Motivo = Util.Cadena(oMotivoFijoCero)
                            };
                            Datos.Guardar<ParteMaxMinFijoHistorico>(oFijoHist);
                        }
                    }
                }

                // Se verifica el máximo, para guardar como 9500 o no
                this.oParte.Es9500 = AdmonProc.VerGuardar9500(this.oParte.ParteID);

                // Si es nuevo, se carga la parte, para que ya no sea nuevo
                if (this.EsNuevo)
                    this.CargarParte(this.oParte.ParteID);

                SplashScreen.Close();
                this.btnGuardar.Enabled = true;
                new Notificacion("Parte Guardada exitosamente", 2 * 1000).Mostrar(Principal.Instance);
                // this.IniciarActualizarListado();
            }
            catch (Exception ex)
            {
                SplashScreen.Close();
                this.btnGuardar.Enabled = true;
                Util.MensajeError(ex.Message, GlobalClass.NombreApp);
            }
        }
Ejemplo n.º 2
0
        private void GuardarMaxMin()
        {
            // Se valida que todas las filas tengan máximo una sola condición
            bool bError = false;
            foreach (DataGridViewRow oFila in this.dgvDetalle.Rows)
            {
                if (Util.Cadena(oFila.Cells["Condiciones"].Value).Contains(","))
                {
                    bError = true;
                    break;
                }
            }
            if (bError)
            {
                UtilLocal.MensajeAdvertencia("Existe una o más partes que coinciden con más de una regla. Verificar.");
                return;
            }

            // Se valida que si hay fijos en cero, se ponga el motivo
            bError = false;
            foreach (DataGridViewRow oFila in this.dgvDetalle.Rows)
            {
                oFila.Cells["MotivoFijoCero"].ErrorText = "";
                if (Util.Logico(oFila.Cells["Fijo"].Value) && Util.Decimal(oFila.Cells["Maximo"].Value) == 0 && Util.Decimal(oFila.Cells["Minimo"].Value) == 0
                    && Util.Cadena(oFila.Cells["MotivoFijoCero"].Value) == "")
                {
                    oFila.Cells["MotivoFijoCero"].ErrorText = "Debes especificar un motivo";
                    bError = true;
                }
            }
            if (bError)
            {
                UtilLocal.MensajeAdvertencia("Por favor indica todos los motivos en donde se especificó un Max Min de cero.");
                return;
            }

            if (UtilLocal.MensajePregunta("¿Estás seguro que deseas guardar los Máximos y Mínimos mostrados?") != DialogResult.Yes)
                return;

            Cargando.Mostrar();

            // Se procede a guardar los máximos y mínimos
            int iSucursalID = Util.Entero(this.cmbSucursal.SelectedValue);
            DateTime dAhora = DateTime.Now;
            foreach (DataGridViewRow Fila in this.dgvDetalle.Rows)
            {
                // Si no está marcado, no se guarda
                if (!Fila.Visible || !Util.Logico(Fila.Cells["colProcesar"].Value)) continue;

                int iParteID = Util.Entero(Fila.Cells["ParteID"].Value);
                var oParteMaxMin = Datos.GetEntity<ParteMaxMin>(q => q.ParteID == iParteID && q.SucursalID == iSucursalID);
                // Se supone que no puede pasar que el registro no exista, pues aquí sólo aparecen los que tengan "ParteMaxMin.Calcular" = 1
                oParteMaxMin.Fijo = Util.Logico(Fila.Cells["Fijo"].Value);
                oParteMaxMin.Maximo = Util.Decimal(Fila.Cells["Maximo"].Value);
                oParteMaxMin.Minimo = Util.Decimal(Fila.Cells["Minimo"].Value);
                oParteMaxMin.FechaCalculo = dAhora;
                oParteMaxMin.ParteMaxMinReglaID = ((oParteMaxMin.Fijo.Valor() || Util.Entero(Fila.Cells["Condiciones"].Value) == 0)
                    ? null : (int?)Util.Entero(Fila.Cells["Condiciones"].Value));
                Datos.Guardar<ParteMaxMin>(oParteMaxMin);

                // Se verifica si aplica para 9500 y se guarda el dato Es9500
                AdmonProc.VerGuardar9500(iParteID);

                // Se guardan los datos de fijos históricos, si aplican
                if (oParteMaxMin.Fijo.Valor() && oParteMaxMin.Maximo == 0 && oParteMaxMin.Minimo == 0)
                {
                    var oFijoHist = new ParteMaxMinFijoHistorico()
                    {
                        ParteID = iParteID,
                        SucursalID = iSucursalID,
                        Fecha = dAhora,
                        Motivo = Util.Cadena(Fila.Cells["MotivoFijoCero"].Value)
                    };
                    Datos.Guardar<ParteMaxMinFijoHistorico>(oFijoHist);
                }
            }

            Cargando.Cerrar();
            UtilLocal.MostrarNotificacion("Proceso completado correctamente.");
        }