public TipoCambioResponse GetTipoCambio(TipoCambioRequest tipoCambioRequest) { TipoCambioResponse tipoCambioResponse = new TipoCambioResponse(); CambioDivisaMilano cambio = new CambioDivisaMilano(); InfoService inforService = externosRepository.ObtenerInfoServicioExterno(14); cambio = GetTipoCambioLocal(tipoCambioRequest); string codigoRespuesta = "000"; decimal valorCambio = 0; if (tipoCambioRequest.CodigoTipoDivisa == "US") { //Inicializamos el proxy que nos ayudara a hacer la llamada al metodo de Sale ProxyTipoCambio.Service1SoapClient proxy = new ProxyTipoCambio.Service1SoapClient(); proxy.Endpoint.Address = new System.ServiceModel.EndpointAddress(inforService.UrlService); string xml = "<ExchangeRateRequest><credentials><username>{0}</username>" + "<password>{1}</password><clientCode>{2}</clientCode></credentials>" + "<exchangeInfo><currencyCode>{3}</currencyCode></exchangeInfo></ExchangeRateRequest> "; xml = string.Format(xml, this.credenciales.UserName, this.credenciales.Password, "", cambio.CodigoExterno); XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); XmlNode result = proxy.GetRate(doc); codigoRespuesta = result.ChildNodes[0].ChildNodes[0].InnerText; if (codigoRespuesta == "000") { if (!cambio.UsarMaximoValor) { valorCambio = decimal.Round(Convert.ToDecimal(result.ChildNodes[1].ChildNodes[5].ChildNodes[0].InnerText), 2); } else { valorCambio = decimal.Round(Convert.ToDecimal(result.ChildNodes[1].ChildNodes[5].ChildNodes[1].InnerText), 2); } } else { throw new Exception(result.InnerText); } } else { valorCambio = cambio.ValorCambio; } if (valorCambio > 0) { tipoCambioResponse.Mensaje = "Ok"; tipoCambioResponse.TasaConversionVigente = valorCambio; tipoCambioResponse.ImporteMonedaNacional = tipoCambioRequest.ImporteMonedaNacional; // Ajuste para redondear a modo de cubrir el monto mínimo decimal multiplicador = Convert.ToDecimal(Math.Pow(10, Convert.ToDouble(2))); tipoCambioResponse.ImporteMonedaExtranjera = Math.Ceiling((tipoCambioRequest.ImporteMonedaNacional / valorCambio) * multiplicador) / multiplicador; // Ajuste para redondear a modo de cubrir el monto mínimo } return(tipoCambioResponse); }
/// <summary> /// Obtenemos el tipo de cambio de la tabla de milano /// </summary> /// <param name="codigoDivisa"> codigo de divisa</param> /// <returns>valor de la divisa</returns> public CambioDivisaMilano ObtenerTipoCambio(string codigoDivisa) { CambioDivisaMilano cambio = null; var parameters = new Dictionary <string, object>(); parameters.Add("@CodigoDivisa", codigoDivisa); foreach (var c in data.GetDataReader("[dbo].[sp_vanti_CambioDivisa]", parameters)) { cambio = new CambioDivisaMilano(); cambio.ValorCambio = Convert.ToDecimal(c.GetValue(0)); cambio.UsarMaximoValor = Convert.ToBoolean(c.GetValue(1)); cambio.CodigoExterno = c.GetValue(2).ToString(); } return(cambio); }