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