Histórico da Página
01. Apresentação
Este documento tem por objetivo apresentar os passos necessários para disponibilizar no DataServer da linha RM a integração com o Totvs Assinatura Eletrônica.
02. Configuração
Para configurar o RM x Totvs Assinatura Eletrônica é necessário informar nos parâmetros globais o caminho das API's do Totvs Assinatura Eletrônica.
03. Habilitar Meu DataServer
Para habilitar a utilização do Totvs Assinatura Eletrônica basta informar a propriedade "AllowTotvsSign" com o valor "True" na Action equivalente ao dataServer desejado.
Sendo assim, será disponibilizado a opção do Totvs Assinatura Eletrônica em sua TooBarfuncionalidade.
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
$/RM/Atual/Release/Prj-Projetos/using RM.Prj.TotvsMessage.Configurator.Server [ConfiguratorPacoteAttribute(typeof(Properties.Resources), "d3593c4e-1a4c-58fb-b9c8-feaf13c2fa8b", nameof(Properties.Resources.sPrjCaptionPacoteMntEAI2))] public class PrjTopMntProtheusPacoteConfiguratorEai : EaiPacoteConfiguratorBaseImb.Parametros; using RM.Imb.Recursos; using RM.Lib.Client; using RM.Lib.WinForms; partial class ImbContratoLocAction { /// <summary> /// Configurador Inicialização da action de contrato de locação Integrações EAI. /// </summary> private publicvoid PrjTopMntProtheusPacoteConfiguratorEaiInitializeComponent(){} /// <summary>{ /// Retorna listacomponents de= configurador do EAI 2.0 utilizados pelo pacote. /// </summary> /// <returns></returns> new System.ComponentModel.Container(); DataServerName = "ImbContratoLocData"; publicFormName override EAIConfigurationProductResult ConfigurationsProduct() = "ImbContratoLocForm"; { returnAllowTotvsSign new= EAIConfigurationProductResult()true; } } |
Resultado:
04. Vinculo Processos
Após habilitar a utilização do Totvs Assinatura Eletrônica, é possível condicionar a execução de processo de acordo com o status do documento anexado a entidade principal.
Exemplo:
Imagine que temos um contrato de locação de imóvel em elaboração e o usuário do sistema, enviou o "documento / contrato" para o locatário assinar via Totvs Assinatura eletrônica.
E o usuário do RM, pode efetivar o contrato no RM antes mesmo do locatário assinar o documento.
Demanda:
Como devo codificar, para condicionar o sucesso do processo de "Efetivação do Contrato" com a assinatura do documento. Ou seja, preciso que seja a apresentando mensagem de erro tratado para o usuário do RM caso ele tente efetivar o contrato para o documento não assinado.
04.1 Disponibilização dos processos
Para disponibilizar os processo para o usuário possa vincular com o documento, basta preencher a propriedade "ProcessValidationTotvsSignActions"
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
using RM.Imb.Parametros; using RM.Imb.Recursos; using /// <summary> /// RM.Lib.Client; using RM.Lib.WinForms; namespace RM.Imb.Aluguel.ContratoLoc { partial class ImbContratoLocAction { /// </summary><summary> /// <returns></returns> public override EAIPackage GetEAIPackage() {Inicialização da action de contrato de locação /// </summary> private void return new EAIPackageInitializeComponent() { components integrationId = "1129d688-d724-5afb-9f55-c9f8ce498d57", name = Properties.Resources.sPrjCaptionPacoteMntEAI2,new System.ComponentModel.Container(); descriptionDataServerName = Properties.Resources.sPrjTitleConfigEAI2MNT,"ImbContratoLocData"; FormName documentationUrl = "https://tdn.totvs.com/x/AYMOFQ",ImbContratoLocForm"; // Libera Adapterso = getTransactions() };Totvs Assinatura eletrônica para o dataServer } AllowTotvsSign /// <summary> /// = true; /// </summary> Processo de efetivar contrato /// <returns></returns>de locação private List<EAIPackageAdapter> getTransactions() ProcessActions.Add("ImbEfetivarContLocAction", true); { //Disponibilização de processo na List<EAIPackageAdapter>tela resultde =envio new List<EAIPackageAdapter>() de documento do Totvs Assinatura { ProcessValidationTotvsSignActions.Add(new EAIPackageAdapterRMSProcessTotvsSignInfo() { AdapterId=EaiAdapterTypeEnum.Equipment, { ActionName = nameof(ImbEfetivarContLocAction), VersionLabelProcess = "1.002", Mode = EnabledModeEnum.emReceive },Properties.Resources.SImbCaptinEfetivacaoContratoTotvsSign }); ProcessValidationTotvsSignActions.Add(new EAIPackageAdapterRMSProcessTotvsSignInfo() { AdapterId=EaiAdapterTypeEnum.Activity, { ActionName = nameof(ImbContratoLocEscalonamentoAction), VersionLabelProcess = "1.000", Mode = EnabledModeEnum.emReceive },Properties.Resources.SImbCaptinEfetivacaoEscalonamentoTovsSign }); ProcessValidationTotvsSignActions.Add(new EAIPackageAdapterRMSProcessTotvsSignInfo() { AdapterId=EaiAdapterTypeEnum.Appointment, { ActionName = nameof(ImbEfetivarAditivoContLocBaseAction), VersionLabelProcess = "1.000", Mode = EnabledModeEnum.emSend },Properties.Resources.SImbCaptinEfetivacaoAditivoTovsSign }); ProcessValidationTotvsSignActions.Add(new EAIPackageAdapterRMSProcessTotvsSignInfo() { AdapterId=EaiAdapterTypeEnum.AssetMonthlyDirectCosts, { ActionName = nameof(ImbEncerrarContLocAction), VersionLabelProcess = "1.000", Mode = EnabledModeEnum.emReceive },Properties.Resources.SImbCaptinEfetivacaoEncerramentoTovsSign new EAIPackageAdapter() { AdapterId=EaiAdapterTypeEnum.AssetMonthlyUnDirectCosts, Version = "1.000", Mode = EnabledModeEnum.emReceive } }; return result; } }); } |
Resultado:
Os processo que foram preenchidos na action na lista ProcessValidationTotvsSignActions são apresentando no cadastro do documento.
Observação:
Caso a "action" não possua processos definidos não será exibido a página de seleção, os processos marcados para validar assinatura eletrônica serão gravados na tabela GINTEGRACAOTOTVSSIGNRESTRICAO
04.2 Validação dos processos
Após a exposição dos processo, os mesmo são exibidos para o usuário RM na aba de validações . Mas ainda não é suficiente, pois você tem apenas quais os processo foram marcados pelo usuário para "Validar" na tela do documento. Precisamos dessa informação em camada server para que o analista codifique sua validação.
Foi disponibilizado método na framework cujo sua responsabilidade e retornar informações referente documento anexado ao seu "DataServer" Principal. Sendo assim, você pode consumir esse método e implementar sua validação. Você deverá adicionar em seu Facade, uma chamada para o método "RetornarDadosArquivo(actionName, serverName, pkValues)" disponível na interface IGlbTotvsSignMod. E agora e utilizar o seu metodo que criou em seu facade.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
using RM.Glb.TotvsSign; using RM.Glb.TotvsSign.IService; using RM.Lib.Server; using System.Collections.Generic; namespace RM.Imb.Aluguel.Facade { public class ImbAluguelTotvsSignFacade : RMSFacade { /// <summary> /// Defiição de parâmetros de pacote. /// </summary> /// <returns></returns> public override EAIPacoteApiParamsResult GetParamsPacote() { EAIPacoteApiParamsResult result = new EAIPacoteApiParamsResult();<param name="actionName">Action que deseja localizar</param> /// <param name="serverName">Nome do dataserver que foi o anexo do documento: Exemplo: ImbContratoLocData</param> /// List<EAIConfigSchemaEntity> configSchema = new List<EAIConfigSchemaEntity>(); result.paramsList = configSchema; <param name="pkValues">Pk da entidade Principal. Exemplo:1;45 Coligada =1 e CodContrato=45</param> /// <returns></returns> return result; public } /// <summary>List<ImbDocumentSignItem> RetornarDocumentoTotvsSign(string actionName, string serverName, List<string> pkValues) ///{ Serviços necessários para integração Siga MNT List<ImbDocumentSignItem> retorno = /// </summary>new List<ImbDocumentSignItem>(); /// <returns></returns> using (var totvsSign public override EAIPacoteApiServicesRequiredResult GetApiServicesRequired()= CreateModule<IGlbTotvsSignMod>("GlbTotvsSignMod")) { return new EAIPacoteApiServicesRequiredResult(if (totvsSign.IsConfiguracaoIntegracaoTotvsSign()) { Services = new List<EAIPacoteApiServiceRequired>( totvsSign.RetornarDadosArquivo(actionName, serverName, pkValues) { new EAIPacoteApiServiceRequired() { Name = "WSINTRMMNT.apw?WSDL", Type = CanalComunicacaoEnum.teSOAP } } ?.ForEach(doc => retorno.Add(doc)); } return }retorno; } } |
04. Vinculo Processos
...
|