Trecho do ponto de entrada que faz a chamada para o Ponto de Entrada que o cliente renomeia para XF4NFORI
O fonte F4NFORI.prx (pasta 0-Pontos Entrada Protheus) apenas chama a função U_MLF4NFOR() (fonte MLF4NFOR.prw, pasta Pontos Entrada do projeto Central XML), que contém a regra:
If ExistBlock('XF4NFORI')
cFiltraQry := ExecBlock('XF4NFORI',.F.,.F.,aInParamIxb)
If ValType(cFiltraQry) <> 'C'
cRetSql := ''
Else
cRetSql := cFiltraQry
// Retorno o SQL do cliente
Return cRetSql
Endif
Endif
If lUsaCXml
// Verifica se procura em Notas de saída e se existem as variáveis oriundas da Central XML
If cTpAlias == "SD2" .And. Type("aChvNfes") <> "U" .And. Type("oMulti") <> "U" .And. !IsInCallStack("MATA103")
lRet := .F.
// Filtra pela chave referenciada no item do XML
U_MLDBSLCT("CONDORXMLITENS",.F.,1)
If oMulti:aCols[n][nPosRecXit] > 0
DbGoto(oMulti:aCols[n][nPosRecXit])
If !Eof()
If !Empty(CONDORXMLITENS->XIT_DFEREF)
cRetSql += " F2_CHVNFE IN('" + Alltrim(CONDORXMLITENS->XIT_DFEREF) + "')"
lRet := .T.
Endif
Endif
Endif
// Filtra pelas chaves referenciadas no XML
If !lRet .And. Len(aChvNfes) > 0 .And. (nAlertPrc == 2 .Or. MsgYesNo("Deseja Filtrar as notas de Origem conforme as Chaves Eletrônicas Referenciadas no XML?"))
For xT := 1 To Len(aChvNfes)
If xT == 1
cRetSql += " F2_CHVNFE IN(' "
Endif
cRetSql += "','"+aChvNfes[xT]+""
If xT == Len(aChvNfes)
cRetSql += "')"
Endif
Next
Endif
If GetNewPar("XM_FLDTBP3",.T.)
If !Empty(cRetSql)
cRetSql += " AND "
Endif
cRetSql += " F2_EMISSAO <= '"+DTOS(CONDORXML->XML_EMISSA)+"' "
Endif
Endif
Endif
RestArea(aAreaOld)
Return cRetSql
XIT_DFEREF).aChvNfes), após confirmação do usuário (ou direto, sem pergunta, quando nAlertPrc = 2).XM_FLDTBP3 (padrão .T.) acrescenta o filtro F2_EMISSAO <= data de emissão do XML.XM_USACXML indica se a Central XML está em uso (padrão .T.).ZEXPEXML, se compilado, recebe {"F4NFORI", PARAMIXB}; retornando .F., a rotina sai sem filtro.Documentação oficial no TDN
F4NFORI - Atualização do arquivo temporário - Linha Microsiga Protheus - TDN (totvs.com)
| Linha de Produto: | Microsiga Protheus |
|---|---|
| Módulo: | Compras (SIGACOM) / Estoque e Custos (SIGAEST) |
| Ponto de Entrada: | F4NFORI |
| Versões: | Microsiga Protheus 10, Microsiga Protheus 11, Protheus 12 |
| País(es): | Todos |
| Banco(s) de Dados: | Todos |
| Sistema(s) operacional(is): | Todos |
| Descrição: | O ponto de entrada F4NFORI é acionado na chamada da interface de visualização dos documentos de entrada/saída para devolução. Permite incluir um filtro que será executado na atualização do arquivo temporário com base nos itens do SD1 ou SD2. |
|---|---|
| Programa Fonte: | SIGACUS.PRW |
| Função: | F4NfOri |
| Sintaxe: | F4NFORI ( [ cAlias ], [ cPrograma ], [ cClifor ], [ cLoja ] ) --> cFiltro |
| Parâmetros: | PARAMIXB[1] - Caracter - Alias dos itens consultados ("SD1" ou "SD2") |
| PARAMIXB[2] - Caracter - cPrograma: local a ser considerado | |
| PARAMIXB[3] - Caracter - cClifor: código do cliente/fornecedor | |
| PARAMIXB[4] - Caracter - cLoja: loja do cliente/fornecedor | |
| Retorno: | cFiltro - Caracter - Filtro customizado (condição SQL sem o "AND" inicial) executado na atualização do arquivo temporário. |
Exemplo:
User Function F4NFORI()
Local cAlias := PARAMIXB[1]
Local cProg := PARAMIXB[2]
Local cCliFor := PARAMIXB[3]
Local cLoja := PARAMIXB[4]
Local cFiltro := ""
//Validações do usuário
Return cFiltro