Administração do sistema

Inclusão de campos customizados em ambiente de produção (block-config)

RT.FAQ-92696
É possível incluir campos adicionais nos blocos de interface através de customização. Esta customização é realizada em uma preferência especial chamada BLOCK_CONFIG contextualizada no bloco que está sendo customizado.

O nome da preferência é composta pelo nome global do bloco seguido de ".BLOCK_CONFIG" e pode ser informada no campo "Itens customizados" da interface Configurações das interfaces do sistema.
Exemplo:
PROJET.CAD_OCORRENCIAS.BLOCK_CONFIG

O conteúdo desta preferência é um JSON contendo a seguinte estrutura:
Código
{
  "items": [
      {
          "name": "PERCENTUAL_EXECUTADO",
          "before": "ATIVIDADE",
          "domain": "ADSRT.PERCENT",                      
          "label": "Executado",
          "hint": "Hint do campo",
          "width": "10",
          "expr": "10 + coalesce(ocor.tempo_executado * 100 / ocor.tempo_estimado,0)", 
          "format": "##0.0",
          "suffix":"%",
          "usages": [
              {
                  "operation": "VIEW",
                  "usage": "view"
              },
              {
                  "operation": "UPDATE",
                  "usage": "view"
              },
              {
                  "operation": "LIST",
                  "usage": "view"
              }
          ]
      }
  ]
}
Para os items, as seguintes propriedades são aceitas:

Suporte a macros de sessão

O JSON informado pode conter macros:

Exemplo

Código
{
  "items": [                                                            
      {
           "name": "ESTOQUES",
          "domain": "ADSRT.WIKI",                                  
          "label": "Estoques",                                        
          "hint": "Estoques do produto por estabelecimento e tipo de estoque.",                                  
          "expr": "(select '|Estabelecimento|Tipo de estoque|Un.|Estoque|Quant. em OC|\n' || array_to_string(array_agg('|' || nome_estabelecimento || '|' || tipo_estoque || '|' || simbolo || '|' || estoque  || '|' || lpad(coalesce(to_char(quant_oc,'9G999G990D00'), ''),15,' ') || '|'),'\n') || '\n|   |   |   | <b>' || (select lpad(to_char(sum(epx.estoque_atual),'9G999G990D00'),15,' ') from estoques_produtos epx where epx.produto_id = lkp2.id) || '</b>| <b>' || lpad(coalesce(to_char((select sum(quantidade_pendente) from itens_pedidos ip join pedidos p on p.id = ip.pedido_id join tipos_pedidos tp on tp.id = p.tipo_pedido_id where tp.categoria = 'C' and p.situacao not in ('C', 'E') and ip.produto_id = lkp2.id and ip.quantidade_pendente!=0 and ip.situacao in ('P')),'9G999G990D00'), ''),15,' ') || '</b>|' from ( select estab.nome_estabelecimento , te.tipo_estoque , un.simbolo , lpad(to_char(ep.estoque_atual,'9G999G990D00'),15,' ') as estoque, case when tipo_estoque = 'ESTOQUE' then (select sum(quantidade_pendente) from itens_pedidos ip join pedidos p on p.id = ip.pedido_id join tipos_pedidos tp on tp.id = p.tipo_pedido_id where tp.categoria = 'C'and p.situacao not in ('C', 'E') and p.estabelecimento_id = ep.estabelecimento_id and ip.produto_id = ep.produto_id and ip.quantidade_pendente!=0 and ip.situacao in ('P')) else null end as quant_oc from estoques_produtos ep join tipos_estoques te on te.id = ep.tipo_estoque_id join estabelecimentos estab on estab.id = ep.estabelecimento_id join produtos prod on prod.id = ep.produto_id left join unidades_medidas un on un.id = prod.unidade_medida_id where ep.produto_id = lkp2.id group by ep.produto_id, ep.estabelecimento_id, estab.nome_estabelecimento, te.tipo_estoque, un.simbolo, lpad(to_char(ep.estoque_atual,'9G999G990D00'),15,' ') order by estab.nome_estabelecimento, te.tipo_estoque ) q)",   
          "usages": [                                                 
              {
            
                  "operation": "VIEW",                                
                  "usage": "view"                                     
                
           }
        ]
      }
  ]
}

Ver também: