# 2. Validação XML DI
![Softensistemas Logo](https://www.softensistemas.com.br/assets/img/logo.webp) **Projeto/Sistema:** Função importar DI XML - GA**Versão do *Template:*** 1.1
**Processo:** Importando dados XML DI no GA**Versão do Documento:** 1.0
**Responsável(eis):** Gustavo Fernandes**Data:** 02/10/2024
##### **1. Introdução** **Este processo visa exemplificar como deve ser validado os dados do XML DI para o sistema GA.** ##### **2. Processo validação dados XML DI** [![image-1727881255428.png](https://docs.softensistemas.com.br/uploads/images/gallery/2024-10/scaled-1680-/image-1727881255428.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2024-10/image-1727881255428.png) I - Fluxograma Exemplo
**Processo** **Envolvidos** **Dados de entrada** **Dados de Saída**
Importando dados XML DI para BD XML DI e Sistema Verificação das TAG XML (Se é um arquivo válido) Retorna se é válido ou não arquivo.
Arquivo inválido XML DI e Sistema Validando arquivo Retorna mensagem de erro da tela
Arquivo validado XML DI e Sistema Validando arquivo Alimentar tabelas do BD referente a NFe
#### **Processos Relacionados** - - - - - - [Protótipo de tela para importar DI](https://docs.softensistemas.com.br/books/importar-xml-di-ga/page/1-prototipo-de-tela-para-importar-di "Protótipo de tela para importar DI") #### **Especificação Funcional** - - - - - - #### **PROC002 VERIFICAÇÃO DAS TAG XML:** Este procedimento tem por objetivo demonstrar como será a validação XML DI. Segundo as regras de validação: [Documentação de Referência do Siscomex DI](https://www.gov.br/receitafederal/pt-br/assuntos/aduana-e-comercio-exterior/manuais/despacho-de-importacao/sistemas/siscomex-importacao-web/declaracao-de-importacao/funcionalidades/links-para-arquivos "Documentação de Referência do Siscomex DI") ##### ***Protótipo de Tela:*** [![image-1727886557322.png](https://docs.softensistemas.com.br/uploads/images/gallery/2024-10/scaled-1680-/image-1727886557322.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2024-10/image-1727886557322.png) I - Tela XML DI - retorno XML válido [![image-1727887618074.png](https://docs.softensistemas.com.br/uploads/images/gallery/2024-10/scaled-1680-/image-1727887618074.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2024-10/image-1727887618074.png) II - Tela XML DI - retorno XML inválido ##### ***Regras de Interface:*** **1.** Seguir as mesmas regras já determinadas no GA para importação de XML, contudo, validar se o SCHEMA XML esta válido. **1.2** Se estiver válido, seguir rotina normal de importação XML. **1.3** Se estiver inválido, mostrar na tela a FALHA NO SECHEMA XML, se possível retornar qual TAG esta com erro. ##### ***Regras de Negócio:*** **1.** Ao importar o XML DI deverá ser validado se esta no padrão correto, com as informações obrigatório. [ARQUIVO DI.XML](https://docs.softensistemas.com.br/attachments/9) (modelo) **1.2** Se estiver válido, seguir rotina normal de importação XML. **1.3** Se estiver inválido, parar importação. **2.** Após validar arquivo, alimentar as tabelas do banco de dados de TAG XML para campo respecitvo. ##### ***Questões Técnicas:*** **1.** Alimentar os dados referente a NFe temporária, conforme a tela: [![image-1727889809130.png](https://docs.softensistemas.com.br/uploads/images/gallery/2024-10/scaled-1680-/image-1727889809130.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2024-10/image-1727889809130.png) **1.2 ESPEFICAÇÃO DOS CAMPOS**
**TAG DO XML****CAMPO DO SISTEMA****VALOR DO CAMPO****OBS**
-**Chave de acesso** **NFe35241007587...**Seguir mesmo processo padrão importação XML, gerando a chave de acesso automático!
-**Número** **24**Seguir numeração sequência do sistema, por padrão. (Explicação a baixo)
-**Valor** **124.917,95**Cálculos no código para chegar no valor total do item, para calcular e chegar no vl.Total da NFe
-**Remetente** **NF-E EMITIDA EM AMBIENTE...**Seguir padrão do sistema
<fornecedorNome>**Destinatário** **GENUINE AUTOPARTS LTD**Nome fornecedor do XML
<descricaoMercadoria>**Descrição** **6PK986 - CORREIA POLY V...**Descrição item do XML
<unidadeMedida>**Unid.** **PC**Descrição und do XML
<quantidade>**Quant.** **5,00**Quant do XML
<valorUnitario>**VL.Unitário** **15,34**Cálculos no código para chegar no vl.unitário, explicação a baixo.
-**Vl. Total** **76,70**Cálculos no código para chegar no vl.Total, explicação a baixo.
**1.3** Como chegar no vl.unitário/vl.total do item, exemplo do que é feito no SIEM: [![image-1728052036050.png](https://docs.softensistemas.com.br/uploads/images/gallery/2024-10/scaled-1680-/image-1728052036050.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2024-10/image-1728052036050.png) [![image-1728052043221.png](https://docs.softensistemas.com.br/uploads/images/gallery/2024-10/scaled-1680-/image-1728052043221.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2024-10/image-1728052043221.png) ```C# vUni = Div7(lerXml.Value); ``` A função `Div7` é chamada, e ela recebe um valor vindo do XML (`lerXml.Value`). A função `Div7` recebe uma string (`QtdOrig`), que será convertida para decimal e dividida por 10.000.000: ```C# private decimal Div7(string QtdOrig) { decimal QtdNova = (Convert.ToDecimal(QtdOrig) / 10000000); return QtdNova; } ``` O objetivo dessa divisão por 10.000.000 é ajustar o valor bruto vindo do XML para um valor mais preciso e utilizável. (provavelmente o valor está em uma unidade diferente e precisa ser ajustado). **1.4** Cálculo do valor total (vTotal): - Após calcular o valor unitário ajustado (`vUni`), o código calcula o valor total do produto ```C# vTotal = (Qtd * vUni) + vTotal; ``` Aqui, ele multiplica a quantidade (`Qtd`) pelo valor unitário (`vUni`) e soma ao valor total já existente. - **Condição de BCP:** - Se o valor de `bcP` for igual a zero, ele recalcula o valor de `bcP` como `vUni * Qtd`. - **Adição do produto à lista:** - Por fim, o produto com todos os atributos e cálculos é adicionado à lista `ListProdutos`.

**OBS IMPORTANTE: No momento este cálculo para chegar no vl.unitário foi o mais perto que chegamos, ainda estamos analisando o código do SIEM e documentações online**

©SOFTEN SISTEMAS 2024