Nesse manual explicaremos como realizar a configuração do Ponto de ajuste que realiza a importação dos produtos em uma promoção no Seta através de um arquivo .xls ou .txt que contenham os códigos como exemplificado no tutorial a seguir:
https://www.youtube.com/watch?v=4iLOjAYl0lM&list=PLA5L72HPAjLBUTfPbc34yctaecYZffDAP&index=15&t=46s
Acesse o Módulo Retaguarda > Configurações > Pontos de Ajuste
Módulo: Promocoes
Método: ImportarLista
Copie esse P.A e cole na janela que se abrirá ao clicar em Editar Ponto de Ajuste
*---------------------------------------------------------------------------*
* Defini as Colunas de onde vai ser pego as informações *
*---------------------------------------------------------------------------*
sColReferencia = 'A' && Coluna com a Referencia do Produto
nLinhaInicial = 2 && Primeira linha que o sistema começara a importar os registros
*---------------------------------------------------------------------------*
* Verifica se as empresas foram seleciondas *
*---------------------------------------------------------------------------*
If Vazio(PROMOCOES_MOTOR.Empresas.codigo) == .T. Then
Aviso('Nesta 1º Etapa:'+Chr(13)+Chr(13)+'Escolha as Empresas que farão parte desta promoção.')
=PROMOCOES_MOTOR.ButtonEmpresas.Click()
If Vazio(PROMOCOES_MOTOR.Empresas.codigo) == .T. Then
Return Falso('Nenhuma Empresa foi escolhida.'+Chr(13)+'Se desejar, importe o arquivo novamente!')
Endif
Endif
*---------------------------------------------------------------------------*
* Seleciona o Arquivo a ser importado *
*---------------------------------------------------------------------------*
Aviso('Na 2º Etapa:'+Chr(13)+Chr(13)+'Selecione o arquivo no formato Excel (XLSX) ou Texto (TXT) com itens que seram importados para a campanha.')
sFile = Getfile('', '', 'Importar', 0, 'Localize o arquivo de produtos a ser importado')
If Vazio(sFile) Then
Return .T.
Endif
sTFile = Getwordnum(sFile,OCCURS('.', sFile)+1,'.')
Do Case
Case sTFile = 'XLS' OR sTFile = 'XLSX'
msWait('Aguarde... Verificando informações do arquivo XLSX.', 'nowait', 'noclear')
oExcel = Createobject('Excel.Application')
oExcel.DisplayAlerts=.T.
oExcel.Visible = .F.
oExcel.Workbooks.Open(sFile)
Create Cursor cReferencias (codigo c(6), lAchei L)
Index On Alltrim(Upper(codigo)) To ref
For i = nLinhaInicial To 60000
sReferencia = oExcel.Sheets(1).Range(sColReferencia+Alltrim(Str(i))).Value
if vartype(sReferencia) == 'N' then
sReferencia = alltrim(str(sReferencia))
endif
If !Vazio(sReferencia)
Append Blank In cReferencias
Replace codigo With sReferencia In cReferencias
Replace lAchei With .F. In cReferencias
If nLinhaInicial == I Then
Wait clear
sMensagem = 'Verifique as informações:'+Chr(13)+Chr(13)+;
'Código: ' + Alltrim(Upper(cReferencias.codigo))+Chr(13)+;
[Essas informações acima, condizem com a primeira linha do arquivo selecionado?]
If !Confirma(sMensagem) Then
oExcel.Quit
Release oExcel
DestroiCursor('cReferencias')
Return falso('Importação cancelada!')
Else
msWait('Aguarde... Verificando informações do arquivo XLSX.', 'nowait', 'noclear')
Endif
Endif
Else
Exit
Endif
Endfor
oExcel.Quit
Release oExcel
Case sTFile = 'TXT'
sAjuste= ''
Store Filetostr(sFile) To sAjuste
Create Cursor cReferencias (codigo c(6), lAchei L)
For I = 1 To Alines(linha, sAjuste)
IF !vazio(Alltrim(Getwordnum(linha(I),1,';')))
Append Blank In cReferencias
Replace cReferencias.codigo With Alltrim(Getwordnum(linha(I),1,';')) In cReferencias
Replace cReferencias.lAchei With .F. In cReferencias
EndIf
Endfor
OtherWise
Aviso('ARQUIVO SELECIONADO INVÁLIDO. IMPORTAÇÃO CANCELADA')
return
EndCase
Select * From cReferencias where len(alltrim(Codigo)) = 6 Group By Codigo,lAchei Into Cursor cReferencias ReadWrite
Index On Alltrim(Upper(codigo)) To ref2
Select cReferencias
Go Top
*-------------------------------------------------------------------*
* Busca todos os Produtos com esses códigos *
*-------------------------------------------------------------------*
sFiltroIN = FiltroIN('cReferencias','codigo')
sSql = [Select P.Codigo, P.Descricao, P.Corx, P.Referencia, P.Preco, P.grade, '*'::Char(1) as Tipo, ]+;
[ Sum(Case When PP.Codigo Is Null Then 0 Else 1 End)::Numeric(3) as Promocoes ]+;
[ From Produtos P ]+chr(13)+;
[ Left Join Promocoes_Produtos PP On Substr(PP.Codigo,1,6)::char(6)=P.Codigo And Right(PP.Codigo,2)::Char(2) In ] + PROMOCOES_MOTOR.Empresas.codigo+Chr(13)+;
[Where P.Codigo in ] + sFiltroIN+Chr(13)+;
[Group by P.Codigo, P.Descricao, P.Corx, P.Referencia, P.Preco, P.grade, Tipo ]+Chr(13)
= ExecutaBD(sSql ,"cProdutosTemp",'Aguarde... Buscando Lista de Produtos no Banco de Dados')
nRegItens = Reccount('cProdutosTemp')
*-------------------------------------------------------------------*
* Verifica se encontrou todos os produtos da planilha *
*-------------------------------------------------------------------*
nitensEnviados = 0
Go Top In cProdutosTemp
Scan While Eof() <> .T.
nitensEnviados = nitensEnviados + 1
Seek Alltrim(Upper(cProdutosTemp.codigo)) In cReferencias
If Alltrim(Upper(cProdutosTemp.codigo)) == Alltrim(Upper(cReferencias.codigo)) Then
Replace cReferencias.lAchei With .T. In cReferencias
Endif
Select cProdutosTemp
Endscan
*-------------------------------------------------------------------*
* Salva os produtos na cProdutos para visualizar na grade *
*-------------------------------------------------------------------*
Select * From cProdutosTemp Group By Codigo,Descricao,Referencia Into Cursor cProdutosTemp ReadWrite
Select cProdutosTemp
Go Top In cProdutosTemp
Scan While Eof() <> .T.
append blank in cProdutos
replace Codigo with cProdutosTemp.Codigo in cProdutos
replace Descricao with cProdutosTemp.Descricao in cProdutos
replace Cor with cProdutosTemp.Corx in cProdutos
replace Referencia with cProdutosTemp.Referencia in cProdutos
replace Preco with cProdutosTemp.Preco in cProdutos
replace Tipo with cProdutosTemp.Tipo in cProdutos
replace Grade with cProdutosTemp.grade in cProdutos
replace Promocoes with cProdutosTemp.Promocoes in cProdutos
Endscan
Select cProdutos
PROMOCOES_MOTOR.Grid.Refresh()
PROMOCOES_MOTOR.Grid.setfocus()
cRefNaoEncontrados = ''
Select cReferencias
Go Top
Scan While Eof() <> .t.
If cReferencias.lAchei == .F.
cRefNaoEncontrados = cRefNaoEncontrados + Iif(Len(cRefNaoEncontrados)>0,', ','') + Alltrim(Upper(cReferencias.Codigo))
Endif
Endscan
Wait clear
If Len(cRefNaoEncontrados) > 0 Then
Aviso('De todos os produtos inseridos na campanha, as referências abaixo não foram encontradas no cadastro de produtos: '+Chr(13)+Chr(13)+cRefNaoEncontrados)
_cliptext = cRefNaoEncontrados
Else
Aviso('Os produtos foram importados com sucesso!')
Endif
DestroiCursor('cTemp')
DestroiCursor('cReferencias')
DestroiCursor('cProdutosTemp')
Return .T.