/// <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; })); }
/// <summary> /// Método para obtener CashOut de las Cajas /// </summary> /// <param name="token"></param> /// <returns></returns> public CompendioCashOut ObtenerCashOut(TokenDto token) { CompendioCashOut compendioCashOut = new CompendioCashOut(); List <CashOutCaja> cashOutCajas = new List <CashOutCaja>(); compendioCashOut.CodigoTienda = token.CodeStore; // Procesar información de las Cajas var parametrosCD = new Dictionary <string, object>(); foreach (var caja in data.GetDataReader("[dbo].[sp_vanti_server_ObtenerCajasDestino]", parametrosCD)) { // Procesar información de las Lecturas de cada Caja CashOutCaja cashOutCaja = new CashOutCaja(); cashOutCaja.CodigoCaja = Convert.ToInt16(caja.GetValue(1)); List <LecturaZ> lecturasZ = new List <LecturaZ>(); var parametrosLZ = new Dictionary <string, object>(); parametrosLZ.Add("@CodigoTienda", compendioCashOut.CodigoTienda); parametrosLZ.Add("@CodigoCaja", cashOutCaja.CodigoCaja); foreach (var lectura in data.GetDataReader("[dbo].[sp_vanti_server_ObtenerLecturasZPorCaja]", parametrosLZ)) { LecturaZ lecturaZ = new LecturaZ(); lecturaZ.FolioCorte = lectura.GetValue(0).ToString(); // Procesar información del detalle de la Lectura List <DetalleLecturaFormaPago> detallesLecturaFormaPago = new List <DetalleLecturaFormaPago>(); var parametrosDLZ = new Dictionary <string, object>(); parametrosDLZ.Add("@FolioCorteZ", lecturaZ.FolioCorte); foreach (var detalleLectura in data.GetDataReader("[dbo].[sp_vanti_server_ObtenerDetalleLecturaZ]", parametrosDLZ)) { DetalleLecturaFormaPago detalleLecturaFormaPago = new DetalleLecturaFormaPago(); detalleLecturaFormaPago.ImporteFisico = 0.00M; detalleLecturaFormaPago.ImporteTeorico = Convert.ToDecimal(detalleLectura.GetValue(0)); detalleLecturaFormaPago.FondoFijoActual = Convert.ToDecimal(detalleLectura.GetValue(1)); detalleLecturaFormaPago.TotalRetirosParciales = Convert.ToDecimal(detalleLectura.GetValue(2)); ConfigGeneralesCajaTiendaFormaPago configGeneralesCajaTiendaFormaPago = new ConfigGeneralesCajaTiendaFormaPago(); configGeneralesCajaTiendaFormaPago.IdentificadorFormaPago = detalleLectura.GetValue(3).ToString(); configGeneralesCajaTiendaFormaPago.CodigoFormaPago = detalleLectura.GetValue(4).ToString(); configGeneralesCajaTiendaFormaPago.DescripcionFormaPago = detalleLectura.GetValue(5).ToString(); detalleLecturaFormaPago.InformacionAsociadaFormasPago = configGeneralesCajaTiendaFormaPago; detallesLecturaFormaPago.Add(detalleLecturaFormaPago); } lecturaZ.DetallesLecturaFormaPago = detallesLecturaFormaPago.ToArray(); lecturasZ.Add(lecturaZ); } cashOutCaja.LecturasZ = lecturasZ.ToArray(); cashOutCajas.Add(cashOutCaja); } compendioCashOut.CashOutCajas = cashOutCajas.ToArray(); return(compendioCashOut); }
public ResponseBussiness <RelacionCaja> ActualizarCashOut(CompendioCashOut compendioCashOut) { TokenDto token = new TokenService().Get(); return(new InicioFinDiaBusiness().PersistirCashOut(token, compendioCashOut)); }