// Uso para personalizar os campos do sicred ou de qualquer outro que não seguem os padrão comum void r_onRegBoleto(CNAB cnab, IReg reg, BoletoInfo boleto) { // É sempre bom validar o nome do registro, principalmente em CNAB240 que tem 2 tipos de registros para cada boleto, e cada registro deve ser tratado individualmente if (reg.NameType == typeof(CNAB400Remessa1Sicredi)) { Reg<CNAB400Remessa1Sicredi> regBoleto = (Reg<CNAB400Remessa1Sicredi>)reg; // A rotina padrão define estas variáveis abaixo: /* regBoleto[CNAB400Remessa1Sicredi.NumeroDocumento] = cnab.Cedente.DocumentoNumeros; regBoleto[CNAB400Remessa1Sicredi.NossoNumero] = boleto.NossoNumero; regBoleto[CNAB400Remessa1Sicredi.NumeroDocumento] = boleto.NumeroDocumento; regBoleto[CNAB400Remessa1Sicredi.DataVencimento] = boleto.DataVencimento; regBoleto[CNAB400Remessa1Sicredi.ValorDocumento] = boleto.ValorDocumento; regBoleto[CNAB400Remessa1Sicredi.Especie] = CNAB400Sicredi.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] = boleto.Sacado.Tipo; regBoleto[CNAB400Remessa1Sicredi.SacadoDocumento] = boleto.Sacado.DocumentoNumeros; regBoleto[CNAB400Remessa1Sicredi.Endereco] = boleto.Sacado.Endereco; regBoleto[CNAB400Remessa1Sicredi.CEP] = boleto.Sacado.CepNumeros; */ // Campos com certa particulariade no sicred regBoleto[CNAB400Remessa1Sicredi.TipoCarteira] = "X"; // posição 3 regBoleto[CNAB400Remessa1Sicredi.TipoJuros] = "Y"; // posição 19 regBoleto[CNAB400Remessa1Sicredi.Alteracao] = "C"; // posição 71 // Desconto por dia de antecipação; regBoleto[CNAB400Remessa1Sicredi.Emissao] = "A"; // posição 74 // O padrão é que a emissão seja feito no cliente ("B") // Os valores definidos em 'SetRegEnumValue' ou 'SetRegKeyValue' são obtidos apos este evento, portanto tem sempre prioridade } }
void CustomRegBoleto(CNAB cnab, IReg reg, BoletoInfo boleto) { // é possivel definir campos adicionais como descontos, jurus, protesto e quaisquer outros via evento // estes campos adicionais não estão na classe basica de emissão sem registro: BoletoInfo, e devem ser definidos via evento // veja a documentação de cada banco e atribua os campos necessários // o arqumento "reg" é um tipo de Registro baseado no enumerador do banco registro: Reg<T> (é um template cuidado) if (reg.GetType() == typeof(Reg <CNAB400Remessa1Bradesco>)) // Já como esse é um exemplo generico apenas valido o tipo { var regBoleto = reg as Reg <CNAB400Remessa1Bradesco>; regBoleto[CNAB400Remessa1Bradesco.Condicao] = 1; // Para bo banco imprimir e enviar o boleto regBoleto[CNAB400Remessa1Bradesco.Instrucao1] = 6; // Indica para Protestar regBoleto[CNAB400Remessa1Bradesco.Instrucao2] = 15; // Numero de dias apos o vencimento para o protesto regBoleto[CNAB400Remessa1Bradesco.Avalista] = "!Alterado!"; } }
// Uso para personalizar os campos do sicred ou de qualquer outro que não seguem os padrão comum void r_onRegBoleto(CNAB cnab, IReg reg, BoletoInfo boleto) { // É sempre bom validar o nome do registro, principalmente em CNAB240 que tem 2 tipos de registros para cada boleto, e cada registro deve ser tratado individualmente if (reg.NameType == typeof(CNAB400Remessa1Sicredi)) { Reg <CNAB400Remessa1Sicredi> regBoleto = (Reg <CNAB400Remessa1Sicredi>)reg; // A rotina padrão define estas variáveis abaixo: /* * regBoleto[CNAB400Remessa1Sicredi.NumeroDocumento] = cnab.Cedente.DocumentoNumeros; * regBoleto[CNAB400Remessa1Sicredi.NossoNumero] = boleto.NossoNumero; * regBoleto[CNAB400Remessa1Sicredi.NumeroDocumento] = boleto.NumeroDocumento; * regBoleto[CNAB400Remessa1Sicredi.DataVencimento] = boleto.DataVencimento; * regBoleto[CNAB400Remessa1Sicredi.ValorDocumento] = boleto.ValorDocumento; * regBoleto[CNAB400Remessa1Sicredi.Especie] = CNAB400Sicredi.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] = boleto.Sacado.Tipo; * regBoleto[CNAB400Remessa1Sicredi.SacadoDocumento] = boleto.Sacado.DocumentoNumeros; * regBoleto[CNAB400Remessa1Sicredi.Endereco] = boleto.Sacado.Endereco; * regBoleto[CNAB400Remessa1Sicredi.CEP] = boleto.Sacado.CepNumeros; */ // Campos com certa particulariade no sicred regBoleto[CNAB400Remessa1Sicredi.TipoCarteira] = "X"; // posição 3 regBoleto[CNAB400Remessa1Sicredi.TipoJuros] = "Y"; // posição 19 regBoleto[CNAB400Remessa1Sicredi.Alteracao] = "C"; // posição 71 // Desconto por dia de antecipação; regBoleto[CNAB400Remessa1Sicredi.Emissao] = "A"; // posição 74 // O padrão é que a emissão seja feito no cliente ("B") // Os valores definidos em 'SetRegEnumValue' ou 'SetRegKeyValue' são obtidos apos este evento, portanto tem sempre prioridade } }
private int BB_Registro5_Opcional(CNAB cnab, BoletoInfo boleto) { // Apenas mostrando de forma simples, que nem todos os boletos precisariam ter o registro opcional if (boleto.BoletoID % 2 == 0) // no caso somente os boletos de numero impar teriam o registro { return(0); // informa que não foi inserido nenhum registro opcional, assim a numero de sequencia do registro permanece o mesmo } // Define as informações do registro opcional 5 para registro de valores de multa var regR = new Reg <CNAB400Remessa5BB>(); // Os valores default nem precisa definir regR[CNAB400Remessa5BB.CodigoMulta] = 1; // Coloque o que quiser(logico de acordo com a documentação) regR[CNAB400Remessa5BB.DataMulta] = boleto.DataVencimento.AddDays(15); // 15 dias após o vencimento regR[CNAB400Remessa5BB.ValorMulta] = boleto.ValorDocumento * 0.02; // 2% do valor do documento regR[CNAB400Remessa5BB.Sequencial] = cnab.SequencialRegistro; // Já como esse evento é chamado por ultimo, ele está no valor correto, mas se precisar adicionar mais que 1 registro ai tem que adicionar +N, e retornar sempre o numero de registros incluidos cnab.Add(regR); return(1); // Nomero de registro opcionais incluidos }
private int Caixa_SegmentoR_Opcional(CNAB cnab, BoletoInfo boleto) { // Apenas mostrando de forma simples, que nem todos os boletos precisariam ter o registro opcional if (boleto.BoletoID % 2 == 0) // no caso somente os boletos de numero impar teriam o registro { return(0); // informa que não foi inserido nenhum registro opcional, assim a numero de sequencia do registro permanece o mesmo } // Define as informações do segmento opcional R (da mesma forma pode ser criado qualquer tipo de registro opcional) var regR = new Reg <CNAB240SegmentoRCaixa>(); regR[CNAB240SegmentoRCaixa.Lote] = cnab.SequencialLote; // o número da sequencia só é alterado quando sair deste evento regR[CNAB240SegmentoRCaixa.Nregistro] = cnab.SequencialRegistro; regR[CNAB240SegmentoRCaixa.email] = "*****@*****.**"; regR[CNAB240SegmentoRCaixa.Informacao] = "info..."; cnab.Add(regR); // regX[CNAB240SegmentoXCaixa.Lote] = cnab.SequencialLote + 1; // Se houver mais registros o numero sequencial deve ser incrementadp // cnab.Add(regX); // E neste caso o retorno teria que ser 2 (numero de itens adicionados) return(1); // Nomero de registro opcionais incluidos }
// Uso para personalizar os campos do sicred ou de qualquer outro que não seguem os padrão comum void r_onRegBoleto(CNAB cnab, IReg reg, BoletoInfo boleto) { // A verificação do tipo agora é obrigatporio poosi todos os registros, incluindo o header e footer podem ser personalizados // Logico que em certos registro o valor de BoletoInfo é null if (reg.NameType == typeof(CNAB400Remessa1Sicredi)) { Reg<CNAB400Remessa1Sicredi> regBoleto = (Reg<CNAB400Remessa1Sicredi>)reg; // A rotina padrão define estas variáveis comentadas abaixo: regBoleto[CNAB400Remessa1Sicredi.NumeroDocumento] = cnab.Cedente.DocumentoNumeros; regBoleto[CNAB400Remessa1Sicredi.NossoNumero] = boleto.NossoNumero; regBoleto[CNAB400Remessa1Sicredi.NumeroDocumento] = boleto.NumeroDocumento; regBoleto[CNAB400Remessa1Sicredi.DataVencimento] = boleto.DataVencimento; regBoleto[CNAB400Remessa1Sicredi.ValorDocumento] = boleto.ValorDocumento; regBoleto[CNAB400Remessa1Sicredi.Especie] = CNAB400Sicredi.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] = boleto.Sacado.Tipo; regBoleto[CNAB400Remessa1Sicredi.SacadoDocumento] = boleto.Sacado.DocumentoNumeros; regBoleto[CNAB400Remessa1Sicredi.Endereco] = boleto.Sacado.Endereco; regBoleto[CNAB400Remessa1Sicredi.CEP] = boleto.Sacado.CepNumeros; // Campos com certa particulariade no sicred regBoleto[CNAB400Remessa1Sicredi.Emissao] = "A"; // O padrão é que a emissão seja feito no cliente ("B") regBoleto[CNAB400Remessa1Sicredi.Alteracao] = "C"; // Desconto por dia de antecipação; // Para que o Sicred poste o boleto tem que mudar o padrão abaixo regBoleto[CNAB400Remessa1Sicredi.TipoPostagem] = "S"; regBoleto[CNAB400Remessa1Sicredi.Emissao] = "A"; } }