Exemple #1
0
 private void btnCotizar_Click(object sender, EventArgs e)
 {
     try
     {
         #region Validaciones
         if (String.IsNullOrEmpty(txtPrecio.Text))
         {
             ErrorAplicativo err = new ErrorAplicativo();
             err.codigoError      = -1;
             err.descripcionError = "Debe completar el campo Precio Unitario antes de continuar con la cotización";
             FrmError frmError = new FrmError();
             frmError.Controls["lblMensajeError"].Text = "Código Error: " + err.codigoError + " " + err.descripcionError;
             frmError.ShowDialog();
         }
         if (String.IsNullOrEmpty(txtCantidad.Text))
         {
             ErrorAplicativo err = new ErrorAplicativo();
             err.codigoError      = -1;
             err.descripcionError = "Debe completar el campo Cantidad antes de continuar con la cotización";
             FrmError frmError = new FrmError();
             frmError.Controls["lblMensajeError"].Text = "Código Error: " + err.codigoError + " " + err.descripcionError;
             frmError.ShowDialog();
         }
         #endregion
         (ErrorAplicativo err, decimal precioCotizado)respuesta = expertoCotiz.CalcularPrecioCotizacion(Convert.ToDecimal(txtPrecio.Text), Convert.ToInt32(txtCantidad.Text), calidadPremium);
         if (respuesta.err.codigoError != 0)
         {
             FrmError frmError = new FrmError();
             frmError.Controls["lblMensajeError"].Text = "Código Error: " + respuesta.err.codigoError + " " + respuesta.err.descripcionError;
             frmError.ShowDialog();
         }
         lblPrecioCotizado.Text = String.Format("{0:c}", respuesta.precioCotizado);
         BorrarCampos();
     }
     catch (Exception)
     {
         ErrorAplicativo err = new ErrorAplicativo();
         err.codigoError      = -1;
         err.descripcionError = "Ocurrió un error inesperado, compruebe haber ingresado datos correctos en los campos solicitados";
         FrmError frmError = new FrmError();
         frmError.Controls["lblMensajeError"].Text = "Código Error: " + err.codigoError + " " + err.descripcionError;
         frmError.ShowDialog();
     }
 }
        public (ErrorAplicativo, decimal) CalcularPrecioCotizacion(decimal precioUnitario, int cantidad, bool calidadPremium)
        {
            #region Validaciones
            ErrorAplicativo err = new ErrorAplicativo();
            if (cantidad > paramAplicativo.prendas.Count)
            {
                err.codigoError      = -1;
                err.descripcionError = "La cantidad indicada supera a la cantidad de stock disponible";
                return(err, 0);
            }
            #endregion
            int     porcentajeAumentoRebajaAplicar        = paramAplicativo.prendas.First().caracteristica.porcentajeAumentoRebaja;
            int     porcentajeAumentoRebajaCalidadAplicar = 0;
            int     aumentoRebajaPrecio = 0;
            decimal precioCotizado      = 0;

            //Para simplificar el cálculo del ID de la cotización se hará uso de la clase Random que genera un número aleatorio.
            //Aclaro que en un entorno real esto no es una buena práctica porque puede dar lugar a IDs repetidos.
            var random = new Random();
            if (calidadPremium)
            {
                porcentajeAumentoRebajaCalidadAplicar = paramAplicativo.calidades.Where(x => x.nombreCalidadPrenda.Contains("Premium")).First().porcentajeAumentoRebaja;
                precioCotizado = (precioUnitario + ((precioUnitario * porcentajeAumentoRebajaAplicar) / (100)) + ((precioUnitario * porcentajeAumentoRebajaCalidadAplicar) / (100))) * cantidad;
            }
            else
            {
                precioCotizado = (precioUnitario + ((precioUnitario * porcentajeAumentoRebajaAplicar) / (100))) * cantidad;
            }



            //Se registra la cotización.
            Cotizacion cotizacion = new Cotizacion
            {
                idCotizacion        = random.Next(0, Int32.MaxValue),
                fechaHoraCotizacion = DateTime.Now,
                cantidadCotizada    = cantidad,
                idVendedor          = paramAplicativo.vendedor.idVendedor,
                precioCotizacion    = precioCotizado,
            };
            paramAplicativo.cotizaciones.Add(cotizacion);
            return(err, precioCotizado);
        }