Fórum

Estatística Forum

  • Total Users: 16.29k
  • Latest Member: Eduardo Augusto
  • Total Posts: 28k
  • Total Topics: 8559
  • Total Sections: 15
  • Total Categories: 62
  • Today Open: 0
  • Yesterday Open: 0
  • Today Answer: 0
  • Yesterday Answer: 1

Pesquisa Forum

Keyword

Pesquisar Videos

Open Panel
Bem-Vindo, Visitante
Nome de usuário: Senha: Lembrar-me

TÓPICO: Rotina automatica cadastro cliente

Rotina automatica cadastro cliente 16 Abr 2018 10:41 #32560

  • Gustavo Dantas
  • OFFLINE
  • Membro Júnior
  • Postagens: 15
  • Obrigados Recebidos: 1
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.
O administrador desabilitou o acesso público de escrita.

Rotina automatica cadastro cliente 13 Abr 2018 16:56 #32556

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 administrador desabilitou o acesso público de escrita.

Rotina automatica cadastro cliente 13 Abr 2018 15:32 #32555

  • Gustavo Dantas
  • OFFLINE
  • Membro Júnior
  • Postagens: 15
  • Obrigados Recebidos: 1
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'		, 'O endereço de e-mail address está sendo protegido de spambots. Você precisa ativar o JavaScript enabled para vê-lo.'		})
		aAdd( aCampos, { 'A1_EMAILCO'	, 'O endereço de e-mail address está sendo protegido de spambots. Você precisa ativar o JavaScript enabled para vê-lo.'		})
		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?
O administrador desabilitou o acesso público de escrita.
Tempo para a criação da página:1.054 segundos

Últimas Forum

More Topics »

Facebook

Twitter

Facebook