Ejemplo n.º 1
0
        public override bool Run(string client_msg, ref Transaction trans, ref bool IsTerm, ref string buffer_response)
        {
            if (client_msg.Length < 69)
            {
                return(false);
            }

            POS_Entrada pe = new POS_Entrada();

            pe.set_st_terminal(client_msg.Substring(6, 8));
            pe.set_vr_valor(client_msg.Substring(57, 12));

            if (pe.get_st_terminal().StartsWith("1"))
            {
                pe.set_st_nsuOrigemSITEF(client_msg.Substring(200, 6));

                exec_pos_desfazVendaEmpresarialSITEF tr = new exec_pos_desfazVendaEmpresarialSITEF(trans);

                tr.input_cont_pe = pe;
                tr.RunOnline();
                buffer_response = util.Get_POS_Buffer(tr.output_cont_pr, tr.output_st_msg);
                IsTerm          = true;
                return(true);
            }
            else
            {
                exec_pos_desfazVendaEmpresarial tr = new exec_pos_desfazVendaEmpresarial(trans);
                tr.input_cont_pe = pe;
                tr.RunOnline();

                buffer_response = util.Get_POS_Buffer(tr.output_cont_pr, tr.output_st_msg);
                IsTerm          = true;
                return(true);
            }
        }
Ejemplo n.º 2
0
        public override bool Run(string client_msg, ref Transaction trans, ref bool IsTerm, ref string buffer_response)
        {
            if (client_msg.Length < 71)
            {
                return(false);
            }

            POS_Entrada pe = new POS_Entrada();

            pe.set_st_terminal(client_msg.Substring(6, 8));

            string trilha = client_msg.Substring(14, 27);

            pe.set_st_empresa(trilha.Substring(6, 6));
            pe.set_st_matricula(trilha.Substring(12, 6));
            pe.set_st_titularidade(trilha.Substring(18, 2));

            pe.set_st_senha(client_msg.Substring(41, 16));
            pe.set_vr_valor(client_msg.Substring(57, 12));
            pe.set_nu_parcelas(client_msg.Substring(69, 2));
            pe.set_st_valores(client_msg.Substring(71));

            if (client_msg.Length > 200)
            {
                pe.set_st_terminalSITEF(client_msg.Substring(200, 8));  // veio do sitef
                pe.set_st_nsuOrigemSITEF(client_msg.Substring(208, 6)); // veio do sitef
            }

            // ajustado
            if (pe.get_st_terminal().StartsWith("1"))
            {
                exec_pos_vendaEmpresarialSITEF tr = new exec_pos_vendaEmpresarialSITEF(trans);

                tr.input_cont_pe = pe;
                tr.RunOnline();

                IsTerm = tr.IsFail;

                buffer_response = util.Get_POS_Buffer(tr.output_cont_pr, tr.output_st_msg);

                return(true);
            }
            else
            {
                exec_pos_vendaEmpresarial tr = new exec_pos_vendaEmpresarial(trans);

                tr.input_cont_pe = pe;
                tr.RunOnline();

                IsTerm          = tr.IsFail;
                buffer_response = util.Get_POS_Buffer(tr.output_cont_pr, tr.output_st_msg);

                return(true);
            }
        }
Ejemplo n.º 3
0
        public override bool authenticate( )
        {
            Registry("authenticate exec_pos_desfazVendaEmpresarialSITEF ");

            /// USER [ authenticate ]

            // ## Buscar terminal

            T_Loja loja = new T_Loja(this);

            var_codResp = "0606";

            //alterado
            if (!loja.select_rows_loja(input_cont_pe.get_st_terminal().Substring(1).TrimStart('0')))
            {
                output_st_msg = "Erro aplicativo1";
                return(false);
            }

            if (!loja.fetch())
            {
                output_st_msg = "Erro aplicativo2";
                return(false);
            }



            // ## Buscar transação pelo terminal e pelo valor

            l_tr = new LOG_Transacoes(this);

            if (!l_tr.select_rows_loj_vr(loja.get_identity(),
                                         input_cont_pe.get_vr_valor(),
                                         input_cont_pe.get_st_nsuOrigemSITEF()))
            {
                output_st_msg = "Erro aplicativo3";
                return(false);
            }

            l_tr.SetReversedFetch();

            if (!l_tr.fetch())
            {
                output_st_msg = "Erro aplicativo4";
                return(false);
            }

            // ## Conferir se status já desfeito

            if (l_tr.get_tg_confirmada() == TipoConfirmacao.Desfeita)
            {
                var_codResp   = "N3N3";
                output_st_msg = "Trans. já desfeita";
                return(false);
            }

            // ## Conferir se status dif de pendente

            if (l_tr.get_tg_confirmada() != TipoConfirmacao.Pendente)
            {
                output_st_msg = "Erro aplicativo5";
                return(false);
            }

            term = new T_Terminal(this);

            if (!term.selectIdentity(l_tr.get_fk_terminal()))
            {
                output_st_msg = "Erro aplicativo6";
                return(false);
            }

            var_codResp = "0000";

            /// USER [ authenticate ] END

            Registry("authenticate done exec_pos_desfazVendaEmpresarialSITEF ");

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

            /// USER [ authenticate ]

            cart  = new T_Cartao(this);
            emp   = new T_Empresa(this);
            l_nsu = new LOG_NSU(this);
            info  = new T_InfoAdicionais(this);
            prot  = new T_Proprietario(this);
            loj   = new T_Loja(this);

            // Default é erro genérico
            var_codResp = "9999";

            // Normal
            var_nu_nsuAtual    = Context.NONE;
            var_nu_nsuEntidade = Context.NONE;

            // Cancelamento
            var_nu_nsuOrig    = Context.NONE;
            var_nu_nsuEntOrig = Context.NONE;

            // Valores básicos de comércio
            var_vr_total    = input_cont_pe.get_vr_valor();
            var_nu_parcelas = input_cont_pe.get_nu_parcelas();

            var_codResp = "0606";

            // alterado

            #region - valida loja AO INVES DE TERMINAL (antigo) -

            // ## Busca terminal pelo seu código

            // pega os 7 ultimos
            if (!loj.select_rows_loja(input_cont_pe.get_st_terminal().Substring(1).TrimStart('0')))
            {
                output_st_msg = "Loja inexistente";
                var_codResp   = "0303";
                return(false);
            }

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

            // alterado!
            // busca o primeiro terminal vinculado

            if (!term.select_fk_loja(loj.get_identity()))
            {
                output_st_msg = "Erro do terminal";
                return(false);
            }

            term.fetch();

            #endregion

            // continua igual

            #region - valida empresa -

            // ## Busca empresa informada

            if (!emp.select_rows_empresa(input_cont_pe.get_st_empresa()))
            {
                output_st_msg = "Empresa inexistente";
                var_codResp   = "0303";
                return(false);
            }

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

            // ## Caso empresa bloqueada, sair

            if (emp.get_tg_bloq() == Context.TRUE)
            {
                output_st_msg = "Empresa bloqueada";
                var_codResp   = "0303";
                return(false);
            }

            #endregion

            // alterado!

            #region - valida relação da Loja do Terminal com Empresa (Convênio)

            LINK_LojaEmpresa loj_emp = new LINK_LojaEmpresa(this);

            if (!loj_emp.select_fk_empresa_loja(emp.get_identity(), loj.get_identity()))
            {
                output_st_msg = "Loja não conveniada";
                var_codResp   = "0303";
                return(false);
            }

            if (loj.get_tg_blocked() == Context.TRUE)
            {
                output_st_msg = "Loja bloqueada";
                var_codResp   = "0303";
                return(false);
            }

            if (loj.get_tg_cancel() == Context.TRUE)
            {
                output_st_msg = "Loja cancelada";
                var_codResp   = "0303";
                return(false);
            }

            #endregion

            // continua igual

            #region - valida cartão -

            if (!cart.select_rows_tudo(input_cont_pe.get_st_empresa(),
                                       input_cont_pe.get_st_matricula(),
                                       input_cont_pe.get_st_titularidade()))
            {
                output_st_msg = "Cartão inexistente";
                var_codResp   = "0606";
                return(false);
            }

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

            // ## Verifica bloqueio

            if (cart.get_tg_status() == CartaoStatus.Bloqueado)
            {
                output_st_msg = "Cartão inválido";
                var_codResp   = "0505";
                return(false);
            }

            if (cart.get_tg_emitido() != StatusExpedicao.Expedido)
            {
                output_st_msg = "Cartão inválido";
                var_codResp   = "0505";
                return(false);
            }

            if (cart.get_tg_tipoCartao() == TipoCartao.educacional)
            {
                // ## No caso educacional, permitir somente venda
                // ## em uma parcela

                if (input_cont_pe.get_nu_parcelas().TrimStart('0') != "1")
                {
                    output_st_msg = "Somente uma parcela";
                    var_codResp   = "0606";
                    return(false);
                }
            }

            // ## Conferir vencto do cartão

            /*
             * if ( cart.get_tg_tipoCartao() == TipoCartao.empresarial )
             * {
             *      int year  = 2000 + Convert.ToInt32 ( cart.get_st_venctoCartao().Substring ( 2,2 ) );
             *      int month = Convert.ToInt32 ( cart.get_st_venctoCartao().Substring ( 0,2 ) );
             *      int day   = 1;
             *
             * DateTime tim_venc = new DateTime ( year, month, day );
             *
             * if ( tim_venc < DateTime.Now )
             *      {
             * output_st_msg     = "Cartão vencido";
             * var_codResp       = "7676";
             * return false;
             *      }
             * }
             */

            #endregion

            var_vr_total    = input_cont_pe.get_vr_valor();
            var_nu_parcelas = input_cont_pe.get_nu_parcelas();

            SQL_LOGGING_ENABLE = false;

            // continua igual

            #region - Verifica disponivel mensal nas parcelas -

            T_Parcelas parc = new T_Parcelas(this);

            string myId = cart.get_identity();

            if (cart.get_st_titularidade() != "01")
            {
                cart.select_rows_tudo(cart.get_st_empresa(),
                                      cart.get_st_matricula(),
                                      "01");
                cart.fetch();
            }

            vr_dispMes = cart.get_int_vr_limiteMensal() + cart.get_int_vr_extraCota();
            vr_dispTot = cart.get_int_vr_limiteTotal() + cart.get_int_vr_extraCota();

            vr_valor = Convert.ToInt64(input_cont_pe.get_vr_valor());

            if (cart.get_tg_tipoCartao() != TipoCartao.presente)
            {
                new ApplicationUtil().GetSaldoDisponivel(ref cart, ref vr_dispMes, ref vr_dispTot);

                int tmp_nu_parc = Convert.ToInt32(input_cont_pe.get_nu_parcelas());

                if (tmp_nu_parc > 1)
                {
                    if (vr_valor > vr_dispTot)
                    {
                        output_st_msg = "limite excedido";
                        var_codResp   = "2727";

                        SQL_LOGGING_ENABLE = true;

                        return(false);
                    }

                    LOG_Transacoes ltr     = new LOG_Transacoes(this);
                    T_Parcelas     parcTot = new T_Parcelas(this);

                    string tmp = input_cont_pe.get_st_valores();

                    ArrayList lstCartoes = new ArrayList();

                    T_Cartao c_t = new T_Cartao(this);

                    c_t.select_rows_empresa_matricula(cart.get_st_empresa(),
                                                      cart.get_st_matricula());

                    while (c_t.fetch())
                    {
                        lstCartoes.Add(c_t.get_identity());
                    }

                    for (int t = 1, index_pos = 0; t <= tmp_nu_parc; ++t)
                    {
                        long valor_unit_parc = Convert.ToInt64(tmp.Substring(index_pos, 12));

                        index_pos += 12;

                        if (valor_unit_parc > cart.get_int_vr_limiteMensal())
                        {
                            output_st_msg = "limite excedido";
                            var_codResp   = "2727";

                            SQL_LOGGING_ENABLE = true;

                            return(false);
                        }

                        long dispMesParc = cart.get_int_vr_limiteMensal();

                        // Verifica disponivel mensal nas parcelas
                        if (parcTot.select_rows_cartao_mensal(ref lstCartoes, t.ToString()))                              // este mês
                        {
                            while (parcTot.fetch())
                            {
                                if (ltr.selectIdentity(parcTot.get_fk_log_transacoes()))                                      // busca transação
                                {
                                    if (ltr.get_tg_confirmada() == TipoConfirmacao.Confirmada ||
                                        ltr.get_tg_confirmada() == TipoConfirmacao.Pendente)
                                    {
                                        dispMesParc -= parcTot.get_int_vr_valor();
                                    }
                                }
                            }
                        }

                        if (valor_unit_parc > dispMesParc)
                        {
                            output_st_msg = "limite excedido";
                            var_codResp   = "2727";

                            SQL_LOGGING_ENABLE = true;

                            return(false);
                        }
                    }
                }
                else
                {
                    if (vr_valor > vr_dispMes || vr_valor > vr_dispTot)
                    {
                        output_st_msg = "limite excedido";
                        var_codResp   = "2727";

                        SQL_LOGGING_ENABLE = true;

                        return(false);
                    }
                }
            }
            else
            {
                if (vr_valor > cart.get_int_vr_limiteTotal())
                {
                    output_st_msg = "limite excedido";
                    var_codResp   = "2727";

                    SQL_LOGGING_ENABLE = true;

                    return(false);
                }
            }

            if (myId != cart.get_identity())
            {
                // restaurar cartão dep
                cart.selectIdentity(myId);
            }

            #endregion

            SQL_LOGGING_ENABLE = true;

            /// USER [ authenticate ] END

            Registry("authenticate done exec_pos_vendaEmpresarialSITEF ");

            return(true);
        }
        public override bool authenticate( )
        {
            Registry("authenticate exec_pos_desfazVendaEmpresarial ");

            /// USER [ authenticate ]

            // ## Buscar terminal

            term = new T_Terminal(this);

            var_codResp = "0606";

            if (!term.select_rows_terminal(input_cont_pe.get_st_terminal()))
            {
                output_st_msg = "Erro aplicativo";
                return(false);
            }

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

            // ## Buscar transação pelo terminal e pelo valor

            l_tr = new LOG_Transacoes(this);

            if (!l_tr.select_rows_term_vr(term.get_identity(),
                                          input_cont_pe.get_vr_valor()))
            {
                output_st_msg = "Erro aplicativo";
                return(false);
            }

            l_tr.SetReversedFetch();

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

            // ## Conferir se status já desfeito

            if (l_tr.get_tg_confirmada() == TipoConfirmacao.Desfeita)
            {
                var_codResp   = "N3N3";
                output_st_msg = "Trans. já desfeita";
                return(false);
            }

            // ## Conferir se status dif de pendente

            if (l_tr.get_tg_confirmada() != TipoConfirmacao.Pendente)
            {
                output_st_msg = "Erro aplicativo";
                return(false);
            }

            var_codResp = "0000";

            /// USER [ authenticate ] END

            Registry("authenticate done exec_pos_desfazVendaEmpresarial ");

            return(true);
        }