/// <summary> /// Obtener el tipo de cambio /// </summary> /// <param name="tipoCambioRequest">codigo de moneda</param> /// <returns>valor del tipo de cambio</returns> public ResponseBussiness <TipoCambioResponse> ObtenerTipoCambio(TipoCambioRequest tipoCambioRequest) { return(tryCatch.SafeExecutor(() => { return this.GetTipoCambio(tipoCambioRequest); }, this.repository.ObtenerMensajeCambioDivisaNoDisponible().CodeDescription)); }
public void ObtenerTipoCambio() { TipoCambioRequest tipo = new TipoCambioRequest(); tipo.CodigoTipoDivisa = "USD"; tipo.ImporteMonedaNacional = 1000; ResponseBussiness <TipoCambioResponse> res = new AdministracionTipoCambio().ObtenerTipoCambio(tipo); Assert.IsNotNull(res); }
/// <summary> /// Metodo para actualizar el CashOut al registrar el fin de día /// </summary> /// <param name="token">Token</param> /// <param name="compendioCashOut">Objeto que contiene el compendio de CashOut</param> /// <returns></returns> public ResponseBussiness <RelacionCaja> PersistirCashOut(TokenDto token, CompendioCashOut compendioCashOut) { return(tryCatch.SafeExecutor(() => { RelacionCaja relacionCaja = new RelacionCaja(); using (TransactionScope scope = new TransactionScope()) { // Persistir el Cash Out int idCompendioCashOut = inicioFinDiaRepository.AgregarCompendioCashOut(compendioCashOut.CodigoTienda); foreach (var compendio in compendioCashOut.CashOutCajas) { int idCashOut = inicioFinDiaRepository.AgregarCashOut(idCompendioCashOut, compendio.CodigoCaja); foreach (var lecturaZ in compendio.LecturasZ) { foreach (var detalleLecturaZ in lecturaZ.DetallesLecturaFormaPago) { if (detalleLecturaZ.InformacionAsociadaFormasPago.CodigoFormaPago == "US") { //Se crea administracion tipo cambio para poder obtener el tipo de cambio AdministracionTipoCambio tipoCambio = new AdministracionTipoCambio(); //Se crea la peticion tipo cambio para crear el objeto con el que se obtendra el cambio de moneda TipoCambioRequest tipoCambioRequest = new TipoCambioRequest(); //Se crea el response que nos retorna la conversion de la moneda extranjera. TipoCambioResponse tipoCambioResponse = new TipoCambioResponse(); decimal importeConversionDolar = 0.0M; tipoCambioRequest.CodigoTipoDivisa = detalleLecturaZ.InformacionAsociadaFormasPago.CodigoFormaPago; tipoCambioRequest.ImporteMonedaNacional = detalleLecturaZ.ImporteFisico; tipoCambioResponse = tipoCambio.GetTipoCambio(tipoCambioRequest); //Convertimos la cantidad de dolares a pesos. importeConversionDolar = ConvertirDolaresPesos(tipoCambioResponse.TasaConversionVigente, detalleLecturaZ.ImporteFisico); //En el importe teorico añadiremos el importe de moneda nacional inicioFinDiaRepository.AgregarLecturaZCashOut(idCashOut, importeConversionDolar, detalleLecturaZ.ImporteTeorico, detalleLecturaZ.ImporteFisico, detalleLecturaZ.TotalRetirosParciales, detalleLecturaZ.FondoFijoActual, detalleLecturaZ.InformacionAsociadaFormasPago.IdentificadorFormaPago, detalleLecturaZ.InformacionAsociadaFormasPago.CodigoFormaPago, detalleLecturaZ.InformacionAsociadaFormasPago.DescripcionFormaPago); } else { inicioFinDiaRepository.AgregarLecturaZCashOut(idCashOut, detalleLecturaZ.ImporteFisico, detalleLecturaZ.ImporteTeorico, detalleLecturaZ.ImporteFisico, detalleLecturaZ.TotalRetirosParciales, detalleLecturaZ.FondoFijoActual, detalleLecturaZ.InformacionAsociadaFormasPago.IdentificadorFormaPago, detalleLecturaZ.InformacionAsociadaFormasPago.CodigoFormaPago, detalleLecturaZ.InformacionAsociadaFormasPago.DescripcionFormaPago); } } } } relacionCaja = inicioFinDiaRepository.ObtenerRelacionCaja(token); // Terminar la transacción scope.Complete(); } return relacionCaja; })); }
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); }
private CambioDivisaMilano GetTipoCambioLocal(TipoCambioRequest tipoCambioRequest) { return(repository.ObtenerTipoCambio(tipoCambioRequest.CodigoTipoDivisa)); }
public ResponseBussiness <TipoCambioResponse> CambioDivisa(TipoCambioRequest tipoCambioRequest) { return(new AdministracionTipoCambio().ObtenerTipoCambio(tipoCambioRequest)); }