Árvore de páginas

Ponto de Entrada

Descrição:

Este ponto de entrada está localizado na rotina Ped. Transf. Peças (OFIXA020) e é executado no momento da rejeição de um pedido de peças oriundo de um orçamento balcão que já contenha peças reservadas. A finalidade deste ponto de entrada é permitir a manipulação / inserção de novos campos no momento de realizar a movimentação de transferência de armazéns na chamada da rotina MATA261 (tabela SD3).

Localização:

Atualizações \ Mov Peças \ Ped. Transf. Peças

Eventos:

Function OXA020R(cAlias,nReg,nOpc)


Local aParamBox := {}

Local aItensNew := {}

Local nTamAEstq := 0

Local nPosAEstq

Local nUltPos

Local l261IntWMS := a261IntWMS()

Local nQuant := 0

Local cBkpFil := cFilAnt

if cFilAnt != VDD->VDD_FILPED

MsgStop(STR0026)

return .f.

endif


if VDD->VDD_STATUS != "S"

return .f.

endif


if !MsgYesNo(STR0012, STR0013)

return .f.

endif


// Local tmpPar03 := MV_PAR03

MV_PAR01 := ""

aAdd(aParamBox,{1,STR0014,Space(254),"","","","",120,.F.})

while Empty(MV_PAR01)

If !(ParamBox(aParamBox,STR0001,,,,,,,,,.f.))

return .f.

endif

enddo


///////////////////////////////////////////////////

// Posicoes no Vetor de Integracao com o MATA261 //

///////////////////////////////////////////////////

nTamAEstq := 21

If l261IntWMS

nTamAEstq += 1

EndIf

nTamAEstq += 1

If SD3->(FieldPos("D3_IDDCF"))>0 .And. l261IntWMS

nTamAEstq += 1

EndIf

If SD3->(FieldPos("D3_OBSERVA")) <> 0

nTamAEstq += 1

EndIf

///////////////////////////////////////////////////


DBSelectArea("VDD")

reclock("VDD",.f.)

VDD->VDD_MOTIVO := MV_PAR01

VDD->VDD_STATUS := "R"

msunlock()


DBSelectArea("VS3")

DBSetOrder(2)

if DBSeek(VDD->VDD_FILORC + VDD->VDD_NUMORC + VDD->VDD_GRUPO + VDD->VDD_CODITE)

nQuant := VS3->VS3_QTDITE - VS3->VS3_QTDTRA

reclock("VS3",.f.)

VS3->VS3_QTDTRA := VS3->VS3_QTDTRA - VDD->VDD_QUANT

msunlock()

endif


DBSelectArea("SB1")

DBSetOrder(7)

DBSeek(xFilial("SB1")+VDD->VDD_GRUPO+VDD->VDD_CODITE)

dbSetOrder(1)


if nQuant > 0

cFilAnt := VDD->VDD_FILORC

cDocumento := Criavar("D3_DOC")

cDocumento := IIf(Empty(cDocumento),NextNumero("SD3",2,"D3_DOC",.T.),cDocumento)

cDocumento := A261RetINV(cDocumento)


aItensNew := {}

aadd (aItensNew,{ cDocumento , ddatabase})

AADD( aItensNew , Array(nTamAEstq) )

nPosAEstq := Len(aItensNew)


// Produto Origem

aItensNew[nPosAEstq,01] := SB1->B1_COD

aItensNew[nPosAEstq,02] := SB1->B1_DESC

aItensNew[nPosAEstq,03] := SB1->B1_UM

aItensNew[nPosAEstq,04] := GetMv( "MV_RESITE" )+Space(TamSx3("BF_LOCAL")[1]-Len(GetMv("MV_RESITE")))

aItensNew[nPosAEstq,05] := IIf(Localiza(SB1->B1_COD),Posicione("VOI",1,xFilial("VOI")+aPecasAlt[iP,4],"VOI_LOCALI"),Space(15))

// Produto Destino

aItensNew[nPosAEstq,06] := SB1->B1_COD

aItensNew[nPosAEstq,07] := SB1->B1_DESC

aItensNew[nPosAEstq,08] := SB1->B1_UM

aItensNew[nPosAEstq,09] := FM_PRODSBZ(SB1->B1_COD,"SB1->B1_LOCPAD")

aItensNew[nPosAEstq,10] := IIf(Localiza(SB1->B1_COD),Posicione("VOI",1,xFilial("VOI")+VO3->VO3_TIPTEM,"VOI_LOCALI"),Space(15))

//

aItensNew[nPosAEstq,11] := ""

aItensNew[nPosAEstq,12] := ""

aItensNew[nPosAEstq,13] := ""

aItensNew[nPosAEstq,14] := criavar('D3_DTVALID')

aItensNew[nPosAEstq,15] := criavar('D3_POTENCI')

aItensNew[nPosAEstq,16] := nQuant

aItensNew[nPosAEstq,17] := criavar("D3_QTSEGUM")

aItensNew[nPosAEstq,18] := criavar("D3_ESTORNO")

aItensNew[nPosAEstq,19] := criavar("D3_NUMSEQ")

aItensNew[nPosAEstq,20] := criavar("D3_LOTECTL")

aItensNew[nPosAEstq,21] := aItensNew[nPosAEstq,14]


nUltPos := 21

If l261IntWMS

aItensNew[nPosAEstq,++nUltPos] := criavar("D3_SERVIC")

EndIf

aItensNew[nPosAEstq,++nUltPos] := criavar("D3_ITEMGRD")

If SD3->(FieldPos("D3_IDDCF"))>0 .And. l261IntWMS

aItensNew[nPosAEstq,++nUltPos] := criavar("D3_IDDCF")

EndIf

If SD3->(FieldPos("D3_OBSERVA")) <> 0

aItensNew[nPosAEstq,++nUltPos] := criavar("D3_OBSERVA")

EndIf


If (ExistBlock("OX020AP"))

aItensNew := ExecBlock("OX020AP", .f., .f., {aItensNew})

EndIf

Programa Fonte:

OFIXA020.PRW

Função:

OXA020R()

Parâmetros:
NomeTipo Descrição

aItensNew

Matriz

Campos da SD3 que deverão ser atualizados ou inseridos novos campos pelo ponto de entrada para serem utilizados no ExecAuto da rotina de transferência de peças entre armazéns (MATA261).

Retorno:
NomeTipoDescrição

aItensNew

Matriz

Campos da SD3 atualizados pelo ponto de entrada para serem utilizados no ExecAuto da rotina de transferência de peças entre armazéns (MATA261).

Exemplo:

Include totvs.ch

User Function OX020AP()


Local aItensAlt := ParamIxb[1]


MsgInfo("Ponto de Entrada OX020AP executado com sucesso!")


Return aItensAlt