Histórico da Página
...
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.
...
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 e 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
...
language | xml |
---|---|
title | Exemplo |
linenumbers | true |
collapse | true |
...
------
#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
Templatedocumentos |
---|
HTML |
---|
<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> |