Árvore de páginas

Ponto de Entrada

Descrição:

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)