/// <summary> /// Obtiene la información de una cuenta corriente /// </summary> /// <param name="agenciaId">ID de la agencia</param> /// <returns>Un objeto <c>InfoCuentaCorriente</c> que contiene la información de la cuenta corriente</returns> public InfoCuentaCorriente GetInfoCuentaCorriente(int agenciaId) { string methodName = string.Format("{0}", System.Reflection.MethodBase.GetCurrentMethod().Name); InfoCuentaCorriente ret = null; try { ret = Dwh <InfoCuentaCorriente> .ExecuteSingle( this.db, Queries.Kinacu.GetInfoCuentaCorriente, new Dictionary <string, object>() { { "@id", agenciaId } }, this.databaseTransaction); } catch (Exception ex) { Logger.ExceptionLow(() => TagValue.New() .MethodName(methodName) .Exception(ex)); } if (ret.Id == 0) { ret = null; } 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); }