Esempio n. 1
0
        public string EscreverHeader(HeaderRemessaCnab400 infoHeader)
        {
            var header = new string(' ', 39);

            try
            {
                header = header.PreencherValorNaLinha(1, 3, "DCB");
                header = header.PreencherValorNaLinha(4, 6, "001");
                header = header.PreencherValorNaLinha(7, 9, "075");
                header = header.PreencherValorNaLinha(10, 12, infoHeader.Agencia);
                header = header.PreencherValorNaLinha(13, 19,
                                                      (infoHeader.ContaCorrente + infoHeader.DvContaCorrente).PadLeft(7, '0'));
                header = header.PreencherValorNaLinha(20, 27,
                                                      infoHeader.DataDeGravacao.ToString("yyyyMMdd").Replace("/", ""));
                header = header.PreencherValorNaLinha(28, 33,
                                                      infoHeader.DataDeGravacao.ToString("HHmmss").Replace(":", ""));

                return(header);
            }
            catch (Exception e)
            {
                throw new Exception(string.Format("BoletoBr{0}Falha na geração do HEADER do arquivo de REMESSA.",
                                                  Environment.NewLine), e);
            }
        }
        public string EscreverHeader(HeaderRemessaCnab400 infoHeader)
        {
            var nomeEmpresa = "";

            if (infoHeader.NomeEmpresa.Length > 30)
            {
                nomeEmpresa = infoHeader.NomeEmpresa.Substring(0, 30);
            }
            else
            {
                nomeEmpresa = infoHeader.NomeEmpresa.ToUpper();
            }

            var header = new string(' ', 400);

            try
            {
                header = header.PreencherValorNaLinha(1, 1, "0");
                header = header.PreencherValorNaLinha(2, 2, "1");
                header = header.PreencherValorNaLinha(3, 9, "REMESSA");
                header = header.PreencherValorNaLinha(10, 26, string.Empty.PadLeft(17, ' '));
                header = header.PreencherValorNaLinha(27, 30, infoHeader.Agencia.PadLeft(4, '0'));
                header = header.PreencherValorNaLinha(31, 38, infoHeader.CodigoEmpresa.PadLeft(8, '0'));
                header = header.PreencherValorNaLinha(39, 39, infoHeader.DvContaCorrente.PadLeft(1, '0'));
                header = header.PreencherValorNaLinha(40, 46, string.Empty.PadRight(7, ' '));
                header = header.PreencherValorNaLinha(47, 76, nomeEmpresa.PadRight(30, ' '));
                header = header.PreencherValorNaLinha(77, 87, "041BANRISUL");
                header = header.PreencherValorNaLinha(88, 94, string.Empty.PadRight(7, ' '));
                header = header.PreencherValorNaLinha(95, 100, DateTime.Now.ToString("ddMMyy").Replace("/", ""));
                header = header.PreencherValorNaLinha(101, 109, string.Empty.PadRight(9, ' '));
                var carteiras = new List <string>()
                {
                    "R", "S", "X"
                };
                if (carteiras.Contains(infoHeader.CodigoCarteira.ToUpper()))
                {
                    header = header.PreencherValorNaLinha(110, 113, "0808"); // Para homologação usar <8808>
                    header = header.PreencherValorNaLinha(114, 114, string.Empty.PadRight(1, ' '));
                    header = header.PreencherValorNaLinha(115, 115, "P");    // Para homologação usar <X>
                    header = header.PreencherValorNaLinha(116, 116, string.Empty.PadRight(1, ' '));
                    header = header.PreencherValorNaLinha(117, 126, infoHeader.CodigoClienteOfficeBanking.PadLeft(10, '0'));
                }
                else
                {
                    header = header.PreencherValorNaLinha(110, 126, string.Empty.PadRight(17, ' ')); // Usados apenas para carteiras R, S e X
                }
                header = header.PreencherValorNaLinha(127, 394, string.Empty.PadRight(268, ' '));
                header = header.PreencherValorNaLinha(395, 400, "000001");

                return(header);
            }
            catch (Exception e)
            {
                throw new Exception(string.Format("BoletoBr{0}Falha na geração do HEADER do arquivo de REMESSA.",
                                                  Environment.NewLine), e);
            }
        }
        public string EscreverHeader(HeaderRemessaCnab400 infoHeader, int numeroRegistro)
        {
            var nomeEmpresa = "";

            if (infoHeader.NomeEmpresa.Length > 30)
            {
                nomeEmpresa = infoHeader.NomeEmpresa.Substring(0, 30);
            }
            else
            {
                nomeEmpresa = infoHeader.NomeEmpresa.PadRight(30, ' ');
            }

            var header = new string(' ', 400);

            try
            {
                header = header.PreencherValorNaLinha(1, 1, "0");
                header = header.PreencherValorNaLinha(2, 2, "1");
                header = header.PreencherValorNaLinha(3, 9, "REMESSA");
                header = header.PreencherValorNaLinha(10, 11, "01");
                header = header.PreencherValorNaLinha(12, 26, "COBRANCA".PadRight(15, ' '));

                // Código de Transmissão fornecido pelo Banco
                if (String.IsNullOrEmpty(infoHeader.CodigoDeTransmissao))
                {
                    header = header.PreencherValorNaLinha(27, 46, string.Empty.PadLeft(20, '0'));
                }
                else
                {
                    header = header.PreencherValorNaLinha(27, 46, infoHeader.CodigoDeTransmissao.PadLeft(20, '0'));
                }

                header = header.PreencherValorNaLinha(47, 76, nomeEmpresa.ToUpper().PadRight(30, ' '));
                header = header.PreencherValorNaLinha(77, 79, "033");
                header = header.PreencherValorNaLinha(80, 94, "SANTANDER".PadRight(15, ' '));
                header = header.PreencherValorNaLinha(95, 100, DateTime.Now.ToString("ddMMyy").Replace("/", ""));
                header = header.PreencherValorNaLinha(101, 116, string.Empty.PadLeft(16, '0'));
                // Mensagem 1 a Mensagem 6
                header = header.PreencherValorNaLinha(117, 391, string.Empty.PadRight(275, ' '));
                header = header.PreencherValorNaLinha(392, 394, infoHeader.NumeroSequencialRemessa.ToString().PadLeft(3, '0'));
                header = header.PreencherValorNaLinha(395, 400, numeroRegistro.ToString().PadLeft(6, '0'));

                return(header);
            }
            catch (ArgumentException e)
            {
                throw new ArgumentException(string.Format("BoletoBr{0}Falha na geração do HEADER do arquivo de REMESSA.",
                                                          Environment.NewLine), e);
            }
        }
Esempio n. 4
0
        public string EscreverHeader(HeaderRemessaCnab400 infoHeader)
        {
            if (infoHeader == null)
            {
                throw new Exception("Não há informações para geração do HEADER");
            }

            if (infoHeader.NumeroSequencialRemessa == 0)
            {
                throw new Exception("Sequencial da remessa não foi informado na geração do HEADER.");
            }

            var nomeEmpresa = string.Empty;

            if (infoHeader.NomeEmpresa.Length > 30)
            {
                nomeEmpresa = infoHeader.NomeEmpresa.Substring(0, 30);
            }
            else
            {
                nomeEmpresa = infoHeader.NomeEmpresa.PadRight(30, ' ');
            }

            var header = new string(' ', 400);

            try
            {
                header = header.PreencherValorNaLinha(1, 1, "0");
                header = header.PreencherValorNaLinha(2, 2, "1");
                header = header.PreencherValorNaLinha(3, 9, "REMESSA".PadRight(7, ' '));
                header = header.PreencherValorNaLinha(10, 11, "01");
                header = header.PreencherValorNaLinha(12, 26, "COBRANCA".PadRight(15, ' '));
                header = header.PreencherValorNaLinha(27, 46, infoHeader.CodigoEmpresa.PadLeft(20, '0'));
                header = header.PreencherValorNaLinha(47, 76, nomeEmpresa.ToUpper());
                header = header.PreencherValorNaLinha(77, 79, "237");
                header = header.PreencherValorNaLinha(80, 94, "BRADESCO".PadRight(15, ' '));
                header = header.PreencherValorNaLinha(95, 100, DateTime.Now.ToString("ddMMyy"));
                header = header.PreencherValorNaLinha(101, 108, string.Empty.PadRight(8, ' '));
                header = header.PreencherValorNaLinha(109, 110, "MX");
                header = header.PreencherValorNaLinha(111, 117,
                                                      infoHeader.NumeroSequencialRemessa.ToString().PadLeft(7, '0'));
                header = header.PreencherValorNaLinha(118, 394, string.Empty.PadRight(277, ' '));
                header = header.PreencherValorNaLinha(395, 400, "000001");

                return(header);
            }
            catch (Exception e)
            {
                throw new Exception(string.Format("Falha na geração do HEADER do arquivo de REMESSA."), e);
            }
        }
Esempio n. 5
0
        public string EscreverHeader(HeaderRemessaCnab400 infoHeader)
        {
            var nomeEmpresa = "";

            if (infoHeader.NomeEmpresa.Length > 30)
            {
                nomeEmpresa = infoHeader.NomeEmpresa.Substring(0, 30);
            }
            else
            {
                nomeEmpresa = infoHeader.NomeEmpresa.ToUpper();
            }

            var header = new string(' ', 400);

            try
            {
                header = header.PreencherValorNaLinha(1, 1, "0");
                header = header.PreencherValorNaLinha(2, 2, "1");
                header = header.PreencherValorNaLinha(3, 9, "REMESSA");
                header = header.PreencherValorNaLinha(10, 11, "01");
                header = header.PreencherValorNaLinha(12, 19, "COBRANÇA");
                header = header.PreencherValorNaLinha(20, 26, string.Empty.PadRight(7, ' '));
                header = header.PreencherValorNaLinha(27, 30, infoHeader.Agencia.PadRight(4, '0'));
                header = header.PreencherValorNaLinha(31, 31, infoHeader.DvAgencia.PadLeft(1, '0'));
                header = header.PreencherValorNaLinha(32, 39, infoHeader.CodigoEmpresa.PadLeft(8, '0'));
                header = header.PreencherValorNaLinha(40, 40, infoHeader.DigitoCedenteEmpresa.PadRight(1, '0'));
                header = header.PreencherValorNaLinha(41, 46, string.Empty.PadRight(6, ' '));
                header = header.PreencherValorNaLinha(47, 76, nomeEmpresa.PadRight(30, ' '));
                header = header.PreencherValorNaLinha(77, 94, "756BANCOOBCED".PadRight(18, ' '));
                header = header.PreencherValorNaLinha(95, 100, DateTime.Now.ToString("ddMMyy").Replace("/", ""));
                header = header.PreencherValorNaLinha(101, 107, infoHeader.NumeroSequencialRemessa.BoletoBrToStringSafe().PadLeft(7, '0'));
                header = header.PreencherValorNaLinha(108, 394, string.Empty.PadRight(287, ' '));
                header = header.PreencherValorNaLinha(395, 400, "000001");

                return(header);
            }
            catch (Exception e)
            {
                throw new Exception(string.Format("BoletoBr{0}Falha na geração do HEADER do arquivo de REMESSA.",
                                                  Environment.NewLine), e);
            }
        }
        public string EscreverHeader(HeaderRemessaCnab400 infoHeader)
        {
            var nomeEmpresa = "";

            if (infoHeader.NomeEmpresa.Length > 30)
            {
                nomeEmpresa = infoHeader.NomeEmpresa.Substring(0, 30);
            }
            else
            {
                nomeEmpresa = infoHeader.NomeEmpresa.ToUpper();
            }

            var header = new string(' ', 400);

            try
            {
                header = header.PreencherValorNaLinha(1, 1, "0");
                header = header.PreencherValorNaLinha(2, 2, "1");
                header = header.PreencherValorNaLinha(3, 9, "REMESSA");
                header = header.PreencherValorNaLinha(10, 11, "01");
                header = header.PreencherValorNaLinha(12, 26, "COBRANCA".PadRight(15, ' '));
                header = header.PreencherValorNaLinha(27, 30, infoHeader.Agencia.PadLeft(4, '0'));
                header = header.PreencherValorNaLinha(31, 32, "00");
                header = header.PreencherValorNaLinha(33, 37, infoHeader.ContaCorrente.PadLeft(5, '0'));
                header = header.PreencherValorNaLinha(38, 38, infoHeader.DvContaCorrente);
                header = header.PreencherValorNaLinha(39, 46, string.Empty.PadRight(8, ' '));
                header = header.PreencherValorNaLinha(47, 76, nomeEmpresa.PadRight(30, ' '));
                header = header.PreencherValorNaLinha(77, 79, "341");
                header = header.PreencherValorNaLinha(80, 94, "BANCO ITAU SA".PadRight(15, ' '));
                header = header.PreencherValorNaLinha(95, 100, DateTime.Now.ToString("ddMMyy").Replace("/", ""));
                header = header.PreencherValorNaLinha(101, 394, string.Empty.PadRight(294, ' '));
                header = header.PreencherValorNaLinha(395, 400, "000001");

                return(header);
            }
            catch (ArgumentException e)
            {
                throw new ArgumentException(string.Format("BoletoBr{0}Falha na geração do HEADER do arquivo de REMESSA.",
                                                          Environment.NewLine), e);
            }
        }
        public string EscreverHeader(HeaderRemessaCnab400 infoHeader)
        {
            var nomeEmpresa = "";

            if (infoHeader.NomeEmpresa.Length > 30)
            {
                nomeEmpresa = infoHeader.NomeEmpresa.Substring(0, 30);
            }
            else
            {
                nomeEmpresa = infoHeader.NomeEmpresa.ToUpper();
            }

            var header = new string(' ', 400);

            try
            {
                header = header.PreencherValorNaLinha(1, 1, "0");
                header = header.PreencherValorNaLinha(2, 2, "1");
                header = header.PreencherValorNaLinha(3, 9, "REMESSA");
                header = header.PreencherValorNaLinha(10, 11, "01");
                header = header.PreencherValorNaLinha(12, 26, "COBRANCA".PadRight(15, ' '));
                header = header.PreencherValorNaLinha(27, 31, infoHeader.ContaCorrente.PadLeft(4, '0'));
                header = header.PreencherValorNaLinha(32, 45, infoHeader.CpfCnpjCedente.Replace(".", "").Replace("/", "").Replace("-", "").PadLeft(14, '0'));
                header = header.PreencherValorNaLinha(46, 76, string.Empty.PadLeft(31, ' '));
                header = header.PreencherValorNaLinha(77, 79, "748");
                header = header.PreencherValorNaLinha(80, 94, "SICREDI".PadRight(15, ' '));
                header = header.PreencherValorNaLinha(95, 102, DateTime.Now.ToString("yyyyMMdd").Replace("/", ""));
                header = header.PreencherValorNaLinha(103, 110, string.Empty.PadLeft(8, ' '));
                header = header.PreencherValorNaLinha(111, 117, infoHeader.NumeroSequencialRemessa.ToString().PadLeft(7, '0'));
                header = header.PreencherValorNaLinha(118, 390, string.Empty.PadRight(273, ' '));
                header = header.PreencherValorNaLinha(391, 394, "2.00");
                header = header.PreencherValorNaLinha(395, 400, "000001");

                return(header);
            }
            catch (Exception e)
            {
                throw new Exception(string.Format("BoletoBr{0}Falha na geração do HEADER do arquivo de REMESSA.",
                                                  Environment.NewLine), e);
            }
        }
Esempio n. 8
0
        public RemessaCnab400 GerarRemessa(HeaderRemessaCnab400 header, List <Boleto> boletos, List <DetalheRemessaCnab400> detalhes, TrailerRemessaCnab400 trailer)
        {
            //var contadorSequencialRegistro = 1;
            var objReturn = new RemessaCnab400();

            objReturn.RegistrosDetalhe = new List <DetalheRemessaCnab400>();

            objReturn.Header = header;

            foreach (var detalhe in detalhes)
            {
                objReturn.RegistrosDetalhe.Add(detalhe);
                //objReturn.AdicionarBoleto(boletoAddRemessa, contadorSequencialRegistro);
                //contadorSequencialRegistro++;
            }

            objReturn.Trailer = trailer;

            return(objReturn);
        }
        public string EscreverHeader(HeaderRemessaCnab400 infoHeader)
        {
            if (infoHeader == null)
            {
                throw new Exception("Não há informações para geração do HEADER");
            }

            if (infoHeader.NumeroSequencialRemessa == 0)
            {
                throw new Exception("Sequencial da remessa não foi informado na geração do HEADER.");
            }

            var nomeEmpresa = string.Empty;

            if (infoHeader.NomeEmpresa.Length > 30)
            {
                nomeEmpresa = infoHeader.NomeEmpresa.Substring(0, 30);
            }
            else
            {
                nomeEmpresa = infoHeader.NomeEmpresa.PadRight(30, ' ');
            }

            var agencia = infoHeader.Agencia;

            if (agencia.Length > 5)
            {
                agencia = agencia.ExtrairValorDaLinha(1, 5);
            }
            else
            {
                agencia = agencia.PadRight(5, '0');
            }
            var contaCorrente = infoHeader.ContaCorrente + infoHeader.DvContaCorrente;

            if (contaCorrente.Length > 9)
            {
                contaCorrente = contaCorrente.ExtrairValorDaLinha(1, 9);
            }
            else
            {
                contaCorrente = contaCorrente.PadLeft(9, '0');
            }

            var header = new string(' ', 400);

            try
            {
                header = header.PreencherValorNaLinha(1, 1, "0");
                header = header.PreencherValorNaLinha(2, 2, "1");
                header = header.PreencherValorNaLinha(3, 9, "REMESSA".PadRight(7, ' '));
                header = header.PreencherValorNaLinha(10, 11, "01");
                header = header.PreencherValorNaLinha(12, 19, "COBRANCA");
                header = header.PreencherValorNaLinha(20, 26, string.Empty.PadRight(7, ' '));
                header = header.PreencherValorNaLinha(27, 40, agencia + contaCorrente);
                header = header.PreencherValorNaLinha(41, 46, string.Empty.PadRight(6, ' '));
                header = header.PreencherValorNaLinha(47, 76, nomeEmpresa.PadRight(30, ' '));
                header = header.PreencherValorNaLinha(77, 79, "422");
                header = header.PreencherValorNaLinha(80, 90, "BANCO SAFRA".PadRight(11, ' '));
                header = header.PreencherValorNaLinha(91, 94, string.Empty.PadRight(4, ' '));
                header = header.PreencherValorNaLinha(95, 100, DateTime.Now.ToString("ddMMyy"));
                header = header.PreencherValorNaLinha(101, 391, string.Empty.PadRight(291, ' '));
                header = header.PreencherValorNaLinha(392, 394,
                                                      infoHeader.NumeroSequencialRemessa.ToString().PadLeft(3, '0'));
                header = header.PreencherValorNaLinha(395, 400, "000001");

                return(header);
            }
            catch (Exception e)
            {
                throw new Exception(string.Format("Falha na geração do HEADER do arquivo de REMESSA."), e);
            }
        }
Esempio n. 10
0
        public string EscreverHeader(HeaderRemessaCnab400 infoHeader, int numeroRemessa, int numeroRegistro)
        {
            if (infoHeader == null)
            {
                throw new Exception("Não há informações para geração do HEADER");
            }

            if (numeroRemessa == 0)
            {
                throw new Exception("Sequencial da remessa não foi informado na geração do HEADER.");
            }

            if (numeroRegistro == 0)
            {
                throw new Exception("Sequencial do registro não foi informado na geração do HEADER.");
            }

            var header = new string(' ', 400);

            try
            {
                string nomeEmpresa = string.Empty;
                if (infoHeader.NomeEmpresa.BoletoBrToStringSafe().Length > 30)
                {
                    nomeEmpresa = infoHeader.NomeEmpresa.ExtrairValorDaLinha(1, 30);
                }
                else
                {
                    nomeEmpresa = infoHeader.NomeEmpresa;
                }

                header = header.PreencherValorNaLinha(1, 1, "0");
                header = header.PreencherValorNaLinha(2, 2, "1");
                //header = header.PreencherValorNaLinha(3, 9,
                //    infoHeader.Ambiente == Remessa.EnumTipoAmbiemte.Producao
                //        ? "REMESSA".PadRight(7, ' ')
                //        : "TESTE".PadRight(7, ' '));
                header = header.PreencherValorNaLinha(3, 9, "REMESSA".PadRight(7, ' '));
                header = header.PreencherValorNaLinha(10, 11, "01");
                header = header.PreencherValorNaLinha(12, 19, "COBRANCA".PadRight(8, ' '));
                header = header.PreencherValorNaLinha(20, 26, string.Empty.PadRight(7, ' '));
                header = header.PreencherValorNaLinha(27, 30, infoHeader.Agencia.PadLeft(4, '0'));
                header = header.PreencherValorNaLinha(31, 31, infoHeader.DvAgencia);
                header = header.PreencherValorNaLinha(32, 39, infoHeader.ContaCorrente.PadLeft(8, '0'));
                header = header.PreencherValorNaLinha(40, 40, infoHeader.DvContaCorrente);
                header = header.PreencherValorNaLinha(41, 46, string.Empty.PadRight(6, '0'));
                header = header.PreencherValorNaLinha(47, 76, nomeEmpresa.ToUpper().PadRight(30, ' '));
                header = header.PreencherValorNaLinha(77, 94, "001BANCODOBRASIL".PadRight(18, ' '));
                header = header.PreencherValorNaLinha(95, 100, DateTime.Now.ToString("ddMMyy"));
                header = header.PreencherValorNaLinha(101, 107,
                                                      numeroRemessa.ToString(CultureInfo.InvariantCulture).PadLeft(7, '0'));
                header = header.PreencherValorNaLinha(108, 129, string.Empty.PadRight(22, ' '));
                header = header.PreencherValorNaLinha(130, 136, infoHeader.Convenio.PadLeft(7, '0'));
                header = header.PreencherValorNaLinha(137, 394, string.Empty.PadRight(258, ' '));
                header = header.PreencherValorNaLinha(395, 400, "000001");

                return(header);
            }
            catch (Exception e)
            {
                throw new Exception(string.Format("BoletoBr{0}Falha na geração do HEADER do arquivo de REMESSA.",
                                                  Environment.NewLine), e);
            }
        }
        public string EscreverHeader(HeaderRemessaCnab400 infoHeader)
        {
            var header = new string(' ', 400);

            if (infoHeader == null)
            {
                throw new Exception("Não há informações para geração do HEADER");
            }

            if (infoHeader.NumeroSequencialRemessa == 0)
            {
                throw new Exception("Sequencial da remessa não foi informado na geração do HEADER.");
            }

            var nomeEmpresa = string.Empty;

            if (infoHeader.NomeEmpresa.Length > 30)
            {
                nomeEmpresa = infoHeader.NomeEmpresa.Substring(0, 30);
            }
            else
            {
                nomeEmpresa = infoHeader.NomeEmpresa.PadRight(30, ' ');
            }

            var contaCorrente = $"{infoHeader.ContaCorrente}{infoHeader.DvContaCorrente}";

            if (contaCorrente.Length > 11)
            {
                contaCorrente = contaCorrente.ExtrairValorDaLinha(1, 9);
            }
            else
            {
                contaCorrente = contaCorrente.PadLeft(11, '0');
            }


            try
            {
                header = header.PreencherValorNaLinha(1, 1, "0");
                header = header.PreencherValorNaLinha(2, 2, "1");
                header = header.PreencherValorNaLinha(3, 9, "REMESSA");
                header = header.PreencherValorNaLinha(10, 11, "01");
                header = header.PreencherValorNaLinha(12, 26, "COBRANÇA".PadRight(15, ' '));
                header = header.PreencherValorNaLinha(27, 37, contaCorrente);
                header = header.PreencherValorNaLinha(38, 46, string.Empty.PadRight(9, ' '));
                header = header.PreencherValorNaLinha(47, 76, nomeEmpresa);
                header = header.PreencherValorNaLinha(77, 79, "021");
                header = header.PreencherValorNaLinha(80, 87, "BANESTES");
                header = header.PreencherValorNaLinha(88, 94, string.Empty.PadRight(7, ' '));
                header = header.PreencherValorNaLinha(95, 100, DateTime.Now.ToString("ddMMyy"));
                header = header.PreencherValorNaLinha(101, 394, string.Empty.PadRight(294, ' '));
                header = header.PreencherValorNaLinha(395, 400, "000001");


                return(header);
            }
            catch (Exception e)
            {
                throw new Exception(string.Format("BoletoBr{0}Falha na geração do HEADER do arquivo de REMESSA.",
                                                  Environment.NewLine), e);
            }
        }
        public string EscreverHeader(HeaderRemessaCnab400 infoHeader)
        {
            if (infoHeader == null)
            {
                throw new Exception("Não há informações para geração do HEADER");
            }

            if (infoHeader.NumeroSequencialRemessa == 0)
            {
                throw new Exception("Sequencial da remessa não foi informado na geração do HEADER.");
            }

            var nomeEmpresa = string.Empty;

            if (infoHeader.NomeEmpresa.Length > 30)
            {
                nomeEmpresa = infoHeader.NomeEmpresa.Substring(0, 30);
            }
            else
            {
                nomeEmpresa = infoHeader.NomeEmpresa.PadRight(30, ' ');
            }

            var contaCorrente = string.Empty;

            contaCorrente  = infoHeader.Agencia.PadLeft(4, '0');
            contaCorrente += infoHeader.ContaCorrente.PadLeft(5, '0');
            contaCorrente += infoHeader.DvContaCorrente.PadLeft(2, '0');

            var header = new string(' ', 400);

            try
            {
                header = header.PreencherValorNaLinha(1, 1, "0");
                header = header.PreencherValorNaLinha(2, 2, "1");
                header = header.PreencherValorNaLinha(3, 9, "REMESSA".PadRight(7, ' '));
                header = header.PreencherValorNaLinha(10, 11, "01");
                header = header.PreencherValorNaLinha(12, 26, "COBRANCA".PadRight(15, ' '));
                header = header.PreencherValorNaLinha(27, 27, "0");
                header = header.PreencherValorNaLinha(28, 31, infoHeader.Agencia.PadLeft(4, '0'));
                header = header.PreencherValorNaLinha(32, 33, "55");
                header = header.PreencherValorNaLinha(34, 44, contaCorrente);
                header = header.PreencherValorNaLinha(45, 46, string.Empty.PadRight(2, ' '));
                header = header.PreencherValorNaLinha(47, 76, nomeEmpresa.ToUpper());
                header = header.PreencherValorNaLinha(77, 79, "399");
                header = header.PreencherValorNaLinha(80, 94, "HSBC".PadRight(15, ' '));
                header = header.PreencherValorNaLinha(95, 100, infoHeader.DataDeGravacao.ToString("ddMMyy"));
                header = header.PreencherValorNaLinha(101, 105, "01600");
                header = header.PreencherValorNaLinha(106, 108, "BPI");
                header = header.PreencherValorNaLinha(109, 110, string.Empty.PadRight(2, ' '));
                header = header.PreencherValorNaLinha(111, 117, "LANCV08");
                header = header.PreencherValorNaLinha(118, 394, string.Empty.PadRight(277, ' '));
                header = header.PreencherValorNaLinha(395, 400, "000001");

                return(header);
            }
            catch (Exception e)
            {
                throw new Exception(string.Format("Falha na geração do HEADER do arquivo de REMESSA."), e);
            }
        }