Histórico da Página
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: |
| ||||
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 | ||
|---|---|---|
| ||
#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 | ||
|---|---|---|
| ||
#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 |