/// <summary> /// Inserta un movimiento de auditoria en las tablas de Kinacu /// </summary> /// <param name="idUsuario">ID usuario</param> /// <param name="idUsuarioSup">ID usuario superior</param> /// <param name="comentario">Comentario auditoria</param> /// <param name="codigo">Código que relaciona la auditoria con el registro</param> /// <param name="dominio">Tipo de auditoria</param> /// <param name="subdominio">Subtipo de auditoria</param> /// <param name="code">Codigo error de retorno</param> /// <returns>ID del registro de auditoria creado</returns> public int InsertarMovimientoAuditoria(int idUsuario, int?idUsuarioSup, string comentario, int codigo, string dominio, string subdominio) { string methodName = string.Format("{0}", System.Reflection.MethodBase.GetCurrentMethod().Name); int ret = 0; int idMovimiento = this.UpdateSecuencia(Core.cons.SecuenciaAuditoria); if (idMovimiento == 0) { Logger.ExceptionLow(() => TagValue.New() .MethodName(methodName)); return(ret); } Logger.CheckPointHigh(() => TagValue.New().MethodName(methodName).Message("INSERT INTO KcrTransaccion Start")); try { object usrIdSuperior = DBNull.Value; if (idUsuarioSup.HasValue) { usrIdSuperior = idUsuarioSup.Value; } Dwh <int> .ExecuteNonQuery( this.db, Queries.Kinacu.InsertAuditoria, new Dictionary <string, object>() { { "@traId", idMovimiento }, { "@usrId", idUsuario }, { "@traComentario", comentario }, { "@usrIdSuperior", usrIdSuperior }, { "@iCodigo", codigo }, { "@traDominio", dominio }, { "@traSubdominio", subdominio } }, this.databaseTransaction); ret = idMovimiento; } catch (Exception ex) { Logger.ExceptionLow(() => TagValue.New() .MethodName(methodName) .Exception(ex)); } Logger.CheckPointHigh(() => TagValue.New().MethodName(methodName).Message("INSERT INTO KcrTransaccion End")); return(ret); }
/// <summary> /// Crea un movimiento de cuenta corriente con los datos especificados /// </summary> /// <param name="idAgencia">Id de la agencia</param> /// <param name="monto">Monto del movimiento</param> /// <param name="comentario">Comentario de creación</param> /// <param name="asignacionProducto">Es una asignación sí/no</param> /// <param name="ttrId">ID tipo de movimiento cuenta corriente</param> /// <returns>Un <c>int</c> que contiene el ID de la transacción creada en <c>KfnCuentaCorrienteMovimiento</c></returns> public int CrearMovimientoCuentaCorriente(int idAgencia, decimal monto, string comentario, bool asignacionProducto, int ttrId = 1000) { string methodName = string.Format("{0}", System.Reflection.MethodBase.GetCurrentMethod().Name); int ret = 0; InfoCuentaCorriente cuentaCorriente = this.GetInfoCuentaCorriente(idAgencia); if (cuentaCorriente == null) { return(ret); } try { Dictionary <string, object> qp = new Dictionary <string, object>() { { "@ctaId", cuentaCorriente.Id }, { "@ageId", idAgencia }, { "@ctaSaldo", cuentaCorriente.Saldo }, { "@depMonto", monto }, { "@limiteCredito", cuentaCorriente.LimiteCredito } }; if (Dwh <int> .ExecuteNonQuery(this.db, asignacionProducto ? Queries.Kinacu.UpdateCuentaCorrienteRestaLimiteCredito : Queries.Kinacu.UpdateCuentaCorriente, qp, this.databaseTransaction) == 0) { Logger.ErrorHigh(() => TagValue.New() .MethodName(methodName) .Message("Parametros") .Tag("CtaId").Value(cuentaCorriente.Id) .Tag("AgeId").Value(idAgencia) .Tag("CtaSaldo").Value(cuentaCorriente.Saldo.ToString(CultureInfo.InvariantCulture)) .Tag("Monto").Value(monto.ToString(CultureInfo.InvariantCulture)) .Tag("LimiteCredito").Value(cuentaCorriente.LimiteCredito.ToString(CultureInfo.InvariantCulture))); return(ret); } } catch (Exception ex) { Logger.ExceptionLow(() => TagValue.New() .MethodName(methodName) .Exception(ex)); return(ret); } int idMovimientoCtaCorriente = this.UpdateSecuencia(Core.cons.SecuenciaMovimientoCuentaCorriente); if (idMovimientoCtaCorriente == 0) { Logger.ExceptionLow(() => TagValue.New() .MethodName(methodName) .Message("NO SE PUDO LEER LA SECUENCIA DEL CTACTEMOVIMIENTO")); return(ret); } Logger.CheckPointHigh(() => TagValue.New().MethodName(methodName).Message("INSERT INTO KfnCuentaCorrienteMovimiento Start")); try { if (asignacionProducto) { cuentaCorriente = this.GetInfoCuentaCorriente(idAgencia); } if (Dwh <int> .ExecuteNonQuery( this.db, Queries.Kinacu.InsertMovimientoCuentaCorriente, new Dictionary <string, object>() { { "@traId", idMovimientoCtaCorriente }, { "@ctaId", cuentaCorriente.Id }, { "@ctaSaldo", asignacionProducto ? (cuentaCorriente.Saldo + monto) : cuentaCorriente.Saldo }, { "@depMonto", asignacionProducto ? (monto * -1) : monto }, { "@sComentario", comentario }, { "@ttrId", ttrId } }, this.databaseTransaction) == 0) { throw new Exception(); } ret = idMovimientoCtaCorriente; } catch (Exception ex) { Logger.ExceptionLow(() => TagValue.New() .MethodName(methodName) .Exception(ex)); return(ret); } Logger.CheckPointHigh(() => TagValue.New().MethodName(methodName).Message("INSERT INTO KfnCuentaCorrienteMovimiento End")); return(ret); }