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 monitorar a consulta de endereços para armazenagem do produto.
03. LOCALIZAÇÃO
Localizado na busca de endereços disponíveis para gerar os movimentos de endereçamento.
04. PARÂMETROS
Nome | Tipo | Descrição |
---|---|---|
cProduto | Caractere | Código do produto a ser armazenado |
cLocDest | Caractere | Armazém destino |
cEstDest | Caractere | Estrutura física destino |
cLoteCtl | Caractere | Lote do produto |
cNumLote | Caractere | Sublote do produto |
05. RETORNO
Nome | Tipo | Descrição |
---|---|---|
cAliasSBE | Caractere | Deverá retornar o alias da consulta criada para a busca de endereços |
Para que o processo funcione corretamente, esta consulta deve trazer obrigatoriamente uma estrutura de campos com as seguintes denominações:
Campo | Descrição | Valores |
---|---|---|
ZON_ORDEM | Ordem Zona Armazenagem | 00 - Zona do produto, 01...99 - Zona alternativa |
SLD_ORDEM | Ordem Saldo | 01 - Saldo produto, 02 - Saldo misto, 03 - Saldo outro produto, 99 - Sem saldo |
MOV_ORDEM | Ordem Movimento | 01 - Movimento pendente produto, 99 - Sem movimento pendente |
DCP_PEROCP | Indicador de percentual de ocupação | 0 - Não possui, 1 - Produto, 2 - Genérico, 3 - Outro produto |
PRD_ORDEM | Ordem Produto | 01 - Exclusivo produto, 02 - Qualquer produto |
SLD_PRODUT | Saldo do produto no endereço | Este não deve ser incrementado pelo saldo de rádio frequência (RF) pendente de entrada, o qual deverá estar contido no campo MOV_PRODUT |
MOV_PRODUT | Saldo RF do produto (pendente de entrada) | Campo não obrigatório. Caso exista um campo na consulta com este nome, o seu valor será utilizado para incrementar o saldo presente no endereço; caso contrário, será utilizada a regra padrão para consulta de saldo RF. |
SLD_OUTROS | Saldo de outros produtos no endereço | Este não deve ser incrementado pelo saldo de rádio frequência (RF) pendente de entrada, o qual deverá estar contido no campo MOV_OUTROS |
MOV_OUTROS | Saldo RF de outros produtos (pendente de entrada) | Campo não obrigatório. Caso exista um campo na consulta com este nome, o seu valor será utilizado para incrementar o saldo de outros produtos presente no endereço; caso contrário, será utilizada a regra padrão para consulta de saldo RF. |
BE_LOCALIZ | Endereço | |
BE_CODCFG | Código de configuração do endereço | |
RECNOSBE | Recno da SBE |
06. VERSÕES
Protheus 11.80.13 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 WMSQYEND()
Local aAreaAnt := GetArea()
Local cProduto := PARAMIXB[1]
Local cLocDest := PARAMIXB[2]
Local cEstDest := PARAMIXB[3]
Local cQuery := ""
Local cAliasSBE := GetNextAlias()
Local aTamSX3 := TamSx3('BF_QUANT')
cQuery := "SELECT"
cQuery += " '00' ZON_ORDEM,"
cQuery += " 99 SLD_ORDEM,"
cQuery += " 99 MOV_ORDEM,"
cQuery += " 0 DCP_PEROCP,"
//Se foi informado o produto no endereço ele tem prioridade
cQuery += " CASE WHEN SBE.BE_CODPRO = '"+Space(TamSx3("BE_CODPRO")[1])+"' THEN 2 ELSE 1 END PRD_ORDEM,"
cQuery += " (SELECT SUM(BF_QUANT)"
cQuery += " FROM "+RetSqlName("SBF")
cQuery += " WHERE BF_FILIAL = '"+xFilial("SBF")+"'"
cQuery += " AND BF_LOCAL = '"+cLocDest+"'"
cQuery += " AND BF_ESTFIS = '"+cEstDest+"'"
cQuery += " AND BF_PRODUTO = '"+cProduto+"'"
cQuery += " AND BF_QUANT > 0"
cQuery += " AND BF_LOCAL = SBE.BE_LOCAL"
cQuery += " AND BF_LOCALIZ = SBE.BE_LOCALIZ"
cQuery += " AND D_E_L_E_T_ = ' ') SLD_PRODUT,"
//Pegando as informações do endereço
cQuery += " SBE.BE_LOCALIZ, SBE.BE_CODCFG, SBE.R_E_C_N_O_ RECNOSBE"
cQuery += " FROM "+RetSqlName("SBE")+" SBE"
//Filtros em cima da SBE - Endereços
cQuery += " WHERE SBE.BE_FILIAL = '"+xFilial("SBE")+"'"
cQuery += " AND SBE.BE_LOCAL = '"+cLocDest+"'"
cQuery += " AND (SBE.BE_CODPRO = ' ' OR SBE.BE_CODPRO = '"+cProduto+"')"
cQuery += " AND SBE.BE_ESTFIS = '"+cEstDest+"'"
cQuery += " AND SBE.BE_STATUS <> '3'"
cQuery += " AND SBE.D_E_L_E_T_ = ' '"
//Gerando a ordenação dos endereços
cQuery += " ORDER BY ZON_ORDEM, PRD_ORDEM, SLD_ORDEM, MOV_ORDEM, BE_LOCALIZ"
cQuery := ChangeQuery(cQuery)
DbUseArea(.T.,'TOPCONN',TcGenQry(,,cQuery),cAliasSBE,.F.,.T.)
//-- Ajustando o tamanho dos campos da query
TcSetField(cAliasSBE,'PRD_ORDEM','N',5,0)
TcSetField(cAliasSBE,'SLD_ORDEM','N',5,0)
TcSetField(cAliasSBE,'MOV_ORDEM','N',5,0)
TcSetField(cAliasSBE,'DCP_PEROCP','N',5,0)
TcSetField(cAliasSBE,'SLD_PRODUT','N',aTamSX3[1],aTamSX3[2])
RestArea(aAreaAnt)
Return cAliasSBE
------