**Modulo:Inventario **Metodo: Importar ** Arquivo Importação do Inventario. Local cLocalX,cCodigoX,cLinha,nomeArquivo,mensagemAviso as String,lAchou as Boolean,nTotal,nArquivo as Number Local oOrigem as Object For Each loForm In _Screen.Forms If Alltrim(Upper(loForm.Name)) == 'INVENTARIO' .Or. Alltrim(Upper(loForm.Name)) == 'INVENTARIO_DEFEITOS' Then Store loForm To oOrigem Endif Endfor mensagemAviso = '' nomeArquivo = Lower(GetFile('TXT','Selecione o Arquivo Txt que Deseja Importar.','Arquivo Txt',0,'Arquivo Txt')) IF nomeArquivo == '' RETURN ENDIF If Confirma('Confirma a Importação dos Produtos do arquivo ' + nomeArquivo + ' ?') If ExecutaBD("Select Max(Length(Codigo))::Char(2) as Tamanho from barras","cCodigoTamanho") And Val(cCodigoTamanho.Tamanho)>13 Create Cursor cColetor (Codigo C(Val(cCodigoTamanho.Tamanho)),Quantidade N(9,3)) Else Create Cursor cColetor (Codigo C(14),Quantidade N(9,3)) EndIf nTotal=0 msWait('Aguarde... Importando Produtos do Coletor.','NoWait','NoClear') nArquivo=Fopen(nomeArquivo) cLinha='' If nArquivo>0 Do While !Feof(nArquivo) cLinha=Fgets(nArquivo) IF AT(';',cLinha) == 0 codigoEan = cLinha quantidadeContada = '1' ELSE codigoEan = Alltrim(Substr(cLinha,1,At(';',cLinha,1)-1)) quantidadeContada = Alltrim(Substr(cLinha,At(';',cLinha,1)+1)) ENDIF IF quantidadeContada == '' quantidadeContada = '1' ENDIF Insert Into cColetor Values(codigoEan,VAL(quantidadeContada)) EndDo Fclose(nArquivo) EndIf Delete From cColetor Where Empty(Codigo) * Valida os códigos e Grava na Tabela Inventarios If Reccount('cColetor')>0 If ExecutaBD("Select Max(Local) as Local From Inventario Where Inventario="+FiltroX(Iif(Vartype(oOrigem.Toolbar.Inventario)=='O',oOrigem.Toolbar.Inventario.Value,oOrigem.Inventario.Value))+" And Local Like 'COLETOR%'","cQuantosColetores") cLocalX='COLETOR'+Nvl(Alltrim(Str(Val(Substr(cQuantosColetores.Local,8,3))+1)),'1') Else cLocalX='COLETOR' EndIf msWait('Aguarde... Carregando Códigos dos Produtos Para Validação.','NoWait','NoClear') ExecutaBD("Select Codigo,Auxiliar From Produtos","cTestaProdutos") Select cTestaProdutos Index On Codigo Tag Codigo Index On Auxiliar Tag Auxiliar If oConfig.UsaCodAux && Carrega os codigos de barras para validação msWait('Aguarde... Carregando Códigos Auxiliares Para Validação.','NoWait','NoClear') ExecutaBD("Select Codigo,Produto From Barras","cTestaBarras") Select cTestaBarras Index On Codigo Tag Codigo EndIf msWait('Aguarde... Validando Códigos.','NoWait','NoClear') Create Cursor cNaoAchou (Codigo C(14)) Select cColetor Scan lAchou=.F. cCodigoX=CodPro(Alltrim(cColetor.Codigo)) If Len(Alltrim(cCodigoX))<=8 And Seek(Left(cCodigoX,6),'cTestaProdutos','Codigo') && Tenta na Tabela de Produtos lAchou=.T. Else && Tenta Pelo Código Auxiliar If oConfig.UsaCodAux * Obs. Na programação do Código Auxiliar Retornar o Código do Produto no SETA ou Vazio se não achar cCodigoX=ExecScript(oConfig.ExeCodAux,'Importar','','',cCodigoX) If !Empty(cCodigoX) And Vartype(cCodigoX)<>'L' lAchou=.T. EndIf EndIf EndIf If lAchou If Vartype(oOrigem.caInventario) =='O' Then oOrigem.caInventario.New(.T.) Replace Inventario With Iif(Vartype(oOrigem.Toolbar.Inventario)=='O',oOrigem.Toolbar.Inventario.Value,oOrigem.Inventario.Value),Produto With cCodigoX,Quantidade With cColetor.Quantidade,Local With cLocalX in cInventario Else oOrigem.caInventario_Defeitos.New(.T.) Replace Inventario With Iif(Vartype(oOrigem.Toolbar.Inventario)=='O',oOrigem.Toolbar.Inventario.Value,oOrigem.Inventario.Value),Produto With cCodigoX,Quantidade With cColetor.Quantidade,Local With cLocalX in cInventario_Defeitos Endif Else Insert Into cNaoAchou Values(cColetor.Codigo) EndIf EndScan If Reccount(Iif(Used('cInventario_Defeitos'),'cInventario_Defeitos','cInventario'))>0 msWait('Aguarde... Salvando no Inventário.','NoWait','NoClear') If Vartype(oOrigem.caInventario) =='O' oOrigem.caInventario.Put() Else oOrigem.caInventario_Defeitos.Put() Endif nTotal=Reccount(Iif(Used('cInventario_Defeitos'),'cInventario_Defeitos','cInventario')) Else nTotal=0 EndIf IF RECCOUNT("cNaoAchou") > 0 mensagemAviso = Chr(13)+'Códigos de produtos não encontrados no SetaERP: '+PadN(RECCOUNT("cNaoAchou"),6) mensagemAviso = mensagemAviso + Chr(13)+ Chr(13)+'Visualize em: C:\SetaArquivos\Inventario_CodigosNaoEncontrados.xls' Select cNaoAchou Copy To c:\setaArquivos\Inventario_CodigosNaoEncontrados XL5 ENDIF EndIf Wait Clear mensagemAviso = 'Códigos de produtos importados do coletor: '+PadN(nTotal,6) + mensagemAviso Aviso(mensagemAviso) EndIf