Ejemplo n.º 1
0
        /// <summary>
        /// Clona os valores e propriedades das informações de um boleto.
        /// Fundamental para obter também as informações de registro complementares
        /// </summary>
        public BoletoInfo Clone()
        {
            BoletoInfo bi = (BoletoInfo)CobUtil.Clone(this);

            foreach (var r in Reg)
            {
                bi.Reg.Add(r.Key, r.Value);
            }

            return(bi);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Carrega as variáveis internas do boleto
        /// </summary>
        /// <param name="Cedente">Informações do Cedente</param>
        /// <param name="Sacado">Informações do Sacado</param>
        /// <param name="Boleto">Informações do Boleto</param>
        public void MakeBoleto(CedenteInfo Cedente, SacadoInfo Sacado, BoletoInfo Boleto)
        {
            this.Cedente = Cedente.Cedente;
            if (!string.IsNullOrEmpty(Cedente.CNPJ))
            {
                this.CedenteDocumentoTipo = (Cedente.Tipo == 1 ? "CPF" : "CNPJ");
                this.CedenteDocumento     = Cedente.CNPJ;
            }
            this.Banco           = Cedente.Banco;
            this.Agencia         = Cedente.Agencia;
            this.Conta           = Cedente.Conta;
            this.Carteira        = Cedente.Carteira;
            this.Modalidade      = Cedente.Modalidade;
            this.Convenio        = Cedente.Convenio;
            this.CodCedente      = Cedente.CodCedente;
            this.UsoBanco        = Cedente.UsoBanco;
            this.CIP             = Cedente.CIP;
            this.useSantander    = Cedente.useSantander;
            this.CedenteEndereco = Cedente.Endereco;
            this.Informacoes     = Cedente.Informacoes;

            this.Sacado = Sacado.Sacado;
            if (!string.IsNullOrEmpty(Sacado.Documento))
            {
                this.SacadoDocumento = (Sacado.Tipo == 1 ? "CPF: " : "CNPJ: ") + Sacado.Documento;
            }
            this.SacadoEndereco = Sacado.Endereco;
            this.Bairro         = Sacado.Bairro;
            this.Cidade         = Sacado.Cidade;
            this.Cep            = Sacado.Cep;
            this.UF             = Sacado.UF;
            this.Avalista       = Sacado.Avalista;

            this.NumeroDocumento = Boleto.NumeroDocumento;
            this.NossoNumero     = Boleto.NossoNumero;
            this.Quantidade      = Boleto.Quantidade;
            this.ParcelaNumero   = Boleto.ParcelaNumero;
            this.ParcelaTotal    = Boleto.ParcelaTotal;
            this.ValorUnitario   = Boleto.ValorUnitario;
            this.ValorDocumento  = Math.Round(Boleto.ValorDocumento, 2);

            this.ValorAcrescimo    = Boleto.ValorAcrescimo;
            this.ValorCobrado      = Boleto.ValorCobrado;
            this.ValorOutras       = Boleto.ValorOutras;
            this.DataDocumento     = Boleto.DataDocumento;
            this.DataVencimento    = Boleto.DataVencimento;
            this.DataProcessamento = Boleto.DataProcessamento;
            this.Demonstrativo     = Boleto.Demonstrativo;
            this.Instrucoes        = Boleto.Instrucoes;
            this.LocalPagamento    = Boleto.LocalPagamento ?? BoletoTextos.LocalPagamento;
            this.Aceite            = Boleto.Aceite;
            this.Especie           = Boleto.Especie;

            // Valores que podem alterar a forma de exibição de acordo com o banco
            this.CarteiraExibicao = Cedente.Carteira;
            this.AgenciaConta     = this.Agencia + "/" + this.Conta;

            // quando é gerado isntrução, também é gerado o calculo da multa quando vencido
            if (Boleto.CalculaMultaMora &&
                Boleto.DataVencimento.Date < DateTime.Now.Date && // TODAY! Apenas para evitar erros com horario se o vencimento contiver 'horas'
                (Boleto.ValorMora > 0 || Boleto.PercentualMora > 0) &&
                Boleto.PercentualMulta > 0)
            {
                int nDias;
                if (Boleto.DataPagamento > Boleto.DataVencimento)
                {
                    nDias = (int)Boleto.DataPagamento.Subtract(DataVencimento).TotalDays;
                }
                else
                {
                    nDias = (int)DateTime.Now.Subtract(DataVencimento).TotalDays;
                }

                if (Boleto.PercentualMora > 0 && Boleto.ValorMora == 0)
                // http://calculoexato.com.br/parprima.aspx?codMenu=DividBoletoVencido
                // http://exame.abril.com.br/seu-dinheiro/ferramentas/boleto-vencido.shtml
                {
                    double nValorComMulta = (1 + Boleto.PercentualMulta) * Boleto.ValorDocumento;
                    double nValorMora     = nValorComMulta * Boleto.PercentualMora * nDias;
                    this.ValorMoraMulta = Boleto.PercentualMulta * Boleto.ValorDocumento + nValorMora;
                }
                else
                {
                    this.ValorMoraMulta = Boleto.PercentualMulta * Boleto.ValorDocumento + Boleto.ValorMora * nDias;
                }

                if (this.ValorMoraMulta < 0.01)
                {
                    this.ValorMoraMulta = 0.01;
                }
                else
                {
                    this.ValorMoraMulta = Math.Round(this.ValorMoraMulta, 2);
                }
            }
            if (Boleto.DataDesconto != DateTime.MinValue && Boleto.DataDesconto >= DateTime.Now)
            {
                this.ValorDesconto = Boleto.ValorDesconto;
            }
            else
            {
                this.ValorDesconto = Boleto.ValorDesconto;
            }
        }