Olá pessoal…
Hoje vou mostrar um exemplo de como criar Saldo Inicial via AdvPL (tabela SB9).
Algumas vezes precisamos criar um Saldo Inicial para um produto em um armazém, e através do execauto da Mata220 isso é possível.
Foi criado uma função que recebe por parâmetro o Produto, o Armazém e o Saldo.
//Bibliotecas
#Include "Protheus.ch"
/*/{Protheus.doc} zGeraB9
Função que gera saldo inicial
@author Daniel Atilio
@since 16/02/2015
@version 1.0
@param cCodProd, Caracter, Código do Produto
@param cArmazem, Caracter, Código do Armazém
@param nQuant, Numérico, Quantidade do saldo inicial
@example
u_zGeraB9("00000001", "01", 3000)
/*/
User Function zGeraB9(cCodProd, cArmazem, nQuant)
Local aArea := GetArea()
DbSelectArea("SB9")
DbSetOrder(1) //B9_FILIAL+B9_COD+B9_LOCAL+DTOS(B9_DATA)
//Setando valores da rotina automática
lMsErroAuto := .F.
aVetor :={;
{"B9_FILIAL" ,cFilAnt ,Nil},;
{"B9_COD" ,cCodProd ,Nil},;
{"B9_LOCAL" ,cArmazem ,Nil},;
{"B9_QINI" ,nQuant ,Nil}}
//Iniciando transação e executando saldos iniciais
Begin Transaction
MSExecAuto({|x,y| Mata220(x,y)}, aVetor)
//Se houve erro, mostra mensagem
If lMsErroAuto
lHouveErro := .T.
MostraErro()
DisarmTransaction()
EndIf
End Transaction
RestArea(aArea)
Return
Dessa forma, você consegue fazer um for, um while ou várias chamadas para criar o saldo inicial de vários produtos.
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Boa tarde, legal Dan talvez seja interessante colocar o custo também.
Bom dia Rone.
Ok, vou adicionar aqui nas sugestões. Obrigado pelo feedback.
Um grande abraço.
Esse função poderia ser utilizada dentro de um ponto de entrada?
Sim, é só você chamar ela com u_zGeraB9 passando os parâmetros necessários.
Grande abraço.
Tem como ser acionado no mometo que finaliza um cadastro de produto e ai sim criar o saldo inicia desse produto cadastrado
Bom dia Mauro, tudo joia?
Sim, é possível.
Crie o ponto de entrada “ITEM” (esse é o nome do p.e. MVC do cadastro de produtos MATA010).
Dentro dele use o trecho “MODELCOMMITNTTS” que é após a gravação do produto. Ai dentro dele, você testa a variável INCLUI, se ela tiver .T., é uma inclusão, ai você aciona a u_zGeraSB9().
Ai se for o caso, você pode usar o Autumn para gerar o molde do fonte, segue vídeo de exemplo: https://youtu.be/iR3F8kJ4rUc
Você pode usar também a função a120ChkAlmox, conforme exemplo nesse link: https://terminaldeinformacao.com/2024/01/10/como-acionar-a-criacao-da-sb2-para-varios-produtos-via-a120chkalmox/
Tenha uma ótima e abençoada sexta feira.
Um grande abraço.