Árvore de páginas

Ponto-de-Entrada: M460MARK - Validação de pedidos marcados


Descrição:

O ponto de entrada M460MARK é utilizado para validar os pedidos que foram marcados, e está localizado no início da função a460Nota (endereça rotinas para a geração dos arquivos SD2/SF2).
Para obter o número da nota fiscal que foi selecionada, poderá ser utilizado a variável private cNumero.

Programa Fonte:
MATA461.PRX

Sintaxe:

M460MARK ( cMark , lInvert, cSerie, cSqlFil ) --> lExecuta


Parâmetros:


NomeTipoDescrição
cMarkCaracterMarca em uso pela Markbrowse.
lInvertLógicoSe foi utilizado a opção de "Marcar todos" disponível na markbrowse. 
cSerieCaracterSérie selecionada na geração da nota fiscal.
cSqlFilCaracterParâmetros do filtro em expressão SQL.

Obs.: Esta opção estará disponível com o fonte MATA461.PRX com data igual ou superior a 03/04/2024.


Retorno:
lExecuta (lógico) - Determina se deverá prosseguir com o processamento para geração da nota fiscal.

Observações

Caso a variável "lInvert" esteja marcado como .T., será necessário inverter a ordem considerando os marcados como não marcados e os não marcados como marcados em conjunto com os campos necessários conforme as validações da regra e legenda.

Utilizar as funções de FrameWork (Thismark(), ThisInv() e Ismark()), para realizar as validações da marcação dos registros. Não utilizar as validações pelo campo C9_OK, devido orientações da equipe técnica.

Exemplo 1

#include 'protheus.ch'
#include 'parmtype.ch'
 
User Function M460MARK()
    local cMark   := PARAMIXB[1] // MARCA UTILIZADA
    local lInvert := PARAMIXB[2] // SELECIONOU "MARCA TODOS"
    local aArea   := GetArea("SC9")
    
    SC9->(DbGoTop())
    
    While (SC9->(!EOF()))
       If (lInvert) // "CHECK ALL" OPTION SELECTED
          If  SC9->(IsMark("C9_OK")) .AND. (AllTrim(SC9->C9_BLEST) =='' .AND. AllTrim(SC9->C9_BLCRED)=='') 
            MsgInfo("Marked: " + SC9->C9_PEDIDO, "Entry Point M460MARK")
          Else
            MsgInfo("Unmarked: " + SC9->C9_PEDIDO, "Entry Point M460MARK")
          EndIf
       Else // "CHECK ALL" OPTION NOT SELECTED
          If SC9->(IsMark("C9_OK"))
             MsgInfo("Marked: " + SC9->C9_PEDIDO, "Entry Point M460MARK")
          Else
             MsgInfo("Unmarked: " + SC9->C9_PEDIDO, "Entry Point M460MARK")
          EndIf
       EndIf
    
       SC9->(DbSkip())
    EndDo
    
    RestArea(aArea)
Return (MsgYesNo("Continue the current process?", "Entry Point M460MARK"))


Exemplo 2 - Este exemplo irá retornar somente os item que foram selecionados, utilizando o parâmetro de filtro.
Obs.: Utilizar somente com o fonte MATA461.PRX com data igual ou superior a 03/04/2024.

#include 'protheus.ch'
  
User Function M460MARK()

Local cMark   := PARAMIXB[1]  //Marca utilizada
Local lInvert := PARAMIXB[2]  //Selecionou pelo "Marcar todos"
Local cSerie  := PARAMIXB[3]  //Série selecionada da Nota Fiscal
Local cSqlFil := PARAMIXB[4]  //Parâmetros do filtro em expressão SQL
Local cQuery  := ""
Local cArqTmp := GetNextAlias()
Local lRet    := .T.

//Esta query irá filtrar e retornar somente as liberações que foram marcadas no browser,
//conforme os parâmetros que foram informados no início da rotina.
cQuery := "SELECT * FROM " + RetSqlName("SC9") + " SC9 "
cQuery += "WHERE " 
cQuery += cSqlFil
cQuery += " AND SC9.C9_BLEST = ' ' AND SC9.C9_BLCRED = ' '"
If lInvert
   cQuery += " AND SC9.C9_OK <> '" + cMark + "'"
Else
   cQuery += " AND SC9.C9_OK = '" + cMark + "'"
EndIf
cQuery += " AND SC9.D_E_L_E_T_ = ' '"

cQuery := ChangeQuery(cQuery)
dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cArqTmp,.T.,.T.)

While (cArqTmp)->(!Eof())
   If (cArqTmp)->C9_PRODUTO == "PRODUTO_TESTE" .And. cSerie == "RPS"
      lRet := .F. //Não prossegue com o processamento de geração das notas fiscais
   EndIf
   (cArqTmp)->(DbSkip())
EndDo

(cArqTmp)->(dbCloseArea())

Return lRet