Usar função CalcEst para múltiplas filiais

Olá pessoal

Estou utilizando a função CalcEst junto com uma query para obter o custo médio e o valor em estoque dos produtos em uma data retroativa. Porém percebi que a função só retorna os dados para a filial atual logada. Mesmo eu especificando diferentes filiais nos argumentos da chamada da função. Segue um trecho de código de teste que faço a chamada da função para diferentes filiais conforme a query:

// Query

BeginSql Alias 'QRY'
        SELECT B2_FILIAL AS FILIAL, B2_COD AS PRODUTO, B2_LOCAL AS ARMAZEM, B1_DESC AS DESCRICAO, B1_TIPO AS TIPO, B1_GRUPO AS GRUPO, B1_UM AS UM, B2_QATU AS EST_ATUAL, B2_CM1 AS CUSTO_MEDIO, B2_VATU1 AS VALOR_EST
        FROM %table:SB2% SB2
        LEFT JOIN %table:SB1% SB1 ON SB1.%NotDel% AND B1_COD = B2_COD

        WHERE SB2.%NotDel%  
        AND B1_TIPO IN ('MP', 'PA', 'RV')
        AND B1_GRUPO = '0003'
        ORDER BY B2_COD, B2_LOCAL, B2_FILIAL
EndSql
// Insere as linhas na tabela Excel
    WHILE !QRY->(EOF())

        aSaldos := CalcEst(QRY->PRODUTO, QRY->ARMAZEM, CToD('01/07/2024') + 1, QRY->FILIAL)

        // Obtém os saldos e o custo somente de produtos com estoque positivo até a data informada
        if aSaldos[1] >= 0.1 
            nQtd := aSaldos[1]
            nValEst := aSaldos[2]
            nCustoMed := nValEst / nQtd

            oExcel:AddRow(cNomePlan, cNomeTab, {QRY->FILIAL, QRY->ARMAZEM, QRY->TIPO, QRY->GRUPO, QRY->PRODUTO, QRY->DESCRICAO, QRY->UM, nQtd, nCustoMed, nValEst})
        endif

        QRY->(DBSKIP())
    ENDDO

O resultado final traz as informações corretas, exceto quando os produtos possuem mais de uma filial. Quando possui mais de uma filial, as informações são duplicadas para as mesmas da filial logada (Ex: filial 01), dando a entender que a função CalcEst só retorna os resultados para a filial logada.

Alguma sugestão para isso? Como utilizar a CalcEst para obter as informações para diferentes filiais? O objetivo é reunir as informações dos saldos e custos por filial em uma planilha excel.

compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags advpl ou faça a sua própria pergunta.