Beispiel #1
0
        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);
        }
Beispiel #2
0
        /// <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);
        }