# ENG-1467 — Importação de fornecedor nas entradas do almoxarifado

## Objetivo

Ao importar uma entrada de nota fiscal do almoxarifado vinda do Senior, garantir que o fornecedor da nota exista localmente e possa ser exibido, filtrado e relacionado à entrada pelo seu código de integração.

## Escopo

- Alterar somente a sincronização de entradas de NF do almoxarifado.
- Obter, na própria consulta de entradas, o código do fornecedor, nome e CPF/CNPJ.
- Reaplicar a regra já usada pela importação de notas da portaria: localizar pelo `CODFOR`; criar quando ausente; e completar ou substituir um documento local inválido/vazio quando o ERP trouxer um documento válido.
- Preservar o `supplier_code` na integração da entrada de NF.

Não faz parte deste card alterar o cálculo de saldo, a equivalência entre produtos ou a regra de derivação.

## Desenho

1. A consulta executada por `SeniorWarehouseInputImport` passa a retornar os dados cadastrais do fornecedor associados à NF.
2. `SeniorSyncInputWarehouseJob` transforma esses campos em uma resolução de fornecedor antes de criar ou atualizar a `StockIO` de entrada.
3. A resolução busca `Supplier` pela integração `CODFOR`.
4. Se não houver fornecedor, cria um registro com descrição, documento normalizado e integração `CODFOR`.
5. Se houver fornecedor, atualiza somente o documento quando a regra compartilhada de qualidade indicar que o valor trazido pelo ERP é melhor que o armazenado.
6. A entrada e seus itens continuam sendo persistidos normalmente; a referência `supplier_code` na integração permanece a chave de associação para as telas de NF.

## Alternativas avaliadas

- Consultar uma segunda integração de pedido de compra pela chave da NF para obter o fornecedor: evita mudar a consulta de entrada, mas aumenta chamadas ao ERP e cria dependência indireta.
- Trazer os campos do fornecedor na consulta de entrada: escolhido. Evita chamadas extras e alinha a origem dos dados ao evento importado.
- Extrair agora um serviço compartilhado entre portaria e almoxarifado: desejável futuramente, mas fora do menor escopo necessário para a correção.

## Tratamento de falhas

- Documento vazio ou inválido não impede a importação; segue o comportamento existente de normalização e registro de aviso de integração.
- Falha ao consultar ou persistir o fornecedor falha a transação da linha de entrada, para não criar uma NF sem a referência esperada.
- Reprocessamentos devem reutilizar o fornecedor já integrado por `CODFOR`, sem duplicá-lo.

## Testes de aceitação

1. Uma entrada de NF com fornecedor inexistente cria fornecedor com `CODFOR`, nome e CPF/CNPJ normalizado.
2. Uma entrada com fornecedor já existente não cria duplicata.
3. Um fornecedor existente com documento vazio/inválido recebe o documento válido retornado pelo ERP.
4. A entrada, seus itens e o `supplier_code` continuam sendo persistidos após a resolução do fornecedor.
5. Documento inválido no ERP mantém a importação funcionando e registra o comportamento previsto.

## Plano de implementação

1. Atualizar a consulta/DTO de `SeniorWarehouseInputImport` para expor os campos do fornecedor.
2. Adaptar `SeniorSyncInputWarehouseJob` para resolver o fornecedor a partir desses campos, seguindo as regras da portaria.
3. Remover a dependência da consulta complementar de pedido de compra, se ela deixar de ser necessária.
4. Adicionar testes unitários de sincronização para os cinco cenários de aceitação.
5. Rodar Pest focado em `BackfillInputSeniorSyncJobTest` e nos testes de fornecedor; aplicar Pint.
