Boa tarde,
Realmente esse validador do Sicoob está uma novela mexicana, acabei tendo que voltar todas as alterações que foram feitas no AcBr e ainda mais duas correções que são o problema que o @michael_castilho e o @Luciano Jr. Mattiello estão tendo, o Sicoob me retornou assim na última validação que tentei fazer:
Corrigir no header do arquivo remessa posições 33 a 52 o código do cedente
Informado: '00000000000000000000'
Correto: ' '
- Corrigir no header do arquivo remessa posições 164 a 166 o Nº da versão do layout do arquivo.
Informado: '087'
Correto: '081'
- Corrigir no header do lote do arquivo remessa posições 014 a 016 o número da versão do layout do lote.
Informado: '045'
Correto: '040'
Até aqui eu só voltei as alterações do AcBr
- Corrigir no trailler do lote do arquivo remessa posições 018 a 023 a quantidade de registros no lote.
Informado: '000011'
Correto: '000014'
- Corrigir no trailler do arquivo remessa posições 024 a 029 a quantidade de registros do arquivo.
Informado: '000004'
Correto: '000016'
Esses dois acima tive que fazer o seguinte:
No trailler do lote fiz assim:
//IntToStrZero((3 * ARemessa.Count-1), 6) + //Quantidade de Registro da Remessa
IntToStrZero(((4 * (ARemessa.Count-1))+2), 6) //alterei para 4 * pois são 4 segmentos por registro, e somei 2 pois é a linha do cabeçalho e rodapé do lote que precisam ser somados.
No trailler do Header fiz assim:
//IntToStrZero(ARemessa.Count, 6) + //Quantidade de registros do arquivo, inclusive este registro que está sendo criado agora}
IntToStrZero(((4 * (ARemessa.Count-1))+4), 6) //Mesma coisa do de cima, 4* pois são 4 segmentos por registro, e + 4 por causa das linhas do cabeçado e rodapé do lote e do arquivo.
Com todas as alterações acima validou tudo, e meu cliente já está usando a alguns dias.
Obs: Não sei se a programação ficou a melhor possível, mais foi a forma que achei de validar, agora toda vez q faço update no meu componente AcBr preciso verificar as diferenças nessa Unit.