private void CVRotativo(string a)
        {
            try
            {
                /* 8  */
                var resumo = new ConciliacaoUseRedeEEVCComprovanteVendaStruct()
                {
                    is_tipo_registro        = 8,
                    nm_tipo_registro        = "CV - Rotativo",
                    is_numero_filiacao_pv   = Convert.ToDecimal(a.Substring(3, 9)),
                    is_numero_resumo_vendas = Convert.ToInt64(string.IsNullOrEmpty(a.Substring(12, 9)) ? "0" : a.Substring(12, 9)),
                    is_data_cv            = Convert.ToDateTime(a.Substring(21, 2) + "/" + a.Substring(23, 2) + "/" + a.Substring(25, 4)),
                    is_valor_bruto        = Convert.ToDecimal(a.Substring(37, 15)) / 100,
                    is_valor_gorjeta      = Convert.ToDecimal(a.Substring(52, 15)) / 100,
                    is_numero_cartao      = a.Substring(67, 16),
                    is_status_cv          = TabelaIII(Convert.ToInt32(a.Substring(83, 3))),
                    is_numero_cv          = Convert.ToDecimal(a.Substring(86, 12)),
                    is_numero_referencia  = a.Substring(98, 13),
                    is_valor_desconto     = Convert.ToDecimal(a.Substring(111, 15)) / 100,
                    is_numero_autorizacao = a.Substring(126, 6),
                    is_hora_transcao      = a.Substring(132, 2) + ":" + a.Substring(134, 2) + ":" + a.Substring(136, 2),
                    is_tipo_captura       = TabelaII(Convert.ToInt32(a.Substring(202, 1))),
                    is_valor_liquido      = Convert.ToDecimal(a.Substring(203, 15)) / 100,
                    is_numero_terminal    = a.Substring(218, 8),
                    is_bandeira           = TabelaI(a.Substring(229, 1)),
                    taxa_cobrada          = Math.Abs(Convert.ToDecimal(((Convert.ToDecimal(a.Substring(203, 15)) / 100) * 100) / (Convert.ToDecimal(a.Substring(37, 15)) / 100)) - 100),
                    is_data_credito       = Convert.ToDateTime(data_pagamento),
                    rede = 1
                };

                io_arl_cv.Add(resumo);



                estabelecimento = a.Substring(3, 9);
                if (io_hsm_totalizador_estabelecimento.Contains(estabelecimento + data_pagamento))
                {
                    TotalizadorEstabelecimento totalizador_estabelecimento = (TotalizadorEstabelecimento)io_hsm_totalizador_estabelecimento[estabelecimento + data_pagamento];
                    io_hsm_totalizador_estabelecimento.Remove(estabelecimento + data_pagamento);
                    io_hsm_totalizador_estabelecimento.Add(estabelecimento + data_pagamento, new TotalizadorEstabelecimento
                    {
                        prev_pagamento  = Convert.ToDateTime(data_pagamento),
                        total_realizado = totalizador_estabelecimento.total_realizado + (Convert.ToDecimal(a.Substring(203, 15)) / 100),
                        estabelecimento = Convert.ToInt32(estabelecimento)
                    });
                }
                else
                {
                    io_hsm_totalizador_estabelecimento.Add(estabelecimento + data_pagamento, new TotalizadorEstabelecimento
                    {
                        prev_pagamento  = Convert.ToDateTime(data_pagamento),
                        total_realizado = (Convert.ToDecimal(a.Substring(203, 15)) / 100),
                        estabelecimento = Convert.ToInt32(estabelecimento)
                    });
                }

                if (io_hsm_totalizador_banco.Contains(banco + data_pagamento))
                {
                    TotalizadorBanco totalizador_banco = (TotalizadorBanco)io_hsm_totalizador_banco[banco + data_pagamento];
                    io_hsm_totalizador_banco.Remove(banco + data_pagamento);
                    io_hsm_totalizador_banco.Add(banco + data_pagamento, new TotalizadorBanco
                    {
                        data_prevista   = Convert.ToDateTime(data_pagamento),
                        total_realizado = totalizador_banco.total_realizado + (Convert.ToDecimal(a.Substring(203, 15)) / 100),
                        id_banco        = Convert.ToInt32(banco)
                    });
                }
                else
                {
                    io_hsm_totalizador_banco.Add(banco + data_pagamento, new TotalizadorBanco
                    {
                        data_prevista   = Convert.ToDateTime(data_pagamento),
                        total_realizado = (Convert.ToDecimal(a.Substring(203, 15)) / 100),
                        id_banco        = Convert.ToInt32(banco)
                    });
                }

                Decimal valor_total         = 0;
                Decimal valor_total_liquido = 0;

                if (io_hsm_totalizador_produto.Contains(produto + data_pagamento))
                {
                    TotalizadorProduto totalizador_produto = (TotalizadorProduto)io_hsm_totalizador_produto[produto + data_pagamento];
                    valor_total         = totalizador_produto.valor_bruto + (Convert.ToDecimal(a.Substring(37, 15)) / 100);
                    valor_total_liquido = totalizador_produto.valor_liquido + (Convert.ToDecimal(a.Substring(203, 15)) / 100);
                    io_hsm_totalizador_produto.Remove(produto + data_pagamento);
                    io_hsm_totalizador_produto.Add(produto + data_pagamento, new TotalizadorProduto
                    {
                        data_prevista = Convert.ToDateTime(data_pagamento),
                        valor_bruto   = valor_total,
                        valor_liquido = valor_total_liquido,
                        ds_produto    = produto,
                        rede          = "Userede"
                    });
                }
                else
                {
                    io_hsm_totalizador_produto.Add(produto + data_pagamento, new TotalizadorProduto
                    {
                        data_prevista = Convert.ToDateTime(data_pagamento),
                        valor_bruto   = (Convert.ToDecimal(a.Substring(37, 15)) / 100),
                        valor_liquido = (Convert.ToDecimal(a.Substring(203, 15)) / 100),
                        ds_produto    = produto,
                        rede          = "Userede"
                    });
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Пример #2
0
        void RODesmontar()
        {
            /*
             * Cria a estrutura de registro.
             */
            var resumo = new ArquivoResumo()
            {
                resumo          = is_linha_atual.Substring(311, 9),
                estabelecimento = is_linha_atual.Substring(17, 7) + is_linha_atual.Substring(38, 4),
                parcela         = is_linha_atual.Substring(66, 2),
                transacao       = "Venda",
                prev_pagamento  = FormatoDataExecutar(is_linha_atual.Substring(140, 8), "yyyyMMdd", "dd/MM/yyyy"),
                valor_bruto     = FormatoValorExecutar(is_linha_atual.Substring(110, 15)),
                taxa_comissao   = "",
                vl_comissao     = "",
                vl_rejeitado    = "",
                vl_liquido      = FormatoValorExecutar(is_linha_atual.Substring(176, 13)),
                situacao        = SituacaoParcelaGet(is_linha_atual.substring(108, 2), false),
                produto         = is_linha_atual.Substring(98, 6).Equals("002000")
                                                                ?       "Pagamento à vista"
                                                                                :       is_linha_atual.Substring(98, 6).Equals("002800")
                                                                                                ?       "Pagamento parcelado com parcela à vista"
                                                                                                :       is_linha_atual.Substring(98, 6).Equals("002890")
                                                                                                                ?       "Pagamento parcelado sem parcela à vista"
                                                                                                                :       is_linha_atual.Substring(98, 6).Equals("002900")
                                                                                                                                ?       "Pagamento pré_datado"
                                                                                                                                :       is_linha_atual.Substring(98, 6).Equals("002899")
                                                                                                                                                ?       "Pagamento c/ Crédito 1 Minuto"
                                                                                                                                                :       is_linha_atual.Substring(98, 6).Equals("003900")
                                                                                                                                                                ?       "Pagamento c/ Banco Sim Parcelado"
                                                                                                                                                                :       is_linha_atual.Substring(98, 6),
                terminal = is_linha_atual.Substring(42, 8),
                chave    = ""
            };


            Decimal valor_total         = 0;
            Decimal valor_total_liquido = 0;

            if (io_hsm_totalizador_produto.Contains(resumo.produto))
            {
                TotalizadorProduto totalizador_produto = (TotalizadorProduto)io_hsm_totalizador_produto[resumo.produto];
                valor_total         = totalizador_produto.valor_bruto + FormatoValorExecutarDouble(resumo.valor_bruto);
                valor_total_liquido = totalizador_produto.vl_liquido + FormatoValorExecutarDouble(resumo.vl_liquido);
                io_hsm_totalizador_produto.Remove(resumo.produto);
                io_hsm_totalizador_produto.Add(resumo.produto, new TotalizadorProduto
                {
                    prev_pagamento = Convert.ToDateTime(FormatoDataExecutar(is_linha_atual.Substring(140, 8), "yyyyMMdd", "dd/MM/yyyy")),
                    valor_bruto    = valor_total,
                    vl_liquido     = valor_total_liquido,
                    produto        = resumo.produto
                });
            }
            else
            {
                io_hsm_totalizador_produto.Add(resumo.produto, new TotalizadorProduto
                {
                    prev_pagamento = Convert.ToDateTime(FormatoDataExecutar(is_linha_atual.Substring(140, 8), "yyyyMMdd", "dd/MM/yyyy")),
                    valor_bruto    = FormatoValorExecutarDouble(resumo.valor_bruto),
                    vl_liquido     = FormatoValorExecutarDouble(resumo.vl_liquido),
                    produto        = resumo.produto
                });
            }

            valor_total         = 0;
            valor_total_liquido = 0;

            string estabelecimento = is_linha_atual.Substring(17, 7) + is_linha_atual.Substring(38, 4);

            if (io_hsm_totalizador_estabelecimento.Contains(estabelecimento))
            {
                TotalizadorEstabelecimento totalizador_estabelecimento = (TotalizadorEstabelecimento)io_hsm_totalizador_estabelecimento[estabelecimento];
                valor_total_liquido = totalizador_estabelecimento.total_realizado + FormatoValorExecutarDouble(resumo.vl_liquido);
                io_hsm_totalizador_estabelecimento.Remove(estabelecimento);
                io_hsm_totalizador_estabelecimento.Add(estabelecimento, new TotalizadorEstabelecimento
                {
                    prev_pagamento  = Convert.ToDateTime(FormatoDataExecutar(is_linha_atual.Substring(140, 8), "yyyyMMdd", "dd/MM/yyyy")),
                    total_realizado = valor_total_liquido,
                    estabelecimento = Convert.ToInt32(estabelecimento)
                });
            }
            else
            {
                io_hsm_totalizador_estabelecimento.Add(estabelecimento, new TotalizadorEstabelecimento
                {
                    prev_pagamento  = Convert.ToDateTime(FormatoDataExecutar(is_linha_atual.Substring(140, 8), "yyyyMMdd", "dd/MM/yyyy")),
                    total_realizado = FormatoValorExecutarDouble(resumo.vl_liquido),
                    estabelecimento = Convert.ToInt32(estabelecimento)
                });
            }

            /*
             * GUARDA O ULTIMO RO.
             */
            is_ultimo_ro = is_linha_atual.Substring(311, 9);

            /*
             * Adiciona o ro na lista.
             */
            io_arl_ro.Add(resumo);
            io_arl_cv = new ArrayList();

            var lo_detalhado = new ArquivoDetalhado()
            {
                registro        = "Resumo do Pagamento",
                estabelecimento = resumo.estabelecimento,
                transacao       = resumo.transacao,
                RO            = resumo.resumo,
                produto       = resumo.produto,
                cartao        = "",
                vl_bruto      = resumo.valor_bruto,
                vl_liquido    = resumo.vl_liquido,
                parcela       = "",
                total_parcela = "",
                autorizacao   = "",
                nsu           = ""
            };

            io_detalhado.Add(lo_detalhado);


            var lo_completo = new ArquivoCompleto()
            {
                registro        = "Resumo do Pagamento",
                estabelecimento = resumo.estabelecimento,
                RO                 = resumo.resumo,
                parcela            = resumo.parcela,
                total_parcela      = is_linha_atual.Substring(68, 2),
                filer              = "",
                plano              = "",
                tipo_transacao     = resumo.transacao,
                apresentacao       = "",
                prev_pagamento     = resumo.prev_pagamento,
                envio_banco        = "",
                cartao             = "",
                sinal_valor_bruto  = "+",
                valor_bruto        = resumo.valor_bruto,
                sinal_comissao     = "",
                comissao           = "",
                sinal_rejeitado    = "",
                valor_rejeitado    = "",
                sinal_liquido      = "",
                valor_liquido      = resumo.vl_liquido,
                valor_total_venda  = "",
                valor_prox_parcela = "",
                taxas              = "",
                autorizacao        = "",
                nsu_doc            = is_linha_atual.Substring(88, 6),
                banco              = "",
                agencia            = "",
                conta_corrente     = "",
                status_pagamento   = resumo.situacao,
                motivo_rejeicao    = "",
                cvs_aceitos        = "",
                produto            = resumo.produto,
                cvs_rejeitados     = "",
                data_venda         = "",
                data_captura       = FormatoDataExecutar(is_linha_atual.Substring(76, 8), "yyyyMMdd", "dd/MM/yyyy"),
                origem_ajuste      = "",
                valor_complementar = "",
                produto_financeiro = ls_identificador_arquivo.Equals("BJRVCA1") ? "Resumo de Operações" : "Registro de Pagamento",
                valor_antecipado   = "",
                bandeira           = "",
                registro_unico_RO  = resumo.resumo,
                taxas_comissao     = "",
                tarifa             = "",
                meio_captura       = "",
                terminal           = is_linha_atual.Substring(42, 8)
            };

            io_completo.Add(lo_completo);
        }
        private void ParcelasDesmontar(string a)
        {
            var parcelas = new ConciliacaoUseRedeParcelasStruct()
            {
                is_tipo_registro        = Convert.ToInt32(a.Substring(0, 3)),
                is_numero_filiacao_pv   = Convert.ToDecimal(a.Substring(3, 9)),
                is_numero_resumo_vendas = a.Substring(12, 9),
                is_data_rv             = Convert.ToDateTime(a.Substring(21, 2) + "/" + a.Substring(23, 2) + "/" + a.Substring(25, 4)),
                numero_parcela         = Convert.ToInt32(a.Substring(37, 2)),
                valor_parcela_bruto    = (Convert.ToDecimal(a.Substring(39, 15)) / 100),
                valor_desconto_parcela = (Convert.ToDecimal(a.Substring(54, 15)) / 100),
                valor_parcela_liquida  = (Convert.ToDecimal(a.Substring(69, 15)) / 100),
                data_credito           = Convert.ToDateTime(a.Substring(84, 2) + "/" + a.Substring(86, 2) + "/" + a.Substring(88, 4)),
                rede = 1
            };

            io_arl_parcelas.Add(parcelas);

            /* 14  */
            try
            {
                data_pagamento  = a.Substring(84, 2) + "/" + a.Substring(86, 2) + "/" + a.Substring(88, 4);
                estabelecimento = a.Substring(3, 9);
                if (io_hsm_totalizador_estabelecimento.Contains(estabelecimento + data_pagamento))
                {
                    TotalizadorEstabelecimento totalizador_estabelecimento = (TotalizadorEstabelecimento)io_hsm_totalizador_estabelecimento[estabelecimento + data_pagamento];
                    io_hsm_totalizador_estabelecimento.Remove(estabelecimento + data_pagamento);
                    io_hsm_totalizador_estabelecimento.Add(estabelecimento + data_pagamento, new TotalizadorEstabelecimento
                    {
                        prev_pagamento  = Convert.ToDateTime(data_pagamento),
                        total_realizado = totalizador_estabelecimento.total_realizado + (Convert.ToDecimal(a.Substring(69, 15)) / 100),
                        estabelecimento = Convert.ToInt32(estabelecimento)
                    });
                }
                else
                {
                    io_hsm_totalizador_estabelecimento.Add(estabelecimento + data_pagamento, new TotalizadorEstabelecimento
                    {
                        prev_pagamento  = Convert.ToDateTime(data_pagamento),
                        total_realizado = (Convert.ToDecimal(a.Substring(69, 15)) / 100),
                        estabelecimento = Convert.ToInt32(estabelecimento)
                    });
                }

                if (io_hsm_totalizador_banco.Contains(banco + data_pagamento))
                {
                    TotalizadorBanco totalizador_banco = (TotalizadorBanco)io_hsm_totalizador_banco[banco + data_pagamento];
                    io_hsm_totalizador_banco.Remove(banco + data_pagamento);
                    io_hsm_totalizador_banco.Add(banco + data_pagamento, new TotalizadorBanco
                    {
                        data_prevista   = Convert.ToDateTime(data_pagamento),
                        total_realizado = totalizador_banco.total_realizado + (Convert.ToDecimal(a.Substring(69, 15)) / 100),
                        id_banco        = Convert.ToInt32(banco)
                    });
                }
                else
                {
                    io_hsm_totalizador_banco.Add(banco + data_pagamento, new TotalizadorBanco
                    {
                        data_prevista   = Convert.ToDateTime(data_pagamento),
                        total_realizado = (Convert.ToDecimal(a.Substring(69, 15)) / 100),
                        id_banco        = Convert.ToInt32(banco)
                    });
                }

                Decimal valor_total         = 0;
                Decimal valor_total_liquido = 0;

                if (io_hsm_totalizador_produto.Contains(produto + data_pagamento))
                {
                    TotalizadorProduto totalizador_produto = (TotalizadorProduto)io_hsm_totalizador_produto[produto + data_pagamento];
                    valor_total         = totalizador_produto.valor_bruto + (Convert.ToDecimal(a.Substring(39, 15)) / 100);
                    valor_total_liquido = totalizador_produto.valor_liquido + (Convert.ToDecimal(a.Substring(69, 15)) / 100);
                    io_hsm_totalizador_produto.Remove(produto + data_pagamento);
                    io_hsm_totalizador_produto.Add(produto + data_pagamento, new TotalizadorProduto
                    {
                        data_prevista = Convert.ToDateTime(data_pagamento),
                        valor_bruto   = valor_total,
                        valor_liquido = valor_total_liquido,
                        ds_produto    = produto,
                        rede          = "Userede"
                    });
                }
                else
                {
                    io_hsm_totalizador_produto.Add(produto + data_pagamento, new TotalizadorProduto
                    {
                        data_prevista = Convert.ToDateTime(data_pagamento),
                        valor_bruto   = (Convert.ToDecimal(a.Substring(39, 15)) / 100),
                        valor_liquido = (Convert.ToDecimal(a.Substring(69, 15)) / 100),
                        ds_produto    = produto,
                        rede          = "Userede"
                    });
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        private void TotalPVDesmontar(string[] a)
        {
            var resumo = new ConciliacaoUseRedeEEVDTotalPontoVendaStruct()
            {
                is_tipo_registro      = Convert.ToInt32(a[0]),
                nm_tipo_registro      = "Total ponto de venda",
                is_numero_ponto_venda = Convert.ToDecimal(a[1]).ToString(),
                is_quantidade_resumo_vendas_acatados = Convert.ToDecimal(a[2]),
                is_quantidade_comprovante_vendas     = Convert.ToDecimal(a[3]),
                is_total_bruto              = Convert.ToDecimal(a[4]) / 100,
                is_total_desconto           = Convert.ToDecimal(a[5]) / 100,
                is_total_liquido            = Convert.ToDecimal(a[6]) / 100,
                is_valor_bruto_predatado    = Convert.ToDecimal(a[7]) / 100,
                is_valor_desconto_predatado = Convert.ToDecimal(a[8]) / 100,
                is_valor_liquido_predatado  = Convert.ToDecimal(a[9]) / 100,
                rede = 1
            };

            io_arl_pv.Add(resumo);

            string estabelecimento = a[1];

            if (io_hsm_totalizador_estabelecimento.Contains(estabelecimento))
            {
                TotalizadorEstabelecimento totalizador_estabelecimento = (TotalizadorEstabelecimento)io_hsm_totalizador_estabelecimento[estabelecimento];
                io_hsm_totalizador_estabelecimento.Remove(estabelecimento);
                io_hsm_totalizador_estabelecimento.Add(estabelecimento, new TotalizadorEstabelecimento
                {
                    prev_pagamento  = Convert.ToDateTime(data_pagamento),
                    total_realizado = totalizador_estabelecimento.total_realizado + resumo.is_total_liquido,
                    estabelecimento = Convert.ToInt32(estabelecimento)
                });
            }
            else
            {
                io_hsm_totalizador_estabelecimento.Add(estabelecimento, new TotalizadorEstabelecimento
                {
                    prev_pagamento  = Convert.ToDateTime(data_pagamento),
                    total_realizado = resumo.is_total_liquido,
                    estabelecimento = Convert.ToInt32(estabelecimento)
                });
            }

            if (io_hsm_totalizador_banco.Contains(banco))
            {
                TotalizadorBanco totalizador_banco = (TotalizadorBanco)io_hsm_totalizador_banco[banco];
                io_hsm_totalizador_banco.Remove(banco);
                io_hsm_totalizador_banco.Add(banco, new TotalizadorBanco
                {
                    data_prevista   = Convert.ToDateTime(data_pagamento),
                    total_realizado = totalizador_banco.total_realizado + resumo.is_total_liquido,
                    id_banco        = Convert.ToInt32(banco)
                });
            }
            else
            {
                io_hsm_totalizador_banco.Add(banco, new TotalizadorBanco
                {
                    data_prevista   = Convert.ToDateTime(data_pagamento),
                    total_realizado = resumo.is_total_liquido,
                    id_banco        = Convert.ToInt32(banco)
                });
            }

            Decimal valor_total         = 0;
            Decimal valor_total_liquido = 0;

            if (io_hsm_totalizador_produto.Contains("debito"))
            {
                TotalizadorProduto totalizador_produto = (TotalizadorProduto)io_hsm_totalizador_produto["debito"];
                valor_total         = totalizador_produto.valor_bruto + resumo.is_total_bruto;
                valor_total_liquido = totalizador_produto.valor_liquido + resumo.is_total_liquido;
                io_hsm_totalizador_produto.Remove("debito");
                io_hsm_totalizador_produto.Add("debito", new TotalizadorProduto
                {
                    data_prevista = Convert.ToDateTime(data_pagamento),
                    valor_bruto   = valor_total,
                    valor_liquido = valor_total_liquido,
                    ds_produto    = "Débito",
                    rede          = "Userede"
                });
            }
            else
            {
                io_hsm_totalizador_produto.Add("debito", new TotalizadorProduto
                {
                    data_prevista = Convert.ToDateTime(data_pagamento),
                    valor_bruto   = resumo.is_total_bruto,
                    valor_liquido = resumo.is_total_liquido,
                    ds_produto    = "Débito",
                    rede          = "Userede"
                });
            }
        }