Árvore de páginas

Ponto-de-Entrada: RQPCOM020 - Permite importação de campos customizados
Abrangências: Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Microsiga Protheus 10
Versões: Todas
Compatível Países: Todos
Sistemas Operacionais: Todos
Compatível às Bases de Dados: Todos
Descrição:
O ponto de entrada RQPCOM020 está localizado no momento da importação de peças/serviços de um orçamento para a requisição, dentro da rotina de Requisição de Peças. Isto permite que sejam importados, além dos campos padrão do sistema, campos customizados feitos pelo cliente.
Eventos

For ni := 1 to Len(aPecaOrc)
   
    If aPecaOrc[ni,1]
       
        if lInconveniente       
            nReg := Ascan(aCols , {|x| x[FG_POSVAR("VO3_GRUITE")] + ;
                                                x[FG_POSVAR("VO3_CODITE")] + ;
                                                x[FG_POSVAR("VO3_GRUINC")] + ;
                                                x[FG_POSVAR("VO3_CODINC")] == aPecaOrc[ni,6] + aPecaOrc[ni,7] + aPecaOrc[ni,15] + aPecaOrc[ni,16] ;
                                                .and. x[FG_POSVAR("VO3_TIPTEM")] == aPecaOrc[ni,2] ;
                                                .and. x[FG_POSVAR("VO3_FATPAR")] == aPecaOrc[ni,3] ;
                                                .and. x[FG_POSVAR("VO3_LOJA")] == aPecaOrc[ni,4] ;
                                                } )
        else
            nReg := Ascan(aCols , {|x| x[FG_POSVAR("VO3_GRUITE")] + x[FG_POSVAR("VO3_CODITE")] == aPecaOrc[ni,6] + aPecaOrc[ni,7] } )
        endif
       
        If nReg == 0
           
            If lAdd
               
                Aadd(aCols, Array( Len(aHeader)+1 ) )
                nReg := Len(aCols)
               
                For nCol := 1 to Len(aHeader)
                   
                    aCols[nReg,nCol] := CriaVar( aHeader[nCol,2] )
                   
                Next
               
            EndIf
           
            nReg := Len(aCols)
           
        EndIf
       
        DbSelectArea("SB1")
        DbSetOrder(7)
        DbSeek(xFilial()+aPecaOrc[ni,6]+aPecaOrc[ni,7])
        If !Empty(aPecaOrc[ni,2])  // situacao normal, foi importado do orcamento
            aCols[nReg,FG_POSVAR("VO3_TIPTEM")] := aPecaOrc[ni,2]
            aCols[nReg,FG_POSVAR("VO3_FATPAR")] := aPecaOrc[ni,3]
            aCols[nReg,FG_POSVAR("VO3_LOJA")  ] := aPecaOrc[ni,4]
            aCols[nReg,FG_POSVAR("VO3_NOMCLI")] := aPecaOrc[ni,5]
            aCols[nReg,FG_POSVAR("VO3_GRUITE")] := aPecaOrc[ni,6]
            aCols[nReg,FG_POSVAR("VO3_CODITE")] := aPecaOrc[ni,7]
            aCols[nReg,FG_POSVAR("VO3_DESITE")] := aPecaOrc[ni,8]
           
            DbSelectArea("SB2")
            DbSetOrder(1)
//            DbSeek(xFilial("SB2")+SB1->B1_COD+SB1->B1_LOCPAD)
            DbSeek(xFilial("SB2")+SB1->B1_COD+aPecaOrc[ni,12])
            nQtdSaldo := SaldoSB2()
           
            If FG_POSVAR("VO3_QTDEST")#0
                aCols[nReg,FG_POSVAR("VO3_QTDEST")]:=M->VO3_QTDEST:= nQtdSaldo
            EndIf
           
            If nQtdSaldo < aCols[nReg,FG_POSVAR("VO3_QTDREQ")]+aPecaOrc[ni,9]
                aCols[nReg,FG_POSVAR("VO3_QTDREQ")] := aCols[nReg,FG_POSVAR("VO3_QTDREQ")]+nQtdSaldo
            Else
                aCols[nReg,FG_POSVAR("VO3_QTDREQ")] := aCols[nReg,FG_POSVAR("VO3_QTDREQ")]+aPecaOrc[ni,9]
            EndIf
           
            aCols[nReg,FG_POSVAR("VO3_FORMUL")] := aPecaOrc[ni,10]
            aCols[nReg,FG_POSVAR("VO3_VALPEC")] := aPecaOrc[ni,11]
            aCols[nReg,FG_POSVAR("VO3_VALTOT")] := (aCols[nReg,FG_POSVAR("VO3_QTDREQ")] * aCols[nReg,FG_POSVAR("VO3_VALPEC")] )
            aCols[nReg,Len(aHeader)+1]          := .F.
           
            if lInconveniente
                aCols[nReg,FG_POSVAR("VO3_GRUINC")] := aPecaOrc[nI,15]
                aCols[nReg,FG_POSVAR("VO3_CODINC")] := aPecaOrc[nI,16]
            endif
        Else // eh porque veio da abertura da OS pelo inconveniente padrao
           
            VAJ->(DbsetOrder(2))
            VAJ->(Dbseek(xFilial("VAJ")+Alltrim(aKeys[ni,1])))
            aCols[nReg,FG_POSVAR("VO3_TIPTEM")] := VAJ->VAJ_TIPTEM
            VOI->(DbsetOrder(1))
            VOI->(Dbseek(xFilial("VOI")+VAJ->VAJ_TIPTEM))
            If VOI->VOI_USAPRO=="0"
                cCliente := VV1->VV1_PROATU
                cLoja    := VV1->VV1_LJPATU
            Elseif VOI->VOI_USAPRO=="1"
                VE4->(DbSeek(xFilial("VE4")+VV1->VV1_CODMAR))
                cCliente := VE4->VE4_CODFAB
                cLoja    := VE4->VE4_LOJA
            Else
                cCliente := VOI->VOI_CLIFAT
                cLoja    := VOI->VOI_LOJA
            Endif
            SA1->(dbsetOrder(1))
            SA1->(Dbseek(xFilial("SA1")+cCliente+cLoja))
            aCols[nReg,FG_POSVAR("VO3_GRUINC")] := VAJ->VAJ_CODGRU
            aCols[nReg,FG_POSVAR("VO3_CODINC")] := VAJ->VAJ_CODINC
            aCols[nReg,FG_POSVAR("VO3_FATPAR")] := cCliente
            aCols[nReg,FG_POSVAR("VO3_LOJA")  ] := cLoja
            aCols[nReg,FG_POSVAR("VO3_NOMCLI")] := SA1->A1_NREDUZ
            aCols[nReg,FG_POSVAR("VO3_GRUITE")] := aPecaOrc[ni,6]
            aCols[nReg,FG_POSVAR("VO3_CODITE")] := aPecaOrc[ni,7]
            aCols[nReg,FG_POSVAR("VO3_DESITE")] := aPecaOrc[ni,8]
            aCols[nReg,FG_POSVAR("VO3_QTDREQ")] := aCols[nReg,FG_POSVAR("VO3_QTDREQ")]+aPecaOrc[ni,9]
            aCols[nReg,FG_POSVAR("VO3_FORMUL")] := VOI->VOI_VALPEC
            nVlrPec := FG_VALPEC(VAJ->VAJ_TIPTEM,"nVlrPec",VAJ->VAJ_GRUPEC,VAJ->VAJ_CODPEC,"nVlrPec",.f.,.t.)
            aCols[nReg,FG_POSVAR("VO3_VALPEC")] := nVlrPec
            aCols[nReg,FG_POSVAR("VO3_VALTOT")] := nVlrPec * aCols[nReg,FG_POSVAR("VO3_QTDREQ")]
            aCols[nReg,Len(aHeader)+1]          := .F.
        Endif

        lAdd := .T.
       
    EndIf
   
    If ExistBlock("RQPCOM020")     
         ExecBlock("RQPCOM020",.f.,.f.,{ni,nReg})
    EndIf
   
Next

Programa Fonte
OFIOM020, RQPCOM020
Sintaxe

RQPCOM020 - Permite importação de campos customizados ( < ni> , < nReg> )

Parâmetros:
Nome Tipo Descrição Default Obrigatório Referência
ni Numérico Linha do aCols referente a tabela VSJ. X
nReg Numérico Linha do aCols referente a tabela VO3. X
Retorno
    ()
Exemplos
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜܱ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±±±³Fun‡„o    ³ RQPCOM020³ Autor ³ Otavio Favarelli      ³ Data ³ 06/10/09 ³±±±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±±±³Descri‡„o ³ Ponto de entrada para transportar registros de tabelas para³±±±±³          ³ o aCols da tabela VO3 (requisicao de pecas).               ³±±±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±±±³Sintaxe   ³                                                            ³±±±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±±±³Uso       ³                                                            ³±±±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/User Function RQPCOM020()Local nLinVSJ, nLinVO3Local cSaveArea := GetArea()Local lRet := .f.nLinVSJ := ParamIXB[1] //Linha do aCols VSJnLinVO3 := ParamIXB[2] //Linha do aCols VO3DbSelectArea("VSJ")DbSetOrder(1)If DbSeek(xFilial("VSJ")+VO1->VO1_NUMOSV+aPecaOrc[nLinVSJ,6]+aPecaOrc[nLinVSJ,7])	aCols[nLinVO3,FG_POSVAR("VO3_TESTPE")] := VSJ->VSJ_TESTPE //Campo customizado	MsgAlert("Foi transportado com sucesso o registro "+aCols[nLinVO3,FG_POSVAR("VO3_TESTPE")]+"!","Sucesso!")	MsgAlert("O ponto de entrada RQPCPM020 foi executado com sucesso!","Sucesso!")	lRet := .t.EndIfRestArea(cSaveArea)Return(lRet)
Variáveis
Nome Tipo Escopo Pode Alterar descrição
Array of Record Global Não