01. DADOS GERAIS
Produto: | TOTVS Backoffice |
---|---|
Linha de Produto: | Linha Protheus |
Segmento: | Backoffice |
Módulo: | SIGATMK - Call Center |
Função: | TMKA030 - Acessórios |
Abrangências: | Microsiga Protheus 12 |
Versões: | Microsiga Protheus 12 |
Compatível Países: | Todos |
Sistemas Operacionais: | Todos |
Compatível com as Bases de Dados: | Todos |
Nível de Acesso: | Nível 1 (Acesso Clientes) |
Idiomas: | Todos |
02. SITUAÇÃO/REQUISITO
Função utilizada para manutenção do cadastro de Acessórios via rotina automática (ExecAuto - MVC).
03. EXEMPLOS
Este é o exemplo básico para a execução da Rotina Automática de Acessórios no processo de Inclusão:
#INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" #INCLUDE "FWMVCDEF.CH" #Include "RWMAKE.CH" User Function MyTmka030() Local oModel := Nil Local oSUGMod := Nil Local oSU1Mod := Nil Local oSUGStruct := Nil Local oSU1Struct := Nil local aCpoSUG := {} local aCpoSU1 := {} local aAux := {} Local lRet := .T. Local lAux := .T. Local nItErro := 0 Local nI := 0 Local nJ := 0 //**************************************************************** //* Abertura do ambiente //**************************************************************** PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" MODULO "TMK" oModel := FWLoadModel('TMKA030') oModel:SetOperation( MODEL_OPERATION_INSERT ) //Seta a operação de inserção oModel:Activate() //Dados do Produto oSUGMod := oModel:GetModel( "SUGMASTER" ) oSUGStruct := oSUGMod:GetStruct() aAux := oSUGStruct:GetFields() aAdd( aCpoSUG, { "UG_PRODUTO", "FAT000000000000000000000000182" } ) If lRet For nI := 1 To Len( aCpoSUG ) // Verifica se os campos passados existem na estrutura do cabeçalho If ( nPos := aScan( aAux, { |x| AllTrim( x[3] ) == AllTrim( aCpoSUG[nI][1] ) } ) ) > 0 // É feita a atribuição do dado aocampo do Model do cabeçalho If !( lAux := oModel:SetValue( "SUGMASTER", aCpoSUG[nI][1], aCpoSUG[nI][2] ) ) // Caso a atribuição não possa ser feita, por algum motivo (validação, por exemplo) // o método SetValue retorna .F. lRet := .F. Exit EndIf EndIf Next EndIf If lRet aAux := {} aAdd( aAux, { "U1_ACESSOR", "FAT000000000000000000000000001" } ) aAdd( aCpoSU1, aAux ) aAux := {} aAdd( aAux, { "U1_ACESSOR", "FAT000000000000000000000000002" } ) aAdd( aCpoSU1, aAux ) aAux := {} aAdd( aAux, { "U1_ACESSOR", "FAT000000000000000000000000003" } ) aAdd( aCpoSU1, aAux ) aAux := {} aAdd( aAux, { "U1_ACESSOR", "FAT000000000000000000000000004" } ) aAdd( aCpoSU1, aAux ) // Instanciamos apenas a parte do modelo referente aos dados do item oSU1Mod := oModel:GetModel( "SU1DETAIL" ) // Obtemos a estrutura de dados do item oSU1Struct := oSU1Mod:GetStruct() aAux := oSU1Struct:GetFields() nItErro := 0 For nI := 1 To Len( aCpoSU1 ) // Incluímos uma linha nova // ATENÇÃO: Os itens são criados em uma estrutura de grid (FORMGRID), portanto já é criada uma primeira linha // branco automaticamente, desta forma começamos a inserir novas linhas a partir da 2ª vez If nI > 1 // Incluímos uma nova linha de item If ( nItErro := oSU1Mod:AddLine() ) <> nI // Se por algum motivo o método AddLine() não consegue incluir a linha, // ele retorna a quantidade de linhas já // existem no grid. Se conseguir retorna a quantidade mais 1 lRet := .F. Exit EndIf EndIf For nJ := 1 To Len( aCpoSU1[nI] ) // Verifica se os campos passados existem na estrutura de item If ( nPos := aScan( aAux, { |x| AllTrim( x[3] ) == AllTrim( aCpoSU1[nI][nJ][1] ) } ) ) > 0 If !( lAux := oModel:SetValue( "SU1DETAIL", aCpoSU1[nI][nJ][1], aCpoSU1[nI][nJ][2] ) ) // Caso a atribuição não possa ser feita, por algum motivo (validação, por exemplo) // o método SetValue retorna .F. lRet := .F. nItErro := nI Exit EndIf EndIf Next If !lRet Exit EndIf Next EndIf If lRet // Faz-se a validação dos dados, note que diferentemente das tradicionais "rotinas automáticas" // neste momento os dados não são gravados, são somente validados. If ( lRet := oModel:VldData() ) // Se os dadosforam validados faz-se a gravação efetiva dos // dados (commit) oModel:CommitData() EndIf EndIf If !lRet // Se os dados não foram validados obtemos a descrição do erro para gerar // LOG ou mensagem de aviso aErro := oModel:GetErrorMessage() // A estrutura do vetor com erro é: // [1] identificador (ID) do formulário de origem // [2] identificador (ID) do campo de origem // [3] identificador (ID) do formulário de erro // [4] identificador (ID) do campo de erro // [5] identificador (ID) do erro // [6] mensagem do erro // [7] mensagem da solução // [8] Valor atribuído // [9] Valor anterior AutoGrLog( "Id do formulário de origem:" + ' [' + AllToChar( aErro[1] ) + ']' ) AutoGrLog( "Id do campo de origem: " + ' [' + AllToChar( aErro[2] ) + ']' ) AutoGrLog( "Id do formulário de erro: " + ' [' + AllToChar( aErro[3] ) + ']' ) AutoGrLog( "Id do campo de erro: " + ' [' + AllToChar( aErro[4] ) + ']' ) AutoGrLog( "Id do erro: " + ' [' + AllToChar( aErro[5] ) + ']' ) AutoGrLog( "Mensagem do erro: " + ' [' + AllToChar( aErro[6] ) + ']' ) AutoGrLog( "Mensagem da solução: " + ' [' + AllToChar( aErro[7] ) + ']' ) AutoGrLog( "Valor atribuído: " + ' [' + AllToChar( aErro[8] ) + ']' ) AutoGrLog( "Valor anterior: " + ' [' + AllToChar( aErro[9] ) + ']' ) If nItErro > 0 AutoGrLog( "Erro no Item: " + ' [' + AllTrim( AllToChar( nItErro ) ) + ']' ) EndIf MostraErro() EndIf // Desativamos o Model oModel:DeActivate() oModel:Destroy() RESET ENVIRONMENT Return lRet
Este é o exemplo básico para a execução da Rotina Automática de Acessórios no processo de Alteração:
#INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" #INCLUDE "FWMVCDEF.CH" #Include "RWMAKE.CH" User Function MyTmka030() Local oModel := Nil Local oSU1Mod := Nil Local oSU1Struct := Nil local aCpoSU1 := {} local aAux := {} Local lRet := .T. Local lAux := .T. Local nQtdAcess := 0 Local nNovaLinha := 0 Local nJ := 0 //**************************************************************** //* Abertura do ambiente //**************************************************************** PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" MODULO "TMK" SUG->( DbSetOrder(1) ) If SUG->( DbSeek( xFilial( "SUG" ) + "000012" ) ) // Realiza a busca pelo registro oModel := FWLoadModel('TMKA030') oModel:SetOperation( MODEL_OPERATION_UPDATE ) //Seta a operação de alteração oModel:Activate() aAdd( aCpoSU1, { "U1_ACESSOR", "FAT000000000000000000000000005" } ) // Cria os dados a serem aAdd( aCpoSU1, { "U1_KIT", "2" } ) // adicionados no registro // Instanciamos apenas a parte do modelo referente aos dados do item oSU1Mod := oModel:GetModel( "SU1DETAIL" ) // Obtemos a estrutura de dados do item oSU1Struct := oSU1Mod:GetStruct() aAux := oSU1Struct:GetFields() nQtdAcess := Len( oSU1Mod:ADATAMODEL ) // Retorna a quantidade de acessórios nNovaLinha := oSU1Mod:AddLine() // Tenta incluir mais uma linha para adicionar um novo acessório If nNovaLinha == nQtdAcess // Se por algum motivo o método AddLine() não consegue incluir a linha, // ele retorna a quantidade de linhas já // existem no grid. Se conseguir retorna a quantidade mais 1 lRet := .F. Else For nJ := 1 To Len( aCpoSU1 ) // Verifica se os campos passados existem na estrutura de item If ( nPos := aScan( aAux, { |x| AllTrim( x[3] ) == AllTrim( aCpoSU1[nJ][1] ) } ) ) > 0 If !( lAux := oModel:SetValue( "SU1DETAIL", aCpoSU1[nJ][1], aCpoSU1[nJ][2] ) ) // Caso a atribuição não possa ser feita, por algum motivo (validação, por exemplo) // o método SetValue retorna .F. lRet := .F. Exit Else EndIf EndIf Next EndIf EndIf If lRet // Faz-se a validação dos dados, note que diferentemente das tradicionais "rotinas automáticas" // neste momento os dados não são gravados, são somente validados. If ( lRet := oModel:VldData() ) // Se os dadosforam validados faz-se a gravação efetiva dos // dados (commit) oModel:CommitData() EndIf EndIf If !lRet // Se os dados não foram validados obtemos a descrição do erro para gerar // LOG ou mensagem de aviso aErro := oModel:GetErrorMessage() // A estrutura do vetor com erro é: // [1] identificador (ID) do formulário de origem // [2] identificador (ID) do campo de origem // [3] identificador (ID) do formulário de erro // [4] identificador (ID) do campo de erro // [5] identificador (ID) do erro // [6] mensagem do erro // [7] mensagem da solução // [8] Valor atribuído // [9] Valor anterior AutoGrLog( "Id do formulário de origem:" + ' [' + AllToChar( aErro[1] ) + ']' ) AutoGrLog( "Id do campo de origem: " + ' [' + AllToChar( aErro[2] ) + ']' ) AutoGrLog( "Id do formulário de erro: " + ' [' + AllToChar( aErro[3] ) + ']' ) AutoGrLog( "Id do campo de erro: " + ' [' + AllToChar( aErro[4] ) + ']' ) AutoGrLog( "Id do erro: " + ' [' + AllToChar( aErro[5] ) + ']' ) AutoGrLog( "Mensagem do erro: " + ' [' + AllToChar( aErro[6] ) + ']' ) AutoGrLog( "Mensagem da solução: " + ' [' + AllToChar( aErro[7] ) + ']' ) AutoGrLog( "Valor atribuído: " + ' [' + AllToChar( aErro[8] ) + ']' ) AutoGrLog( "Valor anterior: " + ' [' + AllToChar( aErro[9] ) + ']' ) If nNovaLinha > 0 AutoGrLog( "Erro no Item: " + ' [' + AllTrim( AllToChar( nNovaLinha ) ) + ']' ) EndIf MostraErro() EndIf // Desativamos o Model oModel:DeActivate() oModel:Destroy() RESET ENVIRONMENT Return lRet
Este é o exemplo básico para a execução da Rotina Automática de Acessórios no processo de Exclusão:
#INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" #INCLUDE "FWMVCDEF.CH" #Include "RWMAKE.CH" User Function MyTmka030() Local oModel := Nil Local lRet := .T. Local lEncontrou := .T. //**************************************************************** //* Abertura do ambiente //**************************************************************** PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" MODULO "TMK" SUG->( DbSetOrder(1) ) If SUG->( DbSeek( xFilial( "SUG" ) + "000012" ) ) // Reraliza a busca pelo registro oModel := FWLoadModel('TMKA030') oModel:SetOperation( MODEL_OPERATION_DELETE ) //Seta a operação de exclusão oModel:Activate() Else lEncontrou := .F. EndIf If lEncontrou // Faz-se a validação dos dados, note que diferentemente das tradicionais "rotinas automáticas" // neste momento os dados não são gravados, são somente validados. If ( lRet := oModel:VldData() ) // Se os dadosforam validados faz-se a gravação efetiva dos // dados (commit) oModel:CommitData() EndIf Else lRet := .F. EndIf If !lRet If !lEncontrou AutoGrLog( "Registro não encontrado" ) Else // Se os dados não foram validados obtemos a descrição do erro para gerar // LOG ou mensagem de aviso aErro := oModel:GetErrorMessage() // A estrutura do vetor com erro é: // [1] identificador (ID) do formulário de origem // [2] identificador (ID) do campo de origem // [3] identificador (ID) do formulário de erro // [4] identificador (ID) do campo de erro // [5] identificador (ID) do erro // [6] mensagem do erro // [7] mensagem da solução // [8] Valor atribuído // [9] Valor anterior AutoGrLog( "Id do formulário de origem:" + ' [' + AllToChar( aErro[1] ) + ']' ) AutoGrLog( "Id do campo de origem: " + ' [' + AllToChar( aErro[2] ) + ']' ) AutoGrLog( "Id do formulário de erro: " + ' [' + AllToChar( aErro[3] ) + ']' ) AutoGrLog( "Id do campo de erro: " + ' [' + AllToChar( aErro[4] ) + ']' ) AutoGrLog( "Id do erro: " + ' [' + AllToChar( aErro[5] ) + ']' ) AutoGrLog( "Mensagem do erro: " + ' [' + AllToChar( aErro[6] ) + ']' ) AutoGrLog( "Mensagem da solução: " + ' [' + AllToChar( aErro[7] ) + ']' ) AutoGrLog( "Valor atribuído: " + ' [' + AllToChar( aErro[8] ) + ']' ) AutoGrLog( "Valor anterior: " + ' [' + AllToChar( aErro[9] ) + ']' ) EndIf MostraErro() EndIf If ValType( oModel ) == "O" // Desativamos o Model oModel:DeActivate() oModel:Destroy() EndIf RESET ENVIRONMENT Return lRet
04. DEMAIS INFORMAÇÕES
Não há
05. ASSUNTOS RELACIONADOS
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas