Buscando o saldo de um produto com a SaldoSB2 – Maratona AdvPL e TL++ 428

Nesse vídeo demonstraremos a utilização da função SaldoSB2, que serve para buscar o saldo de um produto em um determinado armazém.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe428
Exemplo para retornar o saldo do estoque de um produto
@type Function
@author Atilio
@since 29/03/2023
@obs 
    Função SaldoSB2
    Parâmetros
        Se .T. efetua o cálculo real com as reservas do estoque para encontrar a necessidade
        Se .T. indica se irá subtrair os empenhos
        Data final para considerar os empenhos da SD4
        Se .T. indica se deve considerar saldos de terceiros (B2_QTNP)
        Se .T. indica se deve considerar saldos em terceiros (B2_QNTP)
        Alias que será usada no lugar da SB2 (se for vir de uma query por exemplo)
        Quantidade de Empenho que não deve ser subtraída
        Quantidade empenhada de Projetos que não deve ser subtraída
        Se .T. indica se deve subtrair a reserva do Saldo a ser retornado
        Data limite para composição do saldo (quando MV_TPSALDO é igual a "C")
        Subtrai a quantidade prevista no saldo a ser retornado (quando MV_TPSALDO é igual a "C")
    Retorno
        Retorna o Saldo Atual encontrado na SB2

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe428()
    Local aArea    := FWGetArea()
    Local cProduto := ""
    Local cArmazem := ""
    Local nSaldo   := 0

    //Define os parâmetros que serão usados para pesquisar o saldo
    cProduto := AvKey("F0001", "B1_COD")
    cArmazem := "01"

    //Abre a tabela de produtos
    DbSelectArea("SB2")
    SB2->(DbSetOrder(1)) // B2_FILIAL + B2_COD + B2_LOCAL

    //Posiciona na tabela de saldos
    If SB2->(MsSeek(FWxFilial("SB2") + cProduto + cArmazem))

        //Busca o saldo atual
        nSaldo := SaldoSB2()
        FWAlertInfo("Saldo atual é de: " + cValToChar(nSaldo), "Teste SaldoSB2")
    EndIf

    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação