public override bool execute( )
        {
            Registry("execute exec_pos_cancelaVendaEmpresarial ");

            /// USER [ execute ]

            // ## Buscar parcelas com NSU e data de hoje
            // ## pois somente pode-se cancelar transações no mesmo dia

            T_Parcelas parc = new T_Parcelas(this);

            if (!parc.select_rows_nsu(input_st_nsu_cancel,
                                      GetTodayStartTime(),
                                      GetTodayEndTime()))
            {
                output_st_msg = "erro aplicativo";
                return(false);
            }

            T_Parcelas tmp = new T_Parcelas(this);

            while (parc.fetch())
            {
                // ## Atualizar parcela

                tmp.ExclusiveAccess();

                if (!tmp.selectIdentity(parc.get_identity()))
                {
                    output_st_msg = "erro aplicativo";
                    return(false);
                }

                // ## Se parcela já foi cancelada, sair

                if (tmp.get_tg_pago() == TipoParcela.CANCELADA)
                {
                    output_st_msg = "prev. cancel";
                    return(false);
                }

                // ## Se for cartão edu, estornar imediatamente no disponivel

                if (cart.get_tg_tipoCartao() == TipoCartao.educacional)
                {
                    long disp = Convert.ToInt64(cart.get_vr_disp_educacional()) +
                                Convert.ToInt64(tmp.get_vr_valor());

                    cart.set_vr_disp_educacional(disp.ToString());
                }
                else if (cart.get_tg_tipoCartao() == TipoCartao.presente)
                {
                    cart.set_vr_limiteTotal(cart.get_int_vr_limiteTotal() + tmp.get_int_vr_valor());
                }

                // ## Atualizar

                if (!tmp.synchronize_T_Parcelas())
                {
                    output_st_msg = "erro aplicativo";
                    return(false);
                }
            }

            // ## Atualiza cartão

            if (!cart.synchronize_T_Cartao())
            {
                output_st_msg = "erro aplicativo";
                return(false);
            }

            output_st_msg = "NSU: " + input_st_nsu_cancel.TrimStart('0');
            var_codResp   = "0000";

            /// USER [ execute ] END

            Registry("execute done exec_pos_cancelaVendaEmpresarial ");

            return(true);
        }
        public override bool finish( )
        {
            Registry("finish exec_pos_vendaEmpresarialSITEF ");

            /// USER [ finish ]

            if (IsFail)
            {
                // ## Nsu não foi criado!
                l_nsu.set_dt_log(GetDataBaseTime());

                if (!l_nsu.create_LOG_NSU())
                {
                    output_st_msg = "Erro aplicativo";
                    return(false);
                }

                var_nu_nsuAtual    = l_nsu.get_identity();
                var_operacaoCartao = var_operacaoCartaoFail;
            }

            // ## Copiar dados para saída

            output_cont_pr.set_st_codResp(var_codResp);
            output_cont_pr.set_st_nsuRcb(var_nu_nsuAtual.PadLeft(6, '0'));

            output_cont_pr.set_st_nsuBanco(new StringBuilder().Append(DateTime.Now.Year.ToString())
                                           .Append(DateTime.Now.Month.ToString("00"))
                                           .Append(DateTime.Now.Day.ToString("00"))
                                           .Append(var_nu_nsuAtual.PadLeft(6, '0')).ToString());

            output_cont_pr.set_st_PAN(cart.get_st_empresa() + cart.get_st_matricula());

            output_cont_pr.set_st_mesPri(Context.EMPTY);
            output_cont_pr.set_st_loja(loj.get_st_loja());
            output_cont_pr.set_st_nomeCliente(var_nomeCliente);

            output_cont_pr.set_st_variavel(info.get_st_empresaAfiliada());

            LOG_Transacoes l_tr = new LOG_Transacoes(this);

            #region - registra a transação -

            l_tr.set_fk_terminal(term.get_identity());
            l_tr.set_fk_empresa(emp.get_identity());
            l_tr.set_fk_cartao(cart.get_identity());
            l_tr.set_vr_total(var_vr_total);
            l_tr.set_nu_parcelas(var_nu_parcelas);
            l_tr.set_nu_nsu(var_nu_nsuAtual);
            l_tr.set_dt_transacao(GetDataBaseTime());
            l_tr.set_nu_cod_erro(output_cont_pr.get_st_codResp());
            l_tr.set_nu_nsuOrig(input_cont_pe.get_st_nsuOrigemSITEF());
            l_tr.set_en_operacao(var_operacaoCartao);
            l_tr.set_st_msg_transacao("TERMINAL SITEF: " + input_cont_pe.get_st_terminalSITEF());
            l_tr.set_fk_loja(term.get_fk_loja());
            l_tr.set_st_doc(st_doc);

            if (IsFail)
            {
                l_tr.set_tg_confirmada(TipoConfirmacao.Erro);
                l_tr.set_tg_contabil(Context.FALSE);
            }
            else
            {
                l_tr.set_tg_confirmada(TipoConfirmacao.Pendente);
                l_tr.set_tg_contabil(Context.TRUE);
            }

            if (cart.get_tg_tipoCartao() == TipoCartao.educacional)
            {
                l_tr.set_vr_saldo_disp(cart.get_vr_disp_educacional());
                l_tr.set_vr_saldo_disp_tot(cart.get_vr_educacional());
            }
            else
            {
                l_tr.set_vr_saldo_disp(vr_dispMes.ToString());
                l_tr.set_vr_saldo_disp_tot(vr_dispTot.ToString());
            }

            #endregion

            //alterado

            output_cont_pr.set_st_variavel("Saldo disponível no mês: " + new money().setMoneyFormat(vr_dispMes) + " * " +
                                           "Saldo disponível parcelado: " + new money().setMoneyFormat(vr_dispTot));

            l_tr.create_LOG_Transacoes();

            #region - vincula parcelas com a transação -

            T_Parcelas parc_upd = new T_Parcelas(this);

            // ## Como o registro da transação é feito depois,
            // ## vincular as parcelas com este mesmo registro.

            for (int t = 0; t < lstParcs.Count; ++t)
            {
                parc_upd.ExclusiveAccess();

                if (parc_upd.selectIdentity(lstParcs[t].ToString()))
                {
                    parc_upd.set_fk_log_transacoes(l_tr.get_identity());

                    parc_upd.synchronize_T_Parcelas();
                }

                parc_upd.ReleaseExclusive();
            }

            #endregion

            /// USER [ finish ] END

            Registry("finish done exec_pos_vendaEmpresarialSITEF ");

            if (remoteTransaction == true)
            {
                return(true);
            }

            DataPortable dp_out = new DataPortable();

            dp_out.MapTagValue(COMM_OUT_EXEC_POS_VENDAEMPRESARIAL.st_msg, output_st_msg);

            var_Comm.AddExitPortable(ref dp_out);

            DataPortable dp_cont_1 = new DataPortable();

            dp_cont_1.MapTagContainer(COMM_OUT_EXEC_POS_VENDAEMPRESARIAL.pr, output_cont_pr as DataPortable);

            var_Comm.AddExitPortable(ref dp_cont_1);

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

            Registry("execute exec_repasseLoja ");

            /// USER [ execute ]

            loj = new T_Loja(this);

            if (!loj.select_rows_loja(input_st_codLoja))
            {
                return(false);
            }

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

            T_RepasseLoja rl = new T_RepasseLoja(this);

            rl.set_dt_efetiva(GetDataBaseTime());
            rl.set_fk_loja(loj.get_identity());
            rl.set_st_ident(input_st_ident);
            rl.set_tg_opcao(input_tg_opcao);
            rl.set_vr_valor(input_vr_valor);

            if (!rl.create_T_RepasseLoja())
            {
                return(false);
            }

            output_id_confRepasse = rl.get_identity();

            LINK_RepasseParcela lrp = new LINK_RepasseParcela(this);

            T_Parcelas parc = new T_Parcelas(this);

            for (int t = 0; t < input_array_generic_lstPar.Count; ++t)
            {
                DadosRepasse dr = new DadosRepasse(input_array_generic_lstPar[t] as DataPortable);

                if (dr.get_tg_confirmado() == Context.FALSE)
                {
                    continue;
                }

                parc.ExclusiveAccess();

                if (!parc.selectIdentity(dr.get_id_parcela()))
                {
                    return(false);
                }

                // esta parcela foi repassada
                parc.set_tg_pago(Context.TRUE);

                if (!parc.synchronize_T_Parcelas())
                {
                    return(false);
                }

                parc.ReleaseExclusive();

                lrp.set_fk_parcela(parc.get_identity());
                lrp.set_fk_repasseLoja(rl.get_identity());

                if (!lrp.create_LINK_RepasseParcela())
                {
                    return(false);
                }
            }

            PublishNote("Repasse feito com sucesso");

            /// USER [ execute ] END

            Registry("execute done exec_repasseLoja ");

            return(true);
        }
        public override bool execute( )
        {
            if (base.execute() == false)
            {
                return(false);
            }

            Registry("execute exec_pf_cancelaVenda ");

            /// USER [ execute ]

            // ## Buscar pendência (já confirmada) para cancelamento

            T_PendPayFone pend = new T_PendPayFone(this);

            pend.ExclusiveAccess();

            if (!pend.select_rows_nsu(input_st_nsu_cancelado))
            {
                output_st_codResp = "01";
                output_st_msg     = "NSU inválido (" + input_st_nsu_cancelado.TrimStart('0') + ")";
                return(false);
            }

            if (!pend.fetch())
            {
                output_st_codResp = "80";
                output_st_msg     = "Erro de aplicativo";
                return(false);
            }

            // ## Buscar terminal vinculado

            term = new T_Terminal(this);

            if (!term.selectIdentity(pend.get_fk_terminal()))
            {
                output_st_codResp = "80";
                output_st_msg     = "Erro de aplicativo";
                return(false);
            }

            var_valorTotal = pend.get_vr_valor();

            // ## Buscar lojista pelo terminal usado na pendência

            T_PayFone pf_lojista = new T_PayFone(this);

            if (!pf_lojista.select_fk_term(pend.get_fk_terminal()))
            {
                output_st_codResp = "05";
                output_st_msg     = "Lojista invalido";
                return(false);
            }

            // ## Confere se telefones batem

            if (pf_lojista.get_st_telefone() != input_st_tel_lojista)
            {
                output_st_codResp = "06";
                output_st_msg     = "Lojista invalido";
            }

            // ## Se não estiver confirmado, não pode cancelar

            if (pend.get_en_situacao() != TipoPendPayFone.CONFIRMADO)
            {
                output_st_codResp = "02";
                output_st_msg     = "NSU não confirmado " + input_st_nsu_cancelado.TrimStart('0');
                return(false);
            }

            // ## Se já estiver cancelado, não pode cancelar

            if (pend.get_en_situacao() == TipoPendPayFone.CANCELADO)
            {
                output_st_codResp = "02";
                output_st_msg     = "NSU prev. cancelado " + input_st_nsu_cancelado.TrimStart('0');
                return(false);
            }

            // ## Atribui como cancelado

            pend.set_en_situacao(TipoPendPayFone.CANCELADO);

            // ## Atualizar

            if (!pend.synchronize_T_PendPayFone())
            {
                output_st_codResp = "80";
                output_st_msg     = "Erro de aplicativo";
                return(false);
            }

            // ## Buscar parcelas de hoje para determinado NSU

            T_Parcelas parc = new T_Parcelas(this);

            parc.ExclusiveAccess();

            if (!parc.select_rows_nsu(pend.get_nu_nsu(),
                                      GetTodayStartTime(),
                                      GetTodayEndTime()))
            {
                output_st_codResp = "80";
                output_st_msg     = "Erro de aplicativo";
                return(false);
            }

            if (!parc.fetch())
            {
                output_st_codResp = "80";
                output_st_msg     = "Erro de aplicativo";
                return(false);
            }

            // ## Buscar cartão envolvido

            T_Cartao cart = new T_Cartao(this);

            cart.ExclusiveAccess();

            if (!cart.selectIdentity(parc.get_fk_cartao()))
            {
                output_st_codResp = "80";
                output_st_msg     = "Erro de aplicativo";
                return(false);
            }

            // ## Se for edu, disponibilizar imediatamente (estorno)

            if (cart.get_tg_tipoCartao() == TipoCartao.educacional)
            {
                long disp = Convert.ToInt64(cart.get_vr_disp_educacional()) +
                            Convert.ToInt64(parc.get_vr_valor());

                cart.set_vr_disp_educacional(disp.ToString());
            }

            // ## Atualiza cartão

            if (!cart.synchronize_T_Cartao())
            {
                output_st_codResp = "80";
                output_st_msg     = "Erro de aplicativo";
                return(false);
            }

            // ## Atualizar transação original

            LOG_Transacoes tmp_l_tr = new LOG_Transacoes(this);

            tmp_l_tr.ExclusiveAccess();

            if (!tmp_l_tr.select_rows_nsu_oper(input_st_nsu_cancelado,
                                               OperacaoCartao.PAY_FONE_GRAVA_PEND,
                                               GetTodayStartTime(),
                                               GetTodayEndTime()))
            {
                output_st_msg = "NSU inválido (" + input_st_nsu_cancelado.TrimStart('0') + ")";
                return(false);
            }

            if (!tmp_l_tr.fetch())
            {
                output_st_msg = "Erro aplicativo";
                return(false);
            }

            // ## Confirma cancelamento

            tmp_l_tr.set_tg_contabil(Context.TRUE);
            tmp_l_tr.set_tg_confirmada(TipoConfirmacao.Cancelada);

            // ## Atualiza transação

            if (!tmp_l_tr.synchronize_LOG_Transacoes())
            {
                output_st_msg = "Erro aplicativo";
                return(false);
            }

            output_st_codResp = "00";
            output_st_msg     = "NSU: " + input_st_nsu_cancelado.TrimStart('0');

            /// USER [ execute ] END

            Registry("execute done exec_pf_cancelaVenda ");

            return(true);
        }