Árvore de páginas

Ponto de Entrada

Descrição:

Este ponto de entrada está localizado no processo JDPRISM da John Deere no momento em que a reserva das peças é realizada automaticamente para que a transferência de peças entre filiais seja realizada. 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:

N/A

Eventos:

Method TransfereLote(cB1_COD, cArmFrom, cArmTo, nQtd, cLote, cSubLote) Class DMS_Estoque

Local aItensNew := {}

Local oPeca := DMS_Peca():New()

Local nTamAEstq := 0

Local l261IntWMS := a261IntWMS()


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

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

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


SB1->(DbSetOrder(1))

SB1->(DbSeek( xFilial('SB1') + cB1_COD ))

//

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

//

cDocumento := Criavar("D3_DOC")

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

cDocumento := A261RetINV(cDocumento)

//

aadd(aItensNew, { cDocumento, ddatabase })

//

// sequencia

// produto, descricao, unidade de medida, local/localizacao origem

// produto, descricao, unidade de medida, local/localizacao destino

// numero de serie, lote, sublote, data de validade, qunatidade

// quantidade na 2 unidade, estorno, numero de sequencia

//

//

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] := cArmFrom

aItensNew[nPosAEstq,05] := ""

// Produto Destino

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

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

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

aItensNew[nPosAEstq,09] := cArmTo

aItensNew[nPosAEstq,10] := ""

//

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

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

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

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] := criavar('D3_DTVALID')

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


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("VCLSAE2"))

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

EndIf

Programa Fonte:

VEICLSAE.PRW

Função:

TransfereLote()

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


Local aItensAlt := ParamIxb[1]


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


Return aItensAlt