Utilização do recursos Exportar no ERPx/ERP Nossas soluções disponibilizam recursos nativos que podem otimizar entregas relacionadas a exportação de dados via arquivos sem a necessidade de customizações ou desenvolvimentos. O Recurso está disponivel em Configuração > Exportar conforme ilustrado na imagem abaixo: As respectivas telas seguem um padrão ao acessar: No cabeçalho disponibilizamos os filtros necessários para listar registros na grade, e no rodapé você informa o layout a ser utilizado, onde finalmente clicamos no botão Exportar para gerar os registros. E como configuramos os layouts de exportação? Está disponivel em Configuração > Layout de arquivos conforme ilustrado na imagem abaixo, pois este recurso não é utilizado somente para operações de remessa e retorno bancário. Na tela da consulta de layouts de arquivos, você pode cadastrar, editar ou inativar um layout, e na mesma tela você clica com o direito e tem opções para exportação ou importação dos layouts, bem como a configuração do mesmo: Qual a diferença entre Exportar/Importar PEX das demais? O "Exportar" e "Importar" é referente ao Registro/Configuração do layout em sua totalidade, já o "Exporta PEX...' e "Importar PEX ..." só exporta ou importa os dados das funções que tem configuradas dentro do layout. Como sugestão para evitar qualquer problema, Utilize o Exportar e/ou Importar. Abaixo detalhamos como funciona a configuração do Layout de arquivos quando cadastra/edita: Aba Dados principais: Descrição: Nome do arquivo do layout Tipo de arquivo: São os repositórios de dados, ou seja onde o sistema vai buscar informações para estruturação na aba 'Configuração do layout' Diretório: Local onde será salvo o arquivo. Nome Arquivo: Nome do arquivo a ser gerado! Existem alguns parametros(Mascara) que podemos utilizar na estrutura do nome do arquivo para formatar data, hora e/ou alguma outra informação para importação no sistema do terceiro. | Mascara | O que vira | | DD | dia atual com 2 dígitos | | MM | mês atual com 2 dígitos | | YYYY | ano atual com 4 dígitos | | YY | ano atual com 2 dígitos | | HH | hora atual | | NN | minuto atual | | # | código de mês Sicredi: jan-set = 1 .. 9 , out = O , nov = N , dez = D | | @ , @@ , @@@ ... | sequencial da remessa, com zeros à esquerda conforme a quantidade de @ | | SSS | sequencial diário, quando “Controla sequência dia” está ativo | | SS | sequencial diário com 2 dígitos, mas só no fluxo de remessa de pagamento | | CCCC ou CCC | convênio, só no fluxo de remessa de pagamento | Exemplo: se o nome for REMDDMMYY@@.TXT , no dia 08/07/2026 e sequência 5 , o arquivo fica REM08072605.TXT . Sobre o exemplo @@ : ele vira o sequencial automático com 2 dígitos. Se a sequência atual for 1 , vira 01 ; se for 12 , vira 12 . Depois de gerar o arquivo é incrementado quando “Auto inc. sequência” está marcado. Prefixo: Um nome fixo 'antes' do nome Arquivo acima. Separador: Campo que vai 'separar' os dados no arquivo, se informar "|" por exemplo, entre um campo e outro vai ter este separador. Sequencia: O sequenciaarq é o sequencial do arquivo/remessa gravado no cadastro do layout. Ele serve principalmente como base para numerar remessas e, em alguns fluxos, alimentar o @ do campo nomearq . Exemplo: se sequenciaarq = 15 e nomearq = REM@@@.TXT , o nome pode sair como REM015.TXT . Nos borderôs/remessas financeiras, ele tem um papel extra: o sistema usa sequenciaarq como número-base da remessa, incrementa, grava no borderô e também atualiza o cadastro do layout para a próxima geração. Há ainda uma exceção: se a conta financeira estiver configurada com “sequencial único”, o número vem da conta financeira, não do layout. Um detalhe importante: se a opção “Incrementa sequência do nome do arquivo auto?” ( autoincsequencia ) estiver marcada, o @@ não usa diretamente sequenciaarq ; ele usa o contador salvo/consultado e depois incrementa esse contador no INI. Quebra linha: Utilizado para configurar no layout quando 'quebra linha', a opção #13 volta o cursor para o começo da linha, e o #10 avança para a próxima linha, o padrão é #13#10 para quebrar linha e voltar para o primeiro caracter. Incrementa sequencial do nome do arquivo: Utilizado normalmente para layout de remessa bancária,e esta descrito no ultimo paragrafo do tópico sequencial acima. Controlar sequencial de arquivo por dia: Também utilizado para controle de sequencial de remessa bancária, neste caso diario(Zera contador sequencial a cada dia) e tem um parametro abaixo relacionado ao Sicredi. Aba configuração: Nesta aba você configura a estrutura do seu arquivo conforme a quantidade de 'linhas' esperadas, seja para exportação quanto importação(no caso retorno de cobrança e pagamentos). Cabeçalho, Cabeçalho2: Carrega os dados configurados no Tipo arquivo da aba 'Dados principais'. Detalhe, SubDetalhe1, SubDetalhe2: Você configura a fonte de dados 'por recurso. Rodapé 2, Rodapé: Carrega os dados configurados no Tipo arquivo da aba 'Dados principais'. Quantidade de linhas do retorno: Utilizado SOMENTE no retorno bancário! E ao clicar com botão direito sobre o layout - Configurar Layout, o sistema abre a tela de configuração baseada nos parametros definidos inicialmente quando você cadastrou: O Tipo vai abrir as opções de configuração do layout conforme aba configuração quando realizou o cadastro. Botão Filtro: É um recurso que você pode customizar para filtrar alguma informação ao utilizar o layout na exportação. Se a função retornar: True: a linha/registro é gerada normalmente. False: o registro atual é cancelado e aquela linha não entra no arquivo. Então ele serve para regras do tipo: “só gerar detalhe se tal campo tiver valor”, “não gerar rodapé em certa condição”, “pular registros de determinado cliente/item/título”, etc. Na grade abaixo do tipo, existem os campos que você selecionar e utilizar os botões no rodapé para incluir na grade a direita onde serão dispostos no arquivo. Botão > é para inserir o registro na grade a direita Botão S é para substituir um campo inserido na grade Botão F é para inserir um texto Fixo Botão A é um contador de auto incremento Ao inserir o item na grade a direita, você pode 'digitar qualquer texto' na coluna campo todavia se não for um texto 'Fixo' ou 'Func' o sistema automaticamente vai carregar o respectivo dado que você selecionou na grade a esquerda Tamanho: É o tamanho do campo que automaticamente preencher as colunas Ini e Fim. Mascara: É a mascara utilizada no campo, normalmente para preencher o restante do campo (ex: Preencher com 0) Valor fixo: Quando você habilitar a coluna Fixo Desp: O campo desprezar da grid (Desp.) define qual lado do valor será descartado quando o conteúdo ficar maior que o tamanho (tamanho) configurado para aquele item, exemplo com tamanho = 5 e valor 123456789: desprezar = E -> 56789 desprezar = D -> 12345 Fixo: Ao habilitar o sistema respeita a coluna valor fixo descrito anteriormente. Soma: Faz a soma do respectivo campo. Conta: Faz a contagemd o respectivo campo. Func: Ao clicar o sistema abre a função PEX para você customizar o que desejar. (Necessário conhecimento basico em programação PEX). Importante! Se você acessar a função e não digitar nada, ao clicar em OK o sistema não marca como habilitado. Então quando você 'desmarca' a função que tinha um código e depois vai ali, clica (que abre a tela) e só clica em OK, vais observar que a função não fica 'habilitada', para isso terás que mexer em algo dentro da função, nem que seja para colocar um espaço ai o sistema entende que houve manipulação na tela e habilita a função. Na função PEX quando você manipula e/ou faz alguma ação sobre o 'asValor' (Ex: Result := asValor;), o sistema automaticamente já faz algumas tratativas e formatações do campo, por isso algumas funções abaixo estamos buscando o campo na sua forma original ( ex: adDataSet.GetStr('iditem')); Abaixo detalhamos algumas funções e suas respectivas caracteristicas para usar conforme necessário, lembrando que ao abrir a função no cabecalho da tela tem três botões e ao clicar no ultimo botão tem diversos recursos com modelos de códigos pré definidos, o que ajuda e otimizar seu trabalho: Alinhar a esquerda um determinado campo, tamanho 10 e preeenhendo com '.' os campos vazios (Você cola o código abaixo entre o begin e o End; da função): Result := TSTR.AlinhaEsq(adDataSet.GetStr('iditem'), 10, '.'); Tira acentos e formata texto em MAIUSCULO (Você cola o código abaixo entre o begin e o End; da função): Result := TSTR.TiraAcentos(UpperCase(asValor)); Durante a hora do aprender, tentamos alinhar a direita o conteudo acima e não foi possivel, isso era porque estavamos utilizando 'asValor', abaixo um exemplo buscando o campo original e fazendo o devido tratamento (Primeiro alinhamos a esquerda e depois realizamos os respectivos tratamentos): Result := TSTR.AlinhaEsq(adDataSet.GetStr('descricao'), 80, '.'); Result := TSTR.TiraAcentos(UpperCase(Result)); Verificar no cadastro da UN vinculada ao item está habilitado para 'Fracionar na venda', caso sim seta 'P' ( Peso) senao 'U'(Unidade), esta função é normalmente utilizada em exportação de itens para balança. (Você cola o código abaixo na função depois de retirar o begin e o End; da função pois eles já estão dentro do código): var loCDS: TlibCDS; begin loCDS := nil; try loCDS := of_CriaCDSporSQL(Format('select fracionarvenda from unidade where idunidade = (select idunidadebasica from item where iditem = %0:d)', [adDataSet.GetInt(['IDITEM'])])); if loCDS.GetBol('fracionarvenda') then Result := 'P' else Result := 'U'; finally loCDS.Free; end; end; Pronto! Agora você pode acessar a respectiva tela e informar o layout de exportação para gerar o arquivo conforme filtros utilizados: Agora vamos praticar: Nosso cliente adquiriu uma balança Todelo e precisa exportar os itens que tiveram alteração de preços no periodo, o nome do arquivo é TOLEDO.TXT e deve ser salva na pasta C:\temp onde o sistema da balança vai buscar este arquivo. O layout deve ser da seguinte forma: Codigo do item - Tamanho 10 - Alinhado a Esquerda - Preenche com Zeros Descrição - Tamanho 80 - Alinhado a Esquerda Preço de venda - tamanho 12 - Alinhado a direita - Preenche com Zeros