- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- AdvPL x MVC
- Rotina automatica cadastro cliente
Perguntas Rotina automatica cadastro cliente
- GDantasLS
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 15
- Obrigados Recebidos: 0
6 anos 6 meses atrás #32555
por GDantasLS
Rotina automatica cadastro cliente foi criado por GDantasLS
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:
Alguém que já desenvolveu alguma rotina automatica com MVC ja passou por isso (dados não serem validados)? teria algum outro parametro?
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?
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
6 anos 6 meses atrás #32556
por kanaamlrr
Respondido por kanaamlrr no tópico Rotina automatica cadastro cliente
Boa tarde Gustavo.
O número 999999999 é uma exceção na validação de CPF/CNPJ.
Por esse motivo que ele está passando.
Tente colocar uma numeração aleatória.
O número 999999999 é uma exceção na validação de CPF/CNPJ.
Por esse motivo que ele está passando.
Tente colocar uma numeração aleatória.
Por favor Acessar ou Registrar para participar da conversa.
- GDantasLS
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 15
- Obrigados Recebidos: 0
6 anos 6 meses atrás #32560
por GDantasLS
Respondido por GDantasLS no tópico Rotina automatica cadastro cliente
Bom dia Kanaãm! Obrigado por responder, porém tentei colocar uma numeração aleatória e mesmo assim ele cadastrou, inclusive tenho validações em outros campos na SA1 também e ele não acusa nada.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- AdvPL x MVC
- Rotina automatica cadastro cliente
Tempo para a criação da página:0.115 segundos