Configuração de impressão
O usuário deverá acessar a tela Configurações de impressão – BR One (Administração > Inicialização do sistema > Configurações de impressão – BR One) para definir as configurações necessárias.

Caso o banco de dados não possua a tabela [UPP_BRONE].[dbo].[Br1_ObjSap] ou se não possuir a coluna CFLFld nesta tabela, será exibida a seguinte mensagem para o usuário, e o formulário não abrirá:
Erro
BR One :: Banco de dados não configurado. [Br1_ObjSAP]
Neste caso deverá ser buscado este script atualizado no FTP na pasta (/bd_install/Geral).
Se estiver tudo configurado corretamente, será aberto o formulário, conforme imagem abaixo.
Para criar estas configurações, pesquisar existentes ou navegar, utilizar os botões padrão do SAP na barra de navegação superior. Todas as configurações de impressão que forem criadas terão identificador com valor maior que 500. Identificadores com valormenor que 500 poderão existir na base, porém, terão funcionalidades reduzidas, pois serão criadas internamente pelo BR One para atender customizações específicas.

No campo Módulo, o usuário deverá informar o módulo que o processo pertence.

No campo Descrição o usuário deverá informar a descrição do processo, por exemplo, Impressão de etiquetas de itens de série, Impressão de etiquetas de itens de venda, entre outros.
No campo Tipo do layout, o usuário deverá informar qual é o layout da impressão que deseja configurar, se deseja Etiqueta ou Crystal Reports.

Ao alterar o tipo do layout o usuário deve confirmar, se deseja realmente alterar o layout, pois ao fazê-lo, os campos referentes à Origem de dados, ao caminho do arquivo (PRN ou RPT) e os valores da guia Impressoras serão perdidos.

Nota
BR One :: Ao alterar o tipo do layout diversos campos serão perdidos. Continuar?
A flag Não remover arq. texto após a impressão serve para excluir ou não o arquivo texto que é gerado com os valores (tags) do arquivo template PRN (gerado pelo software ZebraDesigner ou afins) substituídos. Por padrão, o flag será desmarcado para que o arquivo sempre seja removido, porém, caso não deseje remover o arquivo, basta marcar essa flag. Quando essa opção de não remover o arquivo estiver ativa, ao clicar para imprimir a etiqueta, o arquivo mais novo substituirá o anterior. Caso seja selecionado Crystal Reports, os campos referentes à Origem dos dados e a guia Impressoras serão ocultados/desabilitados e a flag Não remover arq. texto após a impressão também será ocultado.

No campo Caminho, o usuário deverá informar o caminho onde o template está localizado, ou seja, caso esteja selecionado o tipo do layout Etiqueta, deverá informar o arquivo PRN gerado pelo software ZebraDesigner ou afins.

Caso seja forçada uma escolha de um arquivo que não seja o esperado (PRN* para **Etiqueta ou RPT para Crystal Reports) será exibida a seguinte mensagem, caso seja o layout Etiqueta:
Erro
BR One :: Selecione um arquivo de extensão ‘.prn’.
Ou a seguinte mensagem, caso seja o layout Crystal Reports:
Erro
BR One :: Selecione um arquivo de extensão ‘.rpt’.
Ao selecionar um RPT, quando o tipo de layout for Crystal Reports, o sistema irá percorrer o layout em Crystal Reports e preencher automaticamente os campos Descrição parâmetro e Tipo parâmetro da aba Form. Padrão com os parâmetros existentes no arquivo RPT em questão.

Quando o tipo de layout for Etiquetas, no campo Origem dos dados, o usuário deverá informar o nome e o tipo da Function, Procedure ou View (para novos registros, a opção View está indisponível) que será responsável para obter os dados do banco de dados.
O nome das colunas retornadas pela query de origem dos dados (Procedure ou Function) deverão ser iguais as tags informadas no layout (arquivo PRN) da etiqueta. Na impressão, o add-on automaticamente realizará a substituição destas tags pelos dados retornados.
Cada linha retornada nesta query será responsável pela impressão de uma etiqueta, como por exemplo, na Stored Procedure abaixo:
RETORNA OS DADOS PARA IMPRESSÃO DAS ETIQUETAS REFERENTE AOS ITENS
-- Exclui a procedure caso já exista
IF EXISTS (SELECT TOP 1 1
FROM SYSOBJECTS
WHERE id = OBJECT_ID('P_EtiquetasItens')
AND OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE [dbo].[P_EtiquetasItens]
GO
-- Cria a procedure
CREATE PROCEDURE [dbo].[P_EtiquetasItens] (@sItemCode NVARCHAR(50),
@sQuantidade INT,
@sObservacao NVARCHAR(100))
AS
BEGIN
-- Declara uma variável para o contador
DECLARE @iCount INT
-- Variáveis para tratamento de erro
DECLARE @iCodeError INT = 0
-- Declara uma tabela temporária para armazenar os valores
DECLARE @EtiqTemp TABLE
(
[ERRO] NVARCHAR (MAX),
[ItemCode] NVARCHAR(50),
[ItemName] NVARCHAR(100),
[DE] NVARCHAR(10)
)
-- Verifica se o item existe
SELECT
@iCodeError =
CASE
WHEN COUNT(ItemCode) > 0 THEN 0 ELSE -1
END
FROM OITM
WHERE ItemCode = @sItemCode
-- Se não o encontrou o item, retorna uma mensagem que será exibida ao usuário
IF (@iCodeError = -1)
BEGIN
INSERT INTO @EtiqTemp ( [ERRO])
VALUES('Item '+@sItemCode+' não encontrado, verifique se o código do item está preenchido corretamente.')
END
ELSE
BEGIN
-- Inicializa o contador
SET @iCount = 1
-- Percorre toda quantidade passada pelo parâmetro
WHILE (@iCount <= @sQuantidade)
BEGIN
INSERT INTO @EtiqTemp
(
[ItemCode],
[ItemName],
[DE]
)
SELECT
T0.[ItemCode],
T0.[ItemName],
CAST(@iCount AS NVARCHAR)
+ '/'
+ CAST(@sQuantidade AS NVARCHAR)
FROM [OITM] T0
WHERE T0.[ItemCode] = @sItemCode
-- Incrementa o contador
SET @iCount = @iCount + 1
END
END
IF (@iCodeError = -1)
BEGIN
-- Retorna o resultado
SELECT
T0.ERRO AS '[ERRO]'
FROM @EtiqTemp T0
END
ELSE
BEGIN
-- Retorna o resultado
SELECT
T0.[ItemCode] AS '[ITEMCODE]',
T0.[ItemName] AS '[ITEMNAME]',
T0.[DE] AS '[VARIOS]',
@sObservacao AS '[OBS]'
FROM @EtiqTemp T0
END
END
No tratamento destacado acima, é verificado se o código do item informado está cadastrado. Caso não seja encontrado este item, será cancelado o processo de impressão e retornado a seguinte mensagem ao usuário Item X não encontrado, verifique se o código do item está preenchido corretamente.
Obs.: Para o correto funcionamento, é obrigatório que seja criado o campo com o nome ERRO na primeira posição da tabela que retorna os dados para a etiqueta, e que no trecho onde é retornado a tabela com os dados para a etiqueja seja validado para que retorne apenas a coluna de erro ou todas as colunas, exceto a de erro, dependendo se existe erro ou não.
Utilizando a procedure de exemplo, ao passar os parâmetros @sItemCode = ‘J003’, @sQuantidade = 2 e @sObservacao = ‘Item estocável’, o resultado retornado seria algo semelhante à tabela abaixo:
Exemplo de Resultado Esperado
[ITEMCODE] |
[ITEMNAME] |
[VARIOS] |
[OBS] |
---|---|---|---|
J003 |
Roda |
1/2 |
Item estocável |
J003 |
Roda |
2/2 |
Item estocável |
Estes valores irão substituir as tags criadas na etiqueta (arquivo PRN criado através do software ZebraDesigner ou relacionados). Porém, para isto é necessário criar um PRN exatamente com estas tags ([ITEMCODE], [ITEMNAME], [VARIOS] e [OBS]), como por exemplo, na etiqueta abaixo:

O arquivo PRN gerado por esta etiqueta sendo aberto em qualquer editor de texto (no exemplo o utilizado foi o Notepad++) seria semelhante à figura abaixo, cujas tags que serão substituídas estão destacadas:

Após o processo de substituição realizado automaticamente, o arquivo PRN que será enviado para impressora, terá os valores das tags substituídos pelos valores retornados pela procedure ou function. O arquivo será semelhante à figura abaixo, que também foram destacados os campos substituídos:

O resultado impresso será algo assim:

Para que a substituição dos valores seja realizada corretamente, é necessário passar os parâmetros na configuração na mesma ordem em que foram passados na Procedure ou Function. Como por exemplo, na procedure citada acima, os parâmetros foram passados na ordem @sItemCode, @sQuantidade e @sObservacao, portanto, a configuração deverá ser algo parecido com a figura abaixo:
