Introdução

Há duas formas de personalizar os templates.

  1. Adicionar um template com base em um template existente.
  2. Injetar um subtemplate em tempo de execução nos templates existentes.

A forma a ser escolhida dependerá da sua necessidade.

Eis um comparativo:

AfirmaçãoAdicionar templateInjetar subtemplate
Permite adicionar dados dinamicamente à renderizaçãonãosim, os dados podem ser adicionados pelo plugin por meio dos subcontextos.
Requer manutenção quando novas versões do POS são liberadas.sim, pois tudo que for criado ou modificado nos templates originais (que serviram de base) deverá ser replicado nos templates adicionadosdepende, apenas se o subtemplate utiliza informações do contexto e estas sofreram alterações.
Permite controle total da aparência final da impressãosim, pode-se modificar a ordem, aparência e o código de exibição.não
Permite adicionar a mesma informação em mais de um templatenãosim, pode-se adicionar, por exemplo, o mesmo rodapé ou cabeçalho a diversos templates.
Requer a criação de um Pluginnãosim
Suporte a templates gráficossim, criando-se 2 versões diferentes do template.sim, criando 2 subtemplates diferentes
Adicionar templates

Crie seus templates utilizando nossa aplicação Templates, disponível no Launcher.

Note que, para que seus templates sejam encontrados no ambiente do usuário, deverão residir em uma pasta templates, dentro do caminho de sua extensão, saiba mais em distribuição.

Injetar subtemplates

É possível injetar subtemplates ao templates existentes, sem necessidade de modificar os templates originais. Essa inclusão ocorre de forma dinâmica e deve ser feita por um Plugin.

O plugin deve monitorar o evento de impressão AoIniciarImpressao retornando os dados dos subtemplates injetados.

Quando existem versões texto e gráfica dos templates é necessário que sejam confeccionados 2 subtemplates: um texto, com extensão .template, e outro gráfico, com extensão .templatex.

Primeiramente, crie seus subtemplates utilizando nossa aplicação Templates, disponível no Launcher.

Para conseguir visualizar como ficará o template com seu subtemplate injetado, você poderá adicionar as mesmas informações devolvidas no evento de AoIniciarImpressão contexto de renderização da nossa aplicação de Templates.

Exemplo de injeção

Se um plugin trata o evento de AoIniciarImpressao e nas seguintes condições:

  • impressao_pasta = "pedido de entrega" e;
  • modo_grafico = "true"

É retornado:

"subtemplates": {
  "rodape": [
    "plugins\\d-dashboard\\templates\\rastreamento.templatex"
  ]
},
"subcontextos": {
  "IFood": {
    "rastreamento_id": "123456789"
  }
}

O conteúdo de rastreamento.templatex é:

<center><t3>Rastreio IFood</t3></center>
<center><qr>{{subcontextos.IFood.rastreamento_id}}</qr></center>
<center><b>{{('Código: ' + subcontextos.IFood.rastreamento_id)}}</b></center>
O entregador do IFood deve ler o QRCode ou digitar o código acima para iniciar o rastreio.

Com isso, o resultado da final da injeção do subtemplate pode ser visto na área destacada abaixo:

Distribuição

Lembre-se que seus templates ou subtemplates devem ser instalados em um subdiretório de sua extensão, por exemplo:

C:\NCR Solution\plugins\MinhaExtensao\templates

Para que sua extensão distribua os arquivos no destino correto, basta colocar todos os arquivos de seus templates sob a pasta templates de seu projeto, previamente criado utilizando o SDK.

A seguinte cláusula no arquivo extensao_cliente.iss empacotará esses arquivos e os instalará na pasta de destino correta. O SDK adiciona esta cláusula automaticamente quando gera o arquivo de programação da instalação extensao_cliente.iss

Source: templates\*; DestDir: "{app}\plugins\{#ExtensionName}\templates"; Flags: skipifsourcedoesntexist ignoreversion recursesubdirs restartreplace overwritereadonly
  • Sem rótulos