Ao realizar a transferência de um produto para outro, aparece o help a260local com a seguinte mensagem "O armazém informado como destino não existe para este produto". Porém, ao fazer transferência múltipla através do ESTOQUE/CUSTOS. Não da erro. Segue o código da rotina que está sendo desenvolvida.
#INCLUDE "Protheus.ch"
#INCLUDE "FileIo.ch"
#INCLUDE "RwMake.ch"
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaÉÍÍÍÍÍÍÍÍÍÍNÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍNÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍNÍÍÍÍÍÍÍÍÍÍÍÍÍtaa
aasPrograma | atcest001 | Autor | Arthur | Data | 13/04/2017 saa
aaEÍÍÍÍÍÍÍÍÍÍRÍÍÍÍÍÍÍÍÍÍEÍÍÍÍÍÍÍDÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍEÍÍÍÍÍÍDÍÍÍÍÍÍÍÍÍÍÍÍÍšaa
aasDescricao | Rotina de importacao movimentos estoque saa
aaEÍÍÍÍÍÍÍÍÍÍRÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍšaa
http://tdn.totvs.com/pages/releaseview.action;jsessionid=4145137410B923499C30E609F95E1723?pageId=36308382
/*/
User Function MyMata261()
//Local nn
aAuto := {}
aLinha := {}
Private aPerg := {}
// Arthur - 29/08/2019
// Private cPerg := PadR("atcest001", Len(SX1->X1_GRUPO),"")
Private cPerg := "MyMata261"
/*aAdd( aPerg , { "01", "Arquivo :" , "mv_ch1", "C", 090 , 0 ,"MV_PAR01","G" ,"DIR", " "," "," "," "," " , "","" } )
DbSelectArea("SX1")
DbSetOrder(1)
For nn := 1 to Len( aPerg )
If !DbSeek(cPerg + aPerg[nn,1] )
RecLock("SX1",.T.)
Replace ;
X1_GRUPO With cPerg , X1_ORDEM With aPerg[nn,01],;
X1_PERGUNT With aPerg[nn,02], X1_VARIAVL With aPerg[nn,03],;
X1_TIPO With aPerg[nn,04], X1_TAMANHO With aPerg[nn,05],;
X1_DECIMAL With aPerg[nn,06], X1_VAR01 With aPerg[nn,07],;
X1_GSC With aPerg[nn,08], X1_F3 With aPerg[nn,09],;
X1_Def01 With aPerg[nn,10], X1_Def02 With aPerg[nn,11],;
X1_Def03 With aPerg[nn,12], X1_Def04 With aPerg[nn,13],;
X1_Def05 With aPerg[nn,14], X1_Valid With aPerg[nn,15],;
X1_Picture With aPerg[nn,16]
MsUnlock()
End
Next*/
Pergunte(cPerg,.F.)
cCadastro := OemtoAnsi("Importação para estoque...")
aSays := {}
aButtons := {}
AADD(aSays,OemToAnsi("Esta rotina irá ler arquivo .csv para importar os lancamentos para estoque."))
AADD(aButtons, { 5,.T.,{|| Pergunte(cPerg,.T. )}})
AADD(aButtons, { 1,.T.,{|o| Processa({||(learquivo(),FechaBatch())}) }})
AADD(aButtons, { 2,.T.,{|o| FechaBatch() }} )
FormBatch( cCadastro, aSays, aButtons )
Return .T.
Static Function LeArquivo()
//Local _dDataCont := CTOD("")
//Local cHistCompl := ""
//Local nZ := 0
Local aDados := {}
Local aItem := {}
Local AMensagem := ""
Local nOpcAuto := 3
Local nX
//Cabecalho a Incluir
cDocumen := GetSxeNum("SD3","D3_DOC")
aadd(aAuto,{cDocumen,dDataBase}) //Cabecalho
If Empty(MV_PAR01)
Iw_MsgBox("Parâmetros Incorretos", "Atenção!", "INFO")
Return(Nil)
EndIf
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Inicia Leitura do arquivo ³'
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
//Prepare Environment EMPRESA '01' FILIAL "00" MODULO 'EST' TABL'ES 'SD3','SB1'
DbSelectArea("SD3")
//Quantos registros para ler
ProcRegua(FT_FLASTREC())
// Verifica se o esta Disponivel para uso, (abrir) //-1 Nao encontrou o arquivos na pasta destino
If FT_FUse(MV_PAR01) <> -1
FT_FGOTOP() // Posiciona no Inicio do Arquivo, (vai para o topo do arquivo)
//i_linha := 0
lFirst := .F.
nAt := 0
//Pular a linha do cabeçalho do arquivo.
FT_FSKIP() // Proxima linha
nImport :=0
While !FT_FEOF()
nImport += 1
IncProc("Lendo Arquivo (linha): " + Strzero( nImport,8))
cLinha := AllTrim( FT_FREADLN() )
//Alert(cLinha)
If !Empty(cLinha) .Or. Alltrim(cLinha) != ';;;;;;;;'
aadd( aDados, {} ) // array de processamento dos registros do arquivo
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
//| Monta as Colunas delimitados por ponto e virgula.|
//RÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
While Len(cLinha) > 0
If (nAt := At (";",cLinha)) > 0
cDado := Left(cLinha,nAt-1)
cLinha := Substr(cLinha,nAt+1)
Else
cDado := cLinha
cLinha := ""
EndIf
aadd( Atail(aDados), Alltrim(cDado) )
EndDo
EndIf
lFirst := .f.
FT_FSKIP() // Proxima linha
EndDo
Else
MsgAlert("Nao foi possivel abrir o arquivo informado nos parametros! " + MV_PAR01)
EndIF
Begin Transaction
DbSelectArea("SD3")
lMsErroAuto := .F.
aItem := {}
For nX = 1 to len(aDados)
aLinha := {}
IncProc("Inserindo linha: " + Strzero( nImport,4))
nImport += 1
AMensagem := "Produto: " +aDados[nX,1]+ " Produto Destino: "+aDados[nX,6]
//Origem
aadd(aLinha,{"ITEM",'00'+cvaltochar(nX),Nil})
aadd(aLinha,{"D3_COD", aDados[nX,1], NIL}) //Cod Produto origem
aadd(aLinha,{"D3_DESCRI", aDados[nX,2], NIL}) //descr produto origem
aadd(aLinha,{"D3_UM", aDados[nX,3], NIL}) //unidade medida origem
aadd(aLinha,{"D3_LOCAL", aDados[nX,4], NIL}) //armazem origem
aadd(aLinha,{"D3_LOCALIZ", aDados[nX,5], NIL}) //Informar endereço origem
//Destino
aadd(aLinha,{"D3_COD", aDados[nX,6], NIL}) //cod produto destino
aadd(aLinha,{"D3_DESCRI", aDados[nX,7], NIL}) //descr produto destino
aadd(aLinha,{"D3_UM", aDados[nX,8], NIL}) //unidade medida destino
aadd(aLinha,{"D3_LOCAL", aDados[nX,9], NIL}) //armazem destino
aadd(aLinha,{"D3_LOCALIZ", aDados[nX,10], NIL}) //Informar endereço destino
aadd(aLinha,{"D3_NUMSERI", "", Nil}) //Numero serie
aadd(aLinha,{"D3_LOTECTL", "", Nil}) //Lote Origem
aadd(aLinha,{"D3_NUMLOTE", "", Nil}) //sublote origem
aadd(aLinha,{"D3_DTVALID", '', Nil}) //data validade
aadd(aLinha,{"D3_POTENCI", 0, Nil}) // Potencia
aadd(aLinha,{"D3_QUANT", aDados[nX,11], NIL}) //Quantidade
aadd(aLinha,{"D3_QTSEGUM", 0, Nil}) //Seg unidade medida
aadd(aLinha,{"D3_ESTORNO", "", Nil}) //Estorno
aadd(aLinha,{"D3_NUMSEQ", "", Nil}) // Numero sequencia D3_NUMSEQ
aadd(aLinha,{"D3_LOTECTL", "", Nil}) //Lote destino
aadd(aLinha,{"D3_NUMLOTE", "", Nil}) //sublote destino
aadd(aLinha,{"D3_DTVALID", '', Nil}) //validade lote destino
aadd(aLinha,{"D3_ITEMGRD", "", Nil}) //Item Grade
aadd(aLinha,{"D3_CODLAN", "", Nil}) //cat83 prod origem
aadd(aLinha,{"D3_CODLAN", "", Nil}) //cat83 prod destino
aAdd(aAuto,aLinha)
Next nX
MSExecAuto({|x,y| mata261(x,y)},aAuto,nOpcAuto)
If lMsErroAuto
MsgInfo("Erro inserindo: "+aMensagem)
MostraErro()
DisarmTransaction()
break
Else
//DbSelectArea("ZD3")
//DbGoto( SQLZD3->R_E_C_N_O_ )
//Reclock("ZD3",.F.)
//ZD3->ZD3_FLAG:='S'
//msUnlock()
Endif
End Transaction
MsgInfo('Importados '+AllTrim(Str(nImport))+' produtos com sucesso!','Mensagem')
Return