Rotina automática do cadastro de Produtos em MVC
Exemplo da Rotina:
FWMVCRotAuto(oModel, "SB1", nOperation, {{"SB1MASTER", aFields}} ,,.T.)
Exemplo 1- Incluindo um produto:
//Pegando o modelo de dados, setando a operação de inclusão
oModel := FWLoadModel("MATA010")
oModel:SetOperation(3)
oModel:Activate()
//Pegando o model e setando os campos
oSB1Mod := oModel:GetModel("SB1MASTER")
oSB1Mod:SetValue("B1_COD" , cCod )
oSB1Mod:SetValue("B1_DESC" , cDesc )
oSB1Mod:SetValue("B1_TIPO" , cTipo )
oSB1Mod:SetValue("B1_UM" , cUM )
oSB1Mod:SetValue("B1_LOCPAD" , cLocPad )
//Setando o complemento do produto
oSB5Mod := oModel:GetModel("SB5DETAIL")
If oSB5Mod != Nil
oSB5Mod:SetValue("B5_CEME" , cCEME )
EndIf
//Se conseguir validar as informações
If oModel:VldData()
//Tenta realizar o Commit
If oModel:CommitData()
lOk := .T.
//Se não deu certo, altera a variável para false
Else
lOk := .F.
EndIf
//Se não conseguir validar as informações, altera a variável para false
Else
lOk := .F.
EndIf
//Se não deu certo a inclusão, mostra a mensagem de erro
If ! lOk
//Busca o Erro do Modelo de Dados
aErro := oModel:GetErrorMessage()
//Monta o Texto que será mostrado na tela
cMessage := "Id do formulário de origem:" + ' [' + cValToChar(aErro[01]) + '], '
cMessage += "Id do campo de origem: " + ' [' + cValToChar(aErro[02]) + '], '
cMessage += "Id do formulário de erro: " + ' [' + cValToChar(aErro[03]) + '], '
cMessage += "Id do campo de erro: " + ' [' + cValToChar(aErro[04]) + '], '
cMessage += "Id do erro: " + ' [' + cValToChar(aErro[05]) + '], '
cMessage += "Mensagem do erro: " + ' [' + cValToChar(aErro[06]) + '], '
cMessage += "Mensagem da solução: " + ' [' + cValToChar(aErro[07]) + '], '
cMessage += "Valor atribuído: " + ' [' + cValToChar(aErro[08]) + '], '
cMessage += "Valor anterior: " + ' [' + cValToChar(aErro[09]) + ']'
//Mostra mensagem de erro
lRet := .F.
ConOut("Erro: " + cMessage)
Else
lRet := .T.
ConOut("Produto incluido!")
EndIf
//Desativa o modelo de dados
oModel:DeActivate()
Exemplo 2- Excluindo um produto:
//Pegando o modelo de dados, setando os campos
oModel := FWLoadModel("MATA010")
aFields := {}
aAdd(aFields, {"B1_COD", cCod, Nil})
//Se conseguir executar a operação automática
If FWMVCRotAuto(oModel, "SB1", 5, {{"SB1MASTER", aFields}} ,,.T.)
lOk := .T.
Else
lOk := .F.
EndIf
//Se não deu certo a inclusão, mostra a mensagem de erro
If ! lOk
//Busca o Erro do Modelo de Dados
aErro := oModel:GetErrorMessage()
//Monta o Texto que será mostrado na tela
cMessage := "Id do formulário de origem:" + ' [' + cValToChar(aErro[01]) + '], '
cMessage += "Id do campo de origem: " + ' [' + cValToChar(aErro[02]) + '], '
cMessage += "Id do formulário de erro: " + ' [' + cValToChar(aErro[03]) + '], '
cMessage += "Id do campo de erro: " + ' [' + cValToChar(aErro[04]) + '], '
cMessage += "Id do erro: " + ' [' + cValToChar(aErro[05]) + '], '
cMessage += "Mensagem do erro: " + ' [' + cValToChar(aErro[06]) + '], '
cMessage += "Mensagem da solução: " + ' [' + cValToChar(aErro[07]) + '], '
cMessage += "Valor atribuído: " + ' [' + cValToChar(aErro[08]) + '], '
cMessage += "Valor anterior: " + ' [' + cValToChar(aErro[09]) + ']'
//Mostra mensagem de erro
lRet := .F.
ConOut("Erro: " + cMessage)
Else
lRet := .T.
ConOut("Produto excluido")
EndIf
//Desativa o modelo de dados
oModel:DeActivate()
Observações:
– Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
– Se tiver sugestões de rotinas, pode entrar em contato;