Bem Vindo Visitante Lista de Usuários

 Todos os Fórums
  Business Intelligence

Enviar para a impressoraImprimir   

Subject Rotina automatica em MVC
Mensagem do Enviar e-mail Abrir o Perfil do usuário GDANTASLS GDANTASLS em 4/13/2018 as 15:42 hs
Local: sp   Registrada: 6/24/2015  Postagem: 7
Boa tarde pessoal!

Estou desenvolvendo uma rotina automatica de cadastro de cliente para integração com um outro sistema, porém o método SetValue ou o VldData não estão validando os dados que estou colocando, por exemplo se eu colocar '99999999999999' no campo CGC ele cadastra o cliente sem problemas.
Segue abaixo fonte exemplo simples:

#include 'protheus.ch'
#Include "FWMVCDEF.CH"

User function RotAutCadCli(aCampos)

     Local oModel
     Local lRet := .T.
     Local cRetorno := ''
     
     Default aCampos := {}
     
     ConOut('Cadastrando cliente... ' + Dtoc(DATE())+' - '+Time())                         
     
     oModel := FWLoadModel( 'MATA030' )
     oModel:SetOperation(MODEL_OPERATION_INSERT)
     oModel:Activate()
     
     If Empty(aCampos)
          aAdd( aCampos, { 'A1_COD'          , '000001'                              })          
          aAdd( aCampos, { 'A1_LOJA'          , '01'                                   })
          aAdd( aCampos, { 'A1_NOME'          , 'TESTE TESTE TESTE'               })
          aAdd( aCampos, { 'A1_NREDUZ'     , 'TESTE TESTE'                         })
          aAdd( aCampos, { 'A1_PESSOA'     , 'J'                                   })
          aAdd( aCampos, { 'A1_TIPO'          , 'S'                                   })
          aAdd( aCampos, { 'A1_CEP'          , '01000000'                         })
          aAdd( aCampos, { 'A1_CGC'          , '99999999999999'                    })
          aAdd( aCampos, { 'A1_ZONA'          , '3515061'                              })
          aAdd( aCampos, { 'A1_INSCR'          , '123456789012'                    })
          aAdd( aCampos, { 'A1_END'          , 'AVENIDA PAULISTA TESTE, 52'     })
          aAdd( aCampos, { 'A1_BAIRRO'     , 'BRAS'                              })
          aAdd( aCampos, { 'A1_REGIAO'     , '002'                                   })
          aAdd( aCampos, { 'A1_COD_MUN'     , '50308'                              })
          aAdd( aCampos, { 'A1_UCODDIS'     , '355030801'                         })
          aAdd( aCampos, { 'A1_TEL'          , '45698785'                         })
          aAdd( aCampos, { 'A1_CONTATO'     , 'JOAO'                              })
          aAdd( aCampos, { 'A1_EMAIL'          , 'teste@testeteste.com.br'          })
          aAdd( aCampos, { 'A1_EMAILCO'     , 'teste@testeteste.com.br'          })
          aAdd( aCampos, { 'A1_LOCAL'          , 'C'                                   })
          aAdd( aCampos, { 'A1_CNAE'          , '4639-7/01'                         })
          aAdd( aCampos, { 'A1_VEND'          , '982'                                   })
          aAdd( aCampos, { 'A1_TPFRET'     , 'C'                                   })
          aAdd( aCampos, { 'A1_ATIVIDA'     , 'TRAD'                              })
          aAdd( aCampos, { 'A1_COND'          , '971'                                   })
     EndIf
     
     oAux := oModel:GetModel('MATA030_SA1')
     oStruct := oAux:GetStruct()
     aAux := oStruct:GetFields()
     
     For nI := 1 To Len( aCampos )
          // Verifica se os campos passados existem na estrutura do modelo
          If ( nPos := aScan(aAux,{|x| AllTrim( x[3] )== AllTrim(aCampos[nI][1]) } ) ) > 0
          // É feita a atribuição do dado ao campo do Model
               If !( lAux := oModel:SetValue( 'MATA030_SA1', aCampos[nI][1], aCampos[nI][2] ) )
               // Caso a atribuição não possa ser feita, por algum motivo (validação, por exemplo)
               // o método SetValue retorna .F. (NÃO ESTA RETORNANDO.)
                    lRet := .F.
                    Exit
               EndIf
          EndIf
     Next nI
     
     If lRet
          If (lRet := oModel:VldData())//NÃO VALIDA DE ACORDO COM AS VALIDAÇÕES DO SISTEMA E USUARIO.
          // Se os dados foram validados faz-se a gravação efetiva dos dados (commit)
               oModel:CommitData()
               ConOut('Cliente cadastrado. '+Dtoc(DATE())+' - '+Time())
               cRetorno := 'Cliente cadastrado com sucesso. '+Dtoc(DATE())+' - '+Time()
          Else
               aErro := oModel:GetErrorMessage()
               ConOut('Erro: ' + AllToChar( aErro[6] + ' '+ AllToChar( aErro[4] + Dtoc(DATE())+' - '+Time())))
               cRetorno := 'Erro: ' + AllToChar( aErro[6]) + ' '+ AllToChar( aErro[4])
          EndIf
     Else
          // Se os dados não foram validados obtemos a descrição do erro para gerar LOG ou mensagem de aviso
          aErro := oModel:GetErrorMessage()

          ConOut('Erro: ' + AllToChar( aErro[6] + ' '+ AllToChar( aErro[4] + Dtoc(DATE())+' - '+Time())))
          cRetorno := 'Erro: ' + AllToChar( aErro[6]) + ' '+ AllToChar( aErro[4])
     EndIf
     
     oModel:DeActivate()

Return(cRetorno)

Alguém que já desenvolveu alguma rotina automatica com MVC ja passou por isso (dados não serem validados)? teria algum outro parametro?

Mensagem do Enviar e-mail Abrir o Perfil do usuário JALBERTO JALBERTO em 4/13/2018 as 15:56 hs
Local: RS   Registrada: 8/20/2009  Postagem: 90
Aqui tem um exemplo de rotina automática em MVC

http://tdn.totvs.com/pages/releaseview.action?pageId=6814842

Eu não fiz nenhum teste, mas acho que vale a pena ver o que dá !


Jorge Alberto

Para participar do Fórum você precisa efetuar login primeiro
Caso você não esteja registrado registre-se para participar do fórum

 Mudar para Fórum