Example #1
0
        public override bool execute( )
        {
            if (base.execute() == false)
            {
                return(false);
            }

            Registry("execute exec_resolvePend ");

            /// USER [ execute ]

            DateTime start = Convert.ToDateTime(input_dt_ini);
            DateTime end   = Convert.ToDateTime(input_dt_ini).AddDays(1);

            LOG_Transacoes ltr = new LOG_Transacoes(this);

            ltr.ExclusiveAccess();

            if (!ltr.select_rows_nsu(input_nsu,
                                     GetDataBaseTime(start),
                                     GetDataBaseTime(end)))
            {
                PublishError("NSU não disponível");
                return(false);
            }

            if (!ltr.fetch())
            {
                return(false);
            }

            if (ltr.get_tg_confirmada() == input_tg_confirmada)
            {
                PublishError("Transação previamente resolvida");
                return(false);
            }

            if (input_tg_confirmada == TipoConfirmacao.Cancelada)
            {
                T_Cartao cart = new T_Cartao(this);

                cart.ExclusiveAccess();

                if (cart.selectIdentity(ltr.get_fk_cartao()))
                {
                    if (cart.get_tg_tipoCartao() == TipoCartao.presente)
                    {
                        cart.set_vr_limiteTotal(cart.get_int_vr_limiteTotal() +
                                                ltr.get_int_vr_total());

                        if (!cart.synchronize_T_Cartao())
                        {
                            return(false);
                        }
                    }
                }

                cart.ReleaseExclusive();
            }

            ltr.set_tg_confirmada(input_tg_confirmada);

            if (!ltr.synchronize_LOG_Transacoes())
            {
                return(false);
            }

            ltr.ReleaseExclusive();

            if (input_tg_confirmada == TipoConfirmacao.Confirmada)
            {
                PublishNote("Transação confirmada com sucesso");
            }
            else
            {
                PublishNote("Transação cancelada com sucesso");
            }

            /// USER [ execute ] END

            Registry("execute done exec_resolvePend ");

            return(true);
        }