--- title: Layout XLSX Fly5 url: https://docs.vehub.com.br/Layouts/%F0%9F%92%B3%20Fly%205/Manual/LayoutXlsx/ --- # Layout XLSX Fly5 ## Estrutura do Arquivo Planilha **XLSX (Excel)** de entrada da Fly5. O arquivo de referência tem o **cabeçalho na linha 1**, uma **linha por título** e um **totalizador no rodapé**. As colunas são localizadas pelo **nome do cabeçalho**, não pela posição física: a planilha tem colunas auxiliares de pivot no fim (`Mês Venc.`, `Semana Venc.`, `Mês Baixa`) e as colunas de CEP e espécie foram acrescentadas depois das originais, então a ordem varia entre arquivos. A comparação do nome do cabeçalho é **insensível a caixa** (`VALOR FACE` = `Valor Face`), mas **sensível a acento** — `Emissão`, `Deságio` e `Espécie` precisam vir acentuados. Somente a **primeira planilha** da pasta de trabalho é lida. ### Localização do cabeçalho O leitor varre as **10 primeiras linhas** procurando uma célula com o texto `CNPJ Sacado`; a linha em que a encontra é o cabeçalho. A folga permite que a planilha tenha um título ou um logo acima da tabela. Se `CNPJ Sacado` não aparecer nessas 10 linhas, o arquivo é rejeitado. ### Fim da leitura | **Condição** | **Comportamento** | |---|---| | Linha com o texto `TOTAL` em qualquer coluna mapeada | Parada esperada (totalizador do rodapé). Sem aviso | | Linha sem `CNPJ Sacado`, sem `NF` e sem `Vencimento` | Parada. As linhas seguintes são ignoradas e um **alerta** registra o corte no log do job | | Última linha utilizada da planilha | Fim normal da leitura | !!! note "Por que o critério é o texto `TOTAL`" A linha de totalizador traz as somas de `Valor Face`, `Valor Desembolsado` e `Deságio` **preenchidas**, então não é possível pará-la por "linha vazia" ou "linha sem valor". ## Colunas As letras abaixo são a posição no **arquivo de referência**, apenas para conferência visual — a leitura é sempre pelo nome do cabeçalho. | Coluna | **Cabeçalho** | **Tipo** | **Uso** | **Descrição** | |---|---|---|---|---| | A | `#` | Inteiro | Ignorada | Numeração sequencial da linha | | B | `Cedente` | Texto | Opcional | Razão social do cedente. O cedente é resolvido pelo **CNPJ** | | C | `CNPJ Cedente` | Texto | Obrigatória | CNPJ do cedente. Deve ser o **mesmo em todas as linhas** | | D | `Sacado` | Texto | Obrigatória | Nome ou razão social do sacado | | E | `CNPJ Sacado` | Texto | Obrigatória | CPF ou CNPJ do sacado. É também a coluna usada para localizar a linha do cabeçalho | | F | `CEP Sacado` | Texto / Inteiro | Obrigatória | CEP do sacado | | G | `NF` | Texto / Inteiro | Obrigatória | Número da nota fiscal, que é o número do documento do título | | H | `Emissão` | Data | Obrigatória | Data de emissão do título | | I | `Desembolso` | Data | Obrigatória | Data do desembolso ao cedente, usada como data de aquisição | | J | `Vencimento` | Data | Obrigatória | Data de vencimento do título | | K | `Baixa` | Data | Conferência | Data da baixa na origem. Gera alerta e **não** é importada | | L | `Valor Face` | Decimal | Obrigatória | Valor nominal do título | | M | `Valor Desembolsado` | Decimal | Obrigatória | Valor pago ao cedente, usado como valor de aquisição | | N | `Deságio` | Decimal | Conferência | Deságio informado pela planilha. **Não** é importado | | O | `Dias Corr.` | Inteiro | Ignorada | Prazo em dias, derivado das datas | | P | `Taxa a.m.` | Decimal | Conferência | Taxa mensal como **fração** (`0,0315` = 3,15% a.m.). **Não** é importada | | Q | `Status` | Texto | Ignorada | Situação derivada da baixa. Chega como `#REF!` na maioria das linhas do arquivo real | | R | `Mês Desemb.` | Texto | Ignorada | Auxiliar de pivot (ex.: `2026-06`) | | S | `Mês Venc.` | Texto | Ignorada | Auxiliar de pivot (ex.: `2026-07`) | | T | `Semana Venc.` | Texto | Ignorada | Auxiliar de pivot (ex.: `2026-07-S4`) | | U | `Mês Baixa` | Texto | Ignorada | Auxiliar de pivot (ex.: `2026-07`) | | V | [`Espécie`](#especies-de-titulo) | Texto | Obrigatória | Espécie do título | **Legenda de uso** | **Uso** | **Significado** | |---|---| | Obrigatória | A coluna precisa existir no arquivo. Sem ela o arquivo é rejeitado e a mensagem lista as colunas ausentes | | Opcional | Lida quando presente; o arquivo é aceito sem ela | | Conferência | Lida, mas **não gravada** — alimenta apenas os [alertas de consistência](#alertas) no log do job | | Ignorada | Não é lida. É derivada de outras colunas dentro da própria planilha | ## Espécies de Título A coluna `Espécie` aceita a **sigla** da tabela abaixo, ou a **descrição** da espécie (ex.: `Nota Fiscal Serviço`). A comparação ignora acento e caixa. | **Sigla** | **Espécie na plataforma** | |---|---| | `DM` | Duplicata Mercantil | | `UR` | Unidade de Recebível | | `NFSE` | Nota Fiscal Serviço | | `ND` | Nota de Débito | | `CCB` | CCB Pré Digital | | `NP` | Nota Promissória | | `NC` | Nota Comercial | | `CT` | Contrato | | `NF` | Nota Fiscal | | `CPR` | Cédula de Produto Rural | | `CTE` | CT-e | | `CD` | Confissão de Dívida | A sigla `AD` (Assunção de Dívida) também é reconhecida, porque as siglas aceitas são derivadas do próprio enumerador de espécies da plataforma. ## De/Para com VeHub **Campos vindos do arquivo** | **Coluna do arquivo** | **Campo na plataforma** | |---|---| | `Cedente` | `Empresa.Nome` (cedente) | | `CNPJ Cedente` | `Empresa.Cnpj` (cedente) | | `Sacado` | `Sacado.Nome` | | `CNPJ Sacado` | `Sacado.CpfCnpj` e `Sacado.TipoPessoa` | | `CEP Sacado` | `Sacado.Cep` | | `NF` | `Titulo.NumeroDocumento` | | `Emissão` | `Titulo.DataEmissao` | | `Desembolso` | `Titulo.DataAquisicao` | | `Vencimento` | `Titulo.DataVencimento` | | `Valor Face` | `Titulo.ValorNominal` | | `Valor Desembolsado` | `Titulo.ValorAquisicao` | | `Espécie` | `Titulo.Especie` | **Campos definidos pelo layout (não vêm do arquivo)** | **Campo na plataforma** | **Valor** | |---|---| | `Titulo.Portador` | `Cedente` | | `Titulo.LayoutIntegracaoEntrada` | `Xlsx Fly5` (53) | | `Titulo.DisponivelParaMovimentacao` | `true` | | `Titulo.OriginadoViaEstoqueDtvm` | `false` | ## Regras de Conversão | **Campo** | **Regra** | |---|---| | `CNPJ Cedente`, `CNPJ Sacado` | Mantém **somente os dígitos**. Qualquer caractere não numérico é removido, inclusive vírgula — `48.851,242/0001-15` vira `48851242000115` | | `CEP Sacado` | Somente dígitos, completado com **zeros à esquerda** até 8 posições. Célula formatada como número perde o zero inicial (`01310100` chega `1310100`) e ele é restaurado | | `NF` | Célula numérica é convertida para a forma inteira, sem notação científica | | `Emissão`, `Desembolso`, `Vencimento`, `Baixa` | Aceita **serial do Excel** (número), célula de data e texto em **pt-BR** (`DD/MM/AAAA`) | | `Valor Face`, `Valor Desembolsado`, `Deságio` | Arredondados para **2 casas decimais**. Aceita formato invariant (`1234.56`) e pt-BR (`1.234,56`) | | `Taxa a.m.` | **Não** é arredondada em 2 casas: chega como fração e `0,0315` seria zerado para `0,03` | | `Espécie` | Só os espaços das pontas são removidos. A resolução da sigla acontece na etapa de mapeamento | | Tipo de pessoa do sacado | Documento com até **11 dígitos** → Pessoa Física; acima disso → Pessoa Jurídica | ## Validações Todas as validações abaixo rodam **antes** da gravação. A gravação é feita em **transação única**, então qualquer falha rejeita o arquivo inteiro. | **Validação** | **Critério** | |---|---| | Cabeçalho encontrado | `CNPJ Sacado` precisa aparecer nas 10 primeiras linhas | | Colunas obrigatórias | Todas as colunas obrigatórias precisam existir. A mensagem lista as ausentes | | Linha legível | Uma linha que não pode ser lida rejeita o arquivo. A mensagem informa o **número da linha** | | Pelo menos um título | Arquivo sem nenhuma linha de título é rejeitado | | Documento do sacado | Precisa ter **11** (CPF) ou **14** (CNPJ) dígitos. A mensagem lista as linhas inválidas | | CEP do sacado | Precisa ter **8** dígitos. A mensagem lista as linhas inválidas | | Espécie reconhecida | A sigla precisa constar na [tabela de espécies](#especies-de-titulo). A mensagem lista as linhas e as siglas aceitas | | Cedente único | O arquivo precisa ter **exatamente um** `CNPJ Cedente`. Com mais de um, envie um arquivo por cedente | ## Alertas Registrados no log do job. **Não** impedem a importação. | **Alerta** | **Quando ocorre** | |---|---| | Títulos já liquidados na origem | Linhas com `Baixa` preenchida. A baixa não é importada e os títulos entram como **a vencer** | | Desembolso posterior ao vencimento | `Desembolso` maior que `Vencimento` na mesma linha | | Deságio não fecha | `Valor Face - Valor Desembolsado - Deságio` acima de **R$ 0,01**. A diferença normalmente é tarifa/TAC | | Leitura interrompida | Parada em linha em branco no meio da tabela. O alerta informa a linha do corte e a faixa de linhas ignoradas | ## Campos Não Importados | **Campo do título** | **Motivo** | |---|---| | `DataLiquidacao` | A coluna `Baixa` não vem acompanhada de valor pago nem de conciliação. Gravar a liquidação criaria um título liquidado entrando em lote de cessão | | `TaxaDesagio` | Recalculada pelo lote a partir do valor de aquisição | | `NossoNumero` | Não existe no arquivo | | Chave da NF-e / lastro | O arquivo traz apenas o número da NF | | Endereço do sacado (logradouro, número, bairro, cidade, UF) | O arquivo traz apenas nome, documento e CEP | | Descontos, encargos e valores de conciliação | Não existem no arquivo | ## Exemplo Cabeçalho e uma linha de dados (representação em pares **coluna → valor**): | **Cabeçalho** | **Valor** | |---|---| | `#` | `1` | | `Cedente` | `INDUSTRIA MODELO DE SINALIZACAO LTDA` | | `CNPJ Cedente` | `12.345.678/0001-90` | | `Sacado` | `COMERCIO SILVA E SOUZA LTDA` | | `CNPJ Sacado` | `98.765.432/0001-10` | | `CEP Sacado` | `01310-100` | | `NF` | `10459` | | `Emissão` | `25/05/2026` | | `Desembolso` | `26/06/2026` | | `Vencimento` | `20/07/2026` | | `Baixa` | *(vazio)* | | `Valor Face` | `1.333,34` | | `Valor Desembolsado` | `1.298,36` | | `Deságio` | `34,98` | | `Dias Corr.` | `24` | | `Taxa a.m.` | `0,0315` | | `Status` | `Liquidado` | | `Mês Desemb.` | `2026-06` | | `Mês Venc.` | `2026-07` | | `Semana Venc.` | `2026-07-S3` | | `Mês Baixa` | *(vazio)* | | `Espécie` | `DM` | E o rodapé do arquivo, que encerra a leitura: | **Cabeçalho** | **Valor** | |---|---| | `Baixa` | `TOTAL` | | `Valor Face` | `180.096,78` | | `Valor Desembolsado` | `166.522,27` | | `Deságio` | `13.574,51` |