Ponto de Entrada
Descrição: | Ponto de Entrada utilizado para alteração da Query de Posicionamento na tabela VVD, no momento da gravação da Receita / Despesa e para carregar o Valor da Despesa / Receita, fazendo com que este valor não seja recalculado dentro da função de gravação, caso seu retorno seja maior que 0 (Zero). |
Localização: | Atualizações \ Mov Atendimento \ Despesas/Receitas |
Eventos: | For i:=1 to len(aColsDR) If aColsDR[i,FG_POSVAR("VVD_VALOR","aHeadDesp")] == 0 .or. Empty(aColsDR[i,FG_POSVAR("VVD_CODIGO","aHeadDR")]) loop Endif cVarFilEnt := M->VV1_FILENT if Empty(cVarFilEnt) cVarFilEnt := xFilial("VVD") Endif cSQL := "SELECT R_E_C_N_O_ RECVVD" cSQL += " FROM " + RetSQLName("VVD") + " VVD " cSQL += " WHERE VVD.VVD_FILIAL = '" + cVarFilEnt + "'" cSQL += " AND VVD.VVD_TRACPA = '"+M->VV1_TRACPA+"'" cSQL += " AND VVD.VVD_CHAINT = '"+M->VV1_CHAINT+"'" cSQL += " AND VVD.VVD_TIPOPE = '0'" cSQL += " AND VVD.VVD_CODIGO = '"+aColsDR[i,FG_POSVAR("VVD_CODIGO",'aHeadDR')]+"'" cSQL += " AND VVD.VVD_DATADR = '"+dtos(aColsDR[i,FG_POSVAR("VVD_DATADR",'aHeadDR')])+"'" cSQL += " AND VVD.VVD_NUMOSV = '"+aColsDR[i,FG_POSVAR("VVD_NUMOSV",'aHeadDR')]+"'" cSQL += " AND VVD.D_E_L_E_T_ = ' '" //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| PE para alteração da Query para Posicionamento da tabela VVD | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ If ExistBlock("VM040PGR") cSQL := ExecBlock("VM040PGR",.f.,.f., { cSQL , If(nDR==1,"D","R"),i} ) EndIf nRecNo := FM_SQL(cSQL) if nRecNo == 0 wProcura := .f. Else wProcura := .t. VVD->(DbGoto(nRecNo)) Endif If nOpcG == 3 .or. nOpcg == 4 If aColsDR[i,len(aColsDR[i])] .And. wProcura RecLock("VVD",.F.,.T.) DbDelete() MsUnlock() WriteSx2("VVD") Else //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| PE antes da gravação da VVD para despesa | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ If ExistBlock("VM040AGD") aAuxRetorno := ExecBlock("VM040AGD",.f.,.f., { aHeadDR,aColsDR } ) If ValType(aAuxRetorno) == "A" aHeadDR := aClone(aAuxRetorno[1]) aColsDR := aClone(aAuxRetorno[2]) aAuxRetorno := {} Endif EndIf nValorDR := 0 For y:=1 to len(aColsDR) if aColsDR[y,FG_POSVAR("VVD_CODIGO",'aHeadDR')] == aColsDR[i,FG_POSVAR("VVD_CODIGO",'aHeadDR')] .and. dtos(aColsDR[y,FG_POSVAR("VVD_DATADR",'aHeadDR')]) == dtos(aColsDR[i,FG_POSVAR("VVD_DATADR",'aHeadDR')]) .and. aColsDR[y,FG_POSVAR("VVD_NUMOSV",'aHeadDR')] == aColsDR[i,FG_POSVAR("VVD_NUMOSV",'aHeadDR')] nValorDR += aColsDR[y,FG_POSVAR("VVD_VALOR",'aHeadDR')] Endif Next RecLock("VVD",If(wProcura,.F.,.T.)) FG_GRAVAR("VVD",aColsDR,aHeadDR,i) VVD->VVD_TIPOPE := "0" cVarFilEnt := VV1->VV1_FILENT if Empty(cVarFilEnt) cVarFilEnt := xFilial("VVD") Endif VVD->VVD_FILIAL := cVarFilEnt VVD->VVD_CHAINT := VV1->VV1_CHAINT VVD->VVD_TRACPA := VV1->VV1_TRACPA VVD->VVD_VALOR := nValorDR If FG_POSVAR("VVD_EXPCPG","aHeadDR") > 0 VVD->VVD_EXPCPG := aColsDR[i,FG_POSVAR("VVD_EXPCPG","aHeadDR")] //'1' EndIf MsUnlock() Endif Endif Next |
Programa Fonte: | VEIVM040.PRW |
Função: | FS_GrvVM040() |
Parâmetros: | 1o Parâmetro - Expressão SQL 2o Parâmetro - "D" se o array de Lançamentos (aColsDR) for de Despesas "R" se o array de Lançamentos (aColsDR) for de Receitas 3o Parâmetro - Posição do Array 4o Parâmetro - Valor da Despesa / Receita |
Retorno: | array com 2 elementos: 1o Elemento: Expressão SQL 2o Elemento: Valor da Despesa ou Receita |
Exemplo:
// Ponto de Entrada utilizado para alteração da Query de Posicionamento// na tabela VVD, no momento da gravação da Receita / Despesa.
// Autor: Totvs MIL
User Function VM040PGR()
Local cExprSQL := ParamIXB[1]
Local cTipoLan := ParamIXB[2]
Local cPosicao := ParamIXB[3]
Local nValor := ParamIXB[4]
If cTipoLan == "D" // Despesas
MsgInfo("Alteração da Query de Posicionamento na tabela VVD (Tipo: Despesas de Veículos)", "Atenção")
Else // Receitas
MsgInfo("Alteração da Query de Posicionamento na tabela VVD (Tipo: Receitas de Veículos)", "Atenção")
Endif
Return { cExprSQL , nValor }