#INCLUDE 'RWMAKE.CH'
#INCLUDE 'TBICONN.CH'
#INCLUDE 'PROTHEUS.CH'
#INCLUDE 'FWMVCDEF.CH'
User Function U_MyMata061()
alert("Rutina automatica modificar e inlcuir MATA061")
Local nLenProd := 0 //-- Controle de tamanho de campo de produto
Local lOk := .T. //-- Controle de validação e commit
Local aErro := {} //-- Recebe msg de erro de processamento
Local oModel061 := NIL //-- Modelo de Dados Mata061
Local oModelGrid:= NIL //-- Modelo de Dados Grid
Local cProd := "PRODXPROV" //-- Produto a ser alterado
Local cForn := "" //-- Fornecedor posiciondo
Local cLoja := "" //-- Loja do Fornecedor posicionado
Local cForn01 := "000001" //-- Fornecedor a ser alterado
Local cLoja01 := "01" //-- Loja do Fornecedor a ser alterado
Local cForn02 := "000002" //-- Fornecedor a ser excluido
Local cLoja02 := "01" //-- Loja do Fornecedor a ser excluido
Local nX := 0
nLenProd := TamSX3("A5_PRODUTO")[1] //-- Obtem tamanho do campo A5_PRODUTO
DbSelectArea("SA5")
SA5->(DbSetOrder(2)) //-- A5_FILIAL+A5_PRODUTO+A5_FORNECE+A5_LOJA
// Posiciona na amarração
If SA5->(DbSeek(xFilial("SA5") + Padr(cProd, nLenProd) + cForn01 + cLoja01))
//-- Carrega o modelo de dados e seleciona a operação de aprovação (UPDATE)
oModel061 := FWLoadModel('MATA061')
oModel061:SetOperation( MODEL_OPERATION_UPDATE ) // Alteração
oModel061:Activate()
oModelGrid := oModel061:GetModel('MdGridSA5')
// Percorre a Grid para posicionar os itens a alterar e excluir
For nX := 1 to oModelGrid:Length()
oModelGrid:GoLine(nX)
If !oModelGrid:Isdeleted() //Verifica se a linha está deletada
cForn := oModelGrid:GetValue('A5_FORNECE')
cLoja := oModelGrid:GetValue('A5_LOJA')
// Verifica se é o Fornecedor a alterar
If cForn+cLoja == cForn01+cLoja01
oModelGrid:SetValue('A5_CODPRF','Teste alteração') // Altera campo
Endif
// Verifica se é o Fornecedor a excluir
If cForn+cLoja == cForn02+cLoja02
oModelGrid:DeleteLine() // Deleta linha do Fornecedor
Endif
EndIf
Next nX
//-- Valida o formulário
lOk := oModel061:VldData()
If lOk
//-- Se validou, grava o formulário
lOk := oModel061:CommitData()
EndIf
//-- Avalia erros
If !lOk
//-- Busca o Erro do Modelo de Dados
aErro := oModel061: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
oModel061:DeActivate()
Else
MsgInfo("Documento não encontrado!", "MyExec061")
EndIf
//-- Finaliza o ambiente
RESET ENVIRONMENT
Return Nil
0 Comentarios