Histórico da Página
Ponto de Entrada
Descrição: | Este Ponto de Entrada será executado na rotina Fat Agr Orc Fases (OFIXA021). A mesma permite uma validação customizada dos Orçamentos informados em cada linha da gridbox. |
Localização: | Atualizações \ Mov Oficina \ Fat Agr Orc Fases (OFIXA021) |
Eventos: | If ExistBlock("OX021TEL") ExecBlock("OX021TEL",.f.,.f.,{nLin,.t.}) // Passado .t. no 2o Parâmetro quando se tratar de Duplo Clique EndIf _aIntIte[nLin,1] := !_aIntIte[nLin,1] // Verificando se o array tem duas ou mais marcações nPos := Len(oArrHlp:Select(_aIntIte, {|x| x[1]})) If nPos >= 2 .And. ExistBlock("OX021MARC") // Ponto de Entrada para verificar se a marcação é válida ou não conforme validação customizada _aIntIte := ExecBlock("OX021MARC", .f., .f., {_aIntIte}) EndIf if _aIntIte[nLin,1] aTotais[2,2] ++ aTotais[2,3] += _aIntIte[nLin,5] Else aTotais[2,2] -- aTotais[2,3] -= _aIntIte[nLin,5] Endif |
Programa Fonte: | OFIXA021.PRW |
Função: | FS_DBCLICK() |
Parâmetros: | _aIntIte - Vetor que compõe todas as linhas para validação das selecionadas a partir da natureza da primeira informada no orçamento. |
Retorno: | aLista - Vetor que compõe todas as linhas atualizadas porém as selecionadas apenas se contém a mesma natureza da primeira informada no orçamento. |
Exemplo:
/*
===============================================================================
###############################################################################
##+----------+------------+-------+-----------------------+------+----------+##
##|Função | OX021MARC | Autor | MIL | Data | 11/03/19 |##
##+----------+------------+-------+-----------------------+------+----------+##
##|Descrição | Validação se marcação da linha é correta ou não nas funções |##
## | FS_DBCLICK() e FS_MARCA() da rotina Faturamento agrupado de |##
## | orçamentos de Peças |##
##+----------+--------------------------------------------------------------+##
##+----------+--------------------------------------------------------------+##
###############################################################################
===============================================================================
*/
User Function OX021MARC()
Local aLista := ParamIxb[1]
Local nCount := 0
Local lNat := .f.
Local cSql := ""
Local cNat := ""
Local cNat2 := ""
For nCount := 1 To Len(aLista)
If aLista[nCount,1] // Se marcada
// Trazer a Natureza da linha marcada
cSql := "SELECT VS1_NATURE FROM " + RetSqlName("VS1") + " "
cSql += "WHERE VS1_FILIAL = '" + xFilial("VS1") + "' "
cSql += " AND VS1_NUMORC = '" + aLista[nCount,2] + "' AND D_E_L_E_T_ = ' '"
cNat2 := FM_SQL(cSql)
If !lNat
lNat := .t.
cNat := cNat2
Else
// Se a Natureza da linha atual NÃO é a mesma da primeira marcada
If cNat <> cNat2
aLista[nCount,1] := .f. // Desmarca automaticamente a linha atual
// Caso queira informar o usuário
//MsgAlert("Natureza padrão: " + cNat + CHR(13) + CHR(10) + "Natureza atual : " + cNat2)
EndIf
EndIf
EndIf
Next
MsgAlert("Ponto de Entrada OX021MARC executado com sucesso!")
Return(aLista)