Árvore de páginas


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 é responsável por montar a consulta que obterá todos os endereços com saldo disponível para efetuar o processo de expedição.

03. LOCALIZAÇÃO

Localizado no método da classe WMSBCCSeparacao, que efetua a busca dos endereços disponíveis para expedição.

04. PARÂMETROS

NomeTipo

Descrição

cArmazemCaractere

Armazém para o qual está sendo solicitado saldo.

cEnderecoCaractere

Endereço para o qual está sendo solicitado saldo.¹

cProdutoCaractereProduto para o qual está sendo solicitado saldo.
cPrdOriCaractereProduto origem para o qual está sendo solicitado saldo.
cLoteCtlCaractere

Lote para o qual está sendo solicitado o saldo

cNumLoteCaractereSublote para o qual está sendo solicitado o saldo
lCnsPkgFutLógicoIndica se deve ser considerado Entradas Previstas no calculo do saldo disponível.
cCodCliCaractereCódigo do cliente da Ordem de Serviço executada.

¹ Somente estará preenchido quando for informado no Pedido de Venda.

05. RETORNO

Nome

Tipo

Descrição

cAliasD14CaractereDeverá retornar o alias da consulta criada para a busca de saldo.

Para que o processo funcione corretamente, esta consulta deve trazer, obrigatoriamente, uma estrutura de campos com as seguintes denominações:

CampoValor

DC3_ORDEM

Ordem da estrutura na sequência de abastecimento do produto.
D14_ENDERCódigo do endereço
D14_ESTFISCódigo da estrutura física
D14_LOTECTLote
D14_NUMLOTSublote
D14_DTVALDData de validade do lote²
D14_NUMSERNúmero de série
D14_QTDLIBQuantidade disponível em estoque
D14_SALDOQuantidade disponível em estoque, descontando a saída prevista
D14_QTDSPRQuantidade de saída prevista
D14_IDUNITIdentificador do unitizador
D14_CODUNICódigo do tipo de unitizador
BE_STATUSStatus do endereço

² A data de validade somente se aplica aos produtos que controlam lote; nos demais casos poderá ser retornado espaço em branco neste campo.

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 WMSQYSEP()
Local cArmazem := PARAMIXB[1]
Local cEndereco := PARAMIXB[2]
Local cProduto := PARAMIXB[3]
Local cPrdOri := PARAMIXB[4]
Local cLoteCtl := PARAMIXB[5]
Local cNumLote := PARAMIXB[6]
Local lCnsPkgFut := PARAMIXB[7]
Local cCodCli := PARAMIXB[8]
Local cQuery := ""
Local cAliasD14 := GetNextAlias()
Local aTamSX3 := TamSx3("D14_QTDEST")

cQuery := "SELECT DC3_ORDEM,"
cQuery += " D14_ENDER,"
cQuery += " D14_ESTFIS,"
cQuery += " D14_LOTECT,"
cQuery += " D14_NUMLOT,"
cQuery += " D14_DTVALD,"
cQuery += " D14_NUMSER,"

If lCnsPkgFut == .T.
           cQuery += " (D14_QTDEST+D14_QTDEPR-(D14_QTDEMP+D14_QTDBLQ )) D14_QTDLIB,"
           cQuery += " (D14_QTDEST+D14_QTDEPR-(D14_QTDEMP+D14_QTDBLQ+D14_QTDSPR)) D14_SALDO,"
Else
           cQuery += " (D14_QTDEST-(D14_QTDEMP+D14_QTDBLQ)) D14_QTDLIB,"
           cQuery += " (D14_QTDEST-(D14_QTDEMP+D14_QTDBLQ+D14_QTDSPR)) D14_SALDO,"
EndIf

cQuery += " D14_QTDSPR,"
cQuery += " D14_IDUNIT,"
cQuery += " D14_CODUNI,"
cQuery += " BE_STATUS"
cQuery += " FROM "+RetSqlName("D14")+" D14"
cQuery += " INNER JOIN "+RetSqlName("DC3")+" DC3"
cQuery += " ON DC3.DC3_FILIAL = '"+xFilial("DC3")+"'"
cQuery += " AND DC3.DC3_LOCAL = D14.D14_LOCAL"
cQuery += " AND DC3.DC3_CODPRO = D14.D14_PRODUT"
cQuery += " AND DC3.DC3_TPESTR = D14.D14_ESTFIS"
cQuery += " AND DC3.D_E_L_E_T_ = ' '"
cQuery += " INNER JOIN "+RetSqlName("DC8")+" DC8"
cQuery += " ON DC8.DC8_FILIAL = '"+xFilial("DC8")+"'"
cQuery += " AND DC8.DC8_CODEST = D14.D14_ESTFIS"
cQuery += " AND DC8.DC8_TPESTR ('1','2','3','4','6')"
cQuery += " AND DC8.D_E_L_E_T_ = ' '"
cQuery += " INNER JOIN "+RetSqlName("SBE")+" SBE"
cQuery += " ON SBE.BE_FILIAL  = '"+xFilial("SBE")+"'"
cQuery += " AND SBE.BE_LOCAL   = D14.D14_LOCAL"
cQuery += " AND SBE.BE_LOCALIZ = D14.D14_ENDER"
cQuery += " AND SBE.D_E_L_E_T_ = ' '"
cQuery += " WHERE D14.D14_FILIAL = '"+xFilial("D14")+"'"
cQuery += " AND D14.D14_LOCAL = '"+cArmazem+"'"
cQuery += " AND D14.D14_PRODUT = '"+cProduto+"'"
cQuery += " AND D14.D14_PRDORI = '"+cPrdOri+"'"

// Se foi informado endereço, lote e/ou sublote na inclusão do pedido
If !Empty(cEndereco)
         cQuery += " AND D14.D14_ENDER = '"+cEndereco+"'"
EndIf

If !Empty(cLoteCtl)
         cQuery += " AND D14.D14_LOTECT = '"+cLoteCtl+"'"
EndIf

If !Empty(cNumLote)
         cQuery += " AND D14.D14_NUMLOT = '"+cNumLote+"'"
EndIf

cQuery += " AND (D14.D14_QTDEST-(D14.D14_QTDEMP+D14.D14_QTDBLQ)) > 0"
cQuery += " AND D14.D_E_L_E_T_ = ' '"
cQuery := ChangeQuery(cQuery)

DbUseArea(.T.,'TOPCONN',TcGenQry(,,cQuery),cAliasD14,.F.,.T.)
// Ajustando o tamanho dos campos da query
TcSetField(cAliasD14,'D14_DTVALD','D')
TcSetField(cAliasD14,'D14_QTDLIB','N',aTamSX3[1],aTamSX3[2])
TcSetField(cAliasD14,'D14_QTDSPR','N',aTamSX3[1],aTamSX3[2])
TcSetField(cAliasD14,'D14_QTDPEM','N',aTamSX3[1],aTamSX3[2])
TcSetField(cAliasD14,'D14_SALDO' ,'N',aTamSX3[1],aTamSX3[2])

Return cAliasD14