MVC Inclusão de cadastros

Pessoal , boa Tarde!

Estou tentando ajustar um fonte para tratar o envio via Rest de uma inclusão de usuario.

Porem ao clicar em incluir a tela não esta explodindo.

Segue

User Function EOCAD001()

	Local aArea			:=	FwGetArea()
	Local oBrowse		
	Private aRot	:=	{}
	
	//Definicao do menu
	aRot := MenuDef()

	//Instanciando o browse
	oBrowse	:= 	FWMBrowse():New()
	oBrowse:SetAlias(cAlias)
	oBrowse:SetDescription(cTitulo)
	oBrowse:DisableDetails()

	// Ativa browse
	oBrowse:Activate()

	FwRestArea(aArea)

Return Nil

Static Function MenuDef()
Local aRot := {}

ADD OPTION aRot TITLE "Visualizar" ACTION "VIEWDEF.EOCAD001" OPERATION 1 ACCESS 0
ADD OPTION aRot TITLE "Incluir"    ACTION "VIEWDEF.EOCAD001" OPERATION 3 ACCESS 0
ADD OPTION aRot TITLE "Alterar"    ACTION "VIEWDEF.EOCAD001" OPERATION 4 ACCESS 0
ADD OPTION aRot TITLE "Excluir"    ACTION "VIEWDEF.EOCAD001" OPERATION 5 ACCESS 0

Return aRot

Static Function ModelDef()

Local oModel
Local oStruct := FWFormStruct(1, cAlias)
Local bCommit := {|oModel| EOC001com(oModel)}

oModel := MPFormModel():New("EOCAD001M", , , bCommit, )
oModel:AddFields("FORMPE0", , oStruct)
oModel:SetPrimaryKey({"PE0_FILIAL","PE0_USRPRO","PE0_USREXP"})
oModel:SetDescription(cTitulo)
oModel:GetModel("FORMPE0"):SetDescription("Dados de - " + cTitulo)

Return oModel

Static Function ViewDef()

Local oModel  := FWLoadModel("EOCAD001")
Local oStruct := FWFormStruct(2, cAlias)
Local oView   

//Cria a Visualizacao do cadastro
oView	:=	FWFormView():New()
oView:SetModel(oModel)
oView:AddField("VIEW_PE0", oStruct, "FORMPE0")
oView:CreateHorizontalBox("TELA",100)
oView:SetOwnerView("VIEW_PE0","TELA")

Return oView

Função commit

Static Function EOC001com(oModel, lLoad)

Local lRet := .T.
Local lContinua := .T.
Local oModField := oModel:GetModel(“PE0”)
//Local dUAlter := oModField:GetVAlue(‘PE0_DTUALT’)
//Local dUInteg := oModField:GetVAlue(‘PE0_DTUINT’)
Local dUAlter := Nil
Local dUInteg := Nil
Local oExpense := Nil
Local oUsuario := Nil
Local oList := Nil
Local cJson := ‘’

Default lLoad := .F.

// ---------------------------------------------------------------------
// PROTEÇÃO: Modelo PE0 não carregado
// ---------------------------------------------------------------------
If oModField == NIL
Conout(“EOCAD001 - ERRO: Model ‘PE0’ não disponível no commit.”)
Return .F.
EndIf

dUAlter := oModField:GetValue(‘PE0_DTUALT’)
dUInteg := oModField:GetValue(‘PE0_DTUINT’)

If !lLoad

// Executa commit do modelo
If !FwFormCommit(oModel)
	lLoad := .F.
EndIf

EndIf

// ---------------------------------------------------------------------
// PONTO DE BLOQUEIO CENTRAL — SE NÃO CONTINUA, SAI DA FUNÇÃO
// ---------------------------------------------------------------------
If !lContinua
Return lRet
EndIf

// ---------------------------------------------------------------------
// CONTINUA O PROCESSO NORMAL
// ---------------------------------------------------------------------
//If lContinua
If oModel:GetOperation() $ “+IU” .Or. lLoad
//If oModel:GetOperation() == MODEL_OPERATION_INSERT;
// .Or. oModel:GetOperation() == MODEL_OPERATION_UPDATE;
// .Or. lLoad

	// Se tiver sido atualizado, integra com ExpenseOn
	If dUAlter >= dUInteg

		// ------------------------------------------------------------------------
		// Cria objeto para integração	
		// ------------------------------------------------------------------------
		oExpense := ExpenseOn():New(.F.)
		oExpense:Login()

		If oExpense:LoginSucess

			// ------------------------------------------------------------------------
			// Criando obejetos para serialização do JSON
			// ------------------------------------------------------------------------
			oUsuario := Usuario_EXON():New(oModField:GetVAlue('PE0_USRPRO'),; 					//Codigo+Loja
													oModField:GetVAlue('PE0_NOME'),;			//Nome
													oModField:GetVAlue('PE0_CPF'),;				//CPF
													oModField:GetVAlue('PE0_EMAIL'),;			//E-mail
													GetDesc(oModField:GetVAlue('PE0_PERFIL')),;	//Perfil
													::CompanyID,;								//oModField:GetVAlue('PE0_EMPDES'),;			//Empresa vinculada companyId
													oModField:GetVAlue('PE0_AREA'),;			//Departamento
													oModField:GetVAlue('PE0_CARGO'),;			//Cargo
													oModField:GetVAlue('PE0_ATIVO')=='1')		//Se o mesmo esta ativo
			
			// ExpenseOn Exige que seja enviada uma lista de objetos
			oList 	:= ListaUsuario_EXON():New()
			oList:AddObject(oUsuario)

Alguem poderia me dar um apoio?

Olá, quando você diz que a tela não está explodindo, você quer dizer que não está sendo aberto o formulário e inclusão?

Se sim, qual o nome do seu fonte e como ele foi cadastrado no menu, poderia me dar essas informações, por favor.

Ola, boa tarde!

Isso ao clicar em incluir ele não esta abrindo, função no menu EOCAD001.

Grato
Alexandro

User Function EOCAD001()

	Local aArea			:=	FwGetArea()
	Local oBrowse		
	
	
	//Instânciando FWMBrowse - Somente com dicionário de dados
	oBrowse	:= 	FWMBrowse():New()

	//Setando a tabela de cadastro de Autor/Interprete
	oBrowse:SetAlias(cAlias)
	
	//Setando a descrição da rotina
	oBrowse:SetDescription(cTitulo)

	// Ativa browse
	oBrowse:Activate()

	FwRestArea(aArea)

Return Nil

Static Function MenuDef()
Local aRot := {}

ADD OPTION aRot TITLE "Visualizar" ACTION "VIEWDEF.EOCAD001" OPERATION MODEL_OPERATION_VIEW 	ACCESS 0 	//Operation 1
ADD OPTION aRot TITLE "Incluir"    ACTION "VIEWDEF.EOCAD001" OPERATION MODEL_OPERATION_INSERT 	ACCESS 0	//Operation 3
ADD OPTION aRot TITLE "Alterar"    ACTION "VIEWDEF.EOCAD001" OPERATION MODEL_OPERATION_UPDATE 	ACCESS 0	//Operation 4
ADD OPTION aRot TITLE "Excluir"    ACTION "VIEWDEF.EOCAD001" OPERATION MODEL_OPERATION_DELETE 	ACCESS 0	//Operation 5

Return aRot

Static Function ModelDef()

//Criação do objeto do modelo de dados
Local oModel	:=	Nil

//Criação da estrutura de dados utilizada na interface
Local oStruct := FWFormStruct(1, cAlias)
Local bCommit := {|oModel| EOC001com(oModel, .F.)}

//Instanciando o modelo, não é recomendado colocar nome da user function (por causa do u_), respeitando 10 caracteres
oModel := MPFormModel():New("EOCAD001M", , , bCommit)

//Atribuindo formulários para o modelo
oModel:AddFields("FORMPE0", , oStruct)

//Setando a chave primária da rotina
oModel:SetPrimaryKey({"PE0_FILIAL","PE0_USRPRO","PE0_USREXP"})

//Adicionando descrição ao modelo
oModel:SetDescription(cTitulo)

//Setando a descrição do formulário
oModel:GetModel("FORMPE0"):SetDescription(cTitulo)

Return oModel

Static Function ViewDef()

//Criação do objeto do modelo de dados da Interface do Cadastro de Autor/Interprete
Local oModel  := FWLoadModel("EOCAD001M")

//Criação da estrutura de dados utilizada na interface do cadastro de Autor
Local oStruct := FWFormStruct(2, cAlias)

//Criando oView como nulo
Local oView	:= Nil   

//Criando a view que será o retorno da função e setando o modelo da rotina
oView	:=	FWFormView():New()
oView:SetModel(oModel)

//Atribuindo formulários para interface
oView:AddField("VIEW_PE0", oStruct, "FORMPE0")

//Criando um container com nome tela com 100%
oView:CreateHorizontalBox("TELA",100)

//Colocando título do formulário
oView:EnableTitleView('VIEW_PE0', cTitulo )  

//Força o fechamento da janela na confirmação
oView:SetCloseOnOk({||.T.})

//O formulário da interface será colocado dentro do container
oView:SetOwnerView("VIEW_PE0","TELA")

Return oView

@alexlabteck acho que encontrei o problema, no seu modelDef quando está criando o modelo chamando a classe MPFormModel() você informou o nome “EOCAD001M” e nesse caso entra em conflito com a própria rotina “EOCAD001” devido a limitação dos 8 caracteres das funções ADVPL, utilize um nome diferente para o modelo ex.: EOCAD01M para ser diferente do nome da função do seu próprio fonte, respeitando o limite de 8 caracteres!.

1 curtida

Show, Cirilo rocha , agora abriu, vamos para commit agora esse caso esta encerrando.