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: |
| ||||
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
- 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.
Descrição: | O ponto de entrada CTBA080 permite tratar os diversos eventos no cadastro de Lançamento Padrão. |
Eventos: | MODELPRE Retorno: Retorno: Retorno: Retorno: Retorno: Retorno: Para a inclusão de botões na ControlBar. |
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. |
---|