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

            Registry("execute fetch_reciboRepasse ");

            /// USER [ execute ]

            T_RepasseLoja rep = new T_RepasseLoja(this);

            if (!rep.selectIdentity(input_id_repasse))
            {
                return(false);
            }

            string st_extra = rep.get_st_ident();

            T_Loja loj = new T_Loja(this);

            if (!loj.selectIdentity(rep.get_fk_loja()))
            {
                return(false);
            }

            output_cont_rec.set_loja(loj.get_st_nome() + " - " + loj.get_st_social());
            output_cont_rec.set_cnpj(loj.get_nu_CNPJ());
            output_cont_rec.set_pagto(rep.get_tg_opcao());

            LINK_RepasseParcela lrp     = new LINK_RepasseParcela(this);
            T_Parcelas          parc    = new T_Parcelas(this);
            T_Cartao            cart    = new T_Cartao(this);
            LINK_LojaEmpresa    loj_emp = new LINK_LojaEmpresa(this);

            long vr_compras = 0;
            long dias_rep   = 0;

            string fk_empresa = "";

            if (lrp.select_fk_rep(input_id_repasse))
            {
                while (lrp.fetch())
                {
                    parc.selectIdentity(lrp.get_fk_parcela());
                    cart.selectIdentity(parc.get_fk_cartao());

                    if (fk_empresa == "")
                    {
                        fk_empresa = parc.get_fk_empresa();

                        loj_emp.select_fk_empresa_loja(fk_empresa, loj.get_identity());
                        loj_emp.fetch();

                        dias_rep = loj_emp.get_int_nu_dias_repasse();

                        if (rep.get_tg_opcao() != TipoPagamento.Dinheiro)
                        {
                            if (rep.get_tg_opcao() != TipoPagamento.Cheque)
                            {
                                // deposito
                                st_extra = " Banco : " + loj_emp.get_st_banco() + " - Ag. " + loj_emp.get_st_ag() + " Conta: " + loj_emp.get_st_conta();
                            }
                            else
                            {
                                st_extra = rep.get_st_ident();
                            }
                        }
                    }

                    vr_compras += parc.get_int_vr_valor();

                    DadosRepasse dr = new DadosRepasse();

                    dr.set_st_cartao(cart.get_st_empresa() + "." + cart.get_st_matricula());
                    dr.set_dt_trans(parc.get_dt_inclusao());
                    dr.set_st_nsu(parc.get_nu_nsu());
                    dr.set_vr_total(parc.get_vr_valor());

                    DateTime tim = Convert.ToDateTime(parc.get_dt_inclusao());

                    tim = tim.AddDays(dias_rep);

                    dr.set_dt_repasse(GetDataBaseTime(tim));

                    output_array_generic_lst.Add(dr);
                }
            }

            long desc = vr_compras - rep.get_int_vr_valor();

            output_cont_rec.set_vr_compras(vr_compras.ToString());
            output_cont_rec.set_tx_admin(new money().formatToMoney(loj_emp.get_tx_admin()) + "%");
            output_cont_rec.set_vr_desc(new money().formatToMoney(desc.ToString()));
            output_cont_rec.set_vr_tot_rep(rep.get_vr_valor());
            output_cont_rec.set_st_extra(st_extra);

            /// USER [ execute ] END

            Registry("execute done fetch_reciboRepasse ");

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

            Registry("execute fetch_rel_prevLojista ");

            /// USER [ execute ]

            T_Empresa emp = new T_Empresa(this);

            if (!emp.select_rows_empresa(input_st_empresa))
            {
                PublishError("Empresa não disponível");
                return(false);
            }

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

            T_Loja loj = new T_Loja(this);

            if (!loj.select_rows_loja(input_cont_header.get_st_empresa().TrimStart('0')))
            {
                return(false);
            }

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

            LINK_LojaEmpresa loj_emp = new LINK_LojaEmpresa(this);

            if (!loj_emp.select_fk_empresa_loja(emp.get_identity(),
                                                loj.get_identity()))
            {
                PublishError("Loja não conveniada com empresa");
                return(false);
            }

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

            double tx = loj_emp.get_int_tx_admin();

            T_Parcelas     parc = new T_Parcelas(this);
            T_Cartao       cart = new T_Cartao(this);
            LOG_Transacoes ltr  = new LOG_Transacoes(this);

            if (parc.select_rows_lojista_emp(loj.get_identity(),
                                             emp.get_identity(),
                                             "1"))
            {
                SQL_LOGGING_ENABLE = false;

                StringBuilder sb = new StringBuilder();

                while (parc.fetch())
                {
                    if (parc.get_tg_pago() == Context.TRUE)
                    {
                        continue;
                    }

                    if (!ltr.selectIdentity(parc.get_fk_log_transacoes()))
                    {
                        continue;
                    }

                    if (ltr.get_tg_confirmada() != TipoConfirmacao.Confirmada)
                    {
                        continue;
                    }

                    if (!cart.selectIdentity(parc.get_fk_cartao()))
                    {
                        continue;
                    }

                    if (cart.get_st_empresa() != emp.get_st_empresa())
                    {
                        continue;
                    }

                    DadosRepasse dr = new DadosRepasse();

                    dr.set_st_cartao(cart.get_st_empresa() + "." +
                                     cart.get_st_matricula() + "." +
                                     cart.get_st_titularidade());

                    dr.set_st_nsu(parc.get_nu_nsu());
                    dr.set_dt_trans(parc.get_dt_inclusao());
                    dr.set_id_parcela(parc.get_nu_indice());
                    dr.set_vr_total(parc.get_vr_valor());

                    //DateTime t_rep = Convert.ToDateTime ( p

                    //dr.set_dt_repasse   (

                    long repasse = Convert.ToInt64(parc.get_int_vr_valor() - (parc.get_int_vr_valor() * tx / 10000));

                    dr.set_vr_repasse(repasse.ToString());

                    DataPortable mem_rtc = dr as DataPortable;

                    // ## obtem indice

                    sb.Append(MemorySave(ref mem_rtc));
                    sb.Append(",");
                }

                string list_ids = sb.ToString().TrimEnd(',');

                DataPortable dp = new DataPortable();

                dp.setValue("ids", list_ids);

                // ## obtem indice geral

                output_st_csv = MemorySave(ref dp);

                SQL_LOGGING_ENABLE = true;
            }

            /// USER [ execute ] END

            Registry("execute done fetch_rel_prevLojista ");

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

            Registry("execute fetch_rel_repEfetivo ");

            /// USER [ execute ]

            T_Empresa emp = new T_Empresa(this);

            if (!emp.select_rows_empresa(input_st_empresa))
            {
                PublishError("Empresa não disponível");
                return(false);
            }

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

            output_st_nome_empresa = emp.get_st_fantasia();

            T_RepasseLoja repLoja = new T_RepasseLoja(this);

            if (!repLoja.select_rows_dt(input_dt_ini, input_dt_fim))
            {
                PublishError("Nenhum repasse encontrado");
                return(false);
            }

            LINK_RepasseParcela lrp     = new LINK_RepasseParcela(this);
            LINK_LojaEmpresa    loj_emp = new LINK_LojaEmpresa(this);
            T_Loja     loj  = new T_Loja(this);
            T_Parcelas parc = new T_Parcelas(this);
            T_Cartao   cart = new T_Cartao(this);

            StringBuilder sb_lojas        = new StringBuilder();
            StringBuilder sb_content      = new StringBuilder();
            StringBuilder sb_contentPagto = new StringBuilder();

            string id_rep_loja = "";

            while (repLoja.fetch())
            {
                if (!loj.selectIdentity(repLoja.get_fk_loja()))
                {
                    return(false);
                }

                if (input_st_loja.Length > 0)
                {
                    if (loj.get_st_loja() != input_st_loja)
                    {
                        continue;
                    }
                }

                if (!loj_emp.select_fk_empresa_loja(emp.get_identity(), loj.get_identity()))
                {
                    return(false);
                }

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

                // obtenho identificação geral deste pagto
                id_rep_loja = loj.get_st_nome() + " [" + loj.get_st_loja() + "] Perc.: " + ((double)loj_emp.get_int_tx_admin() / 100).ToString().Replace(",", ".") + "% <br>Data Repasse: " + repLoja.get_dt_efetiva();

                sb_lojas.Append(id_rep_loja);
                sb_lojas.Append(",");

                double tx = loj_emp.get_int_tx_admin();

                DadosPagtoRepasse dpr = new DadosPagtoRepasse();

                dpr.set_st_loja(id_rep_loja);
                dpr.set_vr_valor(repLoja.get_vr_valor());
                dpr.set_tg_opcao(repLoja.get_tg_opcao());
                dpr.set_dt_pagto(repLoja.get_dt_efetiva());

                if (repLoja.get_tg_opcao() != TipoPagamento.Cheque &&
                    repLoja.get_tg_opcao() != TipoPagamento.Dinheiro)
                {
                    // valor em depósito
                    dpr.set_st_extra("Banco (" + loj_emp.get_st_banco() +
                                     ") Agência (" + loj_emp.get_st_ag() +
                                     ") Conta (" + loj_emp.get_st_conta() + ")");
                }
                else
                {
                    dpr.set_st_extra(repLoja.get_st_ident());
                }

                // index em memoria, retrieve depois
                {
                    DataPortable port = dpr;

                    sb_contentPagto.Append(MemorySave(ref port));
                    sb_contentPagto.Append(",");
                }

                // busco detalhes

                if (!lrp.select_fk_rep(repLoja.get_identity()))
                {
                    return(false);
                }

                while (lrp.fetch())
                {
                    if (!parc.selectIdentity(lrp.get_fk_parcela()))
                    {
                        return(false);
                    }

                    if (!cart.selectIdentity(parc.get_fk_cartao()))
                    {
                        return(false);
                    }

                    DadosRepasse dr = new DadosRepasse();

                    dr.set_st_loja(id_rep_loja);

                    dr.set_st_nsu(parc.get_nu_nsu());
                    dr.set_dt_trans(parc.get_dt_inclusao());
                    dr.set_st_cartao(cart.get_st_empresa() + "." +
                                     cart.get_st_matricula() + "." +
                                     cart.get_st_titularidade());

                    long det_tot = Convert.ToInt64(parc.get_int_vr_valor() - (parc.get_int_vr_valor() * tx / 10000));

                    dr.set_vr_repasse(det_tot.ToString());
                    dr.set_vr_total(parc.get_vr_valor());

                    // index em memoria, retrieve depois
                    {
                        DataPortable port = dr;

                        sb_content.Append(MemorySave(ref port));
                        sb_content.Append(",");
                    }
                }
            }

            output_st_csv_lojas = sb_lojas.ToString().TrimEnd(',');

            // indexa todos os items
            {
                string list_ids = sb_content.ToString().TrimEnd(',');

                if (list_ids == "")
                {
                    PublishNote("Nenhum registro encontrado");
                    return(false);
                }

                DataPortable dp = new DataPortable();

                dp.setValue("ids", list_ids);

                // ## Guarda indexador de grupo

                output_st_csv_contents = MemorySave(ref dp);
            }

            // indexa todos os pagamentos
            {
                string list_ids = sb_contentPagto.ToString().TrimEnd(',');

                if (list_ids == "")
                {
                    PublishNote("Nenhum registro encontrado");
                    return(false);
                }

                DataPortable dp = new DataPortable();

                dp.setValue("ids", list_ids);

                // ## Guarda indexador de grupo

                output_st_csv_pagto = MemorySave(ref dp);
            }

            /// USER [ execute ] END

            Registry("execute done fetch_rel_repEfetivo ");

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

            Registry("execute fetch_repasseData ");

            /// USER [ execute ]

            DateTime t_start = Convert.ToDateTime(input_dt_ini);
            DateTime t_end   = t_start.AddDays(1);

            Hashtable hshLojas = new Hashtable();

            ArrayList lstEmpresas = new ArrayList();

            // ## Busca empresa

            T_Empresa emp      = new T_Empresa(this);
            T_Empresa emp_link = new T_Empresa(this);

            if (!emp.select_rows_empresa(input_cont_header.get_st_empresa()))
            {
                PublishError("Código de empresa inválida");
                return(false);
            }

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

            lstEmpresas.Add(emp.get_identity());

            if (emp_link.select_fk_admin(emp.get_identity()))
            {
                while (emp_link.fetch())
                {
                    lstEmpresas.Add(emp_link.get_identity());
                }
            }

            LINK_LojaEmpresa loj_emp = new LINK_LojaEmpresa(this);

            // ## Busca convenios

            if (!loj_emp.select_rows_empresas(ref lstEmpresas))
            {
                PublishError("Nenhuma loja cadastrada");
                return(false);
            }

            T_Loja         loj  = new T_Loja(this);
            T_Cartao       cart = new T_Cartao(this);
            LOG_Transacoes ltr  = new LOG_Transacoes(this);
            T_Parcelas     parc = new T_Parcelas(this);

            StringBuilder sb       = new StringBuilder();
            StringBuilder sb_lojas = new StringBuilder();

            while (loj_emp.fetch())
            {
                if (!loj.selectIdentity(loj_emp.get_fk_loja()))
                {
                    return(false);
                }

                double tx   = loj_emp.get_int_tx_admin();
                long   dias = loj_emp.get_int_nu_dias_repasse();

                long repasse    = 0,
                     total_loja = 0;

                if (parc.select_rows_repasse(loj.get_identity(),
                                             TipoParcela.EM_ABERTO))                      // ainda não pagos
                {
                    while (parc.fetch())
                    {
                        if (ltr.selectIdentity(parc.get_fk_log_transacoes()))
                        {
                            if (ltr.get_tg_confirmada() != TipoConfirmacao.Confirmada)
                            {
                                continue;
                            }
                        }

                        if (!cart.selectIdentity(parc.get_fk_cartao()))
                        {
                            return(false);
                        }

                        DadosRepasse dr = new DadosRepasse();

                        dr.set_st_nsu(parc.get_nu_nsu());
                        dr.set_st_loja(loj.get_st_loja());
                        dr.set_st_cartao(cart.get_st_empresa() + "." +
                                         cart.get_st_matricula() + "." +
                                         cart.get_st_titularidade());

                        DateTime tim = Convert.ToDateTime(parc.get_dt_inclusao());

                        // fora da faixa requerida pelo relatório
                        if (tim > t_end)
                        {
                            continue;
                        }

                        dr.set_dt_trans(parc.get_dt_inclusao());

                        // acerta data correta do repasse
                        dr.set_dt_repasse(GetDataBaseTime(tim.AddDays(dias)));

                        repasse = Convert.ToInt64(parc.get_int_vr_valor() - (parc.get_int_vr_valor() * tx / 10000));

                        dr.set_vr_repasse(repasse.ToString());
                        dr.set_id_parcela(parc.get_identity());

                        DateTime tm_rep = Convert.ToDateTime(dr.get_dt_repasse());

                        dr.set_tg_confirmado(Context.TRUE);

                        if (tm_rep <= t_start)
                        {
                            total_loja += repasse;
                        }
                        else if (tm_rep <= t_end)
                        {
                            total_loja += repasse;
                        }

                        // salva registro do detalhe
                        {
                            DataPortable mem = dr as DataPortable;

                            sb.Append(MemorySave(ref mem));
                            sb.Append(",");
                        }
                    }
                }

                // salva registro da loja
                if (total_loja > 0)
                {
                    DadosSumarioRepasse dsr = new DadosSumarioRepasse();

                    dsr.set_st_loja("(" + loj.get_st_loja() + ") " + loj.get_st_nome() + " - " + loj.get_st_social());
                    dsr.set_st_codLoja(loj.get_st_loja());
                    dsr.set_vr_valor(total_loja.ToString());

                    DataPortable mem = dsr as DataPortable;

                    sb_lojas.Append(MemorySave(ref mem));
                    sb_lojas.Append(",");
                }
            }

            // ## Guarda indexador de grupo dos detalhes
            {
                string list_ids = sb.ToString().TrimEnd(',');

                if (list_ids == "")
                {
                    PublishNote("Nenhum registro encontrado");
                    return(false);
                }

                DataPortable dp = new DataPortable();

                dp.setValue("ids", list_ids);

                output_block_detalhe_loja = MemorySave(ref dp);
            }

            // ## Guarda indexador de grupo de sumario das lojas
            {
                string list_ids = sb_lojas.ToString().TrimEnd(',');

                if (list_ids == "")
                {
                    PublishNote("Nenhum registro encontrado");
                    return(false);
                }

                DataPortable dp = new DataPortable();

                dp.setValue("ids", list_ids);

                output_block_sumario_loja = MemorySave(ref dp);
            }

            /// USER [ execute ] END

            Registry("execute done fetch_repasseData ");

            return(true);
        }
Exemple #5
0
        public override bool execute( )
        {
            Registry("execute fetch_extratoWeb ");

            /// USER [ execute ]

            T_Cartao cart        = new T_Cartao(this);
            T_Cartao cart_all    = new T_Cartao(this);
            T_Cartao cart_search = new T_Cartao(this);

            string emp = input_st_cartao.Substring(0, 6);
            string mat = input_st_cartao.Substring(6, 6);

            if (!cart.select_rows_tudo(emp, mat, input_st_cartao.Substring(12, 2)))
            {
                PublishError("Matrícula não disponível");
                return(false);
            }

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

            if (cart.get_st_senha() != input_st_senha)
            {
                PublishError("Senha inválida");
                return(false);
            }

            ArrayList lst_all_carts = new ArrayList();

            if (cart_all.select_rows_empresa_matricula(emp, mat))
            {
                while (cart_all.fetch())
                {
                    lst_all_carts.Add(cart_all.get_identity());
                }
            }

            string mes = input_st_cartao.Substring(14, 2);
            string ano = input_st_cartao.Substring(16, 4);

            LOG_Transacoes l_tr = new LOG_Transacoes(this);
            T_Loja         loj  = new T_Loja(this);
            T_Parcelas     parc = new T_Parcelas(this);

            T_Dependente   dep  = new T_Dependente(this);
            T_Proprietario prot = new T_Proprietario(this);

            StringBuilder sb_parcs = new StringBuilder();

            LOG_Fechamento lf = new LOG_Fechamento(this);

            if (lf.select_rows_mes_ano_carts(mes, ano, ref lst_all_carts))
            {
                while (lf.fetch())
                {
                    if (!loj.selectIdentity(lf.get_fk_loja()))
                    {
                        continue;
                    }

                    if (!parc.selectIdentity(lf.get_fk_parcela()))
                    {
                        continue;
                    }

                    if (!parc.fetch())
                    {
                        continue;
                    }

                    string nome = "";

                    if (!cart_search.selectIdentity(lf.get_fk_cartao()))
                    {
                        continue;
                    }

                    if (cart_search.get_st_titularidade() == "01")
                    {
                        if (!prot.selectIdentity(cart_search.get_fk_dadosProprietario()))
                        {
                            continue;
                        }

                        nome = prot.get_st_nome();
                    }
                    else
                    {
                        if (!dep.select_rows_prop_tit(cart_search.get_fk_dadosProprietario(), cart_search.get_st_titularidade()))
                        {
                            continue;
                        }

                        if (!dep.fetch())
                        {
                            continue;
                        }

                        nome = dep.get_st_nome();
                    }

                    if (parc.get_vr_valor() == "0")
                    {
                        continue;
                    }

                    Rel_RTC rtc = new Rel_RTC();

                    rtc.set_dt_trans(parc.get_dt_inclusao());
                    rtc.set_st_loja(loj.get_st_nome());
                    rtc.set_st_nsu(parc.get_nu_nsu());
                    rtc.set_vr_total(parc.get_vr_valor());
                    rtc.set_st_indice_parcela(parc.get_nu_indice());
                    rtc.set_st_term(parc.get_nu_tot_parcelas());
                    rtc.set_en_op_cartao(nome);

                    DataPortable mem_rtc = rtc as DataPortable;

                    // ## obtem indice

                    sb_parcs.Append(MemorySave(ref mem_rtc));
                    sb_parcs.Append(",");
                }
            }
            else             // presente e futuro
            {
                DateTime dt_target = new DateTime(Convert.ToInt32(ano), Convert.ToInt32(mes), 1);

                DateTime dt_it = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);

                int my_parc = 1;

                while (dt_it < dt_target)
                {
                    my_parc++;
                    dt_it = dt_it.AddMonths(1);
                }

                if (parc.select_rows_cartao(ref lst_all_carts, my_parc.ToString()))
                {
                    while (parc.fetch())
                    {
                        if (!loj.selectIdentity(parc.get_fk_loja()))
                        {
                            continue;
                        }

                        string nome = "";

                        if (!cart_search.selectIdentity(parc.get_fk_cartao()))
                        {
                            continue;
                        }

                        if (cart_search.get_st_titularidade() == "01")
                        {
                            if (!prot.selectIdentity(cart_search.get_fk_dadosProprietario()))
                            {
                                continue;
                            }

                            nome = prot.get_st_nome();
                        }
                        else
                        {
                            if (!dep.select_rows_prop_tit(cart_search.get_fk_dadosProprietario(), cart_search.get_st_titularidade()))
                            {
                                continue;
                            }

                            if (!dep.fetch())
                            {
                                continue;
                            }

                            nome = dep.get_st_nome();
                        }

                        Rel_RTC rtc = new Rel_RTC();

                        rtc.set_dt_trans(parc.get_dt_inclusao());
                        rtc.set_st_loja(loj.get_st_nome());
                        rtc.set_st_nsu(parc.get_nu_nsu());
                        rtc.set_vr_total(parc.get_vr_valor());
                        rtc.set_st_indice_parcela(parc.get_nu_indice());
                        rtc.set_st_term(parc.get_nu_tot_parcelas());
                        rtc.set_en_op_cartao(nome);

                        DataPortable mem_rtc = rtc as DataPortable;

                        // ## obtem indice

                        sb_parcs.Append(MemorySave(ref mem_rtc));
                        sb_parcs.Append(",");
                    }
                }
            }

            string list_ids_parc = sb_parcs.ToString().TrimEnd(',');

            DataPortable dp_parcs = new DataPortable();

            dp_parcs.setValue("ids", list_ids_parc);

            output_st_content = MemorySave(ref dp_parcs);

            ApplicationUtil var_util = new ApplicationUtil();

            long dispMensal = cart.get_int_vr_limiteMensal() + cart.get_int_vr_extraCota(),
                 dispTotal  = cart.get_int_vr_limiteTotal() + cart.get_int_vr_extraCota();

            var_util.GetSaldoDisponivel(ref cart, ref dispMensal, ref dispTotal);

            output_vr_disp = dispMensal.ToString();
            output_vr_lim  = (cart.get_int_vr_limiteMensal() + cart.get_int_vr_extraCota()).ToString();

            /// USER [ execute ] END

            Registry("execute done fetch_extratoWeb ");

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

            Registry("execute fetch_rel_4_rrp ");

            /// USER [ execute ]

            DateTime t_end = Convert.ToDateTime(input_dt_fim).AddDays(1);

            // ##
            // ## O seguinte trecho indexa as lojas possíveis
            // ## de retorno para uma determinada empresa.
            // ##
            // ## E, no caso de a empresa original ser administradora
            // ## de empresas, indexar todas as lojas de todas empresas
            // ## desta rede.
            // ##

            Hashtable hshLojas = new Hashtable();

            #region - filtro de lojas da empresa -

            if (user.get_tg_nivel() == TipoUsuario.Administrador)
            {
                T_Empresa emp_orig = new T_Empresa(this);

                // ## Busca empresa original

                if (!emp_orig.select_rows_empresa(user.get_st_empresa()))
                {
                    return(false);
                }

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

                LINK_LojaEmpresa lnk = new LINK_LojaEmpresa(this);

                // ## busca relacionamento das empresas com lojas

                if (lnk.select_fk_empresa_geral(emp_orig.get_identity()))
                {
                    while (lnk.fetch())
                    {
                        // ## indexa lojas

                        hshLojas [lnk.get_fk_loja()] = "*";
                    }
                }

                // ## busca empresas administradas

                T_Empresa emp_lnk_admin = new T_Empresa(this);

                if (emp_lnk_admin.select_fk_admin(emp_orig.get_identity()))
                {
                    while (emp_lnk_admin.fetch())
                    {
                        // ## busca lojas de cada empresa administrada

                        LINK_LojaEmpresa lnk_admin = new LINK_LojaEmpresa(this);

                        if (lnk_admin.select_fk_empresa_geral(emp_lnk_admin.get_identity()))
                        {
                            while (lnk_admin.fetch())
                            {
                                // ## indexa loja

                                hshLojas [lnk_admin.get_fk_loja()] = "*";
                            }
                        }
                    }
                }
            }

            #endregion

            // ## Busca empresa

            T_Empresa emp = new T_Empresa(this);

            if (!emp.select_rows_empresa(input_st_empresa))
            {
                PublishError("Código de empresa inválida");
                return(false);
            }

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

            output_st_nome_empresa = emp.get_st_fantasia();

            LINK_LojaEmpresa loj_emp = new LINK_LojaEmpresa(this);

            // ## Busca convenios

            if (!loj_emp.select_fk_empresa_geral(emp.get_identity()))
            {
                PublishError("Nenhuma loja cadastrada");
                return(false);
            }

            T_Loja         loj  = new T_Loja(this);
            T_Cartao       cart = new T_Cartao(this);
            LOG_Transacoes ltr  = new LOG_Transacoes(this);

            long total       = 0;
            long total_geral = 0;

            StringBuilder sb = new StringBuilder();

            // ## Busca registros de convênios

            T_Parcelas parc = new T_Parcelas(this);

            while (loj_emp.fetch())
            {
                if (hshLojas.Count > 0)
                {
                    if (hshLojas [loj_emp.get_fk_loja()] == null)
                    {
                        continue;
                    }
                }

                // ## Busca loja

                if (!loj.selectIdentity(loj_emp.get_fk_loja()))
                {
                    return(false);
                }

                double tx   = loj_emp.get_int_tx_admin();
                long   dias = loj_emp.get_int_nu_dias_repasse();

                long subtotal   = 0,
                     repasse    = 0,
                     total_loja = 0;

                // ## Busca nas transações do periodo

                bool zerada = true;

                if (parc.select_rows_repasse(loj.get_identity(),
                                             TipoParcela.EM_ABERTO))                      // ainda não pagos
                {
                    while (parc.fetch())
                    {
                        if (ltr.selectIdentity(parc.get_fk_log_transacoes()))
                        {
                            if (ltr.get_tg_confirmada() != TipoConfirmacao.Confirmada)
                            {
                                continue;
                            }
                        }

                        if (!cart.selectIdentity(parc.get_fk_cartao()))
                        {
                            return(false);
                        }

                        DateTime tim = Convert.ToDateTime(parc.get_dt_inclusao()).AddDays(dias);

                        // fora da faixa requerida pelo relatório
                        if (tim > t_end)
                        {
                            continue;
                        }

                        DadosRepasse dr = new DadosRepasse();

                        dr.set_tg_tipoCartao(cart.get_tg_tipoCartao());
                        dr.set_st_nsu(parc.get_nu_nsu());
                        dr.set_st_loja(loj.get_st_loja());

                        dr.set_st_cartao(cart.get_st_empresa() + "." +
                                         cart.get_st_matricula() + "." +
                                         cart.get_st_titularidade());

                        dr.set_dt_trans(parc.get_dt_inclusao());
                        dr.set_vr_total(parc.get_vr_valor());

                        // acerta data correta do repasse
                        dr.set_dt_repasse(GetDataBaseTime(tim));

                        total_loja += parc.get_int_vr_valor();
                        repasse     = Convert.ToInt64(parc.get_int_vr_valor() - (parc.get_int_vr_valor() * tx / 10000));
                        subtotal   += repasse;

                        dr.set_vr_repasse(repasse.ToString());

                        DataPortable mem = dr as DataPortable;

                        sb.Append(MemorySave(ref mem));
                        sb.Append(",");

                        zerada = false;
                    }
                }

                if (!zerada)
                {
                    total       += subtotal;
                    total_geral += total_loja;

                    output_st_csv_lojas      += loj.get_st_loja() + ",";
                    output_st_csv_nome_lojas += loj.get_st_nome() +
                                                " - CNPJ (" + loj.get_nu_CNPJ() +
                                                ") - Percentual " + ((double)loj_emp.get_int_tx_admin() / 100).ToString().Replace(",", ".") +
                                                "% - Dias de repasse " + loj_emp.get_nu_dias_repasse() + ",";

                    output_st_csv_subtotal       += subtotal.ToString() + ",";
                    output_st_csv_subtotal_geral += total_loja.ToString() + ",";
                }
            }

            string list_ids = sb.ToString().TrimEnd(',');

            if (list_ids == "")
            {
                PublishNote("Nenhum registro encontrado");
                return(false);
            }

            DataPortable dp = new DataPortable();

            dp.setValue("ids", list_ids);

            // ## Guarda indexador de grupo

            output_st_csv_content = MemorySave(ref dp);

            output_st_csv_lojas          = output_st_csv_lojas.TrimEnd(',');
            output_st_csv_nome_lojas     = output_st_csv_nome_lojas.TrimEnd(',');
            output_st_csv_subtotal       = output_st_csv_subtotal.TrimEnd(',');
            output_st_csv_subtotal_geral = output_st_csv_subtotal_geral.TrimEnd(',');

            output_st_total       = total.ToString();
            output_st_total_geral = total_geral.ToString();

            /// USER [ execute ] END

            Registry("execute done fetch_rel_4_rrp ");

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

            Registry("execute fetch_rel_3_fech ");

            /// USER [ execute ]

            // ##
            // ## O seguinte trecho indexa as lojas possíveis
            // ## de retorno para uma determinada empresa.
            // ##
            // ## E, no caso de a empresa original ser administradora
            // ## de empresas, indexar todas as lojas de todas empresas
            // ## desta rede.
            // ##

            Hashtable hshLojas = new Hashtable();

            T_Loja           loj     = new T_Loja(this);
            T_Parcelas       parc    = new T_Parcelas(this);
            T_Cartao         cart    = new T_Cartao(this);
            T_Terminal       term    = new T_Terminal(this);
            T_Proprietario   prot    = new T_Proprietario(this);
            LINK_LojaEmpresa loj_emp = new LINK_LojaEmpresa(this);

            string aff = "";

            switch (input_en_tipo)
            {
            case "0":                           // por Loja
            {
                #region Por Loja

                Hashtable hsh_loja           = new Hashtable();
                Hashtable hsh_sub_total_loja = new Hashtable();

                StringBuilder sb = new StringBuilder();

                long nu_total_empresa = 0;

                ArrayList lstLojas = new ArrayList();

                // ## Busca registros

                while (log_fech.fetch())
                {
                    if (aff == "")
                    {
                        aff = " - " + log_fech.get_st_afiliada();
                    }

                    // ## Busca tabelas auxiliares

                    if (!loj.selectIdentity(log_fech.get_fk_loja()))
                    {
                        return(false);
                    }

                    if (!cart.selectIdentity(log_fech.get_fk_cartao()))
                    {
                        return(false);
                    }

                    if (!prot.selectIdentity(cart.get_fk_dadosProprietario()))
                    {
                        return(false);
                    }

                    if (!parc.selectIdentity(log_fech.get_fk_parcela()))
                    {
                        return(false);
                    }

                    if (!term.selectIdentity(parc.get_fk_terminal()))
                    {
                        return(false);
                    }

                    if (input_st_afiliada != "")
                    {
                        if (log_fech.get_st_afiliada() != input_st_afiliada)
                        {
                            continue;
                        }
                    }

                    string pct = "000";

                    if (loj_emp.select_fk_empresa_loja(emp.get_identity(), loj.get_identity()))
                    {
                        if (loj_emp.fetch())
                        {
                            pct = loj_emp.get_tx_admin();
                        }
                    }

                    double tx = loj_emp.get_int_tx_admin();

                    pct = pct.PadLeft(3, '0');
                    pct = pct.Insert(pct.Length - 2, ".") + "%";

                    string st_loja = loj.get_st_nome() + " - Perc.: " + pct + "<br>" + loj.get_st_social() + " - CNPJ: " + loj.get_nu_CNPJ();

                    // ## Guarda nomes de lojas

                    if (hsh_loja [st_loja] == null)
                    {
                        hsh_sub_total_loja [st_loja] = (long)0;
                        hsh_loja           [st_loja] = "*";

                        lstLojas.Add(st_loja);
                    }

                    long valor    = log_fech.get_int_vr_valor();
                    long sub_loja = (long)hsh_sub_total_loja [st_loja];

                    nu_total_empresa += valor;

                    hsh_sub_total_loja [st_loja] = sub_loja + valor;

                    // ## Grava registro em memória

                    DadosFechamento df = new DadosFechamento();

                    df.set_st_cartao(cart.get_st_empresa() + "." +
                                     cart.get_st_matricula() + "." +
                                     cart.get_st_titularidade());

                    df.set_st_terminal(term.get_nu_terminal());
                    df.set_st_loja(st_loja);
                    df.set_st_nsu(parc.get_nu_nsu());
                    df.set_dt_trans(parc.get_dt_inclusao());
                    df.set_vr_valor(log_fech.get_vr_valor());

                    df.set_st_nome(prot.get_st_nome());

                    long repasse = Convert.ToInt64(log_fech.get_int_vr_valor() - (log_fech.get_int_vr_valor() * tx / 10000));

                    df.set_vr_repasse(repasse.ToString());

                    df.set_nu_parcela(parc.get_nu_indice() +
                                      "/" +
                                      parc.get_nu_tot_parcelas());

                    DataPortable mem_rlt = df as DataPortable;

                    // ## Gera identificador

                    sb.Append(MemorySave(ref mem_rlt));
                    sb.Append(",");
                }

                output_st_total = nu_total_empresa.ToString();

                string list_ids = sb.ToString().TrimEnd(',');

                if (list_ids == "")
                {
                    PublishNote("Nenhum registro encontrado");
                    return(false);
                }

                DataPortable dp = new DataPortable();

                dp.setValue("ids", list_ids);

                // ## gera identificador de todos os registros

                output_st_csv_loja_content = MemorySave(ref dp);

                lstLojas.Sort();

                for (int t = 0; t < lstLojas.Count; ++t)
                {
                    string loja = lstLojas[t].ToString();

                    long sub_total = (long)hsh_sub_total_loja [loja];

                    output_st_csv_subtotal_loja += sub_total.ToString() + ",";
                    output_st_csv_loja          += loja + ",";
                }

                output_st_csv_loja          = output_st_csv_loja.TrimEnd(',');
                output_st_csv_subtotal_loja = output_st_csv_subtotal_loja.TrimEnd(',');

                #endregion

                break;
            }

            case "1":                     // por cartao
            {
                #region Por Cartao

                Hashtable hsh_cartao           = new Hashtable();
                Hashtable hsh_sub_total_cartao = new Hashtable();

                StringBuilder sb = new StringBuilder();

                long nu_total_cartao = 0;

                ArrayList lstCart = new ArrayList();

                while (log_fech.fetch())
                {
                    if (aff == "")
                    {
                        if (log_fech.get_st_afiliada().Trim().Length != 0)
                        {
                            aff = " - " + log_fech.get_st_afiliada();
                        }
                    }

                    if (!loj.selectIdentity(log_fech.get_fk_loja()))
                    {
                        return(false);
                    }

                    if (!parc.selectIdentity(log_fech.get_fk_parcela()))
                    {
                        return(false);
                    }

                    if (!cart.selectIdentity(log_fech.get_fk_cartao()))
                    {
                        return(false);
                    }

                    if (!prot.selectIdentity(cart.get_fk_dadosProprietario()))
                    {
                        return(false);
                    }

                    string cartao = prot.get_st_nome() + "<br>CPF: " +
                                    prot.get_st_cpf() + " Cartão: " +
                                    cart.get_st_empresa() + "." +
                                    cart.get_st_matricula() + "<br>";

                    if (hsh_cartao [cartao] == null)
                    {
                        hsh_sub_total_cartao [cartao] = (long)0;
                        hsh_cartao           [cartao] = "*";

                        lstCart.Add(cartao);
                    }

                    long valor      = log_fech.get_int_vr_valor();
                    long sub_cartao = (long)hsh_sub_total_cartao [cartao];

                    nu_total_cartao += valor;
                    hsh_sub_total_cartao [cartao] = sub_cartao + valor;

                    DadosFechamento df = new DadosFechamento();

                    df.set_st_cartao(cartao);

                    df.set_st_loja("(" + loj.get_st_loja() + ") " + loj.get_st_nome());
                    df.set_st_nsu(parc.get_nu_nsu());
                    df.set_dt_trans(parc.get_dt_inclusao());
                    df.set_vr_valor(log_fech.get_vr_valor());
                    df.set_st_cnpj(loj.get_nu_CNPJ());
                    df.set_st_matricula(cart.get_st_matricula());

                    df.set_nu_parcela(parc.get_nu_indice() +
                                      "/" +
                                      parc.get_nu_tot_parcelas());

                    DataPortable mem_rlt = df as DataPortable;

                    sb.Append(MemorySave(ref mem_rlt));
                    sb.Append(",");
                }

                output_st_total = nu_total_cartao.ToString();

                string list_ids = sb.ToString().TrimEnd(',');

                DataPortable dp = new DataPortable();

                dp.setValue("ids", list_ids);

                output_st_csv_cartao_content = MemorySave(ref dp);

                lstCart.Sort();

                for (int t = 0; t < lstCart.Count; ++t)
                {
                    string st_cart = lstCart[t].ToString();

                    long sub_total = (long)hsh_sub_total_cartao [st_cart];

                    output_st_csv_subtotal_cartao += sub_total.ToString() + ",";
                    output_st_csv_cartao          += st_cart + ",";
                }

                output_st_csv_subtotal_cartao = output_st_csv_subtotal_cartao.TrimEnd(',');
                output_st_csv_cartao          = output_st_csv_cartao.TrimEnd(',');

                #endregion

                break;
            }
            }

            output_st_empresa += aff;

            /// USER [ execute ] END

            Registry("execute done fetch_rel_3_fech ");

            return(true);
        }