Histórico da Página
A rotina CNTA300 foi desenvolvida em MVC e para realizar as ações via rotina automática, deve-se fazer uso do modelo de dados. Para mais detalhes sobre a utilização do MVC, consulte http://tdn.totvs.com/display/public/mp/AdvPl+utilizando+MVC.
A seguir mostraremos alguns exemplos de rotina automática relacionados ao contrato utilizando o modelo de dados da rotina CNTA300.
Produto: | TOTVS Backoffice |
---|---|
Linha de Produto: | Linha Protheus |
Segmento: | Backoffice |
Módulo: | TOTVS Backoffice (Linha Protheus) - Gestão de Contratos (SIGAGCT) |
Função: | CNTA300 - Contratos |
País: | Todos |
Banco(s) de Dados: | Todos |
Sistema(s) Operacional(is): | Todos |
Informações | |||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||
|
Exemplos
Expandir | |||||
---|---|---|---|---|---|
| |||||
|
Expandir | |||||||||
---|---|---|---|---|---|---|---|---|---|
| Utilidade | Valor | |||||||
1 | Periodicidade(tipo numérico) | 1=Mensal, 2=Quinzenal, 3=Diário, 4=Condição Pagamento | |||||||
2 | Dias(tipo numérico) | Número de dias para avançar nas parcelas do cronograma | |||||||
3 | Último dia do mês?(Tipo numérico) | 1 = SIM ou 2= NÃO Indica se a data prevista de medição deve ser ajustada para o último dia do mês de competência | |||||||
4 | Competência de início?(tipo caractere) | Deve ser composta por mês/ano no formato MM/AAAA(Exemplo: 12/2018) | |||||||
5 | Data prevista da 1º medição(tipo data) | Data prevista para que ocorra a primeira medição(exemplo: ) | |||||||
6 | Quantidade de parcelas(tipo numérico) | Número de parcelas do cronograma | |||||||
7 | Condição de Pagamento(tipo caractere) | Código da condição de pagamento que as parcelas do cronograma devem ser geradas | |||||||
8 | Taxa de Juros(tipo numérico) | Taxa de Juros para cálculo do valor presente |
Expandir | |||||
---|---|---|---|---|---|
| |||||
|
Expandir | |||||||||
---|---|---|---|---|---|---|---|---|---|
| |||||||||
|
vendas |
Para contratos de vendas deve-se carregar o modelo CNTA301 ao invés do CNTA300.
Bloco de código | ||
---|---|---|
| ||
#Include 'Protheus.ch'
#Include "FWMVCDEF.CH"
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
User Function CN300AUTO()
Local nRet := 0
PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "GCT" TABLES "CN9T10"
ConOut("INICIO TESTE")
ExCtrVenda()
ConOut("FIM TESTE")
RESET ENVIRONMENT
Return nRet
Static Function ExCtrVenda()
Local aErro := {}
Local oModel := Nil
Local cContrat := "EXCTRVENDA"
oModel := FWLoadModel('CNTA301')
oModel:SetOperation(MODEL_OPERATION_INSERT)
oModel:Activate()
//Cabeçalho do Contrato
oModel:SetValue('CN9MASTER','CN9_NUMERO', cContrat)
oModel:SetValue('CN9MASTER','CN9_DTINIC', dDataBase)
oModel:SetValue('CN9MASTER','CN9_UNVIGE', '2')
oModel:SetValue('CN9MASTER','CN9_VIGE', 6 )
oModel:SetValue('CN9MASTER','CN9_MOEDA', 1)
oModel:SetValue('CN9MASTER','CN9_TPCTO', "031")
oModel:SetValue('CN9MASTER','CN9_CONDPG', "000")
oModel:SetValue('CN9MASTER','CN9_AUTO', '1')
//Cliente/Fornecedor do Contrato
oModel:SetValue('CNCDETAIL','CNC_CLIENT' , "CN300R")
oModel:SetValue('CNCDETAIL','CNC_LOJACL' , "01")
//Planilhas do Contrato
oModel:SetValue('CNADETAIL','CNA_NUMERO', PadL("1", Len(CNA->CNA_NUMERO),"0"))
oModel:SetValue('CNADETAIL','CNA_CLIENT', "CN300R")
oModel:SetValue('CNADETAIL','CNA_LOJACL', "01")
oModel:SetValue('CNADETAIL','CNA_TIPPLA', "Z0F")
//Itens da Planilha do Contrato
oModel:SetValue('CNBDETAIL','CNB_ITEM', PadL("1", Len(CNB->CNB_ITEM),"0"))
oModel:SetValue('CNBDETAIL','CNB_PRODUT' ,'GCT000000000000000000000000001')
oModel:SetValue('CNBDETAIL','CNB_QUANT' ,6)
oModel:SetValue('CNBDETAIL','CNB_TS' , '501')
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()//--Grava Contrato
EndIf
CN9->(DbSetOrder(1))
If(oModel:HasErrorMessage())
aErro := oModel:GetErrorMessage()
AEval( aErro, { | x | ConOut( x ) + CRLF } )
ElseIf(CN9->(DbSeek(xFilial("CN9") + cContrat)))
ConOut("Contrato gravado com sucesso.")
EndIf
Return |
Expandir | |||||||||
---|---|---|---|---|---|---|---|---|---|
| |||||||||
|
Expandir | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
| ||||||||||||||
Expandir | ||||||||||||||
| ||||||||||||||
|
Expandir | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| Revisão de realinhamento
| |||||||||||
|
Expandir | |||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||
A função CN300PrCF(.T.) permite que se gere automaticamente o cronograma financeiro/físico pela rotina automática da mesma maneira que se faz pela tela(pelo botão Outras Ações → Incluir cronograma financeiro/físico). A função recebe como argumento a variável lógica .T. para efetuar a inclusão do cronograma financeiro/físico
|
Expandir | |||||
---|---|---|---|---|---|
| |||||
|
title | Mudança de situação de um contrato |
---|
|
Expandir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||
|
Para mudar a situação de um contrato não é necessário instanciar o modelo de dados, pois a rotina de mudança de situação(função CN100Situac) carrega sozinha o modelo e realiza as alterações necessários. Abaixo um exemplo:
Bloco de código | ||
---|---|---|
| ||
### Exemplo de alteração de situação utilizando a função CN100Situac ###
#Include 'Protheus.ch'
#Include "FWMVCDEF.CH"
/* É possível mudar para as situações conforme abaixo:
"01"=Cancelado
"03"=Emitido
"05"=Vigente
"06"=Paralisado
"07"=Sol Fina.
"08"=Finalizado
"11"=Rejeitado
*/
User Function CN300SITU()
Local cFilCont := ' < FILIAL_DO_CONTRATO > '
Local cContra := ' < NÚMERO_DO_CONTRATO > '
Local cRevisa := ' <NÚMERO_DA_REVISÃO> '
CN9->(DBSetOrder(1))
If CN9->( DbSeek( cFilCont + cContra + cRevisa ))//Deve se posicionar no contrato que terá sua situação alterada
CN100Situac('CN9',CN9->(Recno()),4, "05",.T.)//Muda a situação do contrato para vigente
EndIf
Return lRet |
Exemplo de paralisação/reinicio de contrato
Abaixo um exemplo de como é possível paralisar e dar reinicio a um contrato:
Bloco de código | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
### Exemplo de paralisação de uma contrato e seu reinicio ###
#Include 'Protheus.ch'
#Include "FWMVCDEF.CH"
User Function TsRVPar()
Local cContra := '[NUMERO DO CONTRATO]'
Local cRevisa := Space(3)//Deve ser substituído pela revisão
PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "GCT" TABLES "CN9T10"
|
Exemplo de inclusão de contrato de vendas
Para contratos de vendas deve-se carregar o modelo CNTA301 ao invés do CNTA300, abaixo um exemplo:
Bloco de código | ||
---|---|---|
| ||
### Exemplo de inclusão de uma contrato de venda ###
#Include 'Protheus.ch'
#Include "FWMVCDEF.CH"
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
User Function CN300AUTO()
Local nRet := 0
PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "GCT" TABLES "CN9T10"
ConOut("INICIO TESTE")
ExCtrVenda()
ConOut("FIM TESTE")
RESET ENVIRONMENT
Return nRet
Static Function ExCtrVenda()
Local aErro := {}
Local oModel := Nil
Local cContrat := "EXCTRVENDA"
oModel := FWLoadModel('CNTA301')
oModel:SetOperation(MODEL_OPERATION_INSERT)
oModel:Activate()
//Cabeçalho do Contrato
oModel:SetValue('CN9MASTER','CN9_NUMERO', cContrat)
oModel:SetValue('CN9MASTER','CN9_DTINIC', dDataBase)
oModel:SetValue('CN9MASTER','CN9_UNVIGE', '2')
oModel:SetValue('CN9MASTER','CN9_VIGE', 6 )
oModel:SetValue('CN9MASTER','CN9_MOEDA', 1)
oModel:SetValue('CN9MASTER','CN9_TPCTO', "031")
oModel:SetValue('CN9MASTER','CN9_CONDPG', "000")
oModel:SetValue('CN9MASTER','CN9_AUTO', '1')
//Cliente/Fornecedor do Contrato
oModel:SetValue('CNCDETAIL','CNC_CLIENT' , "CN300R")
oModel:SetValue('CNCDETAIL','CNC_LOJACL' , "01")
//Planilhas do Contrato
oModel:SetValue('CNADETAIL','CNA_NUMERO', PadL("1", Len(CNA->CNA_NUMERO),"0"))
oModel:SetValue('CNADETAIL','CNA_CLIENT', "CN300R")
oModel:SetValue('CNADETAIL','CNA_LOJACL', "01")
oModel:SetValue('CNADETAIL','CNA_TIPPLA', "Z0F")
//Itens da Planilha do Contrato
oModel:SetValue('CNBDETAIL','CNB_ITEM', PadL("1", Len(CNB->CNB_ITEM),"0"))
oModel:SetValue('CNBDETAIL','CNB_PRODUT' ,'GCT000000000000000000000000001')
oModel:SetValue('CNBDETAIL','CNB_QUANT' ,6)
oModel:SetValue('CNBDETAIL','CNB_TS' , '501')
If (oModel:VldData()) /*Valida o modelo como um todo*/
oModel:CommitData()//--Grava Contrato
EndIf
CN9->(DbSetOrder(1))
If(oModel:HasErrorMessage())
aErro := oModel:GetErrorMessage()
AEval( aErro, { | x | ConOut( x ) + CRLF } )
ElseIf(CN9->(DbSeek(xFilial("CN9") + cContrat)))
ConOut("Contrato gravado com sucesso.")
EndIf
Return |
Exemplo de inclusão de contrato com rateios
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bloco de código | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#Include 'Protheus.ch'
#Include "FWMVCDEF.CH"
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
User Function CN300AUTO()
Local nRet := 0
|
Exemplo de inclusão de adiantamentos em um contrato
Bloco de código | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#Include 'Protheus.ch'
#Include "FWMVCDEF.CH"
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
User Function CN300AUTO()
|
Expandir | |||||||||
---|---|---|---|---|---|---|---|---|---|
| |||||||||
|
Exemplo de inclusão de contrato com múltiplas planilhas
|
Expandir | |||||
---|---|---|---|---|---|
| |||||
Para mudar a situação de um contrato não é necessário instanciar o modelo de dados, pois a rotina de mudança de situação(função CN100Situac) carrega sozinha o modelo e realiza as alterações necessários. Abaixo um exemplo:
|
Expandir | |||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||
Abaixo um exemplo de como é possível paralisar e dar reinicio a um contrato:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||
Bloco de código | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "TBICONN.CH"
User Function CN300AUTO()
Local nRet := 0
PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "GCT" TABLES "CN9T10"
ConOut("INICIO TESTE")
IncMultPlan()
ConOut("FIM TESTE")
RESET ENVIRONMENT
Return nRet
/*Exemplo de inclusão de contrato com múltiplas planilhas*/
Static Function IncMultPlan()
Local aErro := {}
Local oModel := Nil
Local oModelCNB := Nil
Local oModelCNA := Nil
Local cContrat := "CTRMULTIPLAN"
Local nX := 0
Local nQtdPlan := 3
oModel := FWLoadModel('CNTA300')
oModel:SetOperation(MODEL_OPERATION_INSERT)
oModel:Activate()
//Cabeçalho do Contrato
oModel:SetValue('CN9MASTER','CN9_NUMERO', cContrat)
oModel:SetValue('CN9MASTER','CN9_DTINIC', dDataBase)
oModel:SetValue('CN9MASTER','CN9_UNVIGE', '2')
oModel:SetValue('CN9MASTER','CN9_VIGE', 6 )
oModel:SetValue('CN9MASTER','CN9_MOEDA', 1)
oModel:SetValue('CN9MASTER','CN9_TPCTO', "001")
oModel:SetValue('CN9MASTER','CN9_CONDPG', "000")
oModel:SetValue('CN9MASTER','CN9_AUTO' , '1')
//Cliente/Fornecedor do Contrato
oModel:SetValue('CNCDETAIL','CNC_CODIGO', "GCT001")
oModel:SetValue('CNCDETAIL','CNC_LOJA' , "01")
oModelCNB := oModel:GetModel("CNBDETAIL")
oModelCNA := oModel:GetModel("CNADETAIL")
for nX := 1 to nQtdPlan
If !(Empty(oModelCNA:GetValue('CNA_NUMERO')))
oModelCNA:AddLine()
EndIf
//Planilhas do Contrato
oModelCNA:LoadValue('CNA_NUMERO' , StrZero(nX, Len(CNA->CNA_NUMERO)))
oModelCNA:SetValue('CNA_FORNEC' , oModel:GetValue('CNCDETAIL','CNC_CODIGO'))
|