CONTEÚDO
01. VISÃO GERAL
Objetivo desse documento é exemplificar a utilização do ExecAuto da nova rotina de MediçõesDocumentos(CNTA121CNTA171).
...
...
Para alternativas para os pontos de entrada, acessar a página CNTA121 - Exemplos pontos de entrada_MVC
Para uma lista com o De/Para dos pontos de entrada do CNTA120 para o CNTA121, acessar a página GCT0084_Nova_Medição_CNTA121
...
02. Inclusão de um novo documento
Bloco de código |
---|
title | Exemplo medição inclusão de um contrato fixo com itensnovo documento |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
/*Exemplo de inclusão de um novo documento*/
User Function CNT121_002Exemplo001()
Local oModel := Nil
Local cCodCTR NIL
Local oMdlCNK := "CNTA121EXEMP002"
Local cNumMed Nil
Local oMdlCXR := ""
Local aMsgDeErroNil
Local cContra := {}
Local lRet := .F.
CN9->(DbSetOrder(1))
If CN9->(DbSeek("TREINAMENTO1954"
Local cChave := xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
oModelcContra
Local aErro := {}
Local cNumero := FWLoadModel("CNTA121")
oModel:SetOperation(MODEL_OPERATION_INSERT)
If(oModel:CanActivate())
oModel:Activate()
oModel:SetValue("CNDMASTER","CND_CONTRA" ,CN9->CN9_NUMERO)
oModel:SetValue("CNDMASTER","CND_RCCOMP" ,"1")//Selecionar competência
oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)//Marcar a planilha(nesse caso apenas uma)
oModel:GetModel('CNEDETAIL'):GoLine(1)
oModel:SetValue( 'CNEDETAIL' , 'CNE_QUANT' , 1)
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()
EndIf
EndIf
If(oModel:HasErrorMessage())
aMsgDeErro := oModel:GetErrorMessage()
Else
cNumMed := CND->CND_NUMMED
oModel:DeActivate()
lRet := CN121Encerr(.T.) //Realiza o encerramento da medição
EndIf
EndIf
Return lRet |
03. Medição sem itens
Bloco de código |
---|
title | Exemplo medição sem itens |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
User Function CNT121_001()
Local oModel := Nil
Local cCodCTR := "CNTA121EXEMP001"
Local cNumMed := ""
Local aMsgDeErro:= {}
Local lRet := .F.
CN9->(DbSetOrder(1))
If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
oModel := FWLoadModel("CNTA121")
oModel:SetOperation(MODEL_OPERATION_INSERT)
If(oModel:CanActivate())
oModel:Activate()
oModel:SetValue("CNDMASTER","CND_CONTRA" ,CN9->CN9_NUMERO)
oModel:SetValue("CNDMASTER","CND_RCCOMP" ,"1")//Selecionar competência
oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)//Marcar a planilha(nesse caso apenas uma)
oModel:GetModel('CNEDETAIL'):LoadValue('CNE_ITEM', PadL("1", CNE->(Len(CNE_ITEM)), "0"))//Adiciona um item a planilha
oModel:SetValue( 'CNEDETAIL' , 'CNE_PRODUT' , 'GCT000000000000000000000000002')
oModel:SetValue( 'CNEDETAIL' , 'CNE_QUANT' , 1000)
oModel:SetValue( 'CNEDETAIL' , 'CNE_VLUNIT' , 1 )
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()
EndIf
EndIf
If(oModel:HasErrorMessage())
aMsgDeErro := oModel:GetErrorMessage()
Else
cNumMed := CND->CND_NUMMED
oModel:DeActivate()
lRet := CN121Encerr(.T.) //Realiza o encerramento da medição
EndIf
EndIf
Return lRet |
04. Medição com rateio pré-configurado
Bloco de código |
---|
title | Medição com rateio pré-configurado |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
User Function CNT121_003()
Local oModel := Nil
Local cCodCTR := "CNTA121EXEMP003"
Local cNumMed := ""
Local aMsgDeErro:= {}
Local lRet := .F.
Local aRatPreCfg:= {}
CN9->(DbSetOrder(1))
If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
oModel := FWLoadModel("CNTA121")
oModel:SetOperation(MODEL_OPERATION_INSERT)
If(oModel:CanActivate())
oModel:Activate()
oModel:SetValue("CNDMASTER","CND_CONTRA" ,CN9->CN9_NUMERO)
oModel:SetValue("CNDMASTER","CND_RCCOMP" ,"1")//Selecionar competência
oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)//Marcar a planilha(nesse caso apenas uma)
oModel:GetModel('CNEDETAIL'):GoLine(1)
oModel:SetValue( 'CNEDETAIL' , 'CNE_QUANT' , 1)
aAdd(aRatPreCfg,{'CTJ_FILIAL', xFilial("CTJ")})
aAdd(aRatPreCfg,{'CTJ_RATEIO', 'GCT001'})
CN121RatP(oModel, Nil, aRatPreCfg)//Importa rateio pre-configurado
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()
EndIf
EndIf
If(oModel:HasErrorMessage())
aMsgDeErro := oModel:GetErrorMessage()
Else
cNumMed := CND->CND_NUMMED
oModel:DeActivate()
lRet := CN121Encerr(.T.) //Realiza o encerramento da medição
EndIf
EndIf
Return lRet |
05. Medição com rateio
Bloco de código |
---|
title | Medição com rateio manual |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
User Function CNT121_004()
Local oModel := Nil
Local cCodCTR := "CNTA121EXEMP004"
Local cNumMed := ""
Local aMsgDeErro:= {}
Local lRet := .F.
CN9->(DbSetOrder(1))
If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
oModel := FWLoadModel("CNTA121")
oModel:SetOperation(MODEL_OPERATION_INSERT)
If(oModel:CanActivate())
oModel:Activate()
oModel:SetValue("CNDMASTER","CND_CONTRA" ,CN9->CN9_NUMERO)
oModel:SetValue("CNDMASTER","CND_RCCOMP" ,"1")//Selecionar competência
oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)//Marcar a planilha(nesse caso apenas uma)
oModel:GetModel('CNEDETAIL'):GoLine(1)
oModel:SetValue( 'CNEDETAIL' , 'CNE_QUANT' , 1)
/*Os rateios abaixo serao incluidos pra corrente do modelo da CNE*/
oModel:SetValue("CNZDETAIL","CNZ_PERC" , 50)
oModel:SetValue("CNZDETAIL","CNZ_CC" , '000000001')
oModel:SetValue("CNZDETAIL","CNZ_CONTA" , '01234')
oModel:SetValue("CNZDETAIL","CNZ_ITEMCT" , '0000000')
oModel:SetValue("CNZDETAIL","CNZ_CLVL" , '000001')
oModel:GetModel('CNZDETAIL'):AddLine()
oModel:SetValue("CNZDETAIL","CNZ_ITEM" , '02')
oModel:SetValue("CNZDETAIL","CNZ_PERC" , 50)
oModel:SetValue("CNZDETAIL","CNZ_CC" , '000000002')
oModel:SetValue("CNZDETAIL","CNZ_CONTA" , '01235')
oModel:SetValue("CNZDETAIL","CNZ_ITEMCT", '00001')
oModel:SetValue("CNZDETAIL","CNZ_CLVL" , '000002')
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()
EndIf
EndIf
If(oModel:HasErrorMessage())
aMsgDeErro := oModel:GetErrorMessage()
Else
cNumMed := CND->CND_NUMMED
oModel:DeActivate()
lRet := CN121Encerr(.T.) //Realiza o encerramento da medição
EndIf
EndIf
Return lRet |
06. Medição configurada para ignorar produtos bloqueados
Bloco de código |
---|
title | Ignorando os produtos bloqueados da planilha |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
User Function CNT121_005()
Local oModel := Nil
Local cCodCTR := "CNTA121EXEMP005"
Local cNumMed := ""
Local aMsgDeErro:= {}
Local lRet := .F.
CN9->(DbSetOrder(1))
If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
oModel := FWLoadModel("CNTA121")
oModel:SetOperation(MODEL_OPERATION_INSERT)
If(oModel:CanActivate())
oModel:Activate()
oModel:SetValue("CNDMASTER","CND_CONTRA" ,CN9->CN9_NUMERO)
oModel:SetValue("CNDMASTER","CND_RCCOMP" ,"1")//Selecionar competência
oModel:SetValue("CXNDETAIL","CXN_IGITEM", .T.)//Configura para ignorar produtos bloqueados
oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)//Marcar a planilha(nesse caso apenas uma)
oModel:GetModel('CNEDETAIL'):GoLine(1)
oModel:SetValue( 'CNEDETAIL' , 'CNE_QUANT' , 1)
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()
EndIf
EndIf
If(oModel:HasErrorMessage())
aMsgDeErro := oModel:GetErrorMessage()
Else
cNumMed := CND->CND_NUMMED
oModel:DeActivate()
lRet := CN121Encerr(.T.) //Realiza o encerramento da medição
EndIf
EndIf
Return lRet |
07. Obtendo a lista de competências
Bloco de código |
---|
title | Obtendo a lista de competências de um contrato |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
User Function CNT121_006()
Local oModel := Nil
Local cCodCTR := "CNTA121EXEMP006"
Local aCompets := {}
Local nCompet := 0
Local cNumMed := ""
Local aMsgDeErro:= {}
Local lRet := .F.
CN9->(DbSetOrder(1))
If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
/* <CtrCompets> retorna a lista de competências possíveis para o contrato, deve-se estar posicionado no contrato(CN9).
O array é composto pelas competências no formato MM/AAAA, exemplo:
{
'05/2020',
'06/2020',
'07/2020'
}
O campo <CND_RCCOMP> recebe o índice desse vetor correspondente a competência à ser medida, porém o índice deve ser convertido para caractere.
No exemplo acima, caso se deseje medir a competência '05/2020', cujo índice no vetor é um(1), deve-se passar o valor '1'(caractere) para o campo <CND_RCCOMP>.
*/
aCompets := CtrCompets()
nCompet := aScan(aCompets, {|x| AllTrim(x) == '05/2020' })
oModel := FWLoadModel("CNTA121")
oModel:SetOperation(MODEL_OPERATION_INSERT)
If(oModel:CanActivate())
oModel:Activate()
oModel:SetValue("CNDMASTER","CND_CONTRA" ,CN9->CN9_NUMERO)
oModel:SetValue("CNDMASTER","CND_RCCOMP" , cValToChar(nCompet))//Selecionar competência
oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)//Marcar a planilha(nesse caso apenas uma)
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()
EndIf
EndIf
If(oModel:HasErrorMessage())
aMsgDeErro := oModel:GetErrorMessage()
Else
cNumMed := CND->CND_NUMMED
oModel:DeActivate()
lRet := CN121Encerr(.T.) //Realiza o encerramento da medição
EndIf
EndIf
Return lRet |
08. Estorno de uma medição
Bloco de código |
---|
title | Estornando uma medição |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
User Function CNT121_007()
Local cCodCTR := "CNTA121EXEMP007"
Local cMedErro := ""
Local lRet := .F.
CND->(DbSetOrder(1))
If CND->(DbSeek(xFilial("CND") + cCodCTR))//Posicionar na CND para realizar o estorno
CN121Estorn(.T.,/*lAprRev*/, @cMedErro)
lRet := Empty(cMedErro) //Vazio caso nao ocorra nenhum erro
EndIf
Return lRet |
09. Exclusão de uma medição
Bloco de código |
---|
title | Excluindo uma medição |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
User Function CNT121_008()
Local oModel := Nil
Local cCodCTR := "CNTA121EXEMP008"
Local aMsgDeErro:= {}
Local lRet := .F.
CND->(DbSetOrder(1))
If CND->(DbSeek(xFilial("CND") + cCodCTR))//Posicionar na CND para realizar a exclusão
oModel := FWLoadModel("CNTA121")
oModel:SetOperation(MODEL_OPERATION_DELETE)
If(oModel:CanActivate())
oModel:Activate()
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()
EndIf
EndIf
lRet := !(oModel:HasErrorMessage())
If(!lRet)
aMsgDeErro := oModel:GetErrorMessage()
EndIf
EndIf
Return lRet |
10. Inclusão medição com multa/bonificação por planilha
Bloco de código |
---|
title | Inclusão medição com multa/bonificação por planilha |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
User Function CNT121_009()
Local oModel := Nil
Local cCodCTR := "CNTA121EXEMP009"
Local cNumMed := ""
Local aMsgDeErro:= {}
Local lRet := .F.
CN9->(DbSetOrder(1))
If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
oModel := FWLoadModel("CNTA121")
oModel:SetOperation(MODEL_OPERATION_INSERT)
If(oModel:CanActivate())
oModel:Activate()
oModel:SetValue("CNDMASTER","CND_CONTRA" ,CN9->CN9_NUMERO)
oModel:SetValue("CNDMASTER","CND_RCCOMP" ,"1")//Selecionar competência
oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)//Marcar a planilha(nesse caso apenas uma)
oModel:GetModel('CNRDETAIL1'):GoLine(1)//<CNRDETAIL1> é o submodelo das multas da planilha(CXN)
oModel:SetValue("CNRDETAIL1","CNR_TIPO" , '1')//1=Multa/2=Bonificação
oModel:SetValue("CNRDETAIL1","CNR_DESCRI" , 'TESTE MULTA')
oModel:SetValue("CNRDETAIL1","CNR_VALOR" , 100)
oModel:GetModel('CNRDETAIL1'):AddLine()
oModel:SetValue("CNRDETAIL1","CNR_TIPO" , '2')//1=Multa/2=Bonificação
oModel:SetValue("CNRDETAIL1","CNR_DESCRI" , 'TESTE BONIFICACAO')
oModel:SetValue("CNRDETAIL1","CNR_VALOR" , 101)
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()
EndIf
EndIf
If(oModel:HasErrorMessage())
aMsgDeErro := oModel:GetErrorMessage()
Else
cNumMed := CND->CND_NUMMED
oModel:DeActivate()
lRet := CN121Encerr(.T.) //Realiza o encerramento da medição
EndIf
EndIf
Return lRet |
11. Inclusão medição com multa/bonificação por item da planilha
Bloco de código |
---|
title | Inclusão medição com multa/bonificação por item da planilha |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
User Function CNT121_010()
Local oModel := Nil
Local cCodCTR := "CNTA121EXEMP010"
Local cNumMed := ""
Local aMsgDeErro:= {}
Local lRet := .F.
CN9->(DbSetOrder(1))
If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
oModel := FWLoadModel("CNTA121")
oModel:SetOperation(MODEL_OPERATION_INSERT)
If(oModel:CanActivate())
oModel:Activate()
oModel:SetValue("CNDMASTER","CND_CONTRA" ,CN9->CN9_NUMERO)
oModel:SetValue("CNDMASTER","CND_RCCOMP" ,"1")//Selecionar competência
oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)//Marcar a planilha(nesse caso apenas uma)
oModel:GetModel('CNEDETAIL'):GoLine(1)//Posiciona no item da medicao desejada
oModel:GetModel('CNRDETAIL2'):GoLine(1)//<CNRDETAIL2> é o submodelo das multas dos itens da planilha(CNE)
oModel:SetValue("CNRDETAIL2","CNR_TIPO" , '1')//1=Multa/2=Bonificação
oModel:SetValue("CNRDETAIL2","CNR_DESCRI" , 'TESTE MULTA')
oModel:SetValue("CNRDETAIL2","CNR_VALOR" , 100)
oModel:GetModel('CNRDETAIL2'):AddLine()
oModel:SetValue("CNRDETAIL2","CNR_TIPO" , '2')//1=Multa/2=Bonificação
oModel:SetValue("CNRDETAIL2","CNR_DESCRI" , 'TESTE BONIFICACAO')
oModel:SetValue("CNRDETAIL2","CNR_VALOR" , 101)
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()
EndIf
EndIf
If(oModel:HasErrorMessage())
aMsgDeErro := oModel:GetErrorMessage()
Else
cNumMed := CND->CND_NUMMED
oModel:DeActivate()
lRet := CN121Encerr(.T.) //Realiza o encerramento da medição
EndIf
EndIf
Return lRet |
12. Inclusão medição marcando todas as planilhas
Bloco de código |
---|
title | Inclusão medição marcando todas as planilhas |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
User Function CNT121_011()
Local oModel := Nil
Local cCodCTR := "CNTA121EXEMP011"
Local cNumMed := ""
Local aMsgDeErro:= {}
Local lRet := .F.
Local nX := 0
CN9->(DbSetOrder(1))
If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
oModel := FWLoadModel("CNTA121")
oModel:SetOperation(MODEL_OPERATION_INSERT)
If(oModel:CanActivate())
oModel:Activate()
oModel:SetValue("CNDMASTER","CND_CONTRA" ,CN9->CN9_NUMERO)
oModel:SetValue("CNDMASTER","CND_RCCOMP" ,"1")//Selecionar competência
For nX := 1 To oModel:GetModel("CXNDETAIL"):Length() //Marca todas as planilhas
oModel:GetModel("CXNDETAIL"):GoLine(nX)
oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)
Next nX
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()
EndIf
EndIf
If(oModel:HasErrorMessage())
aMsgDeErro := oModel:GetErrorMessage()
Else
cNumMed := CND->CND_NUMMED
oModel:DeActivate()
lRet := CN121Encerr(.T.) //Realiza o encerramento da medição
EndIf
EndIf
Return lRet |
13. Inclusão medição marcando planilhas específicas
Bloco de código |
---|
title | Inclusão medição marcando planilhas específicas |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
User Function CNT121_012()
Local oModel := Nil
Local cCodCTR := "CNTA121EXEMP012"
Local cNumMed := ""
Local aMsgDeErro:= {}
Local lRet := .F.
CN9->(DbSetOrder(1))
If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
oModel := FWLoadModel("CNTA121")
oModel:SetOperation(MODEL_OPERATION_INSERT)
If(oModel:CanActivate())
oModel:Activate()
oModel:SetValue("CNDMASTER","CND_CONTRA" ,CN9->CN9_NUMERO)
oModel:SetValue("CNDMASTER","CND_RCCOMP" ,"1")//Selecionar competência
//Marca planilha de acordo com a linha informada
oModel:GetModel("CXNDETAIL"):GoLine(1) //Marca planilha 000001
oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)
oModel:GetModel("CXNDETAIL"):GoLine(2) //Marca planilha 000002
oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()
EndIf
EndIf
If(oModel:HasErrorMessage())
aMsgDeErro := oModel:GetErrorMessage()
Else
cNumMed := CND->CND_NUMMED
oModel:DeActivate()
lRet := CN121Encerr(.T.) //Realiza o encerramento da medição
CN9->(DbSetOrder(1))
if CN9->(DbSeek(cChave))
oModel := FwLoadModel("CNTA171")
oModel:SetOperation(MODEL_OPERATION_INSERT)
if oModel:Activate()
oMdlCNK := oModel:GetModel("CNKMASTER")
oMdlCNK:SetValue("CNK_DESCRI" , "DOC 001 - INCLUSAO")
oMdlCNK:SetValue("CNK_CONTRA" , CN9->CN9_NUMERO)
oMdlCNK:SetValue("CNK_TPDOC" , "001")
oMdlCNK:SetValue("CNK_DTEMIS" , dDatabase)
oMdlCNK:SetValue("CNK_DTVALI" , dDatabase+30)
oMdlCNK:SetValue("CNK_OBS" , "Exemplo inclusão")
if AliasInDic('CXR')
oMdlCXR := oModel:GetModel("CXRDETAIL")
cNumero := StrZero(oMdlCXR:Length(), GetSx3Cache('CXR_ITEM','X3_TAMANHO'))
oMdlCXR:SetValue("CXR_ITEM" , cNumero)
oMdlCXR:SetValue("CXR_NOME" , "Responsavel XPTO")
oMdlCXR:SetValue("CXR_EMAIL", "[email protected]")
oMdlCXR:AddLine()
oMdlCXR:SetValue("CXR_ITEM" , Soma1(cNumero))
oMdlCXR:SetValue("CXR_NOME" , "Auxiliar XPTO")
oMdlCXR:SetValue("CXR_EMAIL", "[email protected]")
endif
If oModel:VldData()
oModel:CommitData()
EndIf
endif
if oModel:HasErrorMessage()
aErro := aClone(oModel:GetErrorMessage())
endif
If oModel:IsActive()
oModel:DeActivate()
EndIf
FreeObj(oModel)
If !Empty(aErro)
VarInfo('Erro apresentado:', aErro)
EndIf
EndIf endif
Return lRet |
...
03. Alteração de um documento
Bloco de código |
---|
firstline | 1 |
---|
title | Exemplo Inclusão medição com TES informada no itemAlteração de um documento |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
"FWMVCDEF.CH"
/*Exemplo de alteração de um documento*/
User Function CNT121_013Exemplo002()
Local oModel := NIL
Local oMdlCNK := Nil
Local oMdlCXR := Nil
Local cCodCTR Local cContra := "CNTA121EXEMP013TREINAMENTO1954"
Local cNumMed Local cChave := xFilial("CNK"
Local aMsgDeErro) + cContra
Local aErro := {}
Local lRet := .F.
CN9
CNK->(DbSetOrder(13))
If CN9//CNK_FILIAL+CNK_CONTRA+CNK_TPDOC
if CNK->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusão
cChave))
oModel := FWLoadModelFwLoadModel("CNTA121CNTA171")
oModel:SetOperation(MODEL_OPERATION_INSERTUPDATE)
If(
if oModel:CanActivateActivate())
oModel:Activate()
oModel:SetValue("CNDMASTER","CND_CONTRA" ,CN9->CN9_NUMERO)
oModel:SetValue("CNDMASTER","CND_RCCOMP" ,"1")//Selecionar competência
oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)//Marcar a planilha(nesse caso apenas uma)
oModel:GetModel('CNEDETAIL'):GoLine(1) //Posiciona na linha desejada
oModel:SetValue('CNEDETAIL', 'CNE_TES', '001')//Preenche TES - Este campo aceita tipo de entrada e saída.
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()
EndIf
EndIf
If(oModel:HasErrorMessage())
aMsgDeErro := oModel:GetErrorMessage()
Else
cNumMed := CND->CND_NUMMED
oModel:DeActivate()
lRet := CN121Encerr(.T.) //Realiza o encerramento da medição
EndIf
EndIf
Return lRet |
15. Inclusão de medição com múltiplas naturezas
Bloco de código |
---|
title | Exemplo inclusão de medição com múltiplas naturezas |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
User Function CNT121_014()
Local oModel := Nil
Local cCodCTR := "CNTA121EXEMP014"
Local cNumMed := ""
Local aMsgDeErro:= {}
Local lRet := .F.
CN9->(DbSetOrder(1))
oMdlCNK := oModel:GetModel("CNKMASTER")
oMdlCNK:SetValue("CNK_OBS" , "Exemplo Modificação")
if AliasInDic('CXR')
oMdlCXR := oModel:GetModel("CXRDETAIL")
oMdlCXR:GoLine(2)
oMdlCXR:SetValue("CXR_NOME" , "Operacao de Atualização")
endif
If oModel:VldData()
oModel:CommitData()
EndIf
endif
if oModel:HasErrorMessage()
aErro := aClone(oModel:GetErrorMessage())
endif
If oModel:IsActive()
oModel:DeActivate()
EndIf
If CN9->(DbSeek(xFilial("CN9") + cCodCTR))//Posicionar na CN9 para realizar a inclusãoFreeObj(oModel)
If !Empty(aErro)
oModel := FWLoadModel("CNTA121")
VarInfo('Erro apresentado:', aErro)
oModel:SetOperation(MODEL_OPERATION_INSERT)EndIf
endif
Return |
04. Exclusão de um documento
Bloco de código |
---|
firstline | 1 |
---|
title | Exclusão de um documento |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
/*Exemplo de exclusão If(oModel:CanActivate()) de um documento*/
User Function Exemplo003()
Local oModel
:= NIL
Local cContra oModel:Activate():= "TREINAMENTO1954"
Local cChave oModel:SetValue:= xFilial("CNDMASTER","CND_CONTRA" ,CN9->CN9_NUMERO)CNK") + cContra
Local aErro oModel:SetValue("CNDMASTER","CND_RCCOMP":= {}
,"1")//Selecionar competênciaCNK->(DbSetOrder(3))//CNK_FILIAL+CNK_CONTRA+CNK_TPDOC
if CNK->(DbSeek(cChave))
oModel := FwLoadModel("CNTA171")
oModel:SetValue("CXNDETAIL","CXN_CHECK" , .T.)//Marcar a planilha(nesse caso apenas uma)
SetOperation(MODEL_OPERATION_DELETE)
if oModel:Activate()
/*CXO=Múltiplas naturezas | CXP = Distribuição das naturezas em CC*/
If oModel:SetValue("CXODETAIL","CXO_ITEM", StrZero(1, Len(CXO->CXO_ITEM) ))
VldData()
oModel:SetValue("CXODETAIL","CXO_NATURE", 'GCT0000001'CommitData()
oModel:SetValue("CXODETAIL","CXO_PERC" , 50)EndIf
endif
oModel:SetValue("CXPDETAIL","CXP_ITEM" , StrZero(1, Len(CXP->CXP_ITEM) ))
if oModel:HasErrorMessage()
aErro := aClone(oModel:SetValue("CXPDETAIL","CXP_CC" , "GCT000001")
GetErrorMessage())
endif
oModel:SetValue("CXPDETAIL","CXP_CONTA" , "GCT00000000000000001" If oModel:IsActive()
oModel:SetValue("CXPDETAIL","CXP_PERC" , 50DeActivate()
EndIf
FreeObj(oModel)
oModel:GetModel('CXPDETAIL'):AddLine(If !Empty(aErro)
oModel:SetValue("CXPDETAIL","CXP_ITEM" , StrZero(2, Len(CXP->CXP_ITEM) ))
VarInfo('Erro apresentado:', aErro) oModel:SetValue("CXPDETAIL","CXP_CC" , "GCT000002")
EndIf
endif
Return |
04. Integração com o Totvs Assinatura Eletrônica(TAE)
Aviso |
---|
|
Antes de realizar a integração sem interface gráfica, é necessário que o usuário realize a autenticação em tela ao menos uma vez, para que o usuário/senha do TAE fique gravado no profile do usuário do Protheus. |
Bloco de código |
---|
firstline | 1 |
---|
title | Integração com TAE |
---|
linenumbers | true |
---|
|
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
/*Exemplo de integração com o TAE*/
User Function Exemplo004(oModel:SetValue("CXPDETAIL","CXP_CONTA" , "GCT00000000000000002")
oModel:SetValue("CXPDETAIL","CXP_PERC" , 50)
oModel:GetModel('CXODETAIL'):AddLine()
Local oModel oModel:SetValue("CXODETAIL","CXO_ITEM" , StrZero(2, Len(CXO->CXO_ITEM) ))
oModel:SetValue("CXODETAIL","CXO_NATURE", 'FIN0000001')
oModel:SetValue("CXODETAIL","CXO_PERC" , 50)
oModel:SetValue("CXPDETAIL","CXP_ITEM" , StrZero(1, Len(CXP->CXP_ITEM) ))
:= NIL
Local cContra := "TREINAMENTO1954"
Local cChave := xFilial("CNK") + cContra
Local aErro := {}
CNK->(DbSetOrder(3))//CNK_FILIAL+CNK_CONTRA+CNK_TPDOC
if CNK->(DbSeek(cChave))
oModel:SetValue("CXPDETAIL","CXP_CC" , "GCT000003") /*
oModel:SetValue("CXPDETAIL","CXP_CONTA" , "GCT00000000000000003")
ATENÇÃO:
oModel:SetValue("CXPDETAIL","CXP_ITEMCT", "GCT000001")
É NECESSÁRIO REALIZAR A OPERAÇÃO UMA VEZ EM oModel:SetValue("CXPDETAIL","CXP_CLVL" , "GCT000001")
TELA PARA QUE O USUÁRIO/SENHA FIQUE ARMAZENADA NO PROFILE DO USUÁRIO,
oModel:SetValue("CXPDETAIL","CXP_PERC" ,DEPOIS 50)
DISSO SERÁ POSSÍVEL REALIZAR A OPERAÇÃO SEM INTERFACE GRÁFICA.
oModel:GetModel('CXPDETAIL'):AddLine()
*/
oModel:SetValue("CXPDETAIL","CXP_ITEM" , StrZero(2, Len(CXP->CXP_ITEM) ))
CN171SOpSg(1)//1- Envia/publica documento; 2- Republica documento; 3- Atualiza situação da assinatura
oModel oModel:SetValue= FwLoadModel("CXPDETAIL","CXP_CC"CNTA171")
, "GCT000004") oModel:SetOperation(MODEL_OPERATION_UPDATE)
if
oModel:Activate() oModel:SetValue("CXPDETAIL","CXP_PERC" , 50)
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()
EndIf
EndIfendif
If(if oModel:HasErrorMessage())
aMsgDeErroaErro := aClone(oModel:GetErrorMessage()
Else
)
cNumMed := CND->CND_NUMMED endif
If oModel:IsActive()
oModel:DeActivate()
EndIf
FreeObj(oModel)
lRet := CN121Encerr(.T.) //Realiza o encerramento da medição If !Empty(aErro)
VarInfo('Erro apresentado:', aErro)
EndIf
EndIfCN171SOpSg(0)//Restaura operação
endif
Return lRet |
HTML |
---|
<!-- esconder o menu -->
<style>
div.theme-default .ia-splitter #main {
margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
display: none;
}
#main {
padding-left: 10px;
padding-right: 10px;
overflow-x: hidden;
}
.aui-header-primary .aui-nav, .aui-page-panel {
margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
margin-left: 0px !important;
}
</style>
|