No vídeo de hoje, vamos demonstrar em como criar um registro na tabela de filiais (SM0 / SYS_COMPANY) através de um ExecAuto em MVC.
A dúvida de hoje, nos perguntaram, se era possível criar filiais (tabela SM0 / SYS_COMPANY), via código fonte.
Pensando nisso, montamos um exemplo, onde vamos mostrar em como fazer essa inclusão via ExecAuto MVC carregando o modelo da rotina APCFG230 e definindo os campos da SIGAMAT_XX8 e SIGAMAT_SM0.
Segue abaixo o vídeo exemplificando:
E abaixo o código fonte desenvolvido:
//Bibliotecas
#Include "TOTVS.ch"
#Include "FWMVCDef.ch"
/*/{Protheus.doc} User Function zVid0181
Exemplo de ExecAuto do cadastro de Filiais (SM0 / SYS_COMPANY)
@type Function
@author Atilio
@since 26/06/2024
@example u_zVid0181()
/*/
User Function zVid0181()
Local aArea := FWGetArea()
Local oModel
Local oModelXX8
Local oModelSM0
Local lDeuCerto := .F.
Local aErro := {}
//Pegando o modelo de dados, setando a operação de inclusão
oModel := FWLoadModel("APCFG230")
oModel:SetOperation(MODEL_OPERATION_INSERT)
oModel:Activate()
//Define os campos do cabeçalho
oModelXX8 := oModel:GetModel("SIGAMAT_XX8")
oModelXX8:SetValue("XX8_GRPEMP", "99" ) //Grupo de Empresas
oModelXX8:SetValue("XX8_CODIGO", "03" ) //Código da Filial
oModelXX8:SetValue("XX8_DESCRI", "Filial de Teste" ) //Descrição da FIlial
//Define os campos das abas abaixo
oModelSM0 := oModel:GetModel("SIGAMAT_SM0")
oModelSM0:SetValue("M0_NOMECOM", "Filial Teste em Bauru")
oModelSM0:SetValue("M0_TEL", "14 91234 5678")
oModelSM0:SetValue("M0_ENDENT", "Rua de Teste 3-21")
oModelSM0:SetValue("M0_BAIRENT", "Jardim de Teste")
oModelSM0:SetValue("M0_CIDENT", "Bauru")
oModelSM0:SetValue("M0_ESTENT", "SP")
//Se conseguir validar as informações e realizar o commit
If oModel:VldData() .And. oModel:CommitData()
lDeuCerto := .T.
//Se não conseguir validar as informações, altera a variável para false
Else
lDeuCerto := .F.
EndIf
//Se não deu certo a inclusão, mostra a mensagem de erro
If ! lDeuCerto
//Busca o Erro do Modelo de Dados
aErro := oModel:GetErrorMessage()
//Monta o Texto que será mostrado na tela
AutoGrLog("Id do formulário de origem:" + ' [' + AllToChar(aErro[01]) + ']')
AutoGrLog("Id do campo de origem: " + ' [' + AllToChar(aErro[02]) + ']')
AutoGrLog("Id do formulário de erro: " + ' [' + AllToChar(aErro[03]) + ']')
AutoGrLog("Id do campo de erro: " + ' [' + AllToChar(aErro[04]) + ']')
AutoGrLog("Id do erro: " + ' [' + AllToChar(aErro[05]) + ']')
AutoGrLog("Mensagem do erro: " + ' [' + AllToChar(aErro[06]) + ']')
AutoGrLog("Mensagem da solução: " + ' [' + AllToChar(aErro[07]) + ']')
AutoGrLog("Valor atribuído: " + ' [' + AllToChar(aErro[08]) + ']')
AutoGrLog("Valor anterior: " + ' [' + AllToChar(aErro[09]) + ']')
//Mostra a mensagem de Erro
MostraErro()
EndIf
//Desativa o modelo de dados
oModel:DeActivate()
FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.