Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


01. DADOS GERAIS

Produto:

Solucoes_totvs
SolucaoTOTVS Logística WMS

Solucoes_totvs_cross
SolucaoCross

Solucoes_totvs_parceiros
SolucaoParceiros

Solucoes_totvs_parceirosexptotvs
SolucaoParcsExpsTOTVS

Linha de Produto:

Linhas_totvs
LinhaLinha Protheus

Segmento:

Segmentos_totvs
SegmentoLogí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 na função que efetua a busca dos endereços disponíveis para expedição.

04. PARÂMETROS

NomeTipo

Descrição

cProdutoCaractereProduto para o qual está sendo solicitado saldo.
cArmazémCaractere

Armazém para o qual está sendo solicitado saldo

cEstruturaCaractere

Estrutura física para a qual está sendo solicitado saldo.
* Pode receber Vazio caso a Regra WMS seja igual a 4.

nRegraWMSNuméricoTipo de regra WMS utilizada na ordem de serviço.

05. RETORNO

Nome

Tipo

Descrição

cAliasSldCaractereDeverá 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

BF_LOCALIZ

Código do Endereço
BF_LOTECTLLote
B8_DTVALIDData de Validade *
BF_NUMLOTESub-Lote
BF_NUMSERINúmero de Série
BF_SALDOSaldo Disponível **
BF_QTDSPRSaldo RF Saída ***
BF_ESTFISEstrutura Física
RECNOSBFRecno da SBF

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

** O saldo disponível não deve descontar saldo de radiofrequência (RF) pendente de saída; este desconto deve ser efetuado no campo BF_QTDSPR (Quantidade Saída Prevista).

*** Se existir um campo na consulta com este nome, indica que deverá descontar o saldo RF pendente de saída com base na consulta; caso o campo não exista na consulta, será utilizada a regra padrão para desconto de saldo RF.

A execução da consulta de saldo no processo de expedição pode ser executada várias vezes, uma para cada estrutura da sequência de abastecimento, ou então, apenas uma vez, quando o tipo da regra WMS utilizada na separação é do tipo 4 - Data de Validade. Isto poderá ser determinado pelo parâmetro recebido.

06. VERSÕES

11.8.10 e versões superiores.

07. OBSERVAÇÃO

Caso este Ponto de Entrada seja utilizado, os Pontos de Entrada WMSFIFO e WMSFIFO2 não serão disparados.

Todos os parâmetros são recebidos na User Function via PARAMIXB, conforme consta em Execblock / Customização.

08. EXEMPLO

Bloco de código
languagecpp
titleExemplo
linenumberstrue
User Function WMSQYSEP()
Local cProduto  := PARAMIXB[1]
Local cArmazem  := PARAMIXB[2]
Local cEstFis   := PARAMIXB[3]
Local nRegraWMS := PARAMIXB[4]
Local cQuery    := ""
Local cAliasSld := GetNextAlias()
Local lRastro   := Rastro(cProduto)
Local lRadioF   := (SuperGetMV('MV_RADIOF')=='S') 
Local aTamSX3   := TamSx3("BF_QUANT")
   //-- Query não possui o campo BF_QTDSPR, saldo será descontado pelo padrão
   cQuery := "SELECT SBF.BF_ESTFIS,SBF.BF_LOCALIZ,"
   cQuery +=       " SBF.BF_LOTECTL,SBF.BF_NUMLOTE,SBF.BF_NUMSERI,"
   cQuery +=       " SBF.R_E_C_N_O_ AS RECNOSBF,"
   cQuery +=       " (SBF.BF_QUANT - SBF.BF_EMPENHO) BF_SALDO,"
   If lRastro
      cQuery +=   " SB8.B8_DTVALID"
   Else
      cQuery +=   " '        ' B8_DTVALID"
   EndIf
   cQuery += " FROM "+RetSqlName("SBF")+" SBF"
   If lRastro
      cQuery += " INNER JOIN "+RetSqlName("SB8")+" SB8"
      cQuery +=    " ON SB8.B8_FILIAL  = '"+xFilial("SB8")+"'"
      cQuery +=   " AND SB8.B8_PRODUTO = SBF.BF_PRODUTO"
      cQuery +=   " AND SB8.B8_LOCAL   = SBF.BF_LOCAL"
      cQuery +=   " AND SB8.B8_LOTECTL = SBF.BF_LOTECTL"
      cQuery +=   " AND SB8.B8_NUMLOTE = SBF.BF_NUMLOTE"
      cQuery +=   " AND SB8.B8_SALDO > 0"
      cQuery +=   " AND SB8.D_E_L_E_T_ = ' '"
   EndIf
	cQuery += " WHERE SBF.BF_FILIAL  = '"+xFilial("SBF")+"'"
	cQuery +=   " AND SBF.BF_LOCAL   = '"+cArmazem+"'"
	cQuery +=   " AND SBF.BF_PRODUTO = '"+cProduto+"'"
	cQuery +=   " AND SBF.BF_QUANT > 0"
	cQuery +=   " AND (SBF.BF_QUANT - SBF.BF_EMPENHO) > 0"
	cQuery +=   " AND SBE.BE_STATUS <> '3'"  //-- Não pode estar bloqueado
	If nRegraWMS <> 4
		cQuery += " AND SBF.BF_ESTFIS = '"+cEstFis+"'"
	EndIf
	cQuery +=   " AND SBF.D_E_L_E_T_ = ' '"
	cQuery := ChangeQuery(cQuery)
	DbUseArea(.T.,'TOPCONN',TcGenQry(,,cQuery),cAliasSld,.F.,.T.)
	//-- Ajustando o tamanho dos campos da query
	TcSetField(cAliasSld,'BF_SALDO', 'N',aTamSX3[1],aTamSX3[2])
	TcSetField(cAliasSld,'B8_DTVALID','D',8,0)
	TcSetField(cAliasSld,'RECNOSBF', 'N',10,0)
	
Return cAliasSld


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>