Beispiel #1
0
        public void CampoLivre_Sicredi()
        {
            Boleto blt = new Boleto();
            string cl;

            // Logica Unica!
            // Mas vale lembrar que um dos requisitos no NossoNumero é iniciar sempre em '1'
            cl = Banco_Sicredi.CampoLivre(blt, "1111", "22", "33333", "44444", "3");
            Console.WriteLine(
                "Campo Livre: " + cl +
                " Nosso Número: " + blt.NossoNumeroExibicao);
            Assert.IsTrue(cl == "3117244444811112233333001", "Erro"); // O Ano atual é usado como referencia para gerar o nosso numero

            /* Do exemplo da documentação página 16 (https://github.com/impactro/Boleto-Test/blob/master/DOC/sicredi_cnab400.pdf)
             * Linha digitável: 74891.11422 00001.03544 02000.921078 9 618700000010000 (usando http://exemplos.boletoasp.com.br/BoletoNet/FuncTeste_DecodIPTE.aspx para obter o código de barras)
             * Código de barras: 748.9.6.1870.0000010000-1114200001035442000921078
             * Temos o Campo Livre: 1 1 14 2 00001 0 3544 20 00921 0 7 8
             *             onde: R C yy b nnnnn d AAAA PP CCCCC V 0 D
             *                                                    X => Note que este campo deveria ser ZERO e é 7!
             *                                                         Isso é estrano, pois não está de acordo com a documentação, assim no exemplo estou assumindo como 0
             *                                                         Logico que o deigito verificar seguinte muda com isso
             */
            blt = new Boleto();
            blt.DataVencimento = new DateTime(2014, 9, 15); // O ano de vencimento entra na formação do nosso numero
            cl = Banco_Sicredi.CampoLivre(blt, "3544", "20", "00921", "00001", "1");
            Console.WriteLine(
                "Campo Livre: " + cl +
                " Nosso Número: " + blt.NossoNumeroExibicao);
            Assert.IsTrue(cl == "1117200001835442000921003", "Erro"); // Embora seja o Ano, alguns clientes usam a data de vencimento, ou seja, depende de cada implementação
        }
Beispiel #2
0
        public override string Remessa()
        {
            string[] cBanco = Cedente.Banco.Split('-');
            Bancos   banco  = (Bancos)CobUtil.GetInt(cBanco[0]);

            if (banco != Bancos.SICREDI)
            {
                throw new Exception("Esta classe é valida apenas para o Banco Sicredi");
            }

            // Proximo item
            SequencialRegistro = 1;

            regArqHeader[CNAB400HeaderSicredi.CodCedente]    = Cedente.CodCedente;
            regArqHeader[CNAB400HeaderSicredi.CNPJ]          = Cedente.DocumentoNumeros;
            regArqHeader[CNAB400HeaderSicredi.Data]          = DataHoje;
            regArqHeader[CNAB400HeaderSicredi.NumeroRemessa] = NumeroLote;
            regArqHeader[CNAB400HeaderSicredi.Sequencia]     = SequencialRegistro++;
            // Limpa os objetos de saida/entrada
            Data.Clear();
            Clear();

            // o sequencial do header é sempre 1 (FIXO)
            Add(regArqHeader);

            string     cAgenciaNumero = Cedente.Agencia.Split('-')[0];
            string     cModalidade    = Cedente.Modalidade;
            string     cCodCedente    = Cedente.CodCedente;
            BoletoInfo boleto;
            SacadoInfo sacado;
            Reg <CNAB400Remessa1Sicredi> regBoleto;

            foreach (string n in this.Boletos.NossoNumeros)
            {
                boleto = Boletos[n];
                sacado = boleto.Sacado;

                regBoleto = new Reg <CNAB400Remessa1Sicredi>();

                string cNossoNumero = boleto.NossoNumero;
                Banco_Sicredi.MontaNossoNumero(ref cNossoNumero, ref cAgenciaNumero, ref cModalidade, ref cCodCedente);

                regBoleto[CNAB400Remessa1Sicredi.NossoNumero]     = cNossoNumero;
                regBoleto[CNAB400Remessa1Sicredi.NumeroDocumento] = boleto.NumeroDocumento;
                regBoleto[CNAB400Remessa1Sicredi.DataVencimento]  = boleto.DataVencimento;
                regBoleto[CNAB400Remessa1Sicredi.ValorDocumento]  = boleto.ValorDocumento;
                regBoleto[CNAB400Remessa1Sicredi.Especie]         = EspecieSicred(boleto.Especie);
                regBoleto[CNAB400Remessa1Sicredi.Aceite]          = boleto.Aceite == "A" ? "S" : "N";
                regBoleto[CNAB400Remessa1Sicredi.Data]            = boleto.DataDocumento;
                regBoleto[CNAB400Remessa1Sicredi.DataEmissao]     = boleto.DataDocumento;
                if (boleto.ParcelaTotal > 0)
                {
                    regBoleto[CNAB400Remessa1Sicredi.TipoImpressao] = "B";
                    regBoleto[CNAB400Remessa1Sicredi.ParcelaNumero] = boleto.ParcelaNumero;
                    regBoleto[CNAB400Remessa1Sicredi.ParcelaTotal]  = boleto.ParcelaTotal;
                }
                regBoleto[CNAB400Remessa1Sicredi.Instrucao]       = boleto.Instrucao1;
                regBoleto[CNAB400Remessa1Sicredi.Protesto]        = boleto.DiasProtesto > 6 ? "06":"00";
                regBoleto[CNAB400Remessa1Sicredi.DiasProtesto]    = boleto.DiasProtesto;
                regBoleto[CNAB400Remessa1Sicredi.PercentualMora]  = boleto.PercentualMora;
                regBoleto[CNAB400Remessa1Sicredi.DataDesconto]    = boleto.DataDesconto;
                regBoleto[CNAB400Remessa1Sicredi.ValorDesconto]   = boleto.ValorDesconto;
                regBoleto[CNAB400Remessa1Sicredi.SacadoTipo]      = sacado.Tipo;
                regBoleto[CNAB400Remessa1Sicredi.SacadoDocumento] = sacado.DocumentoNumeros;
                regBoleto[CNAB400Remessa1Sicredi.Sacado]          = sacado.Sacado;
                regBoleto[CNAB400Remessa1Sicredi.Endereco]        = sacado.Endereco;
                regBoleto[CNAB400Remessa1Sicredi.Cooperativa]     = "00000";
                regBoleto[CNAB400Remessa1Sicredi.CEP]             = sacado.CepNumeros;
                regBoleto[CNAB400Remessa1Sicredi.Sequencia]       = SequencialRegistro++;

                // adiciona o boleto convertido em registro
                AddBoleto(regBoleto, boleto);

                AddOpcionais(boleto);
            }

            regArqTrailer[CNAB400Trailer1Sicredi.Conta]     = CobUtil.GetInt(Cedente.Conta.Split('-')[0]);
            regArqTrailer[CNAB400Trailer1Sicredi.Sequencia] = SequencialRegistro;
            Add(regArqTrailer);

            // Gera o Texto de saida da forma padrão
            return(this.Conteudo);
        }