Produto: | |
---|---|
Linha de Produto: | |
Segmento: | |
Módulo: | SIGAWMS - Gestão de Armazenagem |
Função: | - |
País: | Todos Países |
Ticket: | - |
Requisito/Story/Issue (informe o requisito relacionado) : | - |
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.
Localizado no método da classe WMSBCCSeparacao, que efetua a busca dos endereços disponíveis para expedição.
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.
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.
Protheus 12.1.17 ou superiores.
Todos os parâmetros são recebidos na User Function via PARAMIXB, conforme consta em Execblock / Customização.
------
#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
<style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } .aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after { background: #FF9900; !important } .menu-item.active-tab { border-bottom: none !important; } </style> |