O ERPFlex permite a criação de formulários personalizados para documentação de diversos processos da empresa, como orçamento, ordem de serviço, ordem de produção, entre outros.
Todas as telas que possuem o botão – Imprime em Word podem receber formulários personalizados, utilizando a integração do ERPFlex com o Word, através do uso de variáveis.
Observe o exemplo abaixo.
Os modelo de formulários utilizados pelo ERPFlex devem ser gravados no padrão RTF (Formato Rich Text), para que a substituição das variáveis seja possível.
Tipos de Variáveis
Existem dois tipos de variáveis que podem ser utilizadas nos formulários:
- Variáveis de cabeçalho – <Nome do Campo>
Este tipo de variável retorna apenas um valor, exemplo <CLI_NOME>. Para entender melhor seu funcionamento, é preciso analisar os modelos de telas e as tabelas que o ERPFlex utiliza. Como exemplo observe a estrutura da tela de orçamentos:
- Varíáveis de lista XML – <LISTA_ITENS_tela_XML>
Este tipo de variável retorna uma lista com os dados dos itens vinculados ao cabeçalho. Observe:
Variáveis Disponíveis
O ERPFlex disponibiliza lista atualizada das variáveis de cada tela, por meio da criação de um documento RTF com a variável <VARIAVEIS>.
É possível também listar os campos que podem ser usados dentro de uma lista XML, criando um documento com a variável <LISTA_ITENS_tela_XML_VARIAVEIS>.
Verificando as variáveis disponíveis:
- No Word, crie um novo documento e digite:
<VARIAVEIS> - Utilize a opção Salvar Como e selecione o tipo Formato Rich Text (.RTF).
O arquivo deve assumir a extensão .rtf. - Na tela de Orçamentos, cique no botão – Imprime o Orçamento selecionado em Word.
- Na tela apresentada, clique no botão Novo Modelo.
- Na tela de Upload apresentada, clique em Selecionar Arquivo e localize em seu computador, o arquivo com modelo RTF.
- Confirme o envio para o servidor.
- A tela com os modelos RTF será reapresentada, agora listando o seu arquivo RTF.
- Clique sobre o nome do modelo e no botão – Imprimir este orçamento.
O documento com a lista de variáveis disponíveis será gerado e aberto no Word.
Nas primeiras páginas, são apresentadas as variáveis de cabeçalho e, à frente delas, o dado a ser impresso, de forma que você pode conferir se é a informação que precisa para compor ser formulário.
Nas últimas páginas, são listadas as variáveis de lista XML que estão disponíveis na tela. Observe:
Verificando os campos que podem ser usados dentro da LISTA XML do orçamento:
- No Word, crie um novo documento e digite:
<LISTA_ITENS_ORC_XML_VARIAVEIS> - Utilize a opção Salvar Como e selecione o tipo Formato Rich Text (.RTF).
- Repita os procedimentos descritos no passo a passo anterior.
Abra, no WordPad, o documento com a lista das variaveis disponíveis, copie a variável que deseja e use a função Colar Especial – Texto Unicode sem Formatação – para colá-la no seu formulário no Word. Dessa forma, os dados substituidos não sofrem interferência de caracteres especiais.
Estruturas possíveis para lista XML
- Um campo em cada lista XML – esta estrutura permite usar linhas separando as colunas:
Coluna 1 | Coluna 2 | Coluna 3 |
<LISTA_ITENS_tela_XML>
<Nome do Campo /> </LISTA_ITENS_tela_XML> |
<LISTA_ITENS_tela_XML>
<Nome do Campo /> </LISTA_ITENS_tela_XML> |
<LISTA_ITENS_tela_XML>
<Nome do Campo /> </LISTA_ITENS_tela_XML> |
- Vários campos em uma única lista – esta estrutura facilita o alinhamento colunar, o seu uso é indicado quando o dado a ser impresso for muito grande. Deve ser usada com uma fonte de letra monoespaçada. Exemplo: Courier New.
Coluna 1 | Coluna 2 | Coluna 3 |
<LISTA_ITENS_tela_XML>
<Nome do Campo largura=”xx”/> <Nome do Campo largura=”xx”/> <Nome do Campo largura=”xx”/> </LISTA_ITENS_tela_XML> |
Claúsulas para campos da lista XML
Para formatar os valores impressos pela LISTA XML, utilize as seguintes claúsulas:
Cláusula | O que faz |
valor = “1” | Indica que aquela coluna deverá ser tratada como valor, ou seja, formatará o campo para o tipo de valor, com a quantidade de casas decimais conforme definido no parâmetro Número de Casas Decimais nos Preços Unitários (Parâmetros> Config. Gerais).: Ex.: de 1000 para 1.000,00. |
quantidade = “1” | Apresenta o dado formatado com número de casas decimais de quantidade, conforme definido no parâmetro Número de Casas Decimais nas Quantidades (Parâmetros> Config. Gerais). |
numerico = “1” | Indica que a coluna deverá alinhar o texto à direita; |
direita = ”expressão” | Apresenta a expressão indicada entre aspas à direita do dado. |
esquerda = “expressão” | Apresenta a expressão indicada entre aspas à esquerda do dado. |
largura = “xx” | Delimita o espaço para impressão da coluna.
Usada especialmente na estrutura de lista única. |
Inicio =”xx” | Quando o dado é grande, pode ser “quebrado” em duas ou mais linhas. Essa cláusula determina a coluna onde deve ser iniciada a impressão da segunda linha.
Usada especialmente na estrutura de lista única. |
somenteItens=”n,n,n” | Considera a posição do item na lista. Ou seja, se você quer, por exemplo, que apareça somente os dados da terceira linha do seu XML, adicione a cláusula somenteItens=”3″ a qualquer variável do seu XML. |
hiperlink=”1” | Apresenta o conteúdo do campo como hiperlink. Exemplo:
<LISTA_XML> <SB1_Campo1 hiperlink=”1”/> </LISTA_XML> |
hiperlinkLabel=”expressão”> | Apresenta a expressão como texto para o hiperlink. Exemplo:
<LISTA_XML> <SB1_Campo1 hiperlink=”1” hiperlinkLabel=”Clique Aqui”/> </LISTA_XML> |
Cláusulas para estrutura XML de lista única
Cláusula | O que faz | Exemplos |
ordenar = “1” | Considera o campo associado como chave para ordenação ascendente da lista. | <XML_EXEMPLO>
<SB1_Desc/> <DescCategoria ordenar=”1″ /> </XML_EXEMPLO> |
somenteSeMaiorQue=”n” | Apresenta somente os itens cujo campo associado seja maior que o definido. | <XML_EXEMPLO>
<SB1_Desc/> <SB2_Peso somenteSeMaiorQue=”500″ /> </XML_EXEMPLO> |
somenteSeMenorQue=”n” | Apresenta somente os itens cujo campo associado seja menor que o definido nessa cláusula. | |
somenteSeIgualA=”expressão” | Apresenta somente os itens cujo campo associado seja igual que o definido nessa cláusula.
|
<XML_EXEMPLO>
<DescSubCategoria somenteSeIgualA=”Camisetas”/> <SB1_Desc/> </XML_EXEMPLO> |
somenteSeDiferenteDe=”expressão” | Apresenta somente os itens cujo campo associado seja diferente do definido nessa cláusula.
|
<XML_EXEMPLO>
<DescSubCategoria somenteSeDiferenteDe=”Camisetas”/> </XML_EXEMPLO> |
Agrupamento de dados com xml_profile
Para imprimir os dados de forma agrupada, é preciso criar um rótulo (álias) para identificação de cada bloco de informação, utilizando a cláusula xml_profile alias=’expressão’, e estabelecer uma condição de filtro com cláusulas condicionais.
O álias pode ser usado em qualquer lista XML que desejar utilizar a mesma condição de filtro.
Exemplos:
Serviço | Valor |
<LISTA_ITENS_ORC_XML>
<xml_profile alias=’Servico’/> <SB1_AtuEst somenteSeDiferenteDe=’P’/> <SB1_Desc largura=”40″/> <SC6_ValItem largura=”10″ valor=”1″/> </LISTA_ITENS_ORC_XML> |
Produto | Qtd | Valor |
<LISTA_ITENS_ORC_XML>
<xml_profile alias=’Produto’ /> <SB1_AtuEst somenteSeDiferenteDe=’S’/> <SB1_Desc largura=”85″/> </LISTA_ITENS_ORC_XML> |
<LISTA_ITENS_ORC_XML>
<xml_profile alias=’Produto’ /> <SC6_Quant largura=”10″ quantidade=”1″/> </LISTA_ITENS_ORC_XML> |
<LISTA_ITENS_ORC_XML>
<xml_profile alias=’Produto’ /> <SC6_ValItem largura=”10″ valor=”1″/> </LISTA_ITENS_ORC_XML> |
Função Totalizadora
Qualquer campo processado dentro de uma lista XML pode ser totalizado, basta usar o nome do campo como tag adicionando o sufixo “_TOTAL_RTF”.
Isto é, se for necessário o total de uma determinada variável, por exemplo, SC6_Quant, é só adicionar em qualquer parte do RTF a seguinte tag: <SC6_Quant _TOTAL_RTF>
Formatação das tags totalizadoras
Para formatar as tags totalizadoras, utilize:
- formato como quantidade: <{nome_do_campo}_TOTAL_FORMATO_QUANTIDADE_RTF>;
- formato como valor: <{nome_do_campo}_TOTAL_FORMATO_VALOR_RTF>;
Exemplo: <SC4_VALTOTAL_TOTAL_FORMATO_VALOR_RTF>
Operações Aritméticas
Podemos também, multiplicar, dividir, somar e subtrair 2 variáveis nos totais.
Exemplos:
- Multiplicar: <SB2_Peso_*_SC4_Quant_TOTAL_RTF>;
- Dividir: <SB2_Peso_/_SC4_Quant_TOTAL_RTF>;
- Somar: <SB2_Peso_+_SC4_Quant_TOTAL_RTF>;
- Subtrair: <SC6_ValItem_-_SC6_ValDesconto_TOTAL_FORMATO_QUANTIDADE_RTF>.
Contador de Linha
Podemos incluir o número referente à posição da linha em que o item está impresso. A variável para isso é <CONTADOR />.
Exemplo:
<LISTA_ITENS_ORC_XML>
<CONTADOR />
<SB1_Desc largura=”40″/>
<SC6_ValItem largura=”10″ valor=”1″/>
</LISTA_ITENS_ORC_XML>
Blocos de Repetição
Para repetir a impressão de um conjunto de dados, é necessário:
- Rotular o bloco de dados: <bloco_nome_INICIO> e <bloco_nome_FIM>
- Especificar o número de repetições:
<REPETIDORES>
<REPETIDOR alias=”bloco_nome” repetir=”variável numérica” /></REPETIDORES>
<REPETIDOR alias=”bloco_nome” repetir=”variável numérica” />
Esta estrutura é útil, por exemplo, para imprimir identificações nos volumes da nota fiscal.
Exemplo:
Podemos ter mais de um repetidor no formulário desde que tenha aliases diferentes, observando que eles serão executados em ordem alfabética. O alias é livre, mas é recomendável não usar caracteres especiais, espaços ou apenas números.
Exemplo:
<REPETIDORES>
<REPETIDOR alias=’bloco 1” repetir=’3′ />
<REPETIDOR alias=’bloco 2′ repetir='<SC4_Quant_TOTAL_RTF>’ />
</REPETIDORES>
Note que o “bloco 1” irá repetir 3 vezes e o “bloco 2” será repetido de forma dinâmica baseado na variável <SC4_Quant_TOTAL_RTF>.
Temos ainda duas variáveis a serem utilizadas dentro do bloco a ser repetido, que indicam a sequencia da repetição e o número total de repetições. São elas:
- <{nome_do_marcador}_ATUAL>;
- <{nome_do_marcador}_TOTAL>.
Exemplo:
<Bloco1_INICIO>
<Bloco1_ATUAL> de <Bloco1_TOTAL>
<Bloco1_FIM>
ESCOPO RTF – Meu Modelo RTF está muito lento, o que fazer?
Com o aumento do tamanho do RTF, o servidor encontra mais dificuldade para processar as variáveis, sendo obrigado a “varrer” o RTF inteiro procurando cada uma
A inclusão de imagens dentro de RTF é algo que provoca lentidão no processamento, pois o RTF não consegue comprimir ou utilizar imagens, criando em um si uma espécie de mapa de bits em texto. Quanto maior a imagem, maior é o RTF e mais texto que o servidor irá processar.
Para minimizar essa barreira de processamento e “ajudar” o servidor, foi criada a variável de Escopo RTF, que nada mais é que um bloco onde você diz de onde até onde o servidor terá de processar o texto.
Para utilizá-lo, basta escrever no antes de todas as suas variáveis <RTF_ESCOPO_INICIO> e depois de todas as variáveis <RTF_ESCOPO_FIM>. As tags não apareçerão na impressão final, mas ajudará o servidor a economizar processamento.
Exemplo:
<RTF_ESCOPO_INICIO>
A partir daqui começam as minhas variáveis!
<Minha_Variavel_1>
<Minha_Variavel_2>
<Minha_Variavel_3>
<Minha_Variavel_4>
<RTF_ESCOPO_FIM>
Exemplo: Montagem do Modelo
Resultado
Da mesma forma, pode-se imprimir um Contrato, Ordem de Serviço, Ordem de Produção e Pedido de Compra. Essa opção permite que se façam formulários customizáveis de alta qualidade.