Neste artigo tentarei esclarecer a parte técnica e a composição da rotulagem de cigarros.
Perdoe-me, leitores do Habr, pela crítica abreviada.
O que são cigarros rotulados?
Os cigarros etiquetados são aqueles cigarros em cuja embalagem de consumo são aplicados meios de identificação em conformidade com os requisitos da Lei n.º 381-FZ e os atos jurídicos regulamentares do Governo da Federação Russa adotados de acordo com ela.
Assim, para o reconhecimento de mercadorias como etiquetadas, as seguintes condições devem ser atendidas:
- As mercadorias devem ser marcadas com meios de identificação (código de marcação)
- O sistema de monitoramento de informações deve conter informações sobre a aplicação de meios de identificação nos cigarros (isso é feito pelo fabricante do cigarro)
- O sistema de monitoramento de informações deve conter informações confiáveis sobre as mercadorias
Lembramos que a presença de informações sobre a circulação de cigarros no sistema de monitoramento de informações não é condição para o reconhecimento dos produtos rotulados.
Para os compradores que compraram cigarros etiquetados em papel antes de 01/07/2020, não há necessidade de se preocupar e enviar as sobras em algum lugar. Os cigarros colocados em circulação pelo fabricante antes de 01/07/2020 são registrados no sistema de monitoramento como "temporariamente indetectáveis" e, de acordo com as Normas, sua nova circulação é permitida.
Deve-se lembrar que durante o período de experimento para fabricantes (2018-07.2019), a composição da rotulagem mudou. Os fabricantes de cigarros trabalharam com o operador CRPT para encontrar soluções aceitáveis. Todos os produtos marcados fabricados durante este período de transição também foram marcados.
Vamos dar uma olhada na estrutura do código de marcação de cigarros em vigor hoje.
A propósito, é uma cópia do código de marcação de cigarro em alguns países europeus. É por isso que, para as empresas transnacionais, a rotulagem se tornou uma vantagem competitiva sobre os fabricantes russos.
80 caracteres são usados para codificar o número de série dos cigarros e MRP (preço máximo de varejo):
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!”%&’*+-./_,:;=<>?
O algoritmo de codificação-decodificação do MRC é baseado na conversão do tamanho do MRC em copeques em um sistema numérico de 80 anos usando o seguinte alfabeto:
Codificação Procedimento de codificação
- Nós convertemos o MRC em copeques, por exemplo
- Encontramos a parte inteira e o restante da divisão do MRC pela base do sistema numérico (em nosso caso - 80)
- Pegamos um caractere do alfabeto em um índice igual ao resto e o escrevemos no início da string resultante
- 2 3 0
- 4 0 (“A”)
- 14630 80: 182 70
- 70 : “.”
- 0, 182 80: 2 22
- 22 : “W.”
- 0, 2 80: 0 2
- 2 : “CW.”
- 0, : “ACW.”
- , 80, , , 0,
0.
1. : “A”2. “A”: 03. 80 3 ( , 4 ) 0, 04. 0 : 05. : “C”6. “C”: 27. 80 2 2, 128008. 12800 : 128009. : “W”10. “W”: 2211. 80 1 22, 176012. 1760 : 1456013. : “.”14. “.”: 7015. 80 0 70, 7016. 70 : 1463017. = 14360 14630
using System;
using System.Text;
namespace SharedUtil.Mrp
{
public static class MrpEncoder
{
public const string Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"%&\'*+-./_,:;=<>?";
public static string Encode(uint value, byte paddingLength = 4)
{
var builder = new StringBuilder();
long result = value;
do
{
long rmdr;
result = Math.DivRem(result, Alphabet.Length, out rmdr);
builder.Insert(0, Alphabet[(int) rmdr]);
} while (result > 0);
return builder.ToString().PadLeft(paddingLength, Alphabet[0]);
}
public static uint Decode(string value)
{
uint result = 0;
for (int i = 0; i < value.Length; i++)
{
var characterIndex = Alphabet.IndexOf(value[i]);
if (characterIndex < 0)
{
throw new ArgumentException(string.Format("Invalid character: '{0}'", value[i]));
}
result += (uint) (Math.Pow(Alphabet.Length, value.Length - 1 - i) * characterIndex);
}
return result;
}
}
}
Vamos considerar a marcação no exemplo de Cigarros com o filtro "T&W" ORIGINAL COMPACT MRC 106 "Assim
são as marcações em maços e blocos:
Desculpe, não encontrei um bloco com MRC 106, tirei 115 para a foto.
Marcação de
maço : 04610030141527 00000Hd AB0o OnE1
Uma string de 29 caracteres , contém:
- GTIN-14 (14 ). «0» EAN-13 «» . EAN-13, .
- (7 ) . , 80 . EAN.
- (4 ). , 80- .
- (4 ). « » . . , , .
GTIN-14 (14 ). «0» EAN-13 «» . EAN-13, .« » GTIN EAN13.
Marcação de bloco:
(01) 04610030141534 (21) 00000! & <FNC1> (8005) 106000 <FNC1> (93) yikZ
Uma sequência de pelo menos 41 caracteres e contém um código no formato GS1. Os colchetes foram adicionados para maior clareza. Contém símbolos GS1 <FNC1>
- (01) GTIN-14 (14 caracteres numéricos). Contém o "0" inicial e o código EAN-13 para a unidade de medida "bloco". Semelhante ao usual EAN-13 impresso no bloco.
- (21) Número de série (7 caracteres). Código de identificação gerado pelo fabricante a partir de um conjunto de 80 caracteres. Concebido como exclusivo para o GTIN-14 especificado.
- (8005) (6 caracteres digitais). Preço máximo de varejo em copeques por um bloco. Em nosso exemplo, 1.060,00 rublos por bloco (106 por pacote)
- (93) (4 ). « » . .
Marcação das
caixas : (01) 14610030141524 (21) 0011986 <FNC1> (8005) 106000 <FNC1> (37) 50
Uma sequência de pelo menos 25 caracteres. Contém os códigos obrigatórios 01 e 21 no formato GS1. Cada fabricante determina ele mesmo a composição do código de marcação para embalagens de transporte. Não possui cauda criptográfica. Pode ser aplicado como código GS-1 DataMatrix.
Freqüentemente, os fabricantes duplicam GS-1 (CODE-128) e GS-1 DataMatrix, aqui está um exemplo:
Outros fabricantes às vezes não indicam o MRC e alguns adicionam o elemento 240 para indicar o código de nomenclatura interna do fabricante.
Vamos dar uma olhada em um exemplo de um código para marcar uma "caixa" de pacote de transporte:
- (01) GTIN-14 (14 ). IFT-14 «». IFT-14, .
- (21) (7 ). , IFT-14 .
- (8005) (6 ). , – «».
- (37) (2 ). .
Marcação de
palete : (00) 94610030141 0004634
Uma seqüência de 20 caracteres. Contém o prefixo 00 e o código logístico SSCC de palete (contentor) obrigatório.
Todos os pacotes, exceto pacotes, possuem um código legível por máquina e seu equivalente legível por humanos. Isso permite que você disque manualmente o código de marcação se por algum motivo o código não for lido pelo scanner.
Agregação e desagregação.
O sistema de etiquetagem incorpora características como agregação e desagregação de embalagens, até recentemente a agregação era realizada apenas na fábrica. Da fábrica, são transmitidas informações ao sistema não apenas sobre os códigos de marcação aplicados, mas também sobre sua agregação. O arquivo JSON transferido da fábrica para o BMS contém uma estrutura na qual é impossível enviar os dados de marcação sem os dados de agregação de fábrica. Na fábrica, a agregação de blocos / caixas / paletes é realizada digitalizando novamente a marcação de cada elemento aninhado e códigos de embalagem. Isso garante que o código seja legível e garante a agregação correta , ou seja, conformidade dos códigos incluídos na embalagem com o código da própria embalagem.
Portanto, procure manter a embalagem original até o último momento. Tendo aberto a caixa de fábrica, não é mais possível garantir que todos os blocos pertencem a esta caixa em particular. Olá a todas as redes de varejo que verificam blocos aninhados e caixas de fábrica abertas para isso;)
Recentemente, a função de agregação de cigarros apareceu na API para organizações comerciais. Vemos uma grande perspectiva aqui para embarque de paletes de armazéns logísticos.
A desagregação é realizada automaticamente assim que a unidade contida na embalagem for utilizada nos documentos de descarte ou mudança de propriedade. Em outras palavras, se você vende um maço de cigarros, o bloco em que estava localizado é automaticamente desagregado em maços, e a caixa em que esse bloco estava localizado é desagregada em blocos, etc. Será impossível usar outros códigos desagregados de um bloco, caixa, palete. Esta é uma solução muito elegante. Hoje, a caixa / bloco é desagregado apenas se a unidade aninhada foi descartada do lado do atual proprietário. Se uma terceira parte tentar vender seus cigarros fora da caixa, isso não levará à sua desagregação automática, uma vez que, de acordo com o GIS MT, a contraparte não era a proprietária no momento da leitura da etiqueta ao enviar as informações sobre o descarte.
, , , ,
|
||
(14 ) (7 )
|
||
|
||
01 (14 ) 21(7
|
||
: 1+2+3
|
||
paletes, contêineres:
|
O arquivo UPD gerado para o envio das informações deve conter uma marca em seu nome - "MARK"
PDF: Recomendações metodológicas oficiais para o registro da UPD / UPDi / UKD
Amostras EUPD:
XML. Amostra de EPD de Megapolis.
XML. Amostra de EPD com diferentes tipos de embalagem.
XML. Aviso de amostra de esclarecimento de fatura.