public CalculaPrecio()
 {
     list               = null;
     _tasaCambio        = 0.0m;
     _metodoCalculoUt   = metodoCalculoUtilidad.SinDefinir;
     _preferenciaPrecio = OOB.LibInventario.Configuracion.Enumerados.EnumPreferenciaRegistroPrecio.SinDefinir;
     _redondeoPrecio    = OOB.LibInventario.Configuracion.Enumerados.EnumForzarRedondeoPrecioVenta.SinDefinir;
 }
        public Item(OOB.LibInventario.Configuracion.MetodoCalculoUtilidad.CapturarData.Ficha s, decimal _tasaCambio, CalculaPrecio.metodoCalculoUtilidad _metodoCalculoUt, OOB.LibInventario.Configuracion.Enumerados.EnumPreferenciaRegistroPrecio _preferenciaPrecio, OOB.LibInventario.Configuracion.Enumerados.EnumForzarRedondeoPrecioVenta _redondeoPrecio)
        {
            this.s                  = s;
            this._tasaCambio        = _tasaCambio;
            this._metodoCalculoUt   = _metodoCalculoUt;
            this._preferenciaPrecio = _preferenciaPrecio;
            this._redondeoPrecio    = _redondeoPrecio;

            if (_metodoCalculoUt == CalculaPrecio.metodoCalculoUtilidad.Lineal)
            {
                if (s.precio1_IsHabilitado)
                {
                    precio_1 = CostoLineal(costoEmpaque_1, s.utilidad_1);
                }
                else
                {
                    precio_1 = new Precio();
                }

                if (s.precio2_IsHabilitado)
                {
                    precio_2 = CostoLineal(costoEmpaque_2, s.utilidad_2);
                }
                else
                {
                    precio_2 = new Precio();
                }

                if (s.precio3_IsHabilitado)
                {
                    precio_3 = CostoLineal(costoEmpaque_3, s.utilidad_3);
                }
                else
                {
                    precio_3 = new Precio();
                }

                if (s.precio4_IsHabilitado)
                {
                    precio_4 = CostoLineal(costoEmpaque_4, s.utilidad_4);
                }
                else
                {
                    precio_4 = new Precio();
                }

                if (s.precio5_IsHabilitado)
                {
                    precio_5 = CostoLineal(costoEmpaque_5, s.utilidad_5);
                }
                else
                {
                    precio_5 = new Precio();
                }
            }
            else
            {
                if (s.precio1_IsHabilitado)
                {
                    precio_1 = CostoFinanciero(costoEmpaque_1, s.utilidad_1);
                }
                else
                {
                    precio_1 = new Precio();
                }

                if (s.precio2_IsHabilitado)
                {
                    precio_2 = CostoFinanciero(costoEmpaque_2, s.utilidad_2);
                }
                else
                {
                    precio_2 = new Precio();
                }

                if (s.precio3_IsHabilitado)
                {
                    precio_3 = CostoFinanciero(costoEmpaque_3, s.utilidad_3);
                }
                else
                {
                    precio_3 = new Precio();
                }

                if (s.precio4_IsHabilitado)
                {
                    precio_4 = CostoFinanciero(costoEmpaque_4, s.utilidad_4);
                }
                else
                {
                    precio_4 = new Precio();
                }

                if (s.precio5_IsHabilitado)
                {
                    precio_5 = CostoFinanciero(costoEmpaque_5, s.utilidad_5);
                }
                else
                {
                    precio_5 = new Precio();
                }
            }
        }
        public static Precio RecalcularPrecio(
            decimal cneto, decimal ut, decimal tasa,
            OOB.LibInventario.Configuracion.Enumerados.EnumPreferenciaRegistroPrecio enumPreferenciaRegistroPrecio,
            OOB.LibInventario.Configuracion.Enumerados.EnumForzarRedondeoPrecioVenta enumForzarRedondeoPrecioVenta,
            OOB.LibInventario.Configuracion.Enumerados.EnumMetodoCalculoUtilidad enumMetodoCalculoUtilidad,
            decimal tasaCambio)
        {
            var rt = new Precio();

            rt.setTasaCambio(tasaCambio);


            var m = 0.0m;

            if (enumMetodoCalculoUtilidad == OOB.LibInventario.Configuracion.Enumerados.EnumMetodoCalculoUtilidad.Financiero)
            {
                if (ut == 100.0m && cneto == 0.0m)
                {
                    m = 0.0m;
                }
                else
                if (ut == 100)
                {
                }
                else
                {
                    m = cneto / ((100 - ut) / 100);
                }
            }
            else
            {
                m = cneto + (cneto * ut / 100);
            }

            if (enumPreferenciaRegistroPrecio == OOB.LibInventario.Configuracion.Enumerados.EnumPreferenciaRegistroPrecio.Full)
            {
                m += (m * tasa / 100);
            }

            switch (enumForzarRedondeoPrecioVenta)
            {
            case OOB.LibInventario.Configuracion.Enumerados.EnumForzarRedondeoPrecioVenta.SinRedeondeo:
                m = Math.Round(m, 2, MidpointRounding.AwayFromZero);
                break;

            case OOB.LibInventario.Configuracion.Enumerados.EnumForzarRedondeoPrecioVenta.Unidad:
                m = Helpers.MetodosExtension.RoundUnidad((int)m);
                break;

            case OOB.LibInventario.Configuracion.Enumerados.EnumForzarRedondeoPrecioVenta.Decena:
                m = Helpers.MetodosExtension.RoundDecena((int)m);
                break;
            }

            if (enumPreferenciaRegistroPrecio == OOB.LibInventario.Configuracion.Enumerados.EnumPreferenciaRegistroPrecio.Full)
            {
                rt.full = m;
                rt.neto = m / ((tasa / 100) + 1);
            }
            else
            {
                rt.neto = m;
                rt.full = m + (m * tasa / 100);
            }

            return(rt);
        }
 public void setRedondeoPrecio(OOB.LibInventario.Configuracion.Enumerados.EnumForzarRedondeoPrecioVenta enumForzarRedondeoPrecioVenta)
 {
     _redondeoPrecio = enumForzarRedondeoPrecioVenta;
 }