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); }