Há duas formas de personalizar os templates.
- Adicionar um template com base em um template existente.
- Injetar um subtemplate em tempo de execução nos templates existentes.
A forma a ser escolhida dependerá da sua necessidade.
Eis um comparativo:
Afirmação | Adicionar template | Injetar subtemplate |
---|---|---|
Permite adicionar dados dinamicamente à renderização | não | sim, 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 adicionados | depende, apenas se o subtemplate utiliza informações do contexto e estas sofreram alterações. |
Permite controle total da aparência final da impressão | sim, 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 template | não | sim, pode-se adicionar, por exemplo, o mesmo rodapé ou cabeçalho a diversos templates. |
Requer a criação de um Plugin | não | sim |
Suporte a templates gráficos | sim, criando-se 2 versões diferentes do template. | sim, criando 2 subtemplates diferentes |
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.
É 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.
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:
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