using Exferia_Aplicacion.General;
using Exferia_Controles;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Exferia_Aplicacion.Calculos
{
    public class Calculos_FuncionesGenerales
    {
        public static void Calcular_SegundaUnidad(Exferia_TextBox _ex_txt_Cantidad, Exferia_TextBox _ex_txt_SegundaUnidad, decimal _dcm_Relacion)
        {
            try
            {
                decimal dcm_Cantidad_Inicial = 0;
                decimal dcm_Cantidad_SegundaUnidad = 0;

                if (_ex_txt_Cantidad.Text.Trim().Length > 0)
                {
                    dcm_Cantidad_Inicial = decimal.Parse(_ex_txt_Cantidad.Text.Replace(".", ","));

                    dcm_Cantidad_SegundaUnidad = dcm_Cantidad_Inicial * _dcm_Relacion;
                }

                _ex_txt_SegundaUnidad.Text = string.Format("{0:0.000}", Funciones.RedondearDecimal(dcm_Cantidad_SegundaUnidad, 3));
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Calculos_FuncionesGenerales) + "/" + nameof(Calcular_SegundaUnidad));
            }
        }
        public static decimal Calcular_SegundaUnidad(decimal _dcm_Cantidad, decimal _dcm_Relacion)
        {
            decimal dcm_Cantidad_SegundaUnidad = 0;
            try
            {
                dcm_Cantidad_SegundaUnidad = _dcm_Cantidad * _dcm_Relacion;

                dcm_Cantidad_SegundaUnidad = Funciones.RedondearDecimal(dcm_Cantidad_SegundaUnidad, 3);
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Calculos_FuncionesGenerales) + "/" + nameof(Calcular_SegundaUnidad));
            }
            return dcm_Cantidad_SegundaUnidad;
        }
        public static decimal Calcular_Cantidad_SegunEmbalajes( long _lng_EMBALAJEACTUAL_idEmbalaje,
                                                                string _str_EMBALAJEACTUAL_Operacion,
                                                                decimal _dcm_EMBALAJEACTUAL_Relacion,
                                                                decimal _dcm_Cantidad,
                                                                long _lng_EMBLAJEPRINCIPALDELARTICULO_idEmbalaje,
                                                                bool _bol_EmbalajeSecundario_A_EmbalajePrincipal)
        {
            decimal dcm_Cantidad_Final = 1m;

            try
            {
                //Esta en el Embalaje secundario
                if (!_lng_EMBALAJEACTUAL_idEmbalaje.Equals(_lng_EMBLAJEPRINCIPALDELARTICULO_idEmbalaje))
                {
                    if (_bol_EmbalajeSecundario_A_EmbalajePrincipal)
                    {
                        //Multiplicar 
                        if (_str_EMBALAJEACTUAL_Operacion.Equals(Variables.G_MDL_TIPOOPERACION_MULTIPLICAR.Codigo))
                        {
                            dcm_Cantidad_Final = Funciones.RedondearDecimal(_dcm_EMBALAJEACTUAL_Relacion * _dcm_Cantidad, 3);
                        }
                        //Dividir
                        else
                        {
                            dcm_Cantidad_Final = Funciones.RedondearDecimal(_dcm_EMBALAJEACTUAL_Relacion / _dcm_Cantidad, 3);
                        }
                    }
                    else
                    {
                        //Multiplicar 
                        if (_str_EMBALAJEACTUAL_Operacion.Equals(Variables.G_MDL_TIPOOPERACION_MULTIPLICAR.Codigo))
                        {
                            dcm_Cantidad_Final = Funciones.RedondearDecimal(_dcm_EMBALAJEACTUAL_Relacion / _dcm_Cantidad, 3);
                        }
                        //Dividir
                        else
                        {
                            dcm_Cantidad_Final = Funciones.RedondearDecimal(_dcm_EMBALAJEACTUAL_Relacion * _dcm_Cantidad, 3);
                        }
                    }                    
                }
                //Esta en el embalaje principal
                else
                {
                    dcm_Cantidad_Final = _dcm_Cantidad;
                }
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Calculos_FuncionesGenerales) + "" + nameof(Calcular_Cantidad_SegunEmbalajes));
            }

            return dcm_Cantidad_Final;
        }
       
    }
}
