Page tree
Skip to end of metadata
Go to start of metadata



Informações Gerais

Especificação

Segmento Executor

SERVIÇOS

Projeto1

DSERFAT

Epichttp://jiraproducao.totvs.com.br/browse/DSERFAT-450

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>.

Objetivo

O projeto do novo cadastro de Clientes é iniciativa TOTVS cujo objetivo é reescrever o antigo cadastro de Clientes ( MATA030 ) para um padrão de arquitetura de software chamada MVC ( Model-View-Controller ).

Definição da Regra de Negócio

Utilizamos o padrão de desenvolvimento MVC ( Model-View-Controller ) no novo cadastro de Clientes para separar a lógica de negócio da lógica de apresentação ( a interface ), para permitir o desenvolvimento, testes e manutenção de forma isolada. Visando ganho de produtividade no desenvolvimento de regras de negócios padrões do produto  e das possíveis customizações de nossos Clientes utilizando POO ( Programação Orientada Objetos ). Além disso, o MVC nos proporciona funcionalidades nativas deste Framework com os seguintes recursos:

Estrutura dos Fontes

O fonte do cadastro de clientes em MVC foi dividido com a seguinte estrutura:

Localização Padrão ( Todos os Países )

CRMA980.PRWEstrutura do MVC contendo: ModelDef, ViewDef e MenuDef
CRM980EventDEF.PRWRegras de Negócio válidas para todos os módulos e países (Padrão)
CRM980EventDEFCRM.PRWRegras de Negócio específicas do módulo CRM 
CRM980EventDEFEIC.PRWRegras de Negócio específicas do módulo Controle de Importações / Exportação
CRM980EventDEFFAT.PRWRegras de Negócio específicas do módulo Faturamento
CRM980EventDEFFIN.PRW Regras de Negócio específicas do módulo Financeiro
CRM980EventDEFFIS.PRW Regras de Negócio específicas do módulo Fiscal
CRM980EventDEFGFE.PRWRegras de Negócio específicas do módulo Gestão de Frete Embarcador
CRM980EventDEFINT.PRW Regras de Negócio específicas do módulo Softwares de Terceiros
CRM980EventDEFJUR.PRW Regras de Negócio específicas do módulo Jurídico
CRM980EventDEFLOJ.PRW Regras de Negócio específicas do módulo Controle de Lojas
CRM980EventDEFOMS.PRWRegras de Negócio específicas do módulo Gestão de Distribuição
CRM980EventDEFTMS.PRWRegras de Negócio específicas do módulo Gestão de Transporte

Localização Padrão + Brasil

CRMA980BRA.PRW Estrutura do MVC contendo: ModelDef, ViewDef e MenuDef
CRM980EventBRA.PRWRegras de Negócio válidas para todos os módulos e localização Brasil
CRM980EventBRAFIS.PRWRegras de Negócio específicas do módulo Fiscal localização Brasil

Localização Padrão + Argentina

CRMA980ARG.PRWEstrutura do MVC contendo: ModelDef, ViewDef e MenuDef
CRM980EventARG.PRWRegras de Negócio válidas para todos os módulos e localização Argentina

Localização Padrão + Colômbia

CRMA980COL.PRWEstrutura do MVC contendo: ModelDef, ViewDef e MenuDef
CRM980EventCOL.PRWRegras de Negócio válidas para todos os módulos e localização Colômbia

Referencia: Interceptação do Commit e Validação MVC - FWModelEvent

O demais países não especificados neste documento não possuem regras específicas.

Rotina Automática

O novo fonte contempla também a rotina automática e a mesma deve ser chamada da seguinte forma:

//-------------------------------------------------------------------
/*/{Protheus.doc} MyCRMA980
Função de exemplo para utilização da rotina automática de Clientes.
@param		Nenhum
@return	Nenhum
@author 	Squad CRM / FAT
@version	12.1.17 / Superior
@since		24/05/2017 
/*/
//-------------------------------------------------------------------
User Function MyCRMA980()

Local aSA1Auto	:= {} 
Local aAI0Auto	:= {} 
Local nOpcAuto	:= MODEL_OPERATION_INSERT
Local lRet		:= .T.

Private lMsErroAuto := .F.

lRet := RpcSetEnv("T1","D MG 01","Admin") 

If lRet 
	
	//----------------------------------
	// Dados do Cliente
	//----------------------------------
	aAdd(aSA1Auto,{"A1_COD"		,"XBX139"				,Nil})
	aAdd(aSA1Auto,{"A1_LOJA"	,"01"					,Nil})
	aAdd(aSA1Auto,{"A1_NOME"	,"ROTINA AUTOMATICA"	,Nil})
	aAdd(aSA1Auto,{"A1_NREDUZ"	,"ROTAUTO"				,Nil})	
	aAdd(aSA1Auto,{"A1_TIPO"	,"F"					,Nil})
	aAdd(aSA1Auto,{"A1_END"		,"BRAZ LEME"			,Nil})	
	aAdd(aSA1Auto,{"A1_BAIRRO"	,"CASA VERDE"			,Nil})	
	aAdd(aSA1Auto,{"A1_EST"		,"SP"					,Nil})
	aAdd(aSA1Auto,{"A1_MUN"		,"SAO PAULO"			,Nil})
	
	//---------------------------------------------------------
	// Dados do Complemento do Cliente
	//---------------------------------------------------------
	aAdd(aAI0Auto,{"AI0_SALDO"	,30						,Nil})
	
	//------------------------------------
	// Chamada para cadastrar o cliente.
	//------------------------------------
	MSExecAuto({|a,b,c| CRMA980(a,b,c)}, aSA1Auto, nOpcAuto, aAI0Auto) 
	 
	If lMsErroAuto	 
		lRet := lMsErroAuto	
	Else
		Conout("Cliente incluído com sucesso!")
	EndIf
	
EndIf

RpcClearEnv()
             
Return lRet

Pontos de Entrada

Para o novo fonte, alguns pontos de entrada não foram mantidos, já que os pontos de entradas nativos do MVC permitem a customização, sem a necessidade dos pontos de entrada na rotina.São eles:

  1. Validação antes da abertura do formulário do cadastro antes da inclusão
    PE Nativo do MVC ( ID - MODELVLDACTIVE ) tem o mesmo propósito do Ma030VInc(Versão 12 ) - Validação no botão de inclusão de clientes mais informações Pontos de Entrada Nativos do MVC
  2. Validação antes da abertura do formulário do cadastro antes da alteração.
    PE Nativo do MVC ( ID - MODELVLDACTIVE ) tem o mesmo propósito do M030ALT - Validação de alterações mais informações Pontos de Entrada Nativos do MVC
  3. Validação antes da abertura do formulário do cadastro antes da exclusão.
    PE Nativo do MVC ( ID - MODELVLDACTIVE ) tem o mesmo propósito do M030DEL - Exclusão de clientes mais informações Pontos de Entrada Nativos do MVC
  4. Permite alteração do cadastro para registros gerados via integração quando a origem e de integração (SA1->A1_ORIGEM== "S1")
    PE Nativo do MVC ( ID - MODELVLDACTIVE) tem o mesmo propósito do DT_PE_MT030INT_Permite a alteração do cadastro de cliente para registros gerados via integração mais informações Pontos de Entrada Nativos do MVC 
  5. Inclusão de dados após a gravação dos dados do produto padrão dentro da transação
    PE Nativo do MVC ( ID - MODELCOMMITTTS ) tem o mesmo propósito do M030INC - Inclusão de dados mais informações Pontos de Entrada Nativos do MVC 
  6. Alteração de dados após a gravação dos dados do produto padrão dentro da transação
    PE Nativo do MVC ( ID - MODELCOMMITTTS ) tem o mesmo propósito do MALTCLI mais informações Pontos de Entrada Nativos do MVC
  7. Exclusão de dados após as regras de exclusão do produto padrão dentro da transação
    PE Nativo do MVC ( ID - MODELCOMMITTTS ) tem o mesmo propósito do M030EXC - Exclusão de dados mais informações Pontos de Entrada Nativos do MVC
  8. Alteração de dados após a gravação dos dados do produto padrão fora da transação
    PE Nativo do MVC ( ID - MODELCOMMITNTTS ) tem o mesmo propósito do M030PALT - Validação da alteração de clientes. mais informações Pontos de Entrada Nativos do MVC
  9. Validação do formulário antes de confirmar a Inclusão, Alteração e Exclusão
    PE Nativo do MVC ( ID - FORMPOS ) tem o mesmo propósito do MA030TOK - Inclusão e alteração / VBTOK030 - Validação do botão Ok  mais informações Pontos de Entrada Nativos do MVC

Foram criados apenas pontos de entrada que existem no fonte MATA030 e que não permite customização por meio dos pontos de entrada do MVC, são eles: 

  1. PE CRM980BFil Adiciona filtro no browse do cadastro de clientes

    Substitui o PE MA030BRW - Filtro de browse
  2. PE CRM980MMEN Adiciona campos memo de usuário no padrão de gravação SYP

    Substitui o PE MA030MEM - Definição de campos memo de usuário
  3. PE CRM980BLabel Adiciona legendas no browse do cadastro de clientes

Pontos de entrada que funcionam para os dois cadastros CRMA980 e MATA030:

  1. CRMBRWVIEW - Substituição das Visões Padrão do CRM
  2. MA030REF - Restringir exibição de campos
  3. MA030BUT - Adicionar botões no cadastro de clientes
  4. M030SAO - Exclusão de dados
  5. MATA030IPG - Controle de manutenção na integração com o GFE

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

CRMA980

Inclusão/Alteração/Exclusão

CRM > Atualizações > Vendas > Contas > Clientes

Reescrita do Cadastro de Clientes para MVC.

O menu padrão do sistema não foi substituído.

Para receber esta nova funcionalidade, basta habilitar o parâmetro MV_MVCSA1 = .T. e substituir no menu a chamada MATA030 por CRMA980.