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
Nome | Tipo | Descrição |
---|---|---|
cArmazem | Caractere | Armazém para o qual está sendo solicitado saldo. |
cEndereco | Caractere | Endereço para o qual está sendo solicitado saldo.¹ |
cProduto | Caractere | Produto para o qual está sendo solicitado saldo. |
cPrdOri | Caractere | Produto origem para o qual está sendo solicitado saldo. |
cLoteCtl | Caractere | Lote para o qual está sendo solicitado o saldo.¹ |
cNumLote | Caractere | Sublote para o qual está sendo solicitado o saldo.¹ |
lCnsPkgFut | Lógico | Indica se deve ser considerado Entradas Previstas no calculo do saldo disponível. |
cCodCli | Caractere | Có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 |
---|---|---|
cAliasD14 | Caractere | Deverá 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:
Campo | Valor |
---|---|
DC3_ORDEM | Ordem da estrutura na sequência de abastecimento do produto. |
D14_ENDER | Código do endereço |
D14_ESTFIS | Código da estrutura física |
D14_LOTECT | Lote |
D14_NUMLOT | Sublote |
D14_DTVALD | Data de validade do lote² |
D14_NUMSER | Número de série |
D14_QTDLIB | Quantidade disponível em estoque |
D14_SALDO | Quantidade disponível em estoque, descontando a saída prevista |
D14_QTDSPR | Quantidade de saída prevista |
D14_IDUNIT | Identificador do unitizador |
D14_CODUNI | Código do tipo de unitizador |
BE_STATUS | Status 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