Histórico da Página
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: |
| ||||||
Retorno: |
|
Exemplo:
Include totvs.ch
User Function OM260AP()
Local aItensAlt := ParamIxb[1]
MsgInfo("Ponto de Entrada OM260AP executado com sucesso!")
Return aItensAlt