Nesse vídeo demonstraremos a utilização da função SB8Saldo, que serve para buscar o saldo de um lote de um produto no sistema.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zExe431 Exemplo para retornar o saldo do estoque de um produto de um lote específico @type Function @author Atilio @since 30/03/2023 @obs Função SB8Saldo Parâmetros Flag .T. ou .F. para considerar empenho Flag .T. ou .F. para considerar lotes vencidos Flag .T. ou .F. para considerar saldo a classificar Flag .T. ou .F. se deve calcular na segunda unidade de medida Alias que será considerado para buscar o lote Flag .T. ou .F. que indica se esta baixando empenho previsto Flag .T. ou .F. se é uma consulta de saldo Data de Referência para compor o Saldo Flag .T. ou .F. que indica se considera apenas o campo B8_SALDO Código da Ordem de Produção Retorno Retorna o Saldo encontrado no lote na SB8 **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe431() Local aArea := FWGetArea() Local lQtdPrev := .F. Local cQuery := "" Local cCodProd := "" Local cLoteCtl := "" Local nSaldo := 0 //Pegando conteúdo do parâmetro lQtdPrev := GetMV("MV_QTDPREV") == "S" //Define o produto e o lote que serão buscados cCodProd := "A0002" cLoteCtl := "AUTO000001" //Criando a consulta que irá buscar os dados do Produto cQuery := " SELECT " cQuery += " * " cQuery += " FROM " cQuery += " " + RetSqlName('SB8') + " SB8 " cQuery += " WHERE " cQuery += " B8_FILIAL = '" + FWxFilial('SB8') + "' " cQuery += " AND B8_PRODUTO = '" + cCodProd + "' " cQuery += " AND B8_LOTECTL = '" + cLoteCtl + "' " cQuery += " AND SB8.D_E_L_E_T_ = ' ' " PLSQuery(cQuery, 'QRY_SB8') //Se houver dados da consulta If ! QRY_SB8->(EoF()) //Percorre todas as linhas da query While ! QRY_SB8->(EoF()) //Pega o saldo nSaldo += SB8Saldo(Nil, Nil, Nil, Nil, "QRY_SB8", lQtdPrev, .T.) QRY_SB8->(DbSkip()) EndDo FWAlertInfo("O saldo encontrado foi de " + cValToChar(nSaldo), "Teste SB8Saldo") EndIf QRY_SB8->(DbCloseArea()) FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.