Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

 Exemplo de Rotina Automática CNTA300

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Serviços

Módulo:

Gestão de Contratos

Rotina:

Rotina

Nome Técnico

CNTA300

Manutenção de Contratos

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) Operacional(is):

Todos

Descrição

A Rotina CNTA300 foi desenvolvida em MVC, portanto para realizar a inclusão, alteração e exclusão de um contrato, automaticamente, deve-se fazer uso do modelo de dados. A Seguir mostraremos um exemplo de como realizar a inclusão de um contrato utilizando o modelo de dados da rotina CNTA300.

Para mais detalhes sobre a utilização do MVC, consulte a pagina: http://tdn.totvs.com/display/public/mp/AdvPl+utilizando+MVC


Exemplo de Rotina Automática - Inclusão

 

Bloco de código
themeEclipse
#Include 'Protheus.ch'
#INCLUDE "FWMVCDEF.CH"
User Function CN300AUTO()

Local oModel := FWLoadModel("CNTA300") //Carrega o modelo

oModel:SetOperation(MODEL_OPERATION_INSERT) // Seta operação de inclusão

oModel:Activate() // Ativa o Modelo 

//Cabeçalho do contrato
oModel:SetValue( 'CN9MASTER'	, 'CN9_DTINIC'	, Ctod("24/02/2017")	)
oModel:SetValue( 'CN9MASTER'	, 'CN9_NUMERO'	, '000000000000069'	)
oModel:SetValue( 'CN9MASTER'	, 'CN9_UNVIGE'	, '3'					)
oModel:SetValue( 'CN9MASTER'	, 'CN9_VIGE'		, 1						)
oModel:SetValue( 'CN9MASTER'	, 'CN9_MOEDA'		, 1						)
oModel:SetValue( 'CN9MASTER'	, 'CN9_CONDPG'	, '001'				)
oModel:SetValue( 'CN9MASTER'	, 'CN9_TPCTO'		, '001'				)
oModel:SetValue( 'CN9MASTER'	, 'CN9_FLGREJ'	, '2'					)
oModel:SetValue( 'CN9MASTER'	, 'CN9_FLGCAU'	, '2'					)
oModel:SetValue( 'CN9MASTER'	, 'CN9_ASSINA'	, Ctod("24/02/2017")	)

//Cliente/Fornecedor do Contrato
oModel:SetValue( 'CNCDETAIL'	, 'CNC_CODIGO'	, '001   '	)
oModel:SetValue( 'CNCDETAIL'	, 'CNC_LOJA'		, '01'		)
//Planilhas do Contrato
oModel:LoadValue(	'CNADETAIL'	, 'CNA_CONTRA'	, '000000000000069'	)
oModel:SetValue( 	'CNADETAIL' 	, 'CNA_NUMERO'	, '000001'				)
oModel:SetValue(	'CNADETAIL' 	, 'CNA_FORNEC'	, '001   '				)
oModel:SetValue(	'CNADETAIL' 	, 'CNA_LJFORN'	, '01'					)
oModel:SetValue(	'CNADETAIL' 	, 'CNA_TIPPLA'	, '004'				)
oModel:SetValue(	'CNADETAIL' 	, 'CNA_FLREAJ'	, '2'					)

//Itens da Planilha do Contrato
oModel:SetValue( 'CNBDETAIL'	, 'CNB_ITEM'		, '001'				)
oModel:SetValue( 'CNBDETAIL'	, 'CNB_PRODUT'	, '001            '	)
oModel:SetValue( 'CNBDETAIL'	, 'CNB_QUANT'		, 1						)
oModel:SetValue( 'CNBDETAIL'	, 'CNB_VLUNIT'	, 1000					)
oModel:SetValue( 'CNBDETAIL'	, 'CNB_PEDTIT'	, '1'					)

//Cronograma Financeiro

oModel:GetModel('CNFDETAIL'):SetNoInserLine(.F.)
oModel:GetModel('CNFDETAIL'):SetNoUpdateLine(.F.)

oModel:LoadValue( 'CNFDETAIL'	, 'CNF_NUMERO' 	, '000071'				)
oModel:SetValue( 'CNFDETAIL'	, 'CNF_PARCEL' 	, '01'					)
oModel:SetValue( 'CNFDETAIL'	, 'CNF_COMPET'	, '02/2017'			)
oModel:SetValue( 'CNFDETAIL'	, "CNF_VLPREV"	, 500					)
oModel:SetValue( 'CNFDETAIL'	, "CNF_VLREAL"	, 0						)
oModel:SetValue( 'CNFDETAIL'	, "CNF_SALDO"		, 500					)
oModel:SetValue( 'CNFDETAIL'	, 'CNF_PRUMED'	, Ctod("24/02/2017")	)
oModel:SetValue( 'CNFDETAIL'	, 'CNF_DTVENC'	, Ctod("24/02/2017")	)
oModel:SetValue( 'CNFDETAIL'	, 'CNF_TXMOED'	, 1						)

oModel:GetModel('CNFDETAIL'):AddLine()

oModel:LoadValue( 'CNFDETAIL'	, 'CNF_NUMERO' 	, '000071'				)
oModel:SetValue( 'CNFDETAIL'	, 'CNF_PARCEL' 	, '02'					)
oModel:SetValue( 'CNFDETAIL'	, 'CNF_COMPET'	, '02/2017'			)
oModel:SetValue( 'CNFDETAIL'	, "CNF_VLPREV"	, 500					)
oModel:SetValue( 'CNFDETAIL'	, "CNF_VLREAL"	, 0						)
oModel:SetValue( 'CNFDETAIL'	, "CNF_SALDO"		, 500					)
oModel:SetValue( 'CNFDETAIL'	, 'CNF_PRUMED'	, Ctod("24/02/2017")	)
oModel:SetValue( 'CNFDETAIL'	, 'CNF_DTVENC'	, Ctod("24/02/2017")	)
oModel:SetValue( 'CNFDETAIL'	, 'CNF_TXMOED'	, 1						)

//Validação e Gravação do Modelo
If oModel:VldData() 
	oModel:CommitData() 
EndIf

Return

Exemplo de Rotina Automática - Revisão de Realinhamento

A Rotina CNTA300 foi desenvolvida em MVC, portanto para realizar a revisão automaticamente, deve-se fazer uso do modelo de dados. A Seguir mostraremos um exemplo de como realizar a revisão de um contrato utilizando o modelo de dados da rotina CNTA300.

Para mais detalhes sobre a utilização do MVC, consulte a pagina: http://tdn.totvs.com/display/public/mp/AdvPl+utilizando+MVC

É necessário utilizar a função A300STpRev("< TIPO_DE_REVISÃO >") para definir o tipo de revisão que será realizada. São tipos de revisão validos:

"1" - Aditivo
"2" - Reajuste
"3" - Realinhamento
"4" - Readequação
"5" - Paralisação
"6" - Reinício
"7" - Cláusulas
"8" - Contábil
"9" - Índice
"A" - Fornecedor/Cliente
"B" - Grupo de Aprovação
"C" - Renovação
"D" - Multa/Bonificação
"E" - Caução
"F" - Orçamento de Serviços GS

Caso seja necessário identificar o tipo de revisão que está sendo realizada no contrato, utilizar a função A300GTpRev(), que retorna o tipo de revisão definido com o uso da função A300STpRev("< TIPO_DE_REVISÃO >").


Bloco de código
themeEclipse
#Include 'Protheus.ch'
#Include "FWMVCDEF.CH"

User Function CN300AUTO() 
Local oModel	:= Nil
Local cContra	:= ' < NÚMERO_DO_CONTRATO > '



Local cTipRev	:= ' < TIPO_DE_REVISÃO > '
Local cJustific	:= 'Justificativa da revisão do contrato'


Local lRet		:= .F.


//=== Preparação do contrato para revisão =============================================================================================
CN9->(DBSetOrder(1))
If CN9->(DbSeek(xFilial("CN9")+cContra))					//- Posicionamento no contrato que será revisado.
 	
 	A300STpRev("3")										//- Define o tipo de revisão que será realizado.
 	
 	oModel := FWLoadModel("CNTA300")				//- Carrega o modelo de dados do contrato.
	oModel:SetOperation(MODEL_OPERATION_INSERT)		//- Define operação do modelo. Será INSERIDA uma revisão.
	 
	oModel:Activate(.T.) 								//- Ativa o modelo. É necessária a utilização do parâmetro como true (.T.) para realizar uma copia.


	//=== Preenchimento das alterações da revisão. =======================================================================================
	//== Cabeçalho
	oModel:SetValue( 'CN9MASTER'    , 'CN9_TIPREV' , cTipRev)	//- É obrigatório o preenchimento do tipo de revisão do contrato.

	oModel:SetValue( 'CN9MASTER'    , 'CN9_JUSTIF' , cJustific')	//- É obrigatório o preenchimento da justificativa de revisão do contrato.
	
	//== Qualquer alteração possível na execução manual pode ser automatizada.
	oModel:SetValue( 'CNBDETAIL'    , 'CNB_VLUNIT'  , 0.0010)		//- Alteração do valor unitário do item.
	
	//== Validação e Gravação do Modelo
	lRet := oModel:VldData() .And. oModel:CommitData()
EndIf
 
Return lRet