Árvore de páginas

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.                                                             

  

(Obrigatório)

Informações Gerais

 

Especificação

Produto

Protheus

Módulo

SIGACTB – Contabilidade Gerencial

Segmento Executor

 

Projeto1

 

IRM/EPIC1

 

Requisito/Story/Issue1

 

Subtarefa1

 

Chamado/Ticket2

 

País

(  ) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   ( X ) Outro _TODOS_.

Outros

<Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>.

   Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos). 

Objetivo

Reescrever o programa Lançamento Padrão (CTBA080) utilizando a arquitetura MVC isolando regras específicas por localização mantendo o comportamento atual da rotina.

Definição da Regra de Negócio

A rotina Lançamento Padrão (CTBA080) permite a configuração para integração de lançamentos contábeis provenientes de outros módulos do sistema. Essa rotina chama a rotina CTBA086 que também são os lançamentos mais com a visualização por processos sendo que cada uma delas é utilizada de forma separadas.

 

  • Manter as funcionalidades existentes
  • Manter pontos de entradas existentes
  • Manter as integrações existentes
  • Manter as validações existentes
  • Separar processos específicos por localidade

 

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

[CTBA080 – Lançamento padrão]

[Alteração]

[Atualizações -> Entidades -> Lançamento padrão]

-

 

Funções que a rotina CTBA080 fornece e suas funcionalidades:

Nome

Descrição

Uso

Ctba080()

Criação da mbrowse

Principal

Ctba080Rot(cAlias,nReg,nOpc)

Faz o direcionamento para a rotina de inclusão, alteração e exclusão

Principal

Ctba080Ok(nopc)

Faz as validações e gravações para cada uma das operações

Principal

CTB080CDB()

Validação do CT5_MOEDA

Validação

Ctb080Form()

Validação do formulário e se a rotina de macro execução está correta

Validação / Visualização

Ctb080CC()

Validação de centro de custos

Validação

CTBA080LP()

Verifica a validade do código do lançamento padrão (place holder sempre .T.)

Validação

CTBA080Sb()

Validação de permissão de uso de sublote

Validação

Ctba080Sel(lVisual, cTpSald, cMltSld)

Validação de seleção de múltiplo saldos

Validação

Ctba080Vis(cAlias,nReg,nOpc)

Rotina de visualização de um lançamento padrão

Visualização

CtbAjusCT5()

Ajusta os lançamentos com campo CT5_STATUS branco para 1

Ajuste

CTB93CWK()

Carregas as consultas padrões corretas para o campo correto

Visualização

CTBA080FOR()

Carrega a caixa de diálogos para a consulta de formulas da tabela CWK.

Visualização

CTB93VCA()

Valida se o campo tem a instrução EJEFOR com um parâmetro válido na CWK

Validação

 

As seguintes funções são utilizadas externamente a rotina CTBA080:

Função

Tipo de uso

Local do uso

Ctb080Form()

Fontes

CTBA240.PRW CTBA277.PRW CTBA910.PRW

CtbAjusCT5()

Fontes

CTBXLOAD.PRW

CTB080CDB()

Validação

CT5

Ctb080Form()

Validação

CT5 / CVK

Ctb080CC()

Validação

CT5

CTBA080Sb()

Validação

CT5 / CVK

 

Os seguintes pontos de entradas são disponibilizados pela rotina CTBA080:

Nome

Descrição

CTA080TOK

Executa ao excluir o Lançamento padrão

CT080GRV

Executa ao gravar qualquer Lançamento padrão.

CTA080TOK

Executa ao validar o Lançamento padrão

 

Documentação Ponto de Entrada:

Ponto de Entrada no Cadastro de Lançamento Padrão em MVC

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Serviços

Módulo:

SIGACTB

Rotina:

Rotina

Nome Técnico

CTBA080

 

Lançamentos Contábeis de Integração

Ponto de Entrada:

CTBA080

País(es):

Brasil

Banco(s) de Dados:

Todas

Sistema(s) Operacional(is):

Todos

Descrição

O objetivo do ponto de entrada no Cadastro de Lançamento Padrão segue os moldes das rotinas desenvolvidas em MVC onde um único ponto de entrada deve ser uma User Function e ter como nome o ID do Modelo de Dados (Model) do Fonte. Peguemos de exemplo um fonte do Modulo Contabilidade Gerencial :   CTBA080. Neste fonte o ID do Modelo de Dados ( definido na funcão ModelDef()  ) é também CTBA080, portanto ao se escrever o ponto de entrada desta rotina, faríamos User Function CTBA080(), onde este é invocado em diversos momentos, conforme documentação TDN.

link http://tdn.totvs.com/pages/viewpage.action?pageId=208345968 

 

No caso os pontos de entrada que anteriormente eram executados deverão ser substituídos colocando o evento de validação do formulário e de persistência após gravação dos dados na transação, portanto os pontos de entrada CTA080TOK e CT080GRV deverão ser reescritos na User Function CTBA080.
  • CTA080TOK

Link: DT_PE_CTA080TOK - Valida lancamentos padroes


Utilização em MVC: Pode ser substituído pela função MODELPOS

  • CT080GRV

Link: DT_PE_CT080GRV - Após gravar o lançamento padrão
Utilização em MVC: Pode ser substituído pela função FORMCOMMINTTTS.

Ponto de Entrada

Descrição:

O ponto de entrada CTBA080 permite tratar os diversos eventos no cadastro de Lançamento Padrão.

Eventos:

MODELPRE

Antes da alteração de qualquer campo do modelo.

Retorno:
Requer um retorno lógico

MODELPOS

Na validação total do modelo.

Retorno:
Requer um retorno lógico

FORMPRE

Antes da alteração de qualquer campo do formulário.

Retorno:
Requer um retorno lógico

FORMPOS

Na validação total do formulário.

Retorno:
Requer um retorno lógico

FORMLINEPRE

Antes da alteração da linha do formulário FWFORMGRID.

Retorno:
Requer um retorno lógico

FORMLINEPOS

Na validação total da linha do formulário FWFORMGRID.

Retorno:
Requer um retorno lógico

MODELCOMMITTTS

Após a gravação total do modelo e dentro da transação.

Retorno:
Não espera retorno

MODELCOMMITNTTS

Após a gravação total do modelo e fora da transação.

Retorno:
Não espera retorno

FORMCOMMITTTSPRE

Antes da gravação da tabela do formulário.

Retorno:
Não espera retorno

FORMCOMMITTTSPOS

Após a gravação da tabela do formulário.

Retorno:
Não espera retorno

FORMCANCEL

No cancelamento do botão.


Retorno:
Requer um retorno lógico

BUTTONBAR

Para a inclusão de botões na ControlBar.
Retorno:
Requer um array de retorno com estrutura pré definida

Programa Fonte:

CTBA080

Retorno:

de acordo com evento conforme documentação http://tdn.totvs.com/pages/viewpage.action?pageId=208345968 


Exemplo: 

#include "Protheus.ch"
#include "FWMVCDEF.CH"

Static lFlag := .F.

User Function CTBA080()
Local aParam := PARAMIXB
Local xRet := .T.
Local oObj := ''
Local cIdPonto := ''

Local cIdModel := ''
Local lIsGrid := .F.
Local nLinha := 0
Local nQtdLinhas := 0
Local cMsg := ''
Local cClasse := ""



If aParam <> NIL
	oObj := aParam[1]
	cIdPonto := aParam[2]
	cIdModel := aParam[3]
	
	lIsGrid := ( oObj:ClassName()=="FWFORMGRID" )   //.F. //( Len( aParam ) == 5 .And. aParam[5] != NIL )
	
	If lIsGrid
		nQtdLinhas := oObj:GetQtdLine()
		nLinha := oObj:nLine
	EndIf



	If cIdPonto == 'MODELPOS'
	
		lFlag := !lFlag
		
		If lFlag

			If 		oObj:GetOperation() == MODEL_OPERATION_INSERT
					// para inclusão;
					cMsg := 'P E Exemplo do metodo GetOperation INCLUSAO (NECESSARIO include FWMVCDEF.CH.' + CRLF
					cMsg += 'ID ' + cIdModel + CRLF
					If !( xRet := ApMsgYesNo( cMsg + ' - Continua ?' ) )
						Help( ,, 'Help',, 'OPERACAO INCLUSAO .F.', 1, 0 )
					EndIf
			
				
			ElseIf oObj:GetOperation() == MODEL_OPERATION_UPDATE
					// para alteração;
					cMsg := 'P E Exemplo do metodo GetOperation ALTERACAO (NECESSARIO include FWMVCDEF.CH.' + CRLF
					cMsg += 'ID ' + cIdModel + CRLF
					If !( xRet := ApMsgYesNo( cMsg + ' - Continua ?' ) )
						Help( ,, 'Help',, 'OPERACAO ALTERACAO .F.', 1, 0 )
					EndIf
			
			ElseIf oObj:GetOperation() == MODEL_OPERATION_DELETE
					//para exclusao
					cMsg := 'P E Exemplo do metodo GetOperation EXCLUSAO (NECESSARIO include FWMVCDEF.CH.' + CRLF
					cMsg += 'ID ' + cIdModel + CRLF
					If !( xRet := ApMsgYesNo( cMsg + ' - Continua ?' ) )
						Help( ,, 'Help',, 'OPERACAO EXCLUSAO .F.', 1, 0 )
					EndIf
			
			Else
					cMsg := 'P E Exemplo do metodo GetOperation Visualizacao (NECESSARIO include FWMVCDEF.CH.' + CRLF
					cMsg += 'ID ' + cIdModel + CRLF
					If !( xRet := ApMsgYesNo( cMsg + ' - Continua ?' ) )
						Help( ,, 'Help',, 'Visualizacao .F.', 1, 0 )
					EndIf
			
			EndIf
	
			cMsg := 'P E Validação total do modelo (MODELPOS).' + CRLF
			cMsg += 'ID ' + cIdModel + CRLF
			If !( xRet := ApMsgYesNo( cMsg  + If(oObj:GetValue( "CT5MASTER", 'CT5_STATUS' )=='1', "L P   A t i v o ", "LP Desabilitado") + ' - Continua ?' ) )
				Help( ,, 'Help',, 'O MODELPOS retornou .F.', 1, 0 )
			EndIf

		EndIf

	ElseIf cIdPonto == 'FORMPOS'
		/*
		cMsg := 'Chamada na validação total do formulário (FORMPOS).' + CRLF
		cMsg += 'ID ' + cIdModel + CRLF
		
		cClasse := oObj:ClassName() 
		
		If cClasse == 'FWFORMGRID'
			cMsg += 'É um FORMGRID com ' + Alltrim( Str( nQtdLinhas ) ) + ;
			' linha(s).' + CRLF
			cMsg += 'Posicionado na linha ' + Alltrim( Str( nLinha ) ) + CRLF
		ElseIf cClasse == 'FWFORMFIELD'
			cMsg += 'É um FORMFIELD' + CRLF
		EndIf
		If !( xRet := ApMsgYesNo( cMsg + 'Continua ?' ) )
			Help( ,, 'Help',, 'O FORMPOS retornou .F.', 1, 0 )
		EndIf
		*/

	ElseIf cIdPonto == 'FORMLINEPRE'
		/*
		If aParam[5] == 'DELETE'
			cMsg := 'Chamada na pré validação da linha do formulário (FORMLINEPRE).' + CRLF
			cMsg += 'Onde esta se tentando deletar uma linha' + CRLF
			cMsg += 'É um FORMGRID com ' + Alltrim( Str( nQtdLinhas ) ) +;
			' linha(s).' + CRLF
			cMsg += 'Posicionado na linha ' + Alltrim( Str( nLinha ) ) + CRLF
			cMsg += 'ID ' + cIdModel + CRLF
			If !( xRet := ApMsgYesNo( cMsg + 'Continua ?' ) )
				Help( ,, 'Help',, 'O FORMLINEPRE retornou .F.', 1, 0 )
			EndIf
		EndIf
		*/

	ElseIf cIdPonto == 'FORMLINEPOS'
		/*
		cMsg := 'Chamada na validação da linha do formulário (FORMLINEPOS).' + CRLF
		cMsg += 'ID ' + cIdModel + CRLF
		cMsg += 'É um FORMGRID com ' + Alltrim( Str( nQtdLinhas ) ) + 		' linha(s).' + CRLF
		cMsg += 'Posicionado na linha ' + Alltrim( Str( nLinha ) ) + CRLF
		
		If !( xRet := ApMsgYesNo( cMsg + 'Continua ?' ) )
			Help( ,, 'Help',, 'O FORMLINEPOS retornou .F.', 1, 0 )
		EndIf
		*/
		
	ElseIf cIdPonto == 'MODELCOMMITTTS'
		//ApMsgInfo('Chamada apos a gravação total do modelo e dentro da transação (MODELCOMMITTTS).' + CRLF + 'ID ' + cIdModel )

	ElseIf cIdPonto == 'MODELCOMMITNTTS'
		//ApMsgInfo('Chamada apos a gravação total do modelo e fora da transação (MODELCOMMITNTTS).' + CRLF + 'ID ' + cIdModel)
		
		If CT5->(FieldPos("CT5_USUARI"))  > 0
			RecLock("CT5", .F.)
			CT5->CT5_USUARI := "Paulo da Silva Nunes"
			MsUnlock()
		EndIf


	ElseIf cIdPonto == 'FORMCOMMITTTSPOS'
		//ApMsgInfo('Chamada apos a gravação da tabela do formulário (FORMCOMMITTTSPOS).' + CRLF + 'ID ' + cIdModel)

	ElseIf cIdPonto == 'MODELCANCEL'
		/*
		cMsg := 'Chamada no Botão Cancelar (MODELCANCEL).' + CRLF + 'Deseja Realmente Sair ?'
		If !( xRet := ApMsgYesNo( cMsg ) )
			Help( ,, 'Help',, 'O MODELCANCEL retornou .F.', 1, 0 )
		EndIf
      */
      
	ElseIf cIdPonto == 'MODELVLDACTIVE'
		/*
		cMsg := 'Chamada na validação da ativação do Model.' + CRLF + ;
		'Continua ?'
		If !( xRet := ApMsgYesNo( cMsg ) )
			Help( ,, 'Help',, 'O MODELVLDACTIVE retornou .F.', 1, 0 )
		EndIf
		*/
	ElseIf cIdPonto == 'BUTTONBAR'
	   /*
		ApMsgInfo('Adicionando Botão na Barra de Botões (BUTTONBAR).' + CRLF + 'ID ' + cIdModel )
		xRet := { {'Salvar', 'SALVAR', { || Alert( 'Salvou' ) }, 'Este botão Salva' } }
      */
      
	EndIf

EndIf  

Return xRet

 

 

Os seguintes alias são utilizados pela rotina CTBA080:

Alias

Descrição

Utilização

CT5

Lancamento Padrao

Tabelas principal do cadastro

CVA

Pontos de Lancamento Padrao

Pontos de lançamentos por processos

CWN

Funcoes

Não identificado

CT1

Plano de Contas

Cadastro do plano de contas

CTT

Centro de Custo

Cadastro do centro de custo

CTD

Item Contabil

Cadastro do item contábil

CTH

Classes de Valores

Cadastro da classe de valore

CWK

Formulas

Não identificado

CWQ

Tabelas VS Formula

Não identificado

CWO

Tabela de Pontos Lancamentos

Não identificado

SX3

Dicionario de campos

Dicionário de campos do sistema

SRV

Verbas

Cadastro de verbas do GPE

 

Os seguintes parâmetros controlam a execução da rotina:

Parâmetro

Descrição

MV_SUBLOTE

Indica ou não o uso do SUB-LOTE CONTABIL. Caso em branco o campo será solicitado para digitação, caso preenchido, o conteúdo, será gravado.

MV_OPTNFE

Indica se os lançamentos contábeis da rotina off-line estão preparados para utilizar query's. Somente documentos de entrada.

MV_OPTNFS

Indica se os lançamentos contábeis da rotina off-line estão preparados para utilizar query's. Somente documentos de saída.

 

As seguintes funcionalidades foram identificadas na rotina CTBA080 e serão mantidas / melhoradas:

 

Definição das alterações

  • Os pontos de entrada serão mantidos em seus respectivos eventos para garantir o comportamentos já customizados pelo cliente.
  • As configurações de ordenação não serão mantidas e serão utilizadas as existentes nas funcionalidades do MVC.
  • As operações de múltiplos tipos de saldos serão agregados a tela principal com um grid separado.
  • Visualização em árvore permanecerá chamando CTBA086

 

A seguinte estrutura será colocada para as localizações:

 

As seguintes alterações devem ser feitas na funções da rotina original:

Nome

Descrição

Ctba080()

Mantida e criada no MVC

Ctba080Rot(cAlias,nReg,nOpc)

Removida pois será gerenciado pelo MVC

Ctba080Ok(nopc)

Movida para o evento CTBA080OK

CTB080CDB()

Movida para o evento CTBA080CDB. Dever ser mantida a function no arquivo de evento pois o mesmo é utilizado externamente conforme tabela.

Ctb080Form()

Movida para o evento CTBA080FORM. Deve ser separada as validações da visualização. Dever ser mantida a function no arquivo de evento pois o mesmo é utilizado externamente conforme tabela.

Ctb080CC()

Movida para o evento CTBA080CC. Dever ser mantida a function no arquivo de evento pois o mesmo é utilizado externamente conforme tabela.

CTBA080LP()

Movida para o evento CTBA080LP. Como não tem utilização externa pode remover a função (conferir antes)

CTBA080Sb()

Movida para o evento CTBA080SB. Dever ser mantida a function no arquivo de evento pois o mesmo é utilizado externamente conforme tabela.

Ctba080Sel(lVisual, cTpSald, cMltSld)

Movida para o evento CTBA080LP. Como não tem utilização externa pode remover a função (conferir antes)

Ctba080Vis(cAlias,nReg,nOpc)

Removida pois será gerenciado pelo MVC

CtbAjusCT5()

Deve ser mantida no arquivo fonte principal, e chamada na função principal na criação do FwBrowse.

CTB93CWK()

Será necessário avaliar alternativa para esse caso, para que se possível não seja necessário utilizar essa função.

CTBA080FOR()

Será necessário avaliar alternativa para esse caso, para que se possível não seja necessário utilizar essa função.

CTB93VCA()

Movida para o evento CTBA093VCA. Como não tem utilização externa pode remover a função (conferir antes)

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.