Smart Component Execucao/Geracao Arquivo XML Tabela Precos
Arquivo XML de tabela de preços
Smart Component de execução que gera um XML com produtos, estoque e preços por UF. Opcionalmente, envia o arquivo a um servidor FTP.
Para que serve
Este recurso prepara um arquivo para integração com a Cossuiponte. Ele reúne os produtos das tabelas de preço selecionadas, calcula o estoque nos centros informados e determina o preço de venda para cada UF ativa dessas tabelas. O arquivo é salvo no servidor do ERP e pode ser enviado por FTP na mesma execução.
O arquivo gerado também fica disponível como resultado da tarefa para download, conforme o fluxo de Executar Smart Component.
Antes de executar
- Tenha as tabelas de preço base com produtos ativos e as UFs de destino habilitadas.
- Confira a empresa, a natureza de operação e as configurações fiscais usadas no cálculo dos preços.
- Selecione os centros de estoque cujos saldos devem compor o arquivo.
- Defina uma pasta no servidor do ERP em que a aplicação tenha permissão de escrita. O caminho não se refere ao computador de quem está usando a tela.
- Para envio por FTP, confirme endereço, usuário, senha e acesso do servidor do ERP ao destino.
É recomendável fazer a primeira geração como arquivo completo e conferir o XML antes de disponibilizá-lo ao sistema de destino.
Parâmetros
Os nomes amigáveis dos campos podem variar conforme o cadastro do Smart Component. As chaves abaixo identificam exatamente os dados que o componente lê.
| Chave | O que informar | Obrigatório |
|---|---|---|
P_IDS_TABELA_PRECO |
Uma ou mais tabelas de preço base cujos produtos e UFs serão considerados. | Sim |
P_ID_EMPRESA |
Empresa usada para consultar estoque e calcular o preço fiscal. | Sim |
P_ID_NATUREZA_OPERACAO |
Natureza de operação usada na simulação do preço de venda. | Sim |
P_IDS_CENTRO_ESTOQUE |
Um ou mais centros de estoque cujos saldos serão somados. | Sim |
P_CAMINHO_ARQUIVO |
Pasta no servidor do ERP onde o XML será gravado. | Sim |
P_GERAR_ARQUIVO_COMPLETO |
1 = incluir todos os produtos ativos das tabelas; 0 = usar a seleção incremental. Se não informado, o componente não trata a execução como completa. |
Não |
P_TIPO_GERACAO_ARQUIVO |
0 = somente gerar o arquivo; 1 = gerar e enviar por FTP. |
Sim |
P_CAMINHO_FTP |
Endereço do servidor FTP. Necessário quando P_TIPO_GERACAO_ARQUIVO é 1. |
Condicional |
P_LOGIN_FTP |
Usuário do FTP. Necessário quando há envio por FTP. | Condicional |
P_SENHA_FTP |
Senha do FTP. Necessária quando há envio por FTP. | Condicional |
O componente exige que as listas de tabelas e centros sejam preenchidas. Quando o envio por FTP está desligado, os três campos de FTP não são exigidos.
Como os produtos entram no arquivo
Na geração completa, o componente seleciona todos os vínculos ativos das tabelas cujo produto também está ativo. Na geração incremental, seleciona vínculos atualizados após a última geração registrada e também procura produtos presentes em notas fiscais próprias, notas de terceiros e movimentos consultados desde aquela data. Quando já existe um histórico de geração, essa consulta a movimentos também ocorre no modo completo. O arquivo pode, portanto, conter um produto cujo preço cadastrado não mudou, mas que teve movimentação relevante para o estoque.
Se um produto aparecer em mais de uma tabela escolhida, ele é listado uma única vez no XML. Os preços de cada tabela e UF são adicionados a esse mesmo produto; por isso, pode haver mais de um elemento de preço para a mesma UF.
Atenção ao histórico incremental: a data de corte vem da última geração XML registrada pelo sistema, independentemente das tabelas, empresa, natureza de operação e centros escolhidos na execução atual. Se você mudar esse conjunto ou precisar reconstruir o arquivo do zero, selecione arquivo completo. Após gravar o XML e concluir a etapa de FTP, quando habilitada, o componente registra uma nova data de sincronização.
Estoque e preços
O estoque é consultado para a empresa e os centros de estoque selecionados. O XML traz o total do produto e o saldo separado por grade/cor. Quando a mesma grade aparece em mais de um centro, as quantidades são somadas.
Para cada UF ativa da tabela, o preço é calculado por meio de uma simulação fiscal de uma unidade, sem desconto, usando o valor de venda da tabela, a natureza de operação, a empresa, as opções fiscais e um cliente ativo localizado naquela UF. Assim, o valor do XML pode ser diferente do preço base cadastrado na tabela.
Há duas situações que exigem conferência no arquivo:
| Situação | Efeito no XML |
|---|---|
| Não existe cliente ativo para uma UF | O componente grava um preço de marcador negativo (-999999) para essa UF. Esse valor não é um preço de venda.
|
| Não foi encontrado modelo fiscal, ou houve erro no cálculo do preço | O preço daquela combinação pode não ser incluído, mesmo que o produto apareça no XML. |
Uma tarefa concluída indica que o arquivo foi gerado, mas convém verificar os preços antes de importá-lo no destino.
Como executar
- Abra Executar Smart Component no módulo de Business Intelligence e selecione o componente de arquivo XML de tabela de preços da Cossuiponte.
- Escolha um perfil, se sua instalação tiver um perfil preparado para essa integração.
- Informe as tabelas de preço, a empresa, a natureza de operação, os centros de estoque e o caminho local de gravação.
- Na primeira execução, ou após trocar os filtros, marque Gerar arquivo completo.
- Escolha Somente gerar arquivo para conferir o resultado, ou Gerar arquivo e enviar FTP para transmiti-lo. No segundo caso, preencha também os dados de FTP.
- Inicie a execução e acompanhe a tarefa até a conclusão. Baixe o XML e confira produtos, saldos, preços e UFs.
- Se o FTP estiver habilitado, confira a presença do arquivo no destino.
O nome segue o padrão tabela_base_dd-MM-aaaa HH-mm-ss.xml. No FTP, o componente envia o arquivo para a pasta /arquivo_tabela_base.
Estrutura do XML
O arquivo tem a raiz <produtos> e um elemento <produto> para cada produto selecionado. Os principais campos são:
| Elemento | Conteúdo |
|---|---|
identificador, codigoAuxiliar, nome |
Identificação e descrição do produto. |
unidadeMedida, especie, subEspecie, peso |
Informações cadastrais do produto. |
estoqueTotal |
Soma dos saldos nos centros escolhidos. |
grades/gradeProduto |
Identificador da grade, cor, nome da cor e estoqueGrade.
|
precos/preco |
UF e precoAVista calculado para a combinação.
|
Exemplo ilustrativo, com dados fictícios:
<produtos>
<produto>
<identificador>123</identificador>
<codigoAuxiliar>ABC123</codigoAuxiliar>
<nome>Produto exemplo</nome>
<unidadeMedida>UN</unidadeMedida>
<especie>Linha exemplo</especie>
<subEspecie>Categoria exemplo</subEspecie>
<peso>1,00</peso>
<estoqueTotal>8,00</estoqueTotal>
<grades>
<gradeProduto>
<idGrade>10</idGrade>
<idCor>20</idCor>
<nomeCor>Azul</nomeCor>
<estoqueGrade>8,00</estoqueGrade>
</gradeProduto>
</grades>
<precos>
<preco>
<uf>SP</uf>
<precoAVista>125,00</precoAVista>
</preco>
</precos>
</produto>
</produtos>
O XML gerado declara ISO-8859-1 no cabeçalho, mas a rotina de gravação usa UTF-8. Se o sistema de destino recusar acentos ou informar erro de codificação, peça à equipe técnica para alinhar a codificação do arquivo e do cabeçalho antes da importação.
Integração por API
Outro sistema pode iniciar este Smart Component pela API de execução de Smart Components. Primeiro consulte get-parameters-id/{idSmartComponent} para obter os nomes, tipos, valores e formato dos parâmetros cadastrados na sua instalação. Em seguida, envie os valores no objeto params para execute-smart-component-id/{idSmartComponent}.
Exemplo com uma tabela e um centro de estoque, usando IDs fictícios:
{
"input": null,
"params": {
"P_IDS_TABELA_PRECO": "123",
"P_ID_EMPRESA": "1",
"P_ID_NATUREZA_OPERACAO": "45",
"P_IDS_CENTRO_ESTOQUE": "7",
"P_CAMINHO_ARQUIVO": "C:/integracao/cossuiponte",
"P_GERAR_ARQUIVO_COMPLETO": "1",
"P_TIPO_GERACAO_ARQUIVO": "0"
}
}
Para informar várias tabelas ou centros, confira a configuração de seleção múltipla dos parâmetros (usarCondicaoIn e classeParametro) retornada por get-parameters-id e valide o formato no ambiente da sua instalação. Se P_TIPO_GERACAO_ARQUIVO for 1, inclua também P_CAMINHO_FTP, P_LOGIN_FTP e P_SENHA_FTP.
A resposta imediata traz result.taskId. Consulte GET /auth/async-tasks/get-task/{taskId} até a conclusão e baixe o arquivo por GET /auth/async-tasks/get-task-result-resource/{taskId}. O caminho em P_CAMINHO_ARQUIVO é interpretado pelo servidor do ERP, inclusive quando a chamada é feita por outro sistema.
Solução de problemas
| Sintoma | O que verificar |
|---|---|
| O XML está vazio ou faltam produtos | Tabelas e vínculos ativos, produtos ativos, data da última geração e opção Gerar arquivo completo. |
| Falta preço para alguma UF | UF ativa na tabela, existência de cliente ativo na UF, modelo fiscal e regras de tributação. |
| Aparece um preço negativo muito alto | Não foi encontrado cliente ativo para aquela UF; o valor é um marcador. |
| Estoque não confere | Empresa e centros selecionados, saldos por grade/cor e data da consulta. |
| Não foi possível salvar o arquivo | Pasta do servidor e permissão de escrita da aplicação. |
| O arquivo não chegou ao FTP | Endereço, usuário, senha, rede e pasta /arquivo_tabela_base; confira também o arquivo salvo localmente.
|
| O destino rejeita caracteres acentuados | Divergência entre a codificação declarada no XML e a usada na gravação. |
Referência técnica: SCExecArquivoXMLTabPrecoCossuiponte.