/// <summary> /// Actualiza el estado de la transacción pendiente a procesada. /// </summary> /// <param name="transaccion">Datos de la Transacción</param> /// <returns> /// Retorna cero si se ha guardado correctamente, valor distinto a cero /// si se presenta algún error. /// </returns> private string ActualizarTransaccion(ETransaccion transaccion) { string sres = string.Empty; int nres = 0; try { DataAccessLayerBaseClass dal = DataAccessLayerFactory.GetDataAccessLayer(); IDataParameter[] opar = new IDataParameter[4]; opar[0] = dal.CreateParameter("presult", ParameterDirection.Output, nres, DbType.Int32, null, 0); opar[1] = dal.CreateParameter("pmessage", ParameterDirection.Output, sres, DbType.String, null, 0); opar[2] = dal.CreateParameter("pidtransaccion", ParameterDirection.Input, transaccion.IdTransaccion, DbType.Guid, null, 0); opar[3] = dal.CreateParameter("pestado", ParameterDirection.Input, 1, DbType.Double, null, 0); int dae = dal.ExecuteQuery("sp_update_ps_transaccion", CommandType.StoredProcedure, opar); } catch (Exception ex) { sres = "201"; Logger.ErrorLog.RegErrorDB(Logger.NivelDeError.Cinco, sres, this.ToString(), "sp_update_ps_transaccion", ex.Message + "|" + ex.StackTrace); } return(sres); }
public string Remitir(EEncabezado credencial, string datos, EDestino rumbo, EProvider proveedor, Operacion tipoOperacion, short evento) { string sres = string.Empty; DDespachar despachar = new DDespachar(); ETransaccion transaccion = new ETransaccion(); if (credencial != null && rumbo != null) { transaccion.Conexion = rumbo.Conexion; transaccion.Datos = datos; transaccion.Persiste = rumbo.Persiste; transaccion.Terminal = credencial.Terminal; transaccion.TipoDestino = rumbo.TipoDestino; transaccion.Transaccion = (Transacciones)credencial.Transaccion; transaccion.Usuario = credencial.Usuario; transaccion.Modo = 0; transaccion.Version = credencial.Version; transaccion.TipoOperacion = tipoOperacion; transaccion.Evento = evento; sres = despachar.Remitir(transaccion, proveedor); } else { sres = "999"; Logger.ErrorLog.RegErrorDB(Logger.NivelDeError.Tres, sres, this.ToString(), "Remitir()", "No se pudo procesar transacción."); } return(sres); }
public void CancelarVenta(ETransaccion transaccion, ref Dictionary <string, string> IdsAcumulados, ETerminal terminal, EUsuario usuario, String tipo, out Respuesta respuesta) { respuesta = new Respuesta(true); string idVenta = Guid.NewGuid().ToString(); RVenta rventa = new RVenta(); decimal bruto = transaccion.BrutoNegativo > transaccion.BrutoPositivo ? transaccion.BrutoNegativo : transaccion.BrutoPositivo; try { using (TransactionScope scope = new TransactionScope()) { if (rventa.CrearVenta(idVenta, bruto, bruto, terminal.Codigo, tipo, 1, 00, (long)terminal.NumeroUltimaTransaccion + 1, terminal.Prefijo, usuario.IdUsuario, 00) == 1) { //3. Creamos totales de venta(registro_venta). if (IdsAcumulados == null) { IdsAcumulados = new Dictionary <string, string>(); IdsAcumulados.Add("idRegistroVenta", Guid.NewGuid().ToString()); //Creamos el registro venta rventa.CrearRegistroVenta(IdsAcumulados["idRegistroVenta"], terminal.Codigo, usuario.IdUsuario); } //Actualizo registro venta rventa.ActualizarRegistroVenta(IdsAcumulados["idRegistroVenta"], bruto, bruto, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, bruto); rventa.ActualizarTerminal(terminal.Codigo, (long)terminal.NumeroUltimaFactura, (long)terminal.NumeroUltimaTransaccion + 1); } else { throw new Exception("[CancelarVenta]: Transaccion no pudo ser guardada."); } scope.Complete(); } } catch (SqlException e) { if (e.Number == -2 || e.Number == 121) { respuesta.Valida = false; respuesta.Mensaje = "Se perdió la conexión con el servidor."; log.Error("[CancelarVenta]: No pudo ser guardada la transacion: " + e.Message); } else { respuesta.Valida = false; respuesta.Mensaje = "Hubo un problema al momento de guardar la transaccion. Por favor contacte al administrador del sistema."; log.Error("[CancelarVenta]: No pudo ser guardada la venta: " + e.Message); } Telemetria.Instancia.AgregaMetrica(new Excepcion(e)); } catch (Exception e) { respuesta.Valida = false; respuesta.Mensaje = "[CancelarVenta]: No pudo ser guardada la transaccion."; log.Error("[CancelarVenta]: No pudo ser guardada la venta. " + e.Message); Telemetria.Instancia.AgregaMetrica(new Excepcion(e)); } }
public void RemitirTest() { DDespachar target = new DDespachar(); // TODO: Inicializar en un valor adecuado ETransaccion transaccion = null; // TODO: Inicializar en un valor adecuado string expected = "999"; // TODO: Inicializar en un valor adecuado string actual; actual = target.Remitir(transaccion); Assert.AreEqual(expected, actual); // Assert.Inconclusive("Compruebe la exactitud de este método de prueba."); }
/// <summary> /// Persiste los datos de la transacción. /// </summary> /// <param name="transaccion">Datos de la Transacción</param> /// <param name="resultado">Resultado del envío de la Transacción</param> private void Persistir(ETransaccion transaccion, string resultado) { string sres = string.Empty; int estado = 0; JavaScriptSerializer oSerializer = new JavaScriptSerializer(); if (transaccion.TipoOperacion != Operacion.Registrar) { estado = 1; } //else // if (resultado == "0") // estado = 1; transaccion.Modo = 1; try { DataAccessLayerBaseClass dal = DataAccessLayerFactory.GetDataAccessLayer(); IDataParameter[] opar = new IDataParameter[8]; opar[0] = dal.CreateParameter("pCodigo", ParameterDirection.Output, null , DbType.Int32, null, 0); opar[1] = dal.CreateParameter("pMensaje", ParameterDirection.Output, null , DbType.String, null, 500); opar[2] = dal.CreateParameter("pCodigoTransaccion", ParameterDirection.Input, transaccion.Transaccion , DbType.Int32, null, 0); opar[3] = dal.CreateParameter("pDatos", ParameterDirection.Input, oSerializer.Serialize(transaccion) , DbType.StringFixedLength, null, 0); opar[4] = dal.CreateParameter("pRespuesta", ParameterDirection.Input, resultado , DbType.StringFixedLength, null, 0); opar[5] = dal.CreateParameter("pEstado", ParameterDirection.Input, estado , DbType.Double, null, 0); opar[6] = dal.CreateParameter("pTerminal", ParameterDirection.Input, transaccion.Terminal , DbType.String, null, 0); opar[7] = dal.CreateParameter("pVersion", ParameterDirection.Input, transaccion.Version , DbType.String, null, 0); int dae = dal.ExecuteQuery("Movil.sprRegistrarTransaccion", CommandType.StoredProcedure, opar); sres = "0"; } catch (Exception ex) { sres = "201"; Logger.ErrorLog.RegErrorDB(Logger.NivelDeError.Cinco, sres, this.ToString(), "Movil.sprRegistrarTransaccion", ex.Message + "|" + ex.StackTrace); } }
public void RemitirTest1() { DDespachar target = new DDespachar(); // TODO: Inicializar en un valor adecuado ETransaccion transaccion = new ETransaccion(); // TODO: Inicializar en un valor adecuado transaccion.Conexion = "http://192.168.0.8/sir_acr/Servicio.asmx"; transaccion.Datos = ""; transaccion.EsObjeto = false; transaccion.Reintentos = 3; transaccion.Terminal = "1234"; transaccion.TiempoEspera = 60; transaccion.TiempoReintento = 10; transaccion.TipoDestino = Destinos.ConectorWS; transaccion.Transaccion = 1; transaccion.Usuario = "mdaza"; string expected = string.Empty; // TODO: Inicializar en un valor adecuado string actual; actual = target.Remitir(transaccion); Assert.AreEqual(expected, actual); }
/// <summary> /// Remite un despachar de acuerdo a lo indicado en el mapa de transacciones /// </summary> /// <param name="transaccion">Representación lógica de un Transaccion</param> /// <returns> /// Retorna cero si se ha guardado correctamente, valor distinto a cero /// si se presenta algún error. /// </returns> public string Remitir(ETransaccion transaccion, EProvider provider) { string sres = string.Empty; IConector conector; if (transaccion != null) { switch (transaccion.TipoDestino) { case Destinos.ConectorWSJSon: //Enviar transacción al WS conector = null; break; case Destinos.ConectorDB: //Enviar transacción al DB conector = new ConectorDB(); break; case Destinos.ConectorFS: //Enviar transacción al FS conector = null; break; case Destinos.ConectorWSObjeto: //Enviar transacción al WS conector = new ConectorWSObjeto(); break; default: conector = null; break; } if (conector != null) { EProveedor proveedor = new EProveedor() { Proveedor = provider.DataProvider, CadenaConexion = provider.ConnectionString }; sres = conector.Enviar(transaccion, proveedor); if (sres != "104") { if (transaccion.Persiste && transaccion.Modo == 0) { Persistir(transaccion, sres); } } } else { sres = "999"; Logger.ErrorLog.RegErrorDB(Logger.NivelDeError.Seis, sres, this.ToString(), "Remitir()", "Error ocurrido por falta de asignación de variables u objetos."); } } else { sres = "999"; Logger.ErrorLog.RegErrorDB(Logger.NivelDeError.Seis, sres, this.ToString(), "Remitir()", "Error ocurrido por falta de asignación de variables u objetos."); } return(sres); }