Árvore de páginas

Ponto de Entrada

Descrição:

Este ponto de entrada está localizado na rotina Desbl de Peças (OFIOM260) e é executado no momento do desbloqueio de uma peça. 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 \ Desbl de Peças

Eventos:

Function FS_DESBLQ(nTipo)


Local aMovto1 := {}

Local lOk260 := .f.

Local cAntpar01 := mv_par01

Local nQtdori := 0

Local nQtddest := 0

Local lLimpa := .t.

Local nTamAEstq := 0

Local nPosAEstq

Local nUltPos

Local l261IntWMS := a261IntWMS()


if !FS_VLQTD(nTipo,.t.)

Return

Endif


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

// 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

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


if cOrigem == STR0024

cOri := "1"

Else

cOri := "2"

Endif

nSoma := 0

dbSelectArea("VE6")

dbSetOrder(7)

if dbSeek(xFilial("VE6")+"2"+cOri+cGrupo+cCodIte)

While !Eof() .and. xFilial("VE6") == VE6->VE6_FILIAL .and. "2"+cOri+cGrupo+cCodIte == VE6->VE6_INDREG+VE6->VE6_ORIREQ+VE6->VE6_GRUITE+VE6->VE6_CODITE

nSoma += VE6->VE6_QTDBLQ

dbSelectArea("VE6")

dbSkip()

Enddo

Endif

if nSoma < nQtd

if cOri == "1"

Msginfo(STR0019+Transform(nQtd,"@E 999,999.99")+STR0020+Transform(nSoma,"@E 999,999.99")+STR0022+".",STR0016)

Else

Msginfo(STR0019+Transform(nQtd,"@E 999,999.99")+STR0020+Transform(nSoma,"@E 999,999.99")+STR0023+".",STR0016)

Endif

Return(.f.)

Endif


DbSelectArea("SB1")

DbSetOrder(7)

If DbSeek(xFilial("SB1")+cGrupo+cCodIte)


If nOrig == 2 //OFIOM260

cLocalSai := GetMv("MV_BLQITE")

cLocalEnt := FM_PRODSBZ(SB1->B1_COD,"SB1->B1_LOCPAD")

cLOCALI2Sai := GetMv("MV_BLQLOC")

Else // OFIOM110

if nTipo == 1 //Desbloqueia

cLocalSai := GetMv("MV_BLQITE")

cLocalEnt := FM_PRODSBZ(SB1->B1_COD,"SB1->B1_LOCPAD")

cLOCALI2Sai := GetMv("MV_BLQLOC")

Else

cLocalSai := GetMv("MV_RESITE")

cLocalEnt := FM_PRODSBZ(SB1->B1_COD,"SB1->B1_LOCPAD")

cLOCALI2Sai := GetMv("MV_RESLOC")

Endif

EndIf


//+---------------------------------------------------------------------+

//¦Movimentacao interna do Item ¦

//+---------------------------------------------------------------------+

aItensNew:={}


DbSelectArea("SB5")

DbSetOrder(1)


DbSeek( xFilial("SB5") + SB1->B1_COD )

cLOCALI2Ent := FM_PRODSBZ(SB1->B1_COD,"SB5->B5_LOCALI2")


if ExistBlock("LOCAOM110")

cLOCALI2Ent := ExecBlock("LOCAOM110",.f.,.f.,{SB1->B1_COD})

Endif


cLOCALI2Ent := Alltrim(cLOCALI2Ent)

cLOCALI2Ent += Space(TamSx3("B5_LOCALI2")[1]-Len(cLOCALI2Ent))

cLOCALI2Sai := Alltrim(cLOCALI2Sai)

cLOCALI2Sai += Space(TamSx3("B5_LOCALI2")[1]-Len(cLOCALI2Sai))


DbSelectArea("SB1")

DbSetOrder(1)


//

// Adiciona cabecalho com numero do documento e data da transferencia modelo II

//

aadd (aItensNew,{ nextnumero("SD3",2,"D3_DOC",.t.), 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] := cLocalSai

aItensNew[nPosAEstq,05] := IIf(LOCALIZA(SB1->B1_COD),cLOCALI2Sai,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] := cLocalEnt

aItensNew[nPosAEstq,10] := IIf(LOCALIZA(SB1->B1_COD),cLOCALI2Ent,Space(15))

//

aItensNew[nPosAEstq,11] := criavar('D3_NUMSERI')

aItensNew[nPosAEstq,12] := criavar('D3_LOTECTL')

aItensNew[nPosAEstq,13] := criavar('D3_NUMLOTE')

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

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

aItensNew[nPosAEstq,16] := nQtd

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


lMsErroAuto := .F.

lMsHelpAuto := .T.


If (ExistBlock("OM260AP"))

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

EndIf

Programa Fonte:

OFIOM260.PRW

Função:

FS_DESBLQ()

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 OM260AP()


Local aItensAlt := ParamIxb[1]


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


Return aItensAlt