Bom dia, não estou encontrando alguma forma de restrição por usuário para emissão de carta de correção.
Bom dia, não estou encontrando alguma forma de restrição por usuário para emissão de carta de correção.
Olá Rafael,
Acho que entendi bem o que você precisa, e realmente esta tela é um pouco mais complicada, porque são 3 telas em uma, e não dá para fazer distinção dos acessos via menu ou outra forma, especificamente para CCe de forma segregada.
Eu achei aqui uma solução que funcionou bem e nós já utilizamos para restringir a tela de transmissão, é um ponto de entrada NFEMNUCC (https://tdn.totvs.com/pages/releaseview.action?pageId=243659154) que é para adicionar botões, porém é possível também fazer a manipulação das opções que já existem pois o array aRotina é privado. Foi assim que resolvi meu problema aqui. Também funciona para a transmissão de NF usando o P.E. FISTRFNFE (https://tdn.totvs.com/pages/viewpage.action?pageId=694110055) de forma idêntica.
Espero ter ajudado.
Segue o fonte abaixo:
#INCLUDE "PROTHEUS.CH"
#INCLUDE "rwmake.ch"
//#############################################################################
//##+==========+===========+=======+====================+======+============+##
//##|Programa | NfeMnuCC | Autor | Cirilo Rocha | Data | 21/12/2022 |##
//##+==========+===========+=======+====================+======+============+##
//##|Desc. | Ponto de entrada para adicionar botoes na tela do SPED NFE |##
//##+==========+===========+================================================+##
//##| DATA |Programador| Manutencao Efetuada |##
//##+==========+===========+================================================+##
//##| xx/xx/xx | | Usado para desabilitar opções para o usuário |##
//##| | | |##
//##| | | |##
//##+==========+===========+================================================+##
//#############################################################################
User Function NfeMnuCC();
AS Array
//Declaracao de variaveis----------------------------------------------------------------------
Local nPos AS Numeric
If .Not. ( __cUserID $ FwSuperGetMV('MS_USRCCE',.f.,'000123') ) //Verifica se o usuário tem acesso, se não tiver desativa
nPos := aScan(aRotina,{|x| FwNoAccent(Upper(x[1])) == 'TRANSMISSAO' })
If nPos == 0
ApMsgAlert( 'Erro ao localizar o botão para impressão do Danfe.'+CRLF+;
'Informe ao setor de T.I.')
Else
aRotina[nPos][2] := "ApMsgAlert('USÚARIO SEM PERMISSÃO PARA USAR ESTA ROTINA','NfeMnuCC')"
EndIf
EndIf
Return Nil
Obrigado vou testar e dou um retorno.
— Rafael Black 22 de Dec de 2022
Rafael, normalmente restrições de acesso são feitas via Configurador, no usuário, módulo, acessos etc. Rotinas específicas são feitas via privilégios. Se caso nenhuma dessas formas atenda, talvez seja necessário verificar uma possiblidade de ponto de entrada.
— Daniel Mendes 21 de Dec de 2022Obrigado pelo retorno.
— Rafael Black 22 de Dec de 2022