...
Registros disponíveis no Credit Bureau – B49C para Pessoas Físicas. A saída atual da lib (jar file) pode vir por uma Hashtable<K,V> (Key,Value) ou uma exceção, sendo esta um erro de infraestrutura, layout, configuração, etc. Para cada registro, há uma chave de acesso para os valores equivalentes, e, no caso de múltiplos registros, acrescenta-se um sufixo sequencial “‘_N+1‘”, e.g. para acessar o valor do segundo registro de ‘B358_DTOCORR_2‘; o O controle final da quantidade de registros se dará por outra chave, no caso ‘B358_NUMPEFIN‘, então, poderíamos podemos ter:
Bloco de código |
---|
|
for( int i=0; i < Integer.valueOf(hash.get("B358_NUMPEFIN")); i++) {
System.out.println("registro: " + hash.get("B358_DTOCORR_" + String.valueOf(i)));
} |
Configurando acesso ao SERASA PF
- Lembrar sempre que a correta interpretação dos registros depende da leitura atenta do layout B49C/B49L.
A configuração dos acessos externos SERASA PF/PJ deve inicialmente passar por uma indicação para a JVM do path do arquivo de properties, do certificado e do ‘log4j‘; veja abaixo o setting para a JVM (‘-D option‘):
Bloco de código |
---|
|
-Dserasa-bureau.datadir=/home/jboss/intellector
-Dlog4j.configuration=/home/jboss/intellector
-Daccess.ssl=/home/jboss/intellector/ssl
|
Para o uso direto em testes, usaríamos… deve ser utilizado: (e.g. /home/jboss/intellector)
Bloco de código |
---|
|
java -jar -cp. -Dserasa-bureau.datadir=/home/jboss/intellector SerasaBureau.jar
|
Aviso |
---|
Usando o método de execução acima, não esqueça de colocar no ’CLASSPATH’ todas as dependências; e o mesmo para JAVA_OPTS no JBoss… |
Propriedades para o Acesso Seguro (HTTPS)
- Arquivo ‘https.properties‘ – arquivos de propriedades do certificado e conexão ‘host-to-host‘ com a SERASA SERASA.
Bloco de código |
---|
|
# Arquivo de properties para o SERASA PJ
# $Revision: 1.2 $
#
# Informações de autenticacao e certificados do serasa
user.url=sitenet07.serasa.com.br
user.root=/Homologa/consultahttps
user.jks=lVaxvlqeVH5ugq/rba5vYvSWhu8kYJqO3Q==O63WLqgqpA==
user.cert=/home/jboss/intellector-files/serasa.jks |
- Existe no Site do Intellector, uma funcionalidade para configurar os arquivos de propriedades, lá você poderá gerar a senha criptografada.
Aviso |
---|
Configurando SSL e HTTPS, leia aqui; sem Certificado ’não funciona’ e, entenda bem o conceito, leia sobre isso. Esse certificado é fornecido pela própria entidade, tipo host<->host. |
Auditoria dos dados de Acesso
Para efeitos de auditoria, esse plugin persiste os dados da string de Envio e Retorno do acesso (dados brutos), sendo possível consultar esses dados via web service de Auditoria e verificar ou fazer uso dessas strings. O conteúdo dessa string bruta é composto pelos campos que compõe o layout de entrada e saída, especificada na documentação do SERASA.
Layouts para o Acesso
- Nos Layouts são apresentados dados fixos, que provavelmente não sofrerão alterações; caso haja, a codificação do acesso também deverá ser alterada; basicamente, são dados transacionais.
- Baixe aqui o Layout B49C.
- Arquivo ‘layout_p002.xml‘ – Header do Regsitro P005 – Parcelas com cheques de Compromisso.
Bloco de código |
---|
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- layout_p002.xml - Registro P002 - Outras Opcoes de Consulta Pessoa Fisica -->
<serasa_bureau>
<field>
<!-- Tipo de registro TIPO-REG -->
<name>P002</name>
<size>4</size>
<type>S</type>
</field>
<field>
<!-- codigo da 1a opcao para consultar outro produto, feature ou base (ver tabela 30 -->
<name>IP20</name>
<size>4</size>
<type>S</type>
</field>
<field>
<!-- chave de acesso para consultar a 1a opcao se necessario -->
<name>Q</name>
<size>21</size>
<type>S</type>
</field>
<field>
<!-- codigo da 2a opcao para consultar outro produto, feature ou base (ver tabela 30 -->
<name> </name>
<size>4</size>
<type>S</type>
</field>
<field>
<!-- chave de acesso para consultar a 2a opcao se necessario -->
<name> </name>
<size>21</size>
<type>S</type>
</field>
<field>
<!-- codigo da 3a opcao para consultar outro produto, feature ou base (ver tabela 30 -->
<name> </name>
<size>4</size>
<type>S</type>
</field>
<field>
<!-- chave de acesso para consultar a 3a opcao se necessario -->
<name> </name>
<size>21</size>
<type>S</type>
</field>
<field>
<!-- codigo da 4a opcao para consultar outro produto, feature ou base (ver tabela 30 -->
<name> </name>
<size>4</size>
<type>S</type>
</field>
<field>
<!-- chave de acesso para consultar a 4a opcao se necessario -->
<name> </name>
<size>21</size>
<type>S</type>
</field>
<field>
<!-- filler de COMPLEMENTO do registro P002 -->
<name> </name>
<size>11</size>
<type>S</type>
</field>
</serasa_bureau> |
- Arquivo layout_p006.xml - Opções de consulta do Cadastro Sintético Sintético.
Bloco de código |
---|
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<serasapf>
<field>
<!-- Layout de consulta P006: trata-se de uma sequencia de S/N, para cada registro -->
<!-- para uma melhor visualizacao e configuracao, verificar o layout de consulta do P006 -->
<name>P006SNSSS9999SSSSSSSN NNNSN</name>
<size>27</size>
<type>S</type>
</field>
<field>
<!-- filler (7): filler de COMPLEMENTO do registro P006 -->
<name> </name>
<size>88</size>
<type>S</type>
</field>
</serasapf> |
- Arquivo layoutPF_b49c.xml - Header transacional para a consulta Pessoa Física Física.
Bloco de código |
---|
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Layout PF B49C -->
<serasapf>
<field>
<!-- header Credit Bureau -->
<name>B49C</name>
<size>4</size>
<type>S</type>
</field>
<field>
<!-- Filler -->
<name> </name>
<size>6</size>
<type>S</type>
</field>
<field>
<!-- NUM_DOC=CPF; está neste XML ilustrando, pois o mesmo é tratado numa -->
<!-- tag de entrada, serve como referencia pra substituicao do real CPF -->
<name>cpf</name>
<size>15</size>
<type>N</type>
</field>
<field>
<!-- Tipo Pessoa F=pessoa fisica; J=pessoa juridica -->
<name>F</name>
<size>1</size>
<type>S</type>
</field>
<field>
<!-- Base de consulta -->
<name>C</name>
<size>6</size>
<type>S</type>
</field>
<field>
<!-- Modalidade -->
<name>FI</name>
<size>2</size>
<type>S</type>
</field>
<field>
<!-- valor da consulta -->
<name>8888888</name>
<size>7</size>
<type>N</type>
</field>
<field>
<!-- Centro de custo -->
<name> </name>
<size>12</size>
<type>S</type>
</field>
<field>
<!-- Codificado (S/N) -->
<name>N</name>
<size>1</size>
<type>S</type>
</field>
<field>
<!-- quantidade de registros por transmissao de dados -->
<name>99</name>
<size>2</size>
<type>N</type>
</field>
<field>
<!-- Deseja dialogo de comunicacao (S/N) -->
<name>S</name>
<size>1</size>
<type>S</type>
</field>
<field>
<!-- Funcao: INI,CON,ENC,ERR,TMD,FIM -->
<name>INI</name>
<size>3</size>
<type>S</type>
</field>
<field>
<!-- Tipo de consulta -->
<name>A</name>
<size>1</size>>
<type>S</type>
</field>
<field>
<!-- atualiza dados enviados (S/N) -->
<name>N</name>
<size>1</size>
<type>S</type>
</field>
<field>
<!-- Filler (2) -->
<name> </name>
<size>42</size>
<type>S</type>
</field>
<field>
<!-- quantidade de cheques sequenciais -->
<name>00</name>
<size>2</size>
<type>N</type>
</field>
<field>
<!-- endereço + telefone -->
<name>N</name>
<size>1</size>
<type>S</type>
</field>
<field>
<!-- filler (3) -->
<name> </name>
<size>8</size>
<type>S</type>
</field>
<field>
<!-- conta corrente -->
<name>0000000000</name>
<size>10</size>
<type>N</type>
</field>
<field>
<!-- digito da conta corrente -->
<name>0</name>
<size>1</size>
<type>N</type>
</field>
<field>
<!-- agencia -->
<name>0000</name>
<size>4</size>
<type>N</type>
</field>
<field>
<!-- filler (4) -->
<name> </name>
<size>61</size>
<type>N</type>
</field>
<field>
<!-- quantidade de compromisso encontrados -->
<name> </name>
<size>2</size>
<type>N</type>
</field>
<field>
<!-- tem anotacoes negativas (S/N/B) -->
<name> </name>
<size>1</size>
<type>S</type>
</field>
<field>
<!-- anotacoes de cheques (S/N/B) -->
<name> </name>
<size>1</size>
<type>S</type>
</field>
<field>
<!-- data da consulta -->
<name> </name>
<size>8</size>
<type>S</type>
</field>
<field>
<!-- hora da consulta -->
<name> </name>
<size>6</size>
<type>S</type>
</field>
<field>
<!-- total de registros -->
<name> </name>
<size>4</size>
<type>S</type>
</field>
<field>
<!-- quantidade de registros enviados por transmissao -->
<name> </name>
<size>4</size>
<type>N</type>
</field>
<field>
<!-- numero de controle de atualizacao das tabelas -->
<name> </name>
<size>4</size>
<type>S</type>
</field>
<field>
<!-- filler (5) -->
<name> </name>
<size>176</size>
<type>S</type>
</field>
<field>
<!-- acessou recheque online (S/N) -->
<name>N</name>
<size>1</size>
<type>S</type>
</field>
<field>
<!-- tem ocorrencia de Recheque ultimo ano (S/N) -->
<name>N</name>
<size>1</size>
<type>S</type>
</field>
<field>
<!-- filler (6) -->
<name> </name>
<size>1</size>
<type>S</type>
</field>
</serasapf>
|
Propriedades Configuráveis do Acesso
- As propriedades abaixo podem sofrer alterações, e essas podem ser feitas pelo site do Intellector (veja aqui); muita atenção no preenchimento dessas informações, pois elas definem o acesso ao conteúdo (informações) e, não de conexão ao host da SERASA.
- Arquivo serasapf.properties.
Bloco de código |
---|
|
#Arquivo de properties para o SERASA PF
# $Revision: 1.2 $
#
# type S=string, N=numeric
#
# Informaçoes de Login no SERASA
serasa.login=00186487
serasa.login_size=8
serasa.login_type=N
serasa.password=11003344
serasa.pass_size=8
serasa.pass_type=S
serasa.newpass=
serasa.npass_size=8
serasa.npass_type=S |
Preenchimento da HashMap de Entrada
Esse será o método usado pelo reflection da politica.
Bloco de código |
---|
|
<!-- metodo de acesso para ser carregado no acesso -->
<code name="br.com.tools.acessos.serasa.SerasaPF"/>
|
- Sufixo para as variáveis internas da política
Será usada apenas pelo cliente e pela politica, mas deve ser informado.
Bloco de código |
---|
|
<!-- esse deverah ser sufixo para ser acrescentado ao nome -->
<!-- vindo da politica, entao irei buscar na hash da politica -->
<!-- hash.getKey(cpf_serasa); um de/para para os elementos -->
<nome_acesso>serasapf</nome_acesso> |
- ‘Somente com P006‘ – Opções de Consulta Cadastro Sintético (mínimo)
- Registros chave para ser informado na hashtable de entrada
- ‘CPF‘ – contém o CPF para consulta, sem “.” (ponto) ou “-” (hífen)
e.g. java code.
Bloco de código |
---|
|
serIn.put("CPF", "00000000191"); |
- Arquivo XML
Bloco de código |
---|
|
<!-- posso testar pelo valor obrigatorio dentro de cada -->
<!-- acesso, ele dever ser "CPF" -->
<field description="CPF a ser consultado" type="String" format="">CPF</field> |
- ‘Com utilização do P005‘ – Parcelas com Cheque de Compromisso
Chave na ‘HashMap‘ (default=false).
Bloco de código |
---|
|
// deve ser informado; ele avisa true/false para a consulta ao P005
serIn.put("P005", "false"); |
- Registros chave para ser informado na hashtable de entrada
- ‘CMC7‘ (30 bytes) – contém o CMC7 do cheque
- ‘VLR_CHEQUE‘ – valor do cheque
- ‘VENC_CHEQUE‘ – data de vencimento do cheque
- ‘TIPO_MOV‘ – tipo de movimento (“I”=incluir cheque; “B”=baixar cheque; “E”=baixar cheque que terá novo cheque incluido na sequência; “C”=consultar cheque)
Bloco de código |
---|
|
<!-- contem os dados necessarios para entrada no serasa PF -->
<entrada>
<!-- posso testar pelo valor obrigatorio dentro de cada -->
<!-- acesso, ele dever ser "CPF" -->
<field description="CPF a ser consultado" type="String" format="">CPF</field>
<!-- no caso de ser "CPF", pode-se optar pelo protocolo -->
<!-- P005, entao verifico se o dado abaixo(CMC7?) existe -->
<!-- como "true" ou "false", soh entao ele usa os dados -->
<field description="Indicação de uso da consulta P005: true/false" type="Boolean" format="">P005</field>
<field description="CMC7" type="String" format="">CMC7</field>
<field description="Valor de cheque consultado" type="Double" format="">VLR_CHEQUE</field>
<!-- Data de vencimento do cheque; deverah vir AAAAMMDD -->
<field description="Data de vencimento do cheque; deverá ser AAAAMMDD" type="Date" format="yyyymmdd">VENC_CHEQUE</field>
<!-- Tipo de movimento sao: -->
<!-- "I"=incluir cheque;"B"=baixar cheque;"E"=baixar cheque -->
<!-- que terah novo cheque incluido na sequencia; -->
<!-- "C"=consultar cheque -->
<!-- como defensive programing -->
<field description="Tipo de movimento: I/B/E/C" type="String" format="">TIPO_MOV</field>
</entrada> |
Bloco de código |
---|
language | html/xml |
---|
Curiosidade: o CMC7 é composto pelas seguintes sequências: |
---|
a) código de compensação do |
---|
banco
banco b) número da agência |
---|
bancária
bancária c) dígito módulo 10 dos |
---|
campos
campos d) código da câmera de |
---|
compensação
cheque
cheque f) código de tipicação do documento (5, 6, 7 e 8) |
---|
g) digito módulo 10 dos campos banco e |
---|
agência
agência h) número da conta corrente i) dígito módulo 10 do campo conta |
---|
Exception
Bloco de código |
---|
|
throw new LayoutException("Erro preenchendo HashMap " + this.toString());
|
Dica |
---|
'Contador’ – sempre existe um atributo no XML nomeado ’counter’ como indexador dos registros |
Dados de Entrada do Acesso
- Para o preenchimento da HashMap de entrada, é imprescindível entender o layout B49C e, devem conter as seguintes chaves de entrada (UPPERCASE); cada campo contém os seguintes dados, sendo eles validados pelo Compilador:
- ‘description‘ – propriedade da tag “field”, contem a descrição do campo
- ‘type‘ – propriedade da tag “field”, define o tipo de dado Pure Java, como String, Integer, Double, Date e Boolean.
- ‘format‘ – propriedade da tag “field”, contem o formato do dado; atualmente, só os dados de datas tem esse campo preenchido.
- ‘field‘ – tag relativa ao nome do campo, escrito em maiúsculas (não necessariamente), como por ex. ‘TPRESPOSTA‘
Bloco de código |
---|
|
<!-- contem os dados necessarios para entrada no serasa PF -->
<entrada>
<!-- posso testar pelo valor obrigatorio dentro de cada -->
<!-- acesso, ele dever ser "CPF" -->
<field description="CPF a ser consultado" type="String" format="">CPF</field>
<!-- no caso de ser "CPF", pode-se optar pelo protocolo -->
<!-- P005, entao verifico se o dado abaixo(CMC7?) existe -->
<!-- como "true" ou "false", soh entao ele usa os dados -->
<field description="Indicação de uso da consulta P005: true/false" type="Boolean" format="">P005</field>
<field description="CMC7" type="String" format="">CMC7</field>
<field description="Valor de cheque consultado" type="Double" format="">VLR_CHEQUE</field>
<!-- Data de vencimento do cheque; deverah vir AAAAMMDD -->
<field description="Data de vencimento do cheque; deverá ser AAAAMMDD" type="Date" format="yyyymmdd">VENC_CHEQUE</field>
<!-- Tipo de movimento sao: -->
<!-- "I"=incluir cheque;"B"=baixar cheque;"E"=baixar cheque -->
<!-- que terah novo cheque incluido na sequencia; -->
<!-- "C"=consultar cheque -->
<!-- como defensive programing -->
<field description="Tipo de movimento: I/B/E/C" type="String" format="">TIPO_MOV</field>
</entrada> |
Resposta da Consulta
Dados de Saída do Acessos
- A HasMap de saída dos acessos, seguem o mesmo princípio da entrada, exceto pelo fato de que os dados de um determinado registros, podem se repetir, nesse caso, há a presença de um ‘contador‘ para um eventual looping de tratamento pelas aplicações clientes. Cada campo contém os seguintes dados, sendo eles validados pelo Compilador:
- ‘description‘ –
propriedade - Propriedade da tag “register”, contem a descrição do campo
- ‘type‘ –
propriedade - Propriedade da tag “register”, define o tipo de dado Pure Java, como String, Integer, Double, Date e Boolean.
- ‘format‘ –
propriedade - Propriedade da tag “register”, contem o formato do dado; atualmente, só os dados de datas tem esse campo preenchido.
- ‘register‘ –
tag - Tag relativa ao nome do campo, escrito em maiúsculas (não necessariamente), como por ex. ‘R104_DATAFUNDACAO_‘
- Abaixo o XML de saída com o ‘contador‘.
- exemplo Exemplo ‘com‘ um contador… observe que ‘counter=B002_NUMREGISTROS‘ indica quantos registros, se existirem, ‘B002‘ foram retornados pelo SERASA.
Bloco de código |
---|
|
<!-- Obs.: quando counter=alguma_coisa, entao todo o bloco -->
<!-- abaixo sofrerah um looping baseado nesse counter -->
<saida id="B002" counter="B002_NUMREGISTROS" >
<register description="Data da última alteraçãocadastral(AAAAMMDD)" type="Date" format="yyyymmdd">B002_DATAEMISS_</register>
<register description="UF da emissão" type="String" format="">B002_UFEMISSOR_</register>
<register description="Data de atualização do registro (AAAAMMDD)" type="Date" format="yyyymmdd">B002_DTATUALIZA_</register>
<register description="Data Nascimento (AAAAMMDD)" type="Date" format="yyyymmdd">B002_DATANASC_</register>
<register description="Nome da mãe" type="String" format="">B002_NOMEMAE_</register>
<register description="Sexo" type="String" format="">B002_SEXO_</register>
<register description="Tipo do documento" type="String" format="">B002_TIPODOC_</register>
<register description="Número do documento" type="String" format="">B002_NUMDOC_</register>
<register description="Órgão emissor do documento de identidade" type="String" format="">B002_ORGAOEMISS_</register>
</saida> |
- exemplo Exemplo ‘com‘ um contador explicitamente informando o numero MÁXIMO de registros desejados no retorno da consulta.
Bloco de código |
---|
|
<!-- Obs.: quando counter=alguma_coisa, entao todo o bloco -->
<!-- abaixo sofrerah um looping baseado nesse counter -->
<saida id="B002" counter="5" >
<register description="Data da última alteraçãocadastral(AAAAMMDD)" type="Date" format="yyyymmdd">B002_DATAEMISS_</register>
<register description="UF da emissão" type="String" format="">B002_UFEMISSOR_</register>
<register description="Data de atualização do registro (AAAAMMDD)" type="Date" format="yyyymmdd">B002_DTATUALIZA_</register>
<register description="Data Nascimento (AAAAMMDD)" type="Date" format="yyyymmdd">B002_DATANASC_</register>
<register description="Nome da mãe" type="String" format="">B002_NOMEMAE_</register>
<register description="Sexo" type="String" format="">B002_SEXO_</register>
<register description="Tipo do documento" type="String" format="">B002_TIPODOC_</register>
<register description="Número do documento" type="String" format="">B002_NUMDOC_</register>
<register description="Órgão emissor do documento de identidade" type="String" format="">B002_ORGAOEMISS_</register>
</saida> |
- exemplo Exemplo ‘sem‘ um contador… neste caso, ‘counter=”"‘ indica que somente um registro, se existir, foi retornado pela SERASA.
Bloco de código |
---|
|
<saida id="B280" counter="" >
<register description="Descrição do Score" type="String" format="">B280_DESCSCORE</register>
<register description="Pontos no Score" type="String" format="">B280_PONTSCORE</register>
<register description="Range do Score" type="String" format="">B280_RANGESCORE</register>
<register description="Taxa do Score" type="String" format="">B280_TAXASCORE</register>
<register description="Mensagem do Score" type="String" format="">B280_MSGSCORE</register>
<register description="Código da mensagem do Score" type="String" format="">B280_CODMSGSCORE</register>
</saida> |
Dica |
---|
TODOS os registros seguem a mesma lógica e, o ’XML completo com todos os registros do acesso’, importado pelo Compilador, pode ser baixado aqui.
|
Registros Disponíveis Pessoa Física
- Todos os registros contém seus respectivos espaços, se houverem; não existe “trim()” nos blocos lidos.
- Registro B001 – Identificação
- n = ‘B001_QTDCPFGRAFIA‘ – contador da quantidade de grafias por CPF consultado (deverá ser controle de loop)
- Registro B002 – Cadastro Sintético – BX14
- n = ‘B002_NUMREGISTROS‘
- Registro B003 – Cadastro Sintético – BX14
- n = ‘B003_NUMREGISTROS‘
- Registro B004 – Cadastro Sintético – BX14
- n = ‘B004_NUMREGISTROS‘
- Registro B005 – Cadastro Sintético – BX14
- Registro B006 – Cadastro Sintético – BX14
- n = ‘B006_NUMREGISTROS‘
- Registro B012 – Referências Bancárias – BX64
- indexador = ‘B012_NUMREFERENCIAS‘
- Registro B013 – Referências Cheque Especial – BX64
- n = ‘B013_NUMREFERENCIAS‘
- Registro B231 – Compromissos – Previsão Pagamento – BX32
- n = ‘B231_NUMCOMPROMISSOS‘
- Registro B232 – Compromissos – BX34
- n = ‘B232_NUMCOMPROMISSOS‘
- Registro B233 – Compromissos – BX34
- n = ‘B233_NUMCOMPROMISSOS‘
- Registro B234 – Detalhe de parcelas – BX34
- n = ‘B234_NUMPARCELAS‘
- Registro B280 – Cálculo de Scoring
- Registro B352 – Participação Societária
- n = ‘B352_NUMPARTICIP‘ – Contador do número de participações;
- Registro B353 – RESUMO – Registro de Consultas
- Registro B354 – Detalhe Registro da Consulta – BX16
- n = ‘B354_NUMCONSULTA‘ – contador da quantidade de detalhes na consulta
- processo de somatoria das datas
- B354_MENORDTCONSULTA – contém a menor data nas consultas
- B354_MAIORDTCONSULTA – contem a maior data nas consultas
- Registro B355 – Detalhe de Contumácia – BX18
- n = ‘B355_NUMOCORR‘ – contador do número de ocorrências de contumácia
- Registro B356 – Detalhe de Cheques Sustados – BX18
- Usado para consulta de Pessoa Fisica e Juridica
- n = ‘B356_NUMCHEQUESSUSTADOS‘ – Contador de número de detalhes de cheques sustados
- contém o registro atual da menor data e maior data dos registros; como o formato da data eh YYYYMMDDHHMM, pode-se compará-la diretamente
- B356_MENORDTCHQSUSTADO
- B356_MAIORDTCHQSUSTADO
- Registro B357 – Resumo Pendência de Pagamento – BX20
- n = ‘B357_NUMPENDENCIAS‘ – contador do número de pendências de pagamento
- Registro B358 – Detalhe Pendência de Pagamento – BP22
- n = ‘B358_NUMPEFIN‘ – contador das ocorrências de PEFIN
- contém o registro atual da menor data e maior data dos registros;
- B358_MENORDTPENDPAG
- B358_MAIORDTPENDPAG
- Registro B359 – Resumo de Cheque sem Fundo – BX20
- Registro B360 – Detalhe de Cheque sem Fundos – BP24
- n = ‘B360_NUMCHQSEMFUNDOS‘ – contador do número de ocorrências de cheques sem fundo
- os registros abaixo contém o registro atual da menor data e maior data dos registros de cheques sem fundos
- B360_MENORDTSEMFUNDOS
- B360_MAIORDTSEMFUNDOS
- Registro B361 – Resumo Ocorrências de Protestos
- Registro B362 – Detalhe Protesto – BP26
- n = ‘B362_NUMPROTESTOS‘ – contador do número de protestos
- Regsitro B363 – Resumo de Ações Judiciais
- Registro B364 – Detalhe Ação Judicial – BP28
- n = ‘B364_NUMACAOJUD‘ – Contador do numero de ocorências de Ações Judiciais
- Registro B365 – Resumo Participações em Falências – BP30
- Registro B366 – Detalhe Participação em Falências – BP30
- n = ‘B366_NUMFALENCIAS‘ – contador de ocorrências do número de falências
- Registro B367 – Resumo Convem Devedores – BX20
- Registro B368 – Detalhe Divida Vencida – BP23
- n = ‘B368_NUMDIVIDAS‘ – contador do número de ocorrências de dívidas vencidas
- contém o registro atual da menor data e maior data dos registros de dívida vencida
- B368_MENORDTDIVIDA
- B368_MAIORDTDIVIDA
- Registro B369 – Registro de Endereços e Telefones Alternativos (tipo 0, 1 e 2)
- Registro B370 – Registro de Endereços e Telefones Alternativos (tipo 1 e 2)
- Registro B373 – Registro com Dados do Recheque Online
- Registro B381 – Grafias
- n = ‘B381_NUMSITUACAO‘ – contador do número de grafias
- Registro F900 – Cálculo de Limites e Títulos em Cobrança
- registroF900() * NAO IMPLEMENTADO *
- Registro B389
- n = ‘B389_NUMREFIN‘ – número de regsitros disponíveis
Layouts SERASA: B49C