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.