Elaboração de formulários em RTF

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>.

icone roteiroVerificando as variáveis disponíveis:

  1. No Word, crie um novo documento e digite:
    <VARIAVEIS>
  2. Utilize a opção Salvar Como e selecione o tipo Formato Rich Text (.RTF).
    O arquivo deve assumir a extensão .rtf.
  3. Na tela de Orçamentos, cique no botão – Imprime o Orçamento selecionado em Word.
  4. Na tela apresentada, clique no botão Novo Modelo.
  5. Na tela de Upload apresentada, clique em Selecionar Arquivo e localize em seu computador, o arquivo com modelo RTF.
  6. Confirme o envio para o servidor.
  7. A tela com os modelos RTF será reapresentada, agora listando o seu arquivo RTF.
  1. Clique sobre o nome do modelo e no botão orc_var6 – 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.
    orc_var7Nas últimas páginas, são listadas as variáveis de lista XML que estão disponíveis na tela. Observe:
    orc_var8

icone roteiroVerificando os campos que podem ser usados dentro da LISTA XML do orçamento:

  1. No Word, crie um novo documento e digite:
    <LISTA_ITENS_ORC_XML_VARIAVEIS>
  2. Utilize a opção Salvar Como e selecione o tipo Formato Rich Text (.RTF).
  3. Repita os procedimentos descritos no passo a passo anterior.

icone_dicaDica:

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:

rtf_06

 

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.