Histórico da Página
Informações Gerais
Especificação | |||||||||
Produto | Logix | Módulo | WMS | ||||||
Segmento Executor | Supply Chain - Logística | ||||||||
Projeto1/Story | IRM1/Epic | ||||||||
Requisito1 | Subtarefa1 | ||||||||
Chamado2 |
| ||||||||
País | ( X ) Brasil ( ) Argentina ( ) Mexico México ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia Colômbia ( ) Outro _____________. | Outros<Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>. |
Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos).
Objetivo
Tratar a utilização de etiquetas padrão GS1-128 nas rotinas complementares do WMS. Compreende-se por rotinas complementares para este desenvolvimento apenas a rotina as rotinas de contagem Contagem do inventário Inventário do WMS e a rotina de impressão Impressão de etiquetas Etiquetas ITEM/SKU.
Definição da Regra de Negócio
Contagem do
inventário via coletor WMS.Inventário Via Coletor WMS:
Esta
Essa
rotina possibilitará que sejam utilizados códigos GS1-128 (previamente parametrizados) durante a contagem do
inventárioInventário. A etiqueta GS1-128 poderá ter sua leitura realizada nos pontos do processos
ondenos quais é solicitada a etiqueta de código de barras do SKU. A partir da leitura deste tipo de etiqueta o sistema poderá resgatar as informações de Item, Código de barras do SKU, quantidade de itens por SKU, quantidade de SKUs e os valores dos dimensionais (lote, data de fabricação, número de série,
etcentre outros).
Para que a etiqueta GS1-128 seja aceita na entrada das informações é necessário que
existaexistam pelo menos as informações do código de barras do SKU ou o código do item depositante, para que sejam efetuadas as validações de item/SKU, da mesma forma
quecomo é
feitoefetuado atualmente por meio do código do SKU.
Se na etiqueta GS1 existir apenas a informação do item depositante, o sistema tentará localizar o SKU
,; se a informação da quantidade de itens existir na GS1,
essaesta informação será utilizada na busca do SKU, contudo, se o item possuir mais de um SKU cadastrado e não for possível localizar um único SKU com as informações lidas, será exibida uma mensagem de erro e
serásolicitada outra etiqueta.
Quando oSe no item
tiverhouver controle de dimensionais
e, todas as informações constarem na etiqueta GS1 e forem valores
válidosválidas, a tela de entrada de dimensionais não será aberta e o processamento assumirá automaticamente estas informações. Caso não sejam recuperadas as informações dos dimensionais ou esteja faltando alguma informação de dimensional, a tela de entrada continuará abrindo
trazendoapresentando as informações lidas, permitindo informar apenas o que não foi lido.
Impressão
etiquetaEtiqueta Item/SKU
.:
A rotina de impressão da etiqueta ITEM/SKU deverá permitir que as etiquetas no formato GS1-128 sejam impressas a partir de uma configuração
pré-definidapredefinida nos Modelos de Etiquetas.
Para viabilizar este processo será necessário a criação dos atributos relacionados a etiqueta GS1
que, os quais estarão disponíveis no cadastro de
modelosModelos de
etiquetasEtiquetas, etiqueta tipo 12
"ItemITEM/SKU
".
Quando um modelo de etiqueta possuir atributos GS1 relacionados, no momento da impressão da etiqueta será exibida uma tela
onde, na qual deverá ser
feitaefetuada a entrada dos dados correspondentes aos atributos do GS1 que não são mantidos no cadastro de Item/SKU do WMS (vide tabela no detalhamento da rotina).
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
WMS6770 - Atualização dos registros padrões | [Alteração] |
|
|
SUP2067 - Contagem Inventário | [Alteração] |
| - |
WMS6340 - Geração Etiquetas Item/SKU | [Alteração] |
| - |
WMS6082 - Modelos Etiquetas |
Contagem do
inventário via coletor WMS.Inventário Via Coletor de WMS
SUP2067 -
InventárioInventário
Na função sup2067_controle() deverá ser implementada a lógica para verificar se o depositante possui configuração de etiqueta GS1-128.
Para isso, deverá chamar a função wmsr130_deposit_utiliza_cod_barras_gs1_128(), que poderá retornar
trueTRUE ou
falseFALSE, setar o valor do retorno em variável modular que será testada posteriormente nas lógicas de entrada do GS1.
Pontos onde poderá haver interação com o GS1-128
.:
1) Criar nova função sup2067_retorna_cod_barras_sku(l_cod_barras_sku). Função responsável pelo controle de entrada de dados via GS1-128.
- Chamar as funções wms6730_set_null(),
- wms6730_set_empresa(mr_parametros.empresa),
- wms6730_set_depositante(m_depositante_plano),
- wms6730_set_rotina_origem('sup2067'),
- wms6730_set_leitura_teste(FALSE)
- wms6730_set_cod_barras_gs1_128(l_cod_barras_sku);
- Chamar a função wms6730_solicita_cod_barras_gs1_128() que efetuará a entrada da etiqueta.
2) Função sup2067_solicita_info_adicional()
Alterar o carregamento do array de tela (ma_dimensional) para que, quando estiver sendo utilizada a tela "A", seja validado se o depositante utiliza configuração GS1-128 e se o item controla algum dimensional, seja exibido o campo "COD.BAR GS1-128" antes dos dimensionais, conforme exemplo abaixo. Deverá atribuir ma_dimensional[].label_dimensional = "COD.BAR GS1-128" e ma_dimensional[].campo = "cod_gs1".
Bloco de código | ||
---|---|---|
| ||
INVENTARIO - SUP2067
Ativid.: Contagem
[118-P ]
[ ]
[118 PICKING ]
Sku:
[118-p/1 ]
Qtd:[ 1,000 ]
Info.Complementar:
[COD.BAR GS1-128 ]
[ ]
[LOTE ]
[ ]
.
.
[Qtd.Sku's ]
[ ]
F10 - Teclas |
3) Função sup2067_implanta_identificacao()
Bloco de código | ||||
---|---|---|---|---|
| ||||
INPUT BY NAME mr_impl_identif.etiq_palete,mr_impl_identif.etiq_estoque,
mr_impl_identif.cod_barras,
mr_impl_identif.qtd_item,
mr_impl_identif.qtd_sku,
mr_impl_identif.tip_estoque WITHOUT DEFAULTS |
No AFTER FIELD cod_barras (do input acima) se l_encontrou for FALSE deverá verificar se o depositante possui parametrização GS1-128.
Caso possuaSe possuir, deverá seguir os passos
a seguirabaixo, senão mantém o processamento atual:
- Chamar a função sup2067_retorna_cod_barras_sku() passando como parâmetro mr_impl_identif.cod_barras.
- Após o retorno da função acima deverá:
Buscar o código de barras do SKU atribuindo a mr_impl_identif.cod_barras, item depositante a uma variável local
nova,
e quantidade de item SKU também a uma variável local nova, chamando as funções wmsr130 correspondentes.
Se os atributos de SKU e item retornarem nulos, não será possível continuar o processamento e deverá
ser exibida a msg de erro "Nao foi possivel identificar o SKU."
Se o atributo SKU retornado for nulo, mas o atributo Item for válido, deverá efetuar select abaixo para determinar o código de barras do SKU.
Tendo o código de barras do SKU deverá chamar a função wmst86_wms_item_sku_cod_barras_verifica_cod_barras() passando o código retornado. Caso não localize o SKU
, deve ser exibida a mensagem “Nao foi possivel identificar o SKU.”.
Bloco de código |
---|
SELECT wms_item_sku_cod_barras.cod_barras
into mr_impl_identif.cod_barras
FROM wms_item_sku_cod_barras,
wms_item_complemento,
wms_item_sku
WHERE wms_item_sku_cod_barras.empresa = p_cod_empresa
AND wms_item_sku_cod_barras.empresa = wms_item_complemento .empresa
AND wms_item_sku_cod_barras.item= wms_item_complemento .item
AND wms_item_sku.empresa = wms_item_complemento.empresa
AND wms_item_sku.item = wms_item_complemento .item
AND wms_item_sku.sku = wms_item_sku_cod_barras.sku
AND wms_item_complemento .deposit = wms_item_sku_cod_barras.depositante
AND wms_item_complemento .item_deposit = (item retornado da função wmsr130_get_item_depositante())
AND wms_item_sku.qtd_item = l_qtd_item (wmsr130_get_qtd_itens_sku()
AND wms_item_sku.sit_sku = ‘A’
|
4) Alterar a função sup2067_verifica_sku()
Se l_encontrou for igual a FALSE, antes de exibir a mensagem de erro
,deverá verificar se a etiqueta informada é uma GS1-128 e buscar as informações do item ou SKU, seguindo os mesmos passos indicados no item 1, utilizando as funções wms6730/wmsr130.
Se conseguir identificar o SKU a partir da etiqueta GS1 deverá chamar novamente a função wmst86_wms_item_sku_cod_barras_verifica_cod_barras() passando o código retornado. Se não validar o SKU deve exibir mensagem de erro como na lógica atual.
5) Função sup2067_entrada_skus_endereco()
Bloco de código | ||||
---|---|---|---|---|
| ||||
INPUT BY NAME mr_dados_tela2b.des_endereco,
mr_dados_tela2b.cod_barras_sku WITHOUT DEFAULTS |
Toda validação do SKU é efetuada na função sup2067_verifica_sku().
6) Função sup2067_seleciona_sku()
Bloco de código | ||||
---|---|---|---|---|
| ||||
INPUT BY NAME mr_dados_tela_sku.cod_barras_sku WITHOUT DEFAULTS |
No AFTER FIELD cod_barras_sku se o teste de sql do select da tabela wms_item_sku_cod_barras for diferente de 0 (zero) deverá validar se a etiqueta
informainformada é uma GS1. Sendo,
e sendo,deverá resgatar o código de barras, o item e a quantidade de itens do
skuSKU.
Se o SKU for
validoválido deverá
utilizautilizá-lo para validar o item, com o mesmo select atual.
Se o código de barras do
skuSKU não vier na etiqueta GS1, deverá verificar se o item e a quantidade item veio informada
,; se vieram, deverá buscar o código de barras do SKU conforme item 1.
7) Função sup2067_entrada_dimensionais().
Se estiver fazendo o Input com o campo 'cod_gs1' deverá alterar a regra do
inpunt input para prever a leitura de uma etiqueta GS1-128.
No after field deverá efetuar a decodificação do GS1-128 e tentar resgatar os valores dos dimensionais do item.
Os valores resgatados deverão ser exibidos em tela e não poderão ser alterados. Apenas os valores não resgatados do GS1 poderão ser informados.
Se no array não existir o campo 'cod_gs1', antes da abertura da tela sup20673, deverá verificar se no input do código de barras do SKU foi informada um etiqueta GS1-128.
E caso Caso tenha sido informada deverá resgatar os valores dos dimensionais informados.
- Se o Input estiver sendo efetuado com "qtd_saldo" (lógica no final da função (sup2067_solicita_info_adicional), se todos os retornos forem válidos
, - deverá posicionar no campo quantidade
, - ; caso contrário, deve ser efetuado o processamento das informações sem a abertura da tela de entrada de dimensionais, seguindo as validações que
já constam - Constam na sup2067_valida_dimensional() controlando para que não sejam executados os displays de tela.
- Constam na sup2067_valida_dimensional() controlando para que não sejam executados os displays de tela.
Dimensional | Função GET | Retorno inválido |
Lote | wmsr130_get_lote() | Branco " " |
Volume | wmsr130_get_volume() | 0 |
Data de produção | wmsr130_get_data_producao() | '1900/01/01' |
Data de validade | wmsr130_get_data_validade() | '1900/01/01' |
Comprimento | wmsr130_get_comprimento() | 0 |
Largura | wmsr130_get_largura() | 0 |
Diâmetro | wmsr130_get_diametro() | 0 |
Número peça | wmsr130_get_numero_peca() | Branco " " |
Número série | wmsr130_get_numero_serie() | Branco " " |
_numero_serie() | Branco " " |
Informações | ||
---|---|---|
| ||
Como forma de padronizar as rotinas que envolvem a utilização de etiquetas GS1-128, foi adicionado atalho para executar o teste de leitura de etiquetas. Nas telas nas quais é efetuada a entrada da etiqueta será habilitada a tecla Ctrl-J Teste GS1. |
Impressão Etiqueta Item/SKU
WMS6770 - Atualização dos
registros padrõesRegistros Padrões
Alterar a rotina de processamento dos registros
padrõespadrão da etiqueta
tipo 12 "ITEMtipo 12 Item/SKU
" para, para que sejam gravados os atributos correspondentes da etiqueta padrão GS1-128. Atributos assinalados como Novo na tabela abaixo.
Observação:
Obs:Os atributos
padrõespadrão de geração de etiquetas são gravados na tabela wms_atributo_tip_etiq
;. Não foi utilizada a mesma nomenclatura do cadastro de configurações do GS1-128 devido
oao nome do atributo ser restrito a 10 caracteres na tabela wms_atributo_tip_etiq
;.
O tamanho dos atributos abaixo são baseados no Encarte GS1-128.
Atributo | Descrição | Tipo1 | Tamanho | Atual | Novo |
---|---|---|---|---|---|
CNPJ_DEPOS | CNPJ DO DEPOSITANTE | C | 19 | X | |
CODBARRA1 | CODIGO DE BARRAS 1 | C | 128 | X | |
CODBARRA2 | CODIGO DE BARRAS 2 | C | 128 | X | |
CODBARRA3 | CODIGO DE BARRAS 3 | C | 128 | X | |
DEPOSITCOD | CODIGO DO DEPOSITANTE | C | 15 | X | |
DEPOSITDES | DESCRICAO DO DEPOSITANTE | C | 50 | X | |
IE_DEPOS | INCRICAO INSCRICAO ESTADUAL DO DEPOSITANTE | C | 16 | X | |
ITDESREDZ | DESCRICAO REDUZIDA DO ITEM | C | 18 | X | |
ITEMCOD | CODIGO DO ITEM | C | 15 | X | |
ITEMDEPOS | CODIGO DO ITEM DEPOSITANTE | C | 25 | X | |
ITEMDES | DESCRICAO DO ITEM | C | 76 | X | |
PAISORIGIT | PAIS ORIGEM DO ITEM | C | 60 | X | |
PESOUNIT | PESO UNITARIO | N | 15 | X | |
SKUCOD | CODIGO DO SKU | C | 25 | X | |
SKUDES | DESCRICAO DO SKU | C | 76 | X | |
SKUDESREDZ | DESCRICAO REDUZIDA DO SKU | C | 18 | X | |
QTDITEMSKU | QUANTIDADE ITENS SKU | N | 8 | X | |
QTDSKU | QUANTIDADE SKUS | N | 8 | X | |
TIPESTOQ | TIPO ESTOQUE | C | 6 | X | |
RESTESTOQ | RESTRICAO ESTOQUE | C | 6 | X | |
LOTEITEM | LOTE DO ITEM | C | 15 | X | |
DTPRODUCAO | DATA DE PRODUCAO DO ITEM | D | 6 | X | |
DTVALIDADE | DATA DE VALIDADE DO ITEM | D | 6 | X | |
VOLUME | VOLUME DO ITEM | N | 6 | X | |
COMPRIMENT | COMPRIMENTO DO ITEM | N | 6 | X | |
LARGURA | LARGURA DO ITEM | N | 6 | X | |
DIAMETRO | DIAMETRO DO ITEM | N | 6 | X | |
NUMPECA | NUMERO PECA DO ITEM | C | 20 | X | |
NUMSERIE | NUMERO SERIE DO ITEM | C | 20 | X | |
LIVRE_01 | CAMPO TEXTO LIVRE | C | 30 | X | |
LIVRE_02 | CAMPO TEXTO LIVRE | C | 30 | X | |
LIVRE_03 | CAMPO TEXTO LIVRE | C | 30 | X | |
LIVRE_04 | CAMPO TEXTO LIVRE | C | 30 | X | |
LIVRE_05 | CAMPO TEXTO LIVRE | C | 30 | X | |
LIVRE_06 | CAMPO NUMERICO LIVRE | N | 18 | X | |
LIVRE_07 | CAMPO NUMERICO LIVRE | N | 18 | X | |
LIVRE_08 | CAMPO NUMERICO LIVRE | N | 18 | X | |
LIVRE_09 | CAMPO NUMERICO LIVRE | N | 18 | X | |
LIVRE_10 | CAMPO NUMERICO LIVRE | N | 18 | X |
Legenda: C - Char; D - Date; N - Numérico
WMS6082 - Modelos Etiquetas
Exemplo de cadastro de
modeloModelo de
etiquetaEtiqueta para o tipo de impressora Intermec EasyCoder Padrão IPL com protocolo <STX><ETX>.
Bloco de código | ||||
---|---|---|---|---|
| ||||
<STX><ESC>c1<ETX> <STX><ESC>k<ETX> <STX><SI>L709<ETX> <STX><SI>S50<ETX> <STX><SI>d0<ETX> <STX><SI>h0,0;<ETX> <STX><SI>l8<ETX> <STX><SI>I10<ETX> <STX><SI>F20<ETX> <STX><SI>D0<ETX> <STX><SI>T1<ETX> <STX><SI>t0<ETX> <STX><SI>g1,567<ETX> <STX><SI>J0,0,0<ETX> <STX><ESC>P<ETX> <STX>E*;F*;<ETX> <STX>L1;<ETX> <STX>D0;<ETX> <STX>H0;o3226,89;f3;c25;h23;w25;d3,Depositante:;<ETX> <STX>D1;<ETX> <STX>H1;o3225,486;f3;c25;h23;w25;d3,[DEPOSITDES];<ETX> <STX>H2;o3146,94;f3;c25;h23;w25;d3,Item:;<ETX> <STX>H3;o3148,484;f3;c25;h23;w25;d3,[ITDESREDZ];<ETX> <STX>H4;o3071,92;f3;c25;h23;w25;d3,SKU:;<ETX> <STX>H5;o3074,486;f3;c25;h23;w25;d3,[SKUDESREDZ];<ETX> ### A linha abaixo corresponde a impressão do código de barras <STX>B6;o2916,344;f3;c6,0,0,3;h142;w2;r0;i0;d3,<SUB><SUB>101[ITEMDEPOS]<SUB><SUB>B10[LOTEITEM]<SUB><SUB>1<SUB><SUB>C11[DTPRODUCAO];<ETX> ### A linha abaixo corresponde a impressão da linha humano legível. <STX>H7;o2767,435;f3;c2;h1;w1;d3,(01)[ITEMDEPOS](10)[LOTEITEM](11)[DTPRODUCAO];<ETX> <STX>R<ETX> <STX><ESC>E*<CAN><ETX> <STX><RS>1<US>1<ETB><ETX> |
O cadastro de modelos de etiquetas GS1-128 seguirá o padrão atual, exceto quando houver algum atributo [LIVRE_] que deverá executar a lógica a seguir:
- Durante a inclusão ou modificação de comandos de impressão deverá verificar se o atributo utilizado é um dos atributos livres a serem utilizados na impressão de etiquetas GS1-128.
- Caso seja, deverá abrir a tela do protótipo
- Protótipo 1, onde
- na qual deverá ser feito
- efetuado o cadastro da descrição do atributo. Essa
- Esta descrição será utilizada para exibição no WMS6340, na entrada dos atributos complementares da etiqueta.
- A descrição do atributo será gravada na tabela wms_atrib_livre_desc, onde:
- empresa = p_cod_empresa
; - .
- modelo_etiq = modelo etiqueta informado na tela principal
;- .
- atributo = atributo informado na tela principal
;- .
- des_atributo = descrição do atributo informado na tela de descrição do atributo.
- Antes de incluir um novo registro deverá sempre fazer
- efetuar delete para que não fiquem
- permaneçam registros inconsistentes.
- Ao abrir a nova tela deverá fazer um select na tabela wms_atrib_livre_desc para exibir o valor anterior do atributo, caso esteja sendo efetuada uma alteração de registro.
- Efetuar o controle na exclusão do modelo para que os registros da tabela wms_atrib_livre_desc sejam excluídos.
WMS6340 - Geração
EtitquetasEtiqueta Item/SKU (manter apenas o WMS6340, retirar WMS6334 do menu)
Alterar a rotina de impressão de etiquetas para que sejam solicitados em tela os valores para os atributos correspondentes da configuração da etiqueta GS1-128.
EssasEstas informações serão solicitadas quando no cadastro do
modeloModelo de
etiquetaEtiqueta constar algum atributo correspondente.
Após a confirmação do processamento, deverá chamar a função wms6340_controle_informacoes_complementares(), onde:
- Deverá verificar se existem atributos complementares cadastrados para o modelo de etiqueta buscando das tabelas wms_atributo_tip_etiq, wms_modelo_etiq, e wms_comando_impressao_etiq.
- Se o atributo constar na tabela de novos atributos criados no item do WMS6770, deve abrir a tela de input. Nesta função deverá buscar o atributo e descrição do atributo ,
- ; se o atributo for um dos campos livre_ deve buscar a descrição da tabela wms_atrib_livre_desc.
- Abrir a tela do protótipo WMS6340, que deverá conter
- na qual deverão constar as ações Informar, Confirmar e Cancelar. Porém, na abertura da tela deverá vir com
- apresentar a opção informar
- Informar automaticamente.
- Os campos poderão receber valor nulo ou branco, porém, deverão respeitar o tamanho máximo indicado na tabela acima.
- Os campos numéricos, exceto QTDITEMSKU e QTDSKU, deverão ser formatados com zeros a esquerda.
- Os campos tipo data deverão buscar a máscara do cadastro do item, que pode variar em AAMMDD ou DDMMAA (por padrão GS1 o formato é AAMMDD)
- Ao confirmar ou cancelar a entrada dos atributos deve retornar para a tela principal e continuar a impressão.
A função wms6340_imprime_etiquetas() deverá ser alterada para fazer a chamada da função wmsr12_insert_tab_temp_tt_atributo_etiq(), passando os valores gravados no array de informações complementares.
Protótipos de
telasTelas
WMS6082 -
complementoComplemento
Somente o campo
"Descrição atributo
" poderápoderá ser manutenido.
Os demais campos deverão exibir os valores correspondentes da tela principal.
WMS6340
Fluxo do Processo
Inventário com contagem por SKU (endereço possui saldo do SKU) .
- Seleção da atividade via lista pública/particular => Informa endereço contagem => Informa EAN/SKU ou GS1-128 => Informa Quantidade SKU.
Inventário com contagem por SKU (SKU não possui estoque no endereço e tem controle de dimensionais).
Observação: Quando a forma de contagem configurada é por SKU e , se o SKU possui saldo no endereço sendo inventariado, não são solicitados os dimensionais.
- Seleção da atividade via lista pública/particular => Informa endereço contagem => Informa EAN/SKU ou GS1-128 => Informa Palete e Estoque => Informa Cód. Barras SKU ou GS1-128 => Informa Quantidade SKU.
Inventário com contagem por identificação de estoque (identificação que não existe no endereço).
- Seleção da atividade via lista pública/particular => Informa endereço contagem => Informa Etiqueta Estoque => Informa Palete e Estoque => Informa Cód. Barras SKU ou GS1-128 => Informa Quantidade SKU .
Inventário com contagem por identificação de estoque (identificação que existe no endereço para o sistema).
- Seleção da atividade via lista pública/particular => Informa endereço contagem => Informa Etiqueta Estoque => Informa Dimensionais => Informa Quantidade SKU.
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|