Histórico da Página
Ponto de Entrada
Descrição: | Este ponto de entrada está localizado na rotina Registr Ocorrência (OFIPM900) e é executado no momento da realização de um bloqueio 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 \ Registr Ocorrência | ||||||
Eventos: | Function FS_VALIND(lOPM900Val,lOPM900Rel) Local aItensNew := {} , aSaldo := {} Local lReturn := .t. Local nX := 0 Local cAglSug := GetNewPar("MV_MIL0053","S") Local cAtualiza := .f. Local cCodigo := "" Local cFJClassif := "" Local oPeca := DMS_Peca():New() Local nTamAEstq := 0 Local nPosAEstq Local nUltPos Local l261IntWMS := a261IntWMS() Private aMemos Private lMsHelpAuto , lMsErroAuto, lMsFinalAuto := .f. Default lOPM900Val := .f. Default lOPM900Rel := .f. /////////////////////////////////////////////////// // 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 /////////////////////////////////////////////////// oPedido := DMS_Pedido():New() If TYPE('M->VE6_FORPED') != "U" .AND. M->VE6_FORPED == oPedido:GtTpPedBO() .AND. M->VE6_INDREG != '4' /* Backorder */ MsgInfo(STR0054 /* "Para sugestão de backorder utilizar tipo 4 ('Backorder') ou utilize o painel de orçamento " */, STR0032 /* Atenção */) return .f. EndIf If Type("M->VE6_QTDITE") # "U" If M->VE6_QTDITE == 0 Return( .t. ) Endif Endif if Type("M->VE6_GRUITE") # "U" .and. Type("M->VE6_CODITE") # "U" cGruite := M->VE6_GRUITE cCodite := M->VE6_CODITE Endif //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³FNC 4436/2009 ³ //³Rubens - 11/09/2009 ³ //³Validacao de Req. de Compra, Origem = Oficina e Forma requer Num. OS ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ if M->VE6_INDREG == "0" .OR. M->VE6_INDREG == "4" DbSelectArea("VEJ") DbSetOrder(1) If DbSeek( xFilial("VEJ") + M->VE6_CODMAR + M->VE6_FORPED ) if empty(M->VE6_NUMOSV) .and. VEJ->VEJ_PEDOSV == "1" help(" ",1,"OFIPM90003") //ordem de serico nao informada return(.f.) endif endif endif if FG_SEEK("SB1","cGruite+cCodIte",7,.f.) If M->VE6_INDREG == "2" .Or. M->VE6_INDREG == "3" SB2->(dbSetOrder(1)) SB2->(dbSeek(xFilial("SB2")+SB1->B1_COD+FM_PRODSBZ(SB1->B1_COD,"SB1->B1_LOCPAD"))) nSaldo := SaldoSB2() //aSaldo := CalcEst(SB1->B1_COD,FM_PRODSBZ(SB1->B1_COD,"SB1->B1_LOCPAD"),dDataBase+1) if nSaldo <= 0 MsgInfo(STR0030+SB1->B1_DESC+STR0031,STR0032) //"Produto -> "###" sem Estoque, Verifique..."###"Atencao!" Return( .f. ) Endif EndIf Endif //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³Ponto de Entrada para validaca ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ If ( ExistBlock("OFIPMCHK") ) lReturn := ExecBlock("OFIPMCHK",.F.,.F.,{lReturn}) If !lReturn return .f. EndIf EndIf lMsErroAuto := .f. lMsHelpAuto := .t. Begin Transaction DbSelectArea("SB2") DbSetOrder(1) DbSelectArea("SB1") DbSetOrder(7) DbSeek( xFilial("SB1") + M->VE6_GRUITE + M->VE6_CODITE ) DbSetOrder(1) oPeca:LoadB1() DbSelectArea("SB5") DbSetOrder(1) DbSeek( xFilial("SB5") + SB1->B1_COD ) If M->VE6_INDREG == "2" .Or. M->VE6_INDREG == "3" //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³Movimentacao interna do Item ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ aItensNew:={} 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}) // 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] := FM_PRODSBZ(SB1->B1_COD,"SB1->B1_LOCPAD") aItensNew[nPosAEstq,05] := IIf(Localiza(SB1->B1_COD),FM_PRODSBZ(SB1->B1_COD,"SB5->B5_LOCALI2"),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] := IIf( M->VE6_INDREG == "2" , GetMv("MV_BLQITE") , GetMv("MV_RESITE") ) aItensNew[nPosAEstq,10] := IIf(Localiza(SB1->B1_COD),IIf( M->VE6_INDREG == "2" , GetMv("MV_BLQLOC") , GetMv("MV_RESLOC") ) , Space(15)) // aItensNew[nPosAEstq,11] := M->VE6_NUMSER aItensNew[nPosAEstq,12] := M->VE6_LOTECT aItensNew[nPosAEstq,13] := M->VE6_NUMLOT aItensNew[nPosAEstq,14] := IIf( !Empty(M->VE6_LOTECT) , oPeca:LoteDtValid(M->VE6_LOTECT) , criavar('D3_DTVALID') ) aItensNew[nPosAEstq,15] := criavar('D3_POTENCI') aItensNew[nPosAEstq,16] := M->VE6_QTDITE 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("OF900AP")) aItensNew := ExecBlock("OF900AP", .f., .f., {aItensNew}) EndIf | ||||||
Programa Fonte: | OFIPM900.PRW | ||||||
Função: | FS_VALIND() | ||||||
Parâmetros: |
| ||||||
Retorno: |
|
Exemplo:
Include totvs.ch
User Function OF900AP()
Local aItensAlt := ParamIxb[1]
MsgInfo("Ponto de Entrada OF900AP executado com sucesso!")
Return aItensAlt