01. DADOS GERAIS
Produto: | TOTVS Logística WMS
|
---|---|
Linha de Produto: | Linha Protheus |
Segmento: | Logística |
Módulo: | SIGAWMS - Gestão de Armazenagem |
Função: | - |
País: | Todos Países |
Ticket: | - |
Requisito/Story/Issue (informe o requisito relacionado) : | - |
02. DESCRIÇÃO
Este Ponto de Entrada permite que a operação de um armazém receba os produtos unitizados e realize o processo de conferência do recebimento, sem que haja a necessidade de abrir os invólucros.
03. LOCALIZAÇÃO
Localizado logo após a leitura e a validação do tipo e identificador do unitizador.
04. PARÂMETROS
Nome | Tipo | Descrição |
---|---|---|
cEmbarque | Caractere | Código de montagem da conferência |
cTipUni | Caractere | Tipo do unitizador |
cIdUnit | Caractere | ID do unitizador |
cArmazem | Caractere | Armazém da conferência |
cEndereco | Caractere | Endereço da conferência |
05. RETORNO
Nome | Tipo | Descrição |
---|---|---|
cPrdOri | Caractere | Código do produto origem¹ |
cProduto | Caractere | Código do produto |
cLoteCtl | Caractere | Número de lote do produto |
cSubLote | Caractere | Número de sublote do produto |
nQtConf | Numérico | Quantidade conferida |
¹ Quando não for um produto componente, é o próprio código do produto.
IMPORTANTE!
- Os valores retornados pelo PE devem possuir o mesmo tamanho dos campos correspondentes na tabela DCZ.
- Caso contrário, poderão ser gerados error.logs ou inconsistências na base de dados.
06. VERSÕES
Protheus 12.1.17 ou superiores.
07. OBSERVAÇÃO
Todos os parâmetros são recebidos na User Function via PARAMIXB conforme consta em Execblock / Customização.
08. EXEMPLO
------
#INCLUDE "PROTHEUS.CH"
User Function WV090UNI()
Local cEmbarque := PARAMIXB[1]
Local cTipUni := PARAMIXB[2]
Local cIdUnit := PARAMIXB[3]
Local cArmazem := PARAMIXB[4]
Local cEndereco := PARAMIXB[5]
Local cSeekZZZ := ""
Local nTamPrd := TamSX3("DCZ_PROD" )[1]
Local nTamLot := TamSX3("DCZ_LOTE" )[1]
Local nTamSub := TamSX3("DCZ_SUBLOT")[1]
Local aItensUni := {}
Local aItem := {}
// Busca o documento que faz parte da conferência
DCX→ (DbSetOrder(1))
If DCX→ (DbSeek(xFilial("DCX")+cEmbarque))
cSeekZZZ := xFilial("ZZZ")+DCX->DCX_DOC+DCX->DCX_SERIE+DCX->DCX_FORNEC+DCX->DCX_LOJA+cIdUnit
// Busca na tabela específica todos os itens que fazem parte daquele documento + etiqueta
ZZZ→ (DbSetOrder(1))
ZZZ→ (DbSeek(cSeekZZZ))
While !ZZZ→ (Eof()) .And. ZZZ->ZZZ_FILIAL+ZZZ->ZZZ_DOC+ZZZ->ZZZ_SERIE+ZZZ->ZZZ_FORNEC+ZZZ->ZZZ_LOJA+ZZZ->ZZZ_IDUNIT == cSeekZZZ
// Adiciona o item relacionado à etiqueta no array auxiliar
AAdd(aItem,PadR(ZZZ->ZZZ_PRDORI ,nTamPrd))
AAdd(aItem,PadR(ZZZ->ZZZ_PRODUT ,nTamPrd))
AAdd(aItem,PadR(ZZZ->ZZZ_LOTECTL,nTamLot))
AAdd(aItem,PadR(ZZZ->ZZZ_SUBLOT ,nTamSub))
AAdd(aItem,ZZZ->ZZZ_QUANT)
// Adiciona o item no array principal de retorno
AAdd(aItensUni,aItem)
ZZZ→ (DbSkip())
EndDo
EndIf
Return aItensUni
------