Desenvolvi uma rotina automática MVC da rotina GPEA003. Esta funcionando e inclui os dados na tabela RHO. Mas, ao incluir mais de um dado de um mesmo colaborador de forma sequencial (exemplo: titular e dependente), a tecnologia esta substituindo o primeiro dado cadastrado pelo último que esta sendo cadastrado, ao invés de incluir um novo cadastro e deixar os dois cadastrados na tabela RHO.
Algum colega desenvolvedor, teve experiência com esta inconsistência e sabe como elliminar ?
A seguir meu código para análise dos colegras e orientação de como eliminar a inconsistêcia :
#include "totvs.ch"
#include "fwmvcdef.ch"
user function mvcgpea003(fllant,clbmat,ocrdat,dpnorg,frntip,depdcdg,frncdg,vrbcdg,coprtvlr,cmppgtdat,prcobs,prtcpf,prsnom)
// incluir no cadastro 'co-participacao' os dados do titular, dependente
local getare := FWGetArea()
local mdl := nil
Private cFilOld := fllant
dbselectarea("SRA")
dbsetorder(1) // RA_FILIAL+RA_MAT
msSeek(fllant+clbmat,.T.) // posiciona no colaborador cuja co-participacao sera registrada
mdl := FWLoadModel("GPEA003")
mdl:SetOperation(MODEL_OPERATION_INSERT)
mdl:Activate()
mdl:SetValue("GPEA003_MRHO","RHO_FILIAL",fllant ) // C Filial Colabordor - Campo oculto em janela ao usuario
mdl:SetValue("GPEA003_MRHO","RHO_DTOCOR",ocrdat ) // D-C Data Ocorrrencia : 'DT AUTORIZACAO (366,375) no arquivo'
mdl:SetValue("GPEA003_MRHO","RHO_ORIGEM",dpnorg ) // C Origem : 1-Titular ou 2-Dependente 'conforme identificado cpf no cadastro 'Funcionario' ou 'Dependentes' de acordo com matricula x cpf'
mdl:SetValue("GPEA003_MRHO","RHO_TPFORN",frntip ) // C Tipo : fixo '1'-Assistencia Medica
mdl:SetValue("GPEA003_MRHO","RHO_CODIGO",depdcdg ) // C Tipo : trazer codigo da SRB conforme cpf informado
mdl:SetValue("GPEA003_MRHO","RHO_CODFOR",frncdg ) // C Cod Fornec
mdl:SetValue("GPEA003_MRHO","RHO_TPLAN" ,'1' ) // C Tipo Lancam : fixo '1'-Co-participacao
mdl:SetValue("GPEA003_MRHO","RHO_PD" ,vrbcdg ) // C Verba Calcul conforme registrado no cadastro SubStr(RCC_CONTEU,174,3) titular, SubStr(RCC_CONTEU,177,3) dependente
mdl:SetValue("GPEA003_MRHO","RHO_VLRFUN",coprtvlr ) // N Vlr Funcion : 'VL PARTICIPACAO (501,510)' no arquivo texto
mdl:SetValue("GPEA003_MRHO","RHO_VLREMP",0.00 ) // N Vlr Empresa : fixo 0.00
mdl:SetValue("GPEA003_MRHO","RHO_COMPPG",cmppgtdat) // C Compet Pagto : DT VENCIMENTO (036,045) somente o ano e mes 'AAAAMM' ou considera data ultimo periodo aberto no cadastro 'Periodos'
mdl:SetValue("GPEA003_MRHO","RHO_OBSERV",prcobs ) // C Observacoes : 'PROCEDIMENT0 (381,440) no arquivo'
//mdl:SetValue("GPEA003_MRHO","RHO_CPF" ,prtcpf ) // C CPF/CNPJ : 'CPF (231,241) no arquivo' obs: gatilho preenche automaticamente
mdl:SetValue("GPEA003_MRHO","RHO_NOMED" ,prsnom ) // C Nome Prest S : 'PRESTADOR (441,500) no arquivo'
mdl:SetValue("GPEA003_MRHO","RHO_TPATEN","12" ) // Tipo Atend : fixo 12
if mdl:VldData()
// se o conjunto de dados a ser gravado estiver correto
mdl:CommitData() // confirma gravacao na tabela
else
// caso contrario exibe mensagem informacao o possivel motivo de nao gravar os dados
VarInfo("Insert Error",mdl:GetErrorMessage())
endif
mdl:DeActivate()
// limpar memoria computacional
mdl:Destroy()
mdl := nil
// retornar area de trabalho
FWRestArea(getare)
return nil
Muito Obrigado