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:
Nome | Tipo | Descrição |
cMark | Caracter | Marca em uso pela Markbrowse. |
lInvert | Lógico | Se foi utilizado a opção de "Marcar todos" disponível na markbrowse. |
cSerie | Caracter | Série selecionada na geração da nota fiscal. |
cSqlFil | Caracter | Parâ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
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas