Nesse manual iremos aprender como customizar uma Etiqueta para a Impressora Argox. muitos lojistas utilizam esse modelo de impressora para imprimir e etiquetar as mercadorias da loja. Na grande maioria das impressoras dessa fabricante a linguagem utilizada para programar as Etiquetas é a PPLA.


Veja um exemplo de código que imprime uma Etiqueta na impressora Argox:




Quando olhamos o código, nós já reconhecemos que se trata de um código PPLA pois nas instruções de impressão das linhas das etiquetas possui esse padrão com uma sequência de números






COMO CRIAR A ETIQUETA NO SETA?


Para criar uma etiqueta no Seta precisamos criar o que chamamos de Ponto de Ajuste, é o local onde vai ficar o código de programação da etiqueta. Para criar um ponto de ajuste entre no Retaguarda > Configurações > Pontos de Ajuste




Para criar um PA (Ponto de Ajuste) basta clicar em Incluir, no caso das etiquetas no campo Módulo nós colocamos a palavra Etiquetas e no método você vai informar qual Etiqueta irá desenvolver, podendo ser Adesiva, Prender ou Vitrine (As palavras precisam ser escritas exatamente dessa forma para que a impressão funcione)







Clicando em Editar Ponto de Ajuste você irá colocar todo o código de programação da etiqueta. Para salvar o código que você colocou basta dar um CTRL+W para salvar a codificação no ponto de ajuste





Depois é só dar um Ok para Salvar o PA





As Etiquetas Adesivas e Prender geralmente são usadas pelos clientes para etiquetas os produtos individualmente. Após ter o ponto de ajuste configurado para imprimir as etiquetas Adesivas ou Prender basta ir em Estoque > Gerar Etiqueta de Produtos 




Na aba etiqueta Avulsas informar o(s) código(s) do(s) produto(s) que deseja imprimir, após isso clicar em Imprimir


 

Na tela que abrir você poderá qual Etiqueta deseja imprimir, se será a Etiqueta Adesiva ou Etiqueta Prender, ao selecionar alguma delas, o sistema irá verificar se existe o ponto de ajuste criado para essas etiquetas e executará o código que foi programado dentro dele imprimindo as etiquetas, caso o código contenha algum erro o sistema irá apresentar uma mensagem de falha.





COMEÇANDO O DESENVOLVIMENTO DA ETIQUETA


Muito bem, vamos entender como funciona a customização de Etiquetas no Seta no caso da impressora Zebra. Todo produto ele possui Descrição, Cor, Tamanho, Código, Referência, entre outras informações no cadastro.  Essas informações dos produtos, quando vamos programar as etiquetas, ficam dentro de uma função que nós chamamos de Temporario dentro do ponto de ajuste, se eu quero exibir o nome do produto vou colocar:  Temporario.Descricao, Preço: Temporario.Preco, Tamanho: Temporario.Tamanho, Referência: Temporario.Referencia, e assim por diante. Todos os campos disponíveis no Temporario com as informações do produto que serão impressas na Etiqueta estão no PDF em anexo nesse manual chamado "Manual Rápido Customização de Etiquetas"


Percebe o uso do Temporario nesse print abaixo?





Campos Disponíveis para usar com o Temporario



Ok, no entanto vamos supor que o cliente quer que apareça a Coleção do produto na etiqueta, a coleção é uma informação que existe no cadastro do produto mas ela não existe por padrão dentro do Temporario, o que fazer nesse caso?


Quando isso acontece nós precisamos criar uma consulta SQL e colocarmos o resultado da consulta com essa informação manualmente dentro do Temporario


De que forma fazermos isso? Veja o exemplo abaixo:



Select *, Cast('' as Char(20)) as Colecao from Temporario Into Cursor Temporario ReadWrite

    

    Select Temporario


    Scan

    

    sSql = ""

    sSql = sSql + "Select Substr(colecoes.descricao,1,20) as ColecaoName, count(colecoes.codigo) as Qtde from produtos"

    sSql = sSql + " Left join Colecoes on produtos.colecao = colecoes.codigo"

    sSql = sSql + " Where produtos.codigo = "+FiltroX(SubStr(Temporario.codigo,1,6))+" group by colecoes.descricao;"

   

 ExecutaBd(sSql,'cColecao','...Aguarde...Buscando Coleção...')

    

 

 Replace Colecao With cColecao.ColecaoName In Temporario    


    

EndScan



Se assustou? Vamos explicar esse código para você programador!


Select *, Cast('' as Char(20)) as Colecao from Temporario Into Cursor Temporario ReadWrite


Aqui ele está criando/adicionando um campo char chamado Colecao dentro do Temporario ("Into Cursor Temporario ReadWrite") 

  

Select Temporario


Seleciona o Temporario

    

  

Scan


Esse "Scan" percorre os produtos que você adicionou na tela de impressão de etiquetas, se você informou para imprimir 10 produtos em 10 etiquetas ele vai adicionar a informação que você vai buscar por meio da consulta sql e vai adicionar em cada uma das 10 etiquetas 

  

 sSql = ""

sSql = sSql + "Select Substr(colecoes.descricao,1,20) as ColecaoName, count(colecoes.codigo) as Qtde from produtos"

sSql = sSql + " Left join Colecoes on produtos.colecao = colecoes.codigo"

sSql = sSql + " Where produtos.codigo = "+FiltroX(SubStr(Temporario.codigo,1,6))+" group by colecoes.descricao;"


Aqui basicamente é nossa consulta SQL que estamos fazendo para buscar a informação da coleção no banco de dados, se você olhar para a consulta a coluna terá o nome da informação se chama "ColecaoName"



ExecutaBd(sSql,'cColecao','...Aguarde...Buscando Coleção...')


Essa linha é muito importante pois essa função é a que executa a query que armazenamos na variável sSQL. Ela recebe como primeiro parâmetro a varável, depois um parãmetro que chamamos de Cursor que usaremos em seguida, e depois uma mensagem entre aspas simples que pode ser usada para ser mostrada enquanto a etiqueta está sendo impressa, no caso isso é opcional


   

Replace Colecao With cColecao.ColecaoName In Temporario 


Nesse momento, o resultado da consulta SQL está sendo colocada dentro do Temporario, a informação que está dentro do cColecao.ColecaoName (With ..cColecao.ColecaoName..) está sendo inserida dentro do Campo Colecao no Temporario (Replace Colecao....In Temporario)   

   

    

 EndScan



Legal, nesse ponto nós aprendemos como buscar campos que não são padrões do Temporario, e colocarmos dentro dele para imprimirmos na etiqueta. Agora iremos ver a parte mais importante que é a impressão das linhas na etiqueta. Cada Linha impressa na etiqueta é programada. Quando vamos desenvolver uma nova etiqueta para alguma loja é comum pegarmos uma etiqueta já pronta e apenas realizamos as alterações conforme o novo cliente solicitou. 


Para obter Etiquetas já prontas você pode acessar entrar dentro da partição Dados > Customização > Etiquetas



-> \\10.1.0.246\Dados\Customizacao\Etiquetas






*OBSERVAÇÃO: Caso ocorra algum erro ao acessar essa pasta na rede, contate seu Gestor ou Analista de Infraestrutura



Dentro da pasta Etiquetas iremos ter vários arquivos txt com o código de programação das etiquetas e algumas lojas que a utilizam:






Pois bem, ao escolher uma etiqueta pronta você perceberá que existe um tipo de codificação padrão para a impressão das etiquetas, veja esse exemplo com a explicação:







Select Temporario

Go Top

    Do While !Eof()

     

///Configuração das linhas a serem impressas na etiqueta


    Skip 

    If !Eof()

   

/// É possível criar uma e até mais configurações de impressão dependendo da quantidades de colunas que serão usadas para imprimir as etiquetas


    Skip 

    EndIf


    ???'Q'+Chr(13)+CHR(10)+'S2'+chr(13)+CHR(10)+'D9'+chr(13)+CHR(10)+'ZT'+chr(13)+CHR(10)+'JB'+chr(13)+CHR(10)+'OD'+chr(13)+CHR(10)+'R00,0'+chr(13)+CHR(10)+'N'+chr(13)+CHR(10)+cLinha1+chr(13)+CHR(10)+cLinha2+chr(13)+CHR(10)+cLinha3+chr(13)+CHR(10)+cLinha4+chr(13)+CHR(10)+cLinha5+chr(13)+CHR(10)+cLinha6+chr(13)+CHR(10)+cLinha7+chr(13)+CHR(10)+cLinha8+chr(13)+CHR(10)+'P1'+Chr(13)+Chr(10)+Chr(26)


*ESSA LINHA COM O ??? ENVIA A ETIQUETA PARA IMPRIMIR NA IMPRESSORA, CONTÉM ALGUMAS INSTRUÇÕES PADRÕES E TODAS AS VARIÁVEIS cLinha que nós programamos acima

    

    If !Eof()

        Skip

    EndIf

EndDo 



Esse código acima é usado por padrão para imprimir as etiquetas no sistema, ele configura as repetições e laços necessários para a quantidade de colunas que o cliente vai usar para imprimir as etiquetas, quantas etiquetas ele irá imprimir e também é responsável por enviar o comando de impressão para a impressora.



ENTENTENDO OS PARAMETROS E FUNÇÕES DO "cLinha"


Quando vamos criar as linhas da etiqueta nos atribuímos os parâmetros que determinam posição, fonte, tamanho entre outros da informação que será impressa naquela linha e também algumas funções que formatam a informação de uma melhor forma, além da própria informação que se encontra no Temporario. Vamos pegar por exemplo uma linha que imprime o preço na etiqueta, lembrando que essa explicação dos parâmetros e funções serve para qualquer outra linha e informação que você for criar para imprimir na etiqueta.




cLinha9='191100200010078R$'+Alltrim(Str(RoundX(Temporario.Preco)),7,2))


ORIENTAÇÃO DO TEXTO (0 (SEM ROTAÇÃO) - 1 (90º) - 2 (180º) - 3 (270º)) 

TAMANHO DA FONTE

MULTIPLICADOR HORIZONTAL DA FONTE

MULTIPLICADOR VERTICAL DA FONTE

SUBFONTE

POSIÇÃO DA INFORMAÇÃO NA VERTICAL

POSIÇÃO DA INFORMAÇÃO NA HORIZONTAL


A FUNÇÃO ALLTRIM RETIRA QUALQUER ESPAÇO EM BRANCO QUE HOUVER ANTES OU DEPOIS DA INFORMAÇÃO DO PREÇO, A FUNÇÃO STR FORMATA O VALOR RECEBENDO O PARAMETRO DE QUANTAS CASAS DECIMAIS TERÃO ANTES DA VÍRGULA (,10) E QUANTAS CASAS DEPOIS DA VIRGULA (,2). A FUNÇÃO ROUNDX ARREDONDA O VALOR, SE O PREÇO POR EXEMPLO DE UM PRODUTO FOR 31,47, A FUNÇÃO IRÁ ARREDONDAR PARA 31,50








Para um treinamento completo  assista o vídeo "Treinamento Argox"







Este manual foi criado por: Luiz Fernando Rodrigues da Silva – Analista Special Service & Desenvolvedor, em 10/06/2021.