Boa tarde, Como irá funcionar o ponto de entrada SX5NOTA.PRW quando tivermos que analisar o campo SX5->X5_CHAVE para filtrar quais séries de notas devem aparecer para o usuário selecionar? Ex: Local cChave := AllTrim(SX5->X5_CHAVE)
PE em Anexo.
Boa tarde, Como irá funcionar o ponto de entrada SX5NOTA.PRW quando tivermos que analisar o campo SX5->X5_CHAVE para filtrar quais séries de notas devem aparecer para o usuário selecionar? Ex: Local cChave := AllTrim(SX5->X5_CHAVE)
PE em Anexo.
Acredito que seja a através da FWgetSX5 - http://tdn.totvs.com/display/PROT/FWGetSX5
Boa tarde Luiz,
Esse ponto de entrada permite filtrar as séries, conforme retorno lógico, sendo que ele é chamado dentro de um loop, veja as documentações abaixo:
https://tdn.totvs.com/pages/releaseview.action?pageId=471926355
https://tdn.totvs.com/pages/releaseview.action?pageId=6784448
Segue exemplo que uso: User Function SX5NOTA()
Local lRet:=.F.,
lRet :=IIf(CFILANT=="02".AND.AllTrim(SX5->X5_CHAVE)$ "1/BRG".AND.UPPER(ALLTRIM(CUSERNAME))$"CLAUDIA/CECILIA",.T.,; IIf(CFILANT=="02".AND.AllTrim(SX5->X5_CHAVE)$ "1/2/BRG",.T.,; IIf(CFILANT=="03".AND.AllTrim(SX5->X5_CHAVE)$ "001/TST",.T.,; IIf(!(CFILANT$"02,03"),.T.,.F.)))) Return(lRet)
O problema dele é exatamente este: Ele não pode ponteirar a SX5 pois isto viola uma regra do Totvs Code Analysis (acesso direto a dicionário)
— Jandir Deodato 26 de Feb de 2019Repito o dito pelo Jandir.: "O problema é exatamente este: Não pode mais ponteirar a SX5 pois isto viola uma regra do Totvs Code Analysis (acesso direto a dicionário)"
Foi criada uma documentação sobre o assunto, aqui explica certinho (com exemplo), só alterar para SX5:
Bom Dia! Mas isso irá criar uma tabela temporária com todos os dados da SX5. No caso precisamos pegar o valor da SX5 que está posicionada no momento.
— Gabriel Cisneiro Lopes 14 de Aug de 2019Estou com o mesmo problema, usei o novo exemplo do P.E. disponível em link mas dá error log na linha que atribui o primeiro PARAMIXB
— Fabio Finatti 20 de Aug de 2019Boa tarde!
Estou usando da seguinte forma.
User Function SX5NOTA()
Local _cFilial := Paramixb[1] //Filial
Local _cTabela := Paramixb[2] //Tabela da SX5
Local _cChave := Alltrim(Paramixb[3]) //Chave da Tabela na SX5
Local _cDescri := Paramixb[4] //Conteúdo da Chave indicada
Local _lRet := .F.
Do Case
Case cFilAnt == "00" .And. (_cChave $ "12|22|32|82|912")
_lRet := .T.
Case cFilAnt == "01" .And. (_cChave $ "11|21|51|81|911")
_lRet := .T.
Case cFilAnt == "02" .And. (_cChave $ "13|23|33|83|913")
_lRet := .T.
Case cFilAnt == "03" .And. (_cChave $ "14|24|34|84|914")
_lRet := .T.
Case cFilAnt == "04" .And. (_cChave $ "15|35|85|915")
_lRet := .T.
Case cFilAnt == "05" .And. (_cChave $ "16|26|36|86|916")
_lRet := .T.
EndCase
Return _lRet
No fonte que tenho o Paramixb está vazio. Alguém utiliza outra forma?
— Italo Maciel de Sousa 20 de Jun de 2020Bom dia, desculpem minha ignorância: este ponto de entrada é para FILTRAR as séries de nota que aparecem para o usuário selecionar ao preparar documento de saída (mostrando somente as que ele pode selecionar) ou ele serve para IMPEDIR o usuário de seguir em frente e faturar com a série incorreta?
Pergunto isso pois faz tempo que tenho este problema, mas eu precisaria FILTRAR, para não ter que o usuário refazer tudo denovo e correr o risco de clicar errado novamente
Olá, se Retornar .T. - a série apresentada se Retornar .F. a série não é apresentada, ou seja, se você tem 2 séries, 001 e NFS. Dai você identifica que a nota é de serviço (através de algum campo seja SC6, ou SC5 mesmo) então você faz o teste: Se a chavesx5 == "001" Return .F. se for "NFS" Return .T. dai vai apresentar somente a série NFS.
— Charlles Carvalho Reis 20 de Feb de 2020