Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }