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. |
¹ 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 |
² A data de validade somente se aplica aos produtos que controlam lote; nos demais casos poderá ser retornado espaço em branco neste campo.
12.1.17 e 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 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_QTPEPR-(D14_QTDEMP+D14_QTDBLQ )) D14_QTDLIB," cQuery += " (D14_QTDEST+D14_QTPEPR-(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 += " 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 += " 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> |